{"version":3,"sources":["utils/service/service.utils.js","store/get-config-firebase/host.action.js","views/error/error.styled.jsx","assets/icons/ic_nav_action_back.svg","services/notification.services.js","helpers/hashes.js","assets/logos/logo.svg","store/notification/notification.action.js","helpers/helperPhone.js","stories/components/data-display/copyright/copyright.component.jsx","webpack:///./src/assets/images/btn_appstore.svg?346f","webpack:///./src/assets/images/btn_googleplay.svg?44ee","webpack:///./src/assets/images/btn_huawei.svg?fefd","stories/components/data-display/download-app/download-app.component.jsx","webpack:///./src/assets/logos/logo.svg?e703","stories/components/general/logo/logo.component.jsx","assets/images/flowy_top.svg","layouts/auth/component/header/header-bar.component.jsx","layouts/auth/component/role-image/role-image.component.jsx","assets/icons/youtube-icon.svg","assets/icons/instagram-icon.svg","assets/icons/facebook-icon.svg","assets/images/flowy_bottom.svg","layouts/auth/auth.layout.jsx","store/preferences/preferences.selector.js","utils/checkTokenExpire.js","services/user.services.js","helpers/user/user-device.helper.js","store/chat/chat.action.js","utils/breakpoints.js","views/error/svg-images.jsx","routes/auth.routes.js","routes/link-aja.routes.js","routes/parent.routes.js","routes/common.routes.js","routes/teacher.routes.js","routes/student.routes.js","utils/route/create-group-route.utils.jsx","utils/route/protected-route.utils.jsx","utils/route/guest-route.utils.jsx","utils/route/student-route.utils.jsx","utils/route/teacher-route.utils.jsx","utils/route/parent-route.utils.jsx","routes/index.routes.jsx","views/error/error-boundary.page.jsx","App.js","serviceWorkerRegistration.js","index.js","helpers/switchRole.js","utils/reducer/reducer.utils.js","configs/cookies.js","store/user/user.types.js","services/contracts/user.contract.js","store/preferences/preferences.types.js","components/Loading.js","store/user/user.action.js","store/user/user.selector.js","configs/firebase.js","store/user/user.thunk.js","store/notification/notification.types.js","store/chat/chat.types.js","configs/axios-instance.configs.js","utils/axios/refresh-interceptor.utils.js","services/attitudeNote.js","services/grade.services.js","constant/error-code.constant.js","store/preferences/preferences.reducer.js","store/notification/notification.reducer.js","store/user/user.reducer.js","store/reset-password/reset-password.reducer.js","store/chat/chat.reducer.js","store/get-config-firebase/host.reducer.js","store/materi-module/materi-module.reducer.js","store/tugasku-quiz/tugasku-quiz.reducer.js","store/root-reducer.js","store/store.js","services/auth.services.js","store/reset-password/reset-password.types.js","store/materi-module/materi-module.action.js","store/preferences/preferences.action.js","stories/components/forms/button-link-primary/button-link-primary.component.jsx","assets/images/banner_siswa.svg","assets/images/banner_orangtua.svg","store/tugasku-quiz/tugasku-quiz.action.js","assets/images/banner_guru.svg","assets/images/img_password.svg"],"names":["getError","error","response","request","navigator","onLine","status","code","message","data","isEmpty","get","SET_HOST","setHost","host","type","payload","Wrapper","styled","div","_templateObject","_taggedTemplateLiteral","size","mobileL","device","laptop","Title","_templateObject2","allNotification","async","accessRoleApiUrlPrefix","prefix","getUserProperty","responseUnread","axiosPrivate","concat","signal","responseRead","responseAll","unread","read","all","Promise","resolve","reject","markRead","ids","theIds","map","any","toString","put","QueryString","stringify","headers","updateFcmClient","config","url","fcm_token","token","hashids","Hashids","process","parseInt","decodeHash","id","decode","e","encodeHash","encode","decodeHashNonPromise","resultType","arguments","length","undefined","v","encodeHashNonPromise","decodeId","encodeId","getNotificationsStart","createAction","NOTIFICATION_ACTION_TYPES","GET_NOTIFICATIONS_START","getNotificationsSuccess","_ref","GET_NOTIFICATIONS_SUCCESS","getNotificationsFailed","GET_NOTIFICATIONS_FAILED","resetNotifications","RESET_NOTIFICATIONS","helperPhone","groupPhone","phone","test","replace","convertPhone","returnType","_phone$toString","isLocalPhone","isInternPhone","TSEL_PREFIX","BYU_PREFIX","isTselNumber","prefixPhone","slice","includes","getPulsaAndEvent","encrypted","eventName","isPhoneByU","P","p","tablet","Copyright","rest","_jsxs","children","Date","getFullYear","_path","_extends","Object","assign","bind","target","i","source","key","prototype","hasOwnProperty","call","apply","this","SvgBtnAppstore","svgRef","title","titleId","props","xmlns","xmlnsXlink","viewBox","ref","transform","x","width","height","style","fill","clipPath","d","ForwardRef","_linearGradient","_linearGradient2","_linearGradient3","_linearGradient4","SvgBtnGoogleplay","x1","y1","x2","y2","gradientTransform","gradientUnits","offset","stopColor","stroke","strokeMiterlimit","strokeWidth","SvgBtnHuawei","y","tabletM","ButtonGroup","DownloadApp","_defs","os","name","getUserDeviceInfo","onClickHandler","osParam","window","open","_jsx","onClick","IOSSVG","rel","AndroidSVG","HuaweiSVG","SvgLogo","fillRule","Logo","path","location","pathname","history","useHistory","href","SkulSvg","push","Header","header","IconLeftWrapper","ImgFlowTop","img","_templateObject3","HeaderBar","useRouteMatch","src","studentImg","alt","parentImg","teacherImg","verifyImg","goBack","backIcon","flowTop","isHideImageOnMobile","RoleImage","defaultProps","_g","SvgYoutubeIcon","clipRule","SvgInstagramIcon","SvgFacebookIcon","Footer","footer","Main","main","Sosmed","SosmedItem","button","_templateObject4","ImgFlowBot","_templateObject5","AuthLayout","isUseToaster","sosmed","_Fragment","Toaster","padding","position","marginTop","YoutubeIC","marginRight","paddingTop","marginLeft","InstaIC","FBIC","flowBottom","ContentWrapper","_templateObject6","FormWrapper","_templateObject7","AuthLayoutOne","_ref2","roleImageType","AuthLayoutTwo","_ref3","isHideRoleImage","selectSocmedSkip","state","preferences","socmedSkip","selectPreferences","selectPreferencesTour","tour","TOKEN_ERROR","userService","accessToken","getAccessRoleIdStatus","savedRoleId","getAccessRole","role","switchRole","isNil","Error","ACStatus","getAccessTokenStatus","getAccessToken","exp","jwt_decode","getTime","newAccessToken","refreshAuthToken","axiosPublic","Authorization","user","userRole","user_type","field","value","secret_token","USER_ROLE","apiUrlPrefix","ERROR_CONSTANT","EDIT_PHONE","INVALID_TOKEN","isNotUseBearerToken","params","stakeholder","per_page","page","_ref4","interest_fields","join","_ref5","latitude","longitude","language","newResetPassword","password","password_confirmation","_ref7","post","RESET_PASSWORD","updateClassStudent","class_id","educationLevel","UAParser","getResult","getChatsStart","isSearching","CHAT_ACTION_TYPES","GET_CHATS_START","getChatsSuccess","chats","isHasMore","GET_CHATS_SUCCESS","getChatsFailed","GET_CHATS_FAILED","resetChats","RESET_CHATS","mobileS","mobileM","laptopL","desktop","desktopL","NotFoundImage","cx","cy","rx","ry","ChooseRole","lazy","ResetPasswordRoutes","authRoutes","exact","component","pageTitle","LinkAjaError","React","LinkAjaConnect","LinkAjaIntegrationSuccess","LinkAjaTransactionSuccess","LinkAjaEndpointIntegration","LinkAjaEndpointTransaction","linkAjaRoutes","closeEnv","allowedRole","EditSocialMedia","AttitudeNote","NoteDetail","Beranda","EditPermit","CreatePermit","ScheduleParent","HistoryWaitingList","GradeRoutes","ParentAttendanceSummaryDetails","HistoryParent","HistoryPermitDetail","HistoryAttendanceDetail","EmailEdit","EditProfile","FormStudent","ListStudent","ConnectStudent","Profile","Notification","Point","UnderConstruction","Eraport","EraportDetail","PhoneEdit","OTPRequest","OTPVerify","CompleteDataRoutes","MBGRoutes","parentRoutes","Success","BlockList","GroupDirectChat","VirtualClassDetail","VirtualClassEdit","VirtualClass","Setting","Faq","Help","DeleteAccount","Account","ChangePassword","Article","ArticleDetail","ArticleSearch","Madding","LastChat","DirectChat","ContactList","ForwardMessage","SearchContact","SearchContactResult","Book","FavoriteBook","BookLists","BookReader","DownloadBook","DuniaGamesDetails","DuniaGames","UserGames","UserGamesPost","GamesLandingPage","Attendance","AttendanceSuccess","AttendanceOnLeave","AttendanceSubmit","AnnouncementParticipantsDetail","ConnectSocialMedia","CreateActivity","UpdateActivity","RestrictTsel","ComingSoonPage","commonRoutes","NoteEdit","NoteCreate","PermitBulkChooseStudent","PermitBulkChooseClass","PermitBulkClassStudent","PermitBulk","TeacherAttendanceSummary","GradeDetail","Grade","GradeChooseClass","GradeChooseClassInput","GradeChooseClassImportTugasku","GradeChooseStudent","GradeChooseComponents","GradeChooseStudentDetailList","GradeChooseStudentDetailBy","GradeChooseStudentDetailProfile","ClassStudent","ChooseStudent","ChooseClass","ClockInStudent","ClockInClass","HistoryClassroomDetail","HistoryTeacher","PointV2","Reward","RewardDetail","ClaimList","TugasKu","TugasKuForm","TugasKuDetail","TugasKuInfoClass","TugasKuInfoHistory","TugasKuArchives","TugasKuTopics","TugasKuMembers","TugasKuTasksForm","TugasKuModulesForm","TugasKuQuizzesForm","TugasKuAnnouncesForm","TugasKuAnnouncesDetail","TugasKuTasksDetail","TugasKuModulesDetail","TugasKuQuizzesDetail","TugasKuQuizzesScore","TugasKuTasksScore","TugasKuTasksScoreDetail","TugasKuQuizzesScoreDetail","TugasKuStudentScore","TugasKuTasksDetailFile","TugasKuModulesDetailFile","ScheduleTeacher","SubjectEdit","SchoolEmpty","SchoolSearch","SchoolConnect","SchoolMine","FavoriteEdit","Homeroom","HomeroomClassList","HomeroomAttendanceHistory","HomeroomAttendanceDetail","HomeroomPermitHistory","HomeroomPermitDetail","HomeroomRegister","HomeroomRequest","HomeroomStudentList","HomeroomStudentDetail","HomeroomHistory","Announcement","AnnouncementEdit","AnnouncementDetail","HomeroomAttitudeNote","HomeroomAttitudeNoteStudent","HomeroomAttitudeNoteStudentEdit","HomeroomAttitudeNoteStudentDetail","EraportList","Module","ModuleAdd","ModuleDetail","StudentAttendanceRouter","ModuleTugasku","QuizTugasku","teacherRoutes","ProfileStudent","ProfileEditStudent","ParentEdit","ParentList","ParentNotFound","ParentFound","SchoolList","EmptySchool","SearchClass","SearchSchool","ConnectSchool","StudentAttendanceSummaryDetails","HistoryStudent","Schedule","TugasKuJoin","studentRoutes","createGroupRoute","routes","routeComponent","RouteComponent","closeEnvPage","CloseEnvPage","_createElement","ProtectedRoute","Component","isAuthenticated","isAuthLoading","currentUser","useSelector","selectUserReducer","dispatch","useDispatch","useEffect","setCurrentUserAsync","document","Route","render","query","URLSearchParams","search","roleUrl","LoadingPage","Redirect","to","from","is_need_complete_data","match","appUrlPrefix","GuestRoute","StudentRoute","TeacherRoute","ParentRoute","SuccessDelete","NotFound","GetApps","Routes","Suspense","fallback","Switch","ErrorBoundary","constructor","super","hasError","errorMsg","static","_error","componentDidCatch","_errorInfo","ButtonLinkPrimary","label","reload","withRouter","App","currentUserId","is_sub_push_notif","isPushNotifChannelOn","clientToken","setClientToken","useState","checkUserSessionAsync","fetchRemoteConfig","JSON","parse","getConfigValue","loadConfig","checkSavedPreferences","useCallback","encodedUserId","storagePreferences","localStorage","getItem","sessionPreferences","sessionStorage","setItem","setPreferencesFromLocalStorage","pushNotificationHandler","isNotifSupported","permission","requestPermission","then","dataClientToken","getTokenFirebase","Boolean","hostname","RELEASE","REACT_APP_SENTRY_RELEASE","DSN","Sentry","dsn","integrations","Integrations","BrowserTracing","environment","release","customHistory","createBrowserHistory","ReactDOM","StrictMode","Provider","store","PersistGate","loading","persistor","CookiesProvider","Router","SnackbarProvider","getElementById","serviceWorker","ready","registration","unregister","catch","console","student","valueIndo","parent","teacher","school","roleId","switchRoleId","switchRoleUrl","switchRoleIndo","expires","setDate","getDate","cookies","Cookies","options","sameSite","setAccessToken","access_token","set","setAccessRole","access_role","setTypeFlutter","setRefreshToken","refresh_token","getTypeFlutter","getRefreshToken","clearCookies","remove","USER_ACTION_TYPES","SET_CURRENT_USER_IMAGE","SET_CURRENT_USER","SIGN_IN_START","SIGN_IN_SUCCESS","SIGN_IN_FAILED","SIGN_OUT_START","SIGN_OUT_SUCCESS","SIGN_OUT_FAILED","refreshToken","accessRoleId","accessRole","PREFERENCES_ACTION_TYPES","SET_IS_COMPLETED_TOUR_IN_HOME","SET_IS_COMPLETED_TOUR_IN_HISTORY","SET_IS_COMPLETED_TOUR_IN_TUGASKU_HOME","SET_IS_COMPLETED_TOUR_IN_TUGASKU_CLASS","SET_SKIP_SOCMED","SET_PREFERENCES_FROM_LOCAL_STORAGE","RESET_PREFERENCES","Loading","text","display","alignItems","justifyContent","Loader","speed","content","className","LoadingPageWrapper","skulLogo","setCurrentUser","setCurrentUserImage","image","signInStart","signInType","signInSuccess","signInFailed","signOutStart","signOutSuccess","signOutFailed","selectCurrentUser","selectCurrentUserRole","selectStudentsHaveSchool","_state$user$currentUs2","students","reduce","accumulator","currentStudent","_currentStudent$schoo","privateChatDB","classroomChatDB","REACT_APP_CLASSROOM_CHAT_DB","firebase","initializeApp","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","firebaseAnalytics","analytics","remoteConfig","defaultConfig","settings","minimumFetchIntervalMillis","fetchTimeoutMillis","firebaseAuth","auth","signInAnonymously","messaging","isSupported","getToken","vapidKey","log","onMessageListener","fetchAndActivate","getValue","asString","phoneEncrypted","getProfile","getPhoneEncrypted","checkUserSession","signInWithGoogleAsync","provider","authService","loginWithSocialMedia","setUserProperties","logEvent","method","signInAsync","username","client_secret","client_id","login","signOutAsync","logout","resetPreferences","API_URL","axios","create","baseURL","responseType","interceptors","use","getState","base_url","chat_url","isChat","createAxiosRefreshInterceptor","axiosInstance","refreshTokenLogic","retryInstance","retryStatus","onRefreshTokenFailed","_retryStatus","_isRefreshing","_failedQueue","originalRequest","retryOrigReq","cb","forEach","attitudeNoteService","getSchoolYearActive","user_id","getSchoolSubjects","school_id","q","createNote","dataObject","formData","FormData","append","tahun_ajaran_id","semester","subject_id","noteId","getNoteSubjectList","updateNote","allowedData","removeNote","delete","printNote","gradeServices","format","student_id","res","REGISTER","COMPLETE_DATA","WARNING_TSEL_ONLY","CONNECT_SCHOOL","PERMIT_CHECK","WARNING_DATA_EXIST","INVALID_REQUEST","INITIAL_STATE","home","isCompleted","completedType","tugasKuHome","tugasKuClass","preferenceReducer","action","isLoading","notificationReducer","isGeneralSignInLoading","isGoogleSignInLoading","signInError","isSignOutLoading","userReducer","scrtToken","otpChannel","otpToken","resetPasswordReducer","RESET_PASSWORD_ACTION_TYPES","SET_PHONE_NUMBER","SET_OTP_CHANNEL","SET_OTP_SECRET_TOKEN","SET_SECRET_TOKEN","RESET","chatReducer","initialState","hostReducer","description","topic","classes","files","links","filesModul","materiModuleReducer","SET_MATERI","UPDATE_FILES","SET_NOTES","duration","question","quizTugaskuReducer","SET_QUIZ","SET_QUESTION","rootReducer","combineReducers","notification","resetPassword","materiModule","quizTugasku","persistConfig","storage","whitelist","persistedReducer","persistReducer","middleWares","ENVIRONMENT","thunk","filter","composeEnhancer","compose","createStore","applyMiddleware","persistStore","_expires_in","_token_type","AuthService","_popup_referral","dob","email","instagram_username","tiktok_username","province","regency","district","edu_level","setFormMateri","formMateri","setNotes","notes","setUpdateFile","setResetForm","setIsCompletedTourInHome","setIsCompletedTourInHistory","setIsCompletedTourInTugasKuHome","setIsCompletedTourInTugasKuClass","setSkipSocmed","PrimaryLink","css","appearance","isActive","isBlock","isDisabled","isRipple","_StyledButton","block","disabled","ripple","_styled","Button","withConfig","componentId","setFormQuiz","formQuiz","setQuestion","questions"],"mappings":"0GAAA,8CAOO,MAAMA,EAAWC,IACtB,MAAM,SAAEC,EAAQ,QAAEC,GAAYF,EAC9B,IAAyB,IAArBG,UAAUC,OACZ,MAAO,CACLC,OAAQ,KACRC,KAAM,KACNC,QAAS,+CAIb,GAAIN,EAAU,CAGZ,IAAI,OAAEI,EAAM,KAAEG,GAASP,EACnBK,EAAO,KACPC,EAAU,KAOd,IAAKE,kBAAQD,IAAS,UAAWA,EAAM,CACrCF,EAAOI,cAAIF,EAAKR,MAAO,OAAQ,MAC/BO,EAAUG,cAAIF,EAAKR,MAAO,UAAW,MACrC,MAAM,MAAEA,GAAUQ,EACF,OAAZD,IACFA,EAAUP,EAEd,CAeA,OAPKS,kBAAQD,IAAS,YAAaA,IACjCF,EAAOI,cAAIF,EAAM,OAAQ,MAEzBD,EAAUC,GAIRH,GAAU,KAAOC,GAAQ,IAId,MAATA,GAGS,MAATA,GAIS,MAATA,GAGS,MAATA,GAGS,MAATA,EAbqB,CAAED,SAAQC,OAAMC,WAelC,CACLF,SACAC,OAEAC,QACE,qFAIS,MAAXF,EACK,CACLA,SACAC,OAEAC,QAAS,gDAIN,CACLF,SACAC,OACAC,QAAUE,kBAAQF,GAAqB,kDAAVA,EAEjC,CAEA,OAAIL,EAKK,CACLG,OAAQ,KACRC,KAAM,KACNC,QAAS,qFAIN,CACLF,OAAQ,KACRC,KAAM,KACNC,QAASP,EAAMO,SAAW,kDAC3B,C,mCC/GH,oEAAO,MAAMI,EAAW,WAEXC,EAAUC,IAAI,CACzBC,KAAMH,EACNI,QAASF,G,uICDJ,MAAMG,EAAUC,UAAOC,IAAGC,MAAAC,YAAA,ynBAKlBC,OAAKC,QAyBTC,SAAOC,QAULC,EAAQR,UAAOC,IAAGQ,MAAAN,YAAA,sL,mCC3ChB,QAA0B,8C,mCCAzC,kJAUO,MAAMO,EAAkBC,UAC7B,IACE,MAAQC,uBAAwBC,GAAWC,cAErCC,QAAuBC,IAAavB,IAAI,OAADwB,OAAQJ,EAAM,8BAA8B,CACvFK,WAEIC,QAAqBH,IAAavB,IAAI,OAADwB,OAAQJ,EAAM,4BAA4B,CACnFK,WAEIE,QAAoBJ,IAAavB,IAAI,OAADwB,OAAQJ,EAAM,2BAA2B,CACjFK,WAGI3B,EAAO,CACX8B,OAAQN,EAAexB,KAAKA,KAC5B+B,KAAMH,EAAa5B,KAAKA,KACxBgC,IAAKH,EAAY7B,KAAKA,MAGxB,OAAOiC,QAAQC,QAAQlC,EACzB,CAAE,MAAOR,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,GAQW4C,EAAWhB,UACtB,IACE,MAAQC,uBAAwBC,GAAWC,cAErCvB,EAAO,CACXqC,IAAKC,EAAOC,KAAIC,GAAOA,IAAKC,YAGxBhD,QAAiBgC,IAAaiB,IAAI,OAADhB,OAC9BJ,EAAM,4BACbqB,IAAYC,UAAU5C,GACtB,CACE6C,QAAS,CACP,eAAgB,uCAItB,OAAOZ,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,GAQWsD,EAAkB1B,UAC7B,IACE,MAAM2B,EAAS,CACbF,QAAS,CACP,eAAgB,uCAIZxB,uBAAwBC,GAAWC,cAErCyB,EAAG,MAAAtB,OAASJ,EAAM,iBAClB7B,QAAiBgC,IAAaiB,IAClCM,EACAL,IAAYC,UAAU,CAAEK,UAAWC,IACnCH,GAEF,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,E,mCCxFF,4MAEA,MAEM2D,EAAU,IAJhB,OAIoBC,GAFPC,cAEqBC,SADdD,OAGPE,EAAaC,GACjB,IAAIvB,SAAQ,CAACC,EAASC,KAC3B,IAEED,EADUiB,EAAQM,OAAOD,GAE3B,CAAE,MAAOE,GACPvB,EAAOuB,EACT,KAISC,EAAaH,GACjB,IAAIvB,SAAQ,CAACC,EAASC,KAC3B,IAEED,EADUiB,EAAQS,OAAOJ,GAE3B,CAAE,MAAOE,GACPvB,EAAOuB,EACT,KAISG,EAAuB,SAACL,GAA8B,IAA1BM,EAAUC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,QACpD,MAAMG,EAAIf,EAAQM,OAAOD,GACzB,MAAmB,UAAfM,EAA+BI,EAChB,QAAfJ,EAA6BI,EAAEzB,WAChB,QAAfqB,EAA6BR,SAAS,CAACY,IACpC,CAACA,EACV,EAEaC,EAAuBX,GACxBL,EAAQS,OAAOJ,GAOdY,EAAWZ,GAAML,EAAQM,OAAOD,GAChCa,EAAW,kBAAelB,EAAQS,UAAOG,UAAW,C,mCC7ClD,QAA0B,gC,mCCAzC,4JAGO,MAAMO,EAAwBA,IACnCC,YAAaC,IAA0BC,yBAC5BC,EAA0BC,IAAA,IAAC,KAAE5C,EAAI,OAAED,GAAQ6C,EAAA,OACtDJ,YAAaC,IAA0BI,0BAA2B,CAAE7C,OAAMD,UAAS,EACxE+C,EAAyBrF,GACpC+E,YAAaC,IAA0BM,yBAA0BtF,GACtDuF,EAAqBA,IAAMR,YAAaC,IAA0BQ,oB,mCCT/E,sGAEA,MAAMC,EAAc,CAClBC,WAAWC,GACJA,EAED,OAAOC,KAAKD,GACPA,EAAME,QAAQ,+BAAgC,mBAGnD,MAAMD,KAAKD,GACNA,EAAME,QAAQ,wBAAyB,YAGzCF,EAVY,KAmBrBG,aAAaH,EAAOI,GAAa,IAADC,EAC9B,MAAMC,EAAe,MAAML,KAAKD,GAC1BO,EAAgB,OAAON,KAAKD,GAElC,OAAIA,GAAwB,kBAAfI,EACPE,EAAqBN,EAAM1C,WAAW4C,QAAQ,MAAO,OAClDF,EAAM1C,WAGX0C,GAAwB,aAAfI,GACPG,EAAsBP,EAAM1C,WAAW4C,QAAQ,OAAQ,MAGrC,QAAxBG,EAAY,OAALL,QAAK,IAALA,OAAK,EAALA,EAAO1C,kBAAU,IAAA+C,IAAI,EAC9B,GAGIG,EAAc,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAC/DC,EAAa,CAAC,QAKPC,EAAeV,IAC1B,MACMW,EADWb,EAAYK,aAAaH,EAAO,YACpBY,MAAM,EAAG,GAEtC,OAAOJ,EAAYK,SAASF,IAAgBF,EAAWI,SAASF,EAAY,EA6BjEG,EAAmBA,CAACd,EAAOe,KACtC,MACMJ,EADWb,EAAYK,aAAaH,EAAO,YACpBY,MAAM,EAAG,GAEtC,GAAIH,EAAWI,SAASF,GAAc,CAKpC,MAAO,CACL9C,IAJkD,iDAAAtB,OACGwE,GAIrDC,UAAW,yBAEf,CAEA,OAAIR,EAAYK,SAASF,GAChB,CACL9C,IAAK,kIACLmD,UAAW,2BAIR,CACLnD,IAAK,sBACLmD,UAAW,2BACZ,EAGUC,EAAajB,IACxB,MACMW,EADWb,EAAYK,aAAaH,EAAO,YACpBY,MAAM,EAAG,GAEtC,QAAIH,EAAWI,SAASF,EAGZ,EAGCb,K,wLCjHf,MAAMoB,EAAI5F,UAAO6F,EAAC3F,MAAAC,YAAA,6KAOPG,SAAOwF,QAMH,SAASC,EAAS7B,GAAe,OAAT8B,GAAM9B,EAC3C,OACE+B,eAACL,EAAC,IAAKI,EAAIE,SAAA,CAAE,cACA,IAAIC,MAAOC,cAAc,oDAG1C,CCvBA,IAAIC,EACJ,SAASC,IAAiS,OAApRA,EAAWC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIrD,UAAUC,OAAQoD,IAAK,CAAE,IAAIC,EAAStD,UAAUqD,GAAI,IAAK,IAAIE,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQH,EAAOG,GAAOD,EAAOC,GAAU,CAAE,OAAOH,CAAQ,EAAUJ,EAASW,MAAMC,KAAM5D,UAAY,CAElV,SAAS6D,EAAejD,EAAMkD,GAC5B,IAAI,MACFC,EAAK,QACLC,KACGC,GACDrD,EACJ,OAAoB,gBAAoB,MAAOoC,EAAS,CACtDkB,MAAO,6BACPC,WAAY,+BACZC,QAAS,eACTC,IAAKP,EACL,kBAAmBE,GAClBC,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CACrGxE,GAAI,IACJ6E,UAAW,mBACG,gBAAoB,OAAQ,CAC1CC,EAAG,GACHC,MAAO,MACPC,OAAQ,GACRC,MAAO,CACLC,KAAM,iBAEMzE,IAAV6D,EAAmC,gBAAoB,QAAS,CACpEtE,GAAIuE,GACH,gBAAkBD,EAAqB,gBAAoB,QAAS,CACrEtE,GAAIuE,GACHD,GAAS,KAAmB,gBAAoB,IAAK,CACtDW,MAAO,CACLE,SAAU,YAEX7B,IAAUA,EAAqB,gBAAoB,OAAQ,CAC5D8B,EAAG,qDACHP,UAAW,qBACK,gBAAoB,OAAQ,CAC5CO,EAAG,w1NACHP,UAAW,kBACXI,MAAO,CACLC,KAAM,WAGZ,CACA,MAAMG,EAA0B,aAAiBjB,GAClC,IC7CXkB,EAAiBC,EAAkBC,EAAkBC,EAAkB,ED6C5D,IC5Cf,SAAS,IAAiS,OAApR,EAAWjC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIrD,UAAUC,OAAQoD,IAAK,CAAE,IAAIC,EAAStD,UAAUqD,GAAI,IAAK,IAAIE,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQH,EAAOG,GAAOD,EAAOC,GAAU,CAAE,OAAOH,CAAQ,EAAU,EAASO,MAAMC,KAAM5D,UAAY,CAElV,SAASmF,EAAiBvE,EAAMkD,GAC9B,IAAI,MACFC,EAAK,QACLC,KACGC,GACDrD,EACJ,OAAoB,gBAAoB,MAAO,EAAS,CACtDsD,MAAO,6BACPC,WAAY,+BACZC,QAAS,eACTC,IAAKP,EACL,kBAAmBE,GAClBC,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CACrGxE,GAAI,KACU,gBAAoB,OAAQ,CAC1C+E,MAAO,MACPC,OAAQ,GACRC,MAAO,CACLC,KAAM,WAELI,IAAoBA,EAA+B,gBAAoB,iBAAkB,CAC5FtF,GAAI,IACJ2F,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,kBAAmB,6BACnBC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,OAAQ,EACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,IACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,IACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,IACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,IACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,EACRC,UAAW,cACPX,IAAqBA,EAAgC,gBAAoB,iBAAkB,CAC/FvF,GAAI,IACJ2F,GAAI,MACJC,GAAI,GACJC,GAAI,MACJC,GAAI,GACJC,kBAAmB,6BACnBC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,OAAQ,EACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,IACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,IACRC,UAAW,WACI,gBAAoB,OAAQ,CAC3CD,OAAQ,EACRC,UAAW,cACPV,IAAqBA,EAAgC,gBAAoB,iBAAkB,CAC/FxF,GAAI,IACJ2F,GAAI,MACJC,GAAI,MACJC,IAAK,KACLC,GAAI,MACJC,kBAAmB,6BACnBC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,OAAQ,EACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,EACRC,UAAW,cACPT,IAAqBA,EAAgC,gBAAoB,iBAAkB,CAC/FzF,GAAI,IACJ2F,GAAI,KACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,kBAAmB,6BACnBC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,OAAQ,EACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,IACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,IACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,GACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,EACRC,UAAW,oBACIzF,IAAV6D,EAAmC,gBAAoB,QAAS,CACrEtE,GAAIuE,GACH,kBAAoBD,EAAqB,gBAAoB,QAAS,CACvEtE,GAAIuE,GACHD,GAAS,KAAmB,gBAAoB,IAAK,CACtDW,MAAO,CACLE,SAAU,YAEX,IAAU,EAAqB,gBAAoB,OAAQ,CAC5DC,EAAG,0DACa,gBAAoB,OAAQ,CAC5CA,EAAG,8+BACHH,MAAO,CACLC,KAAM,OACNiB,OAAQ,OACRC,iBAAkB,GAClBC,YAAa,2BAEA,gBAAoB,OAAQ,CAC3CjB,EAAG,yoDACHH,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,8GACHH,MAAO,CACLC,KAAM,aAEO,gBAAoB,OAAQ,CAC3CE,EAAG,8FACHH,MAAO,CACLC,KAAM,aAEO,gBAAoB,OAAQ,CAC3CE,EAAG,4DACHH,MAAO,CACLC,KAAM,aAEO,gBAAoB,OAAQ,CAC3CE,EAAG,0DACHH,MAAO,CACLC,KAAM,cAGZ,CACA,MAAM,EAA0B,aAAiBQ,GAClC,ICxJX,EDwJW,ICvJf,SAAS,IAAiS,OAApR,EAAWlC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIrD,UAAUC,OAAQoD,IAAK,CAAE,IAAIC,EAAStD,UAAUqD,GAAI,IAAK,IAAIE,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQH,EAAOG,GAAOD,EAAOC,GAAU,CAAE,OAAOH,CAAQ,EAAU,EAASO,MAAMC,KAAM5D,UAAY,CAElV,SAAS+F,EAAanF,EAAMkD,GAC1B,IAAI,MACFC,EAAK,QACLC,KACGC,GACDrD,EACJ,OAAoB,gBAAoB,MAAO,EAAS,CACtDsD,MAAO,6BACPC,WAAY,+BACZC,QAAS,eACTC,IAAKP,EACL,kBAAmBE,GAClBC,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CACrGxE,GAAI,IACJ6E,UAAW,oBACG,gBAAoB,OAAQ,CAC1CC,EAAG,IACHC,MAAO,MACPC,OAAQ,GACRC,MAAO,CACLC,KAAM,WAEQ,gBAAoB,WAAY,CAChDlF,GAAI,IACJ6E,UAAW,oBACG,gBAAoB,OAAQ,CAC1CC,EAAG,MACHyB,EAAG,MACHxB,MAAO,KACPC,OAAQ,KACRC,MAAO,CACLC,KAAM,iBAEMzE,IAAV6D,EAAmC,gBAAoB,QAAS,CACpEtE,GAAIuE,GACH,cAAgBD,EAAqB,gBAAoB,QAAS,CACnEtE,GAAIuE,GACHD,GAAS,KAAmB,gBAAoB,IAAK,CACtDW,MAAO,CACLE,SAAU,YAEX,IAAU,EAAqB,gBAAoB,OAAQ,CAC5DC,EAAG,2DACHP,UAAW,sBACK,gBAAoB,OAAQ,CAC5CO,EAAG,2FACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,mUACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,wUACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,obACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,8iBACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,8BACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,kCACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,qdACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,2IACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,4KACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,kEACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,sGACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,qPACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,0CACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,gYACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,8QACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,wEACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,iCACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,wDACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,4ZACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,OAAQ,CAC3CE,EAAG,0EACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,UAEO,gBAAoB,IAAK,CACxCD,MAAO,CACLE,SAAU,YAEE,gBAAoB,OAAQ,CAC1CC,EAAG,6HACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,aAEO,gBAAoB,OAAQ,CAC3CE,EAAG,sSACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,aAEO,gBAAoB,OAAQ,CAC3CE,EAAG,mmBACHP,UAAW,mBACXI,MAAO,CACLC,KAAM,YAGZ,CACA,MAAM,EAA0B,aAAiBoB,GAClC,Q,aC9Lf,MAAMtJ,EAAUC,UAAOC,IAAGC,MAAAC,YAAA,icAWfG,SAAOiJ,QASPjJ,SAAOC,QAUZiJ,EAAcxJ,UAAOC,IAAGQ,MAAAN,YAAA,sSAuEfsJ,IC7GXC,ED6GWD,EAnDKA,KAClB,MACEE,IAAI,KAAEC,IACJC,cAEEC,EAAiBC,IACL,YAAZA,IACW,YAATH,EACFI,OAAOC,KAAK,sCAAuC,WAEnDD,OAAOC,KAAK,gEAAiE,YAIjE,QAAZF,GACFC,OAAOC,KAAK,qEAAsE,UAGpE,WAAZF,GACFC,OAAOC,KAAK,+CAAgD,SAC9D,EAGF,OACEhE,eAAClG,EAAO,CAAAmG,SAAA,CACNgE,cAAA,KAAAhE,SAAG,0HAKHD,eAACuD,EAAW,CAAAtD,SAAA,CACVgE,cAAA,UAAQrK,KAAK,SAASsK,QAASA,IAAML,EAAe,OAAO5D,SACzDgE,cAAA,OAAAhE,SACEgE,cAACE,EAAM,QAGXF,cAAA,UAAQrK,KAAK,SAASsK,QAASA,IAAML,EAAe,WAAYO,IAAI,WAAUnE,SAC5EgE,cAAA,OAAAhE,SACEgE,cAACI,EAAU,QAGfJ,cAAA,UAAQrK,KAAK,SAASsK,QAASA,IAAML,EAAe,UAAU5D,SAC5DgE,cAAA,OAAAhE,SACEgE,cAACK,EAAS,aAIR,E,iBCxGd,SAAS,IAAiS,OAApR,EAAWhE,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIrD,UAAUC,OAAQoD,IAAK,CAAE,IAAIC,EAAStD,UAAUqD,GAAI,IAAK,IAAIE,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQH,EAAOG,GAAOD,EAAOC,GAAU,CAAE,OAAOH,CAAQ,EAAU,EAASO,MAAMC,KAAM5D,UAAY,CAElV,SAASkH,EAAQtG,EAAMkD,GACrB,IAAI,MACFC,EAAK,QACLC,KACGC,GACDrD,EACJ,OAAoB,gBAAoB,MAAO,EAAS,CACtDsD,MAAO,6BACPC,WAAY,+BACZC,QAAS,gBACTC,IAAKP,EACL,kBAAmBE,GAClBC,GAAQmC,IAAUA,EAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,iBAAkB,CAC7H3G,GAAI,IACJ2F,GAAI,GACJC,GAAI,MACJC,GAAI,IACJC,GAAI,MACJC,kBAAmB,6BACnBC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,OAAQ,EACRC,UAAW,YACI,gBAAoB,OAAQ,CAC3CD,OAAQ,EACRC,UAAW,oBACIzF,IAAV6D,EAAmC,gBAAoB,QAAS,CACrEtE,GAAIuE,GACH,QAAUD,EAAqB,gBAAoB,QAAS,CAC7DtE,GAAIuE,GACHD,GAAS,KAAmB,gBAAoB,OAAQ,CACzDc,EAAG,+PACHP,UAAW,iBACXI,MAAO,CACLC,KAAM,UACNwC,SAAU,aAEG,gBAAoB,OAAQ,CAC3CtC,EAAG,oJACHP,UAAW,iBACXI,MAAO,CACLC,KAAM,UACNwC,SAAU,aAEG,gBAAoB,OAAQ,CAC3CtC,EAAG,4uHACHP,UAAW,iBACXI,MAAO,CACLyC,SAAU,UACVxC,KAAM,aAGZ,CACA,MAAM,EAA0B,aAAiBuC,GAClC,I,EAAA,ICnDf,MAAMzK,EAAUC,UAAOC,IAAGC,MAAAC,YAAA,2JAOfG,SAAOC,QAQH,SAASmK,IACtB,MAAMC,EAAOX,OAAOY,SAASC,SACvBC,EAAUC,uBAGhB,MAAa,MAATJ,EAEAT,cAACnK,EAAO,CAAAmG,SACNgE,cAAA,KAAGc,KAAK,kBAAiB9E,SACvBgE,cAACe,EAAO,CAAC5D,MAAM,gBAOrB6C,cAACnK,EAAO,CAAAmG,SACNgE,cAACe,EAAO,CAACd,QAdUL,IAAMgB,EAAQI,KAAK,KAcJ7D,MAAM,aAG9C,C,mDCzCe,MAA0B,sC,QCazC,MAAM8D,EAASnL,UAAOoL,OAAMlL,MAAAC,YAAA,oPAUjBG,SAAOC,QASZ8K,EAAkBrL,UAAOC,IAAGQ,MAAAN,YAAA,8KASvBG,SAAOC,QAKZ+K,GAAatL,UAAOuL,IAAGC,MAAArL,YAAA,0LAMlBG,SAAOC,OACDD,SAAOC,QAYT,SAASkL,GAASvH,GAAY,IAAX,KAAErE,GAAMqE,EACxC,MAAM4G,EAAUC,wBACV,KAAEJ,GAASe,0BAEjB,OAAI7L,EAEAoG,eAACkF,EAAM,CAAAjF,SAAA,CACLgE,cAACQ,EAAI,IAEK,YAAT7K,GAAsBqK,cAAA,OAAKyB,IAAKC,IAAYC,IAAKhM,IACxC,WAATA,GAAqBqK,cAAA,OAAKyB,IAAKG,IAAWD,IAAKhM,IACtC,YAATA,GAAsBqK,cAAA,OAAKyB,IAAKI,IAAYF,IAAKhM,IACxC,WAATA,GAAqBqK,cAAA,OAAKyB,IAAKK,IAAWH,IAAKhM,OAMpDoG,eAACkF,EAAM,CAAAjF,SAAA,CACK,MAATyE,GACCT,cAACmB,EAAe,CAAClB,QAASA,IAAMW,EAAQmB,SAAS/F,SAC/CgE,cAAA,OAAKyB,IAAKO,IAAUL,IAAI,OAG5B3B,cAACQ,EAAI,IACK,MAATC,GAAgBT,cAACoB,GAAU,CAACK,IAAKQ,EAASN,IAAI,iBAGrD,C,OCnFA,MAAM9L,GAAUC,UAAOC,IAAGC,QAAAC,YAAA,oPAEboH,GAAUA,EAAM6E,oBAAsB,OAAS,SAM/C9L,SAAOiJ,QAGPjJ,SAAOC,OAKTD,SAAOC,QAYZ8L,GAAYnI,IAA6C,IAA5C,oBAAEkI,EAAmB,KAAEvM,KAASmG,GAAM9B,EACvD,OACE+B,eAAClG,GAAO,CAACqM,oBAAqBA,KAAyBpG,EAAIE,SAAA,CAC/C,YAATrG,GAAsBqK,cAAA,OAAKyB,IAAKC,IAAYC,IAAKhM,IACxC,WAATA,GAAqBqK,cAAA,OAAKyB,IAAKG,IAAWD,IAAKhM,IACtC,YAATA,GAAsBqK,cAAA,OAAKyB,IAAKI,IAAYF,IAAKhM,IACxC,WAATA,GAAqBqK,cAAA,OAAKyB,IAAKK,IAAWH,IAAKhM,MACxC,EASdwM,GAAUC,aAAe,CACvBzM,KAAM,UACNuM,qBAAqB,GAGRC,IC3DXE,GAAI,GD2DOF,MC1Df,SAAS,KAAiS,OAApR,GAAW9F,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIrD,UAAUC,OAAQoD,IAAK,CAAE,IAAIC,EAAStD,UAAUqD,GAAI,IAAK,IAAIE,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQH,EAAOG,GAAOD,EAAOC,GAAU,CAAE,OAAOH,CAAQ,EAAU,GAASO,MAAMC,KAAM5D,UAAY,CAElV,SAASkJ,GAAetI,EAAMkD,GAC5B,IAAI,MACFC,EAAK,QACLC,KACGC,GACDrD,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD4D,MAAO,GACPC,OAAQ,GACRL,QAAS,YACTO,KAAM,OACNT,MAAO,6BACPG,IAAKP,EACL,kBAAmBE,GAClBC,GAAQF,EAAqB,gBAAoB,QAAS,CAC3DtE,GAAIuE,GACHD,GAAS,KAAMkF,KAAOA,GAAkB,gBAAoB,IAAK,CAClErE,SAAU,0BACI,gBAAoB,OAAQ,CAC1CuC,SAAU,UACVgC,SAAU,UACVtE,EAAG,sjBACHF,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHlF,GAAI,oBACU,gBAAoB,OAAQ,CAC1C+E,MAAO,QACPC,OAAQ,QACRE,KAAM,QACNL,UAAW,oCAEf,CACA,MAAM,GAA0B,aAAiB4E,IAClC,ICpCX,GAAI,GDoCO,ICnCf,SAAS,KAAiS,OAApR,GAAWjG,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIrD,UAAUC,OAAQoD,IAAK,CAAE,IAAIC,EAAStD,UAAUqD,GAAI,IAAK,IAAIE,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQH,EAAOG,GAAOD,EAAOC,GAAU,CAAE,OAAOH,CAAQ,EAAU,GAASO,MAAMC,KAAM5D,UAAY,CAElV,SAASoJ,GAAiBxI,EAAMkD,GAC9B,IAAI,MACFC,EAAK,QACLC,KACGC,GACDrD,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD4D,MAAO,GACPC,OAAQ,GACRL,QAAS,YACTO,KAAM,OACNT,MAAO,6BACPG,IAAKP,EACL,kBAAmBE,GAClBC,GAAQF,EAAqB,gBAAoB,QAAS,CAC3DtE,GAAIuE,GACHD,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEa,SAAU,0BACI,gBAAoB,OAAQ,CAC1CuC,SAAU,UACVgC,SAAU,UACVtE,EAAG,2/CACHF,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHlF,GAAI,oBACU,gBAAoB,OAAQ,CAC1C+E,MAAO,QACPC,OAAQ,QACRE,KAAM,QACNL,UAAW,6BAEf,CACA,MAAM,GAA0B,aAAiB8E,IAClC,ICpCX,GDoCW,ICnCf,SAAS,KAAiS,OAApR,GAAWnG,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIrD,UAAUC,OAAQoD,IAAK,CAAE,IAAIC,EAAStD,UAAUqD,GAAI,IAAK,IAAIE,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQH,EAAOG,GAAOD,EAAOC,GAAU,CAAE,OAAOH,CAAQ,EAAU,GAASO,MAAMC,KAAM5D,UAAY,CAElV,SAASqJ,GAAgBzI,EAAMkD,GAC7B,IAAI,MACFC,EAAK,QACLC,KACGC,GACDrD,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD4D,MAAO,GACPC,OAAQ,GACRL,QAAS,YACTO,KAAM,OACNT,MAAO,6BACPG,IAAKP,EACL,kBAAmBE,GAClBC,GAAQF,EAAqB,gBAAoB,QAAS,CAC3DtE,GAAIuE,GACHD,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3Ec,EAAG,mgBACHF,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB0E,IAClC,Q,qBCzBA,OAA0B,yCCczC,MAAMC,GAAS5M,UAAO6M,OAAM3M,QAAAC,YAAA,6LASjBG,SAAOC,OACDH,OAAKG,QAIhBuM,GAAO9M,UAAO+M,KAAItM,QAAAN,YAAA,0HAIbG,SAAOC,OACDH,OAAKG,QAKhByM,GAAShN,UAAOC,IAAGuL,QAAArL,YAAA,oLAWnB8M,GAAajN,UAAOkN,OAAMC,QAAAhN,YAAA,qHAQ1BiN,GAAapN,UAAOuL,IAAG8B,QAAAlN,YAAA,0KAOlBG,SAAOC,OACDH,OAAKG,QAKP,SAAS+M,GAAUpJ,GAA8B,IAA7B,SAAEgC,EAAQ,aAAEqH,GAAcrJ,EAC3D,MAAM,KAAEyG,GAASe,0BACX5B,EAAiB0D,IACP,WAAVA,GACFxD,OAAOC,KAAK,yCAA0C,UAE1C,SAAVuD,GACFxD,OAAOC,KAAK,qCAAsC,UAEtC,MAAVuD,GACFxD,OAAOC,KAAK,sCAAuC,SACrD,EAGF,OACEhE,eAAAwH,WAAA,CAAAvH,SAAA,CACGqH,GAAgBrD,cAACwD,UAAO,IACzBzH,eAAA,OAAK+B,MAAO,CAAE2F,QAAS,GAAIC,SAAU,YAAa1H,SAAA,CAChDgE,cAACuB,GAAS,IAEVvB,cAAC4C,GAAI,CAAA5G,SAAEA,IAEPD,eAAC2G,GAAM,CAAA1G,SAAA,CACLgE,cAACT,EAAW,IACZxD,eAAC+G,GAAM,CAAA9G,SAAA,CACLD,eAACgH,GAAU,CAACjF,MAAO,CAAE6F,UAAW,OAAS1D,QAASA,IAAML,EAAe,WAAW5D,SAAA,CAChFgE,cAAC4D,GAAS,CAAC9F,MAAO,CAAEF,MAAO,OAAQiG,YAAa,SAChD7D,cAAA,KAAGlC,MAAO,CAAEgG,WAAY,OAAQ9H,SAAC,iBAEnCD,eAACgH,GAAU,CACTjF,MAAO,CAAE+F,YAAa,SAAUE,WAAY,SAAUJ,UAAW,OACjE1D,QAASA,IAAML,EAAe,SAAS5D,SAAA,CAEvCgE,cAACgE,GAAO,CAAClG,MAAO,CAAEF,MAAO,OAAQiG,YAAa,MAAOF,UAAW,SAChE3D,cAAA,KAAGlC,MAAO,CAAE6F,UAAW,OAAQ3H,SAAC,gBAElCD,eAACgH,GAAU,CAAC9C,QAASA,IAAML,EAAe,MAAO9B,MAAO,CAAE6F,UAAW,SAAU3H,SAAA,CAC7EgE,cAACiE,GAAI,CAACnG,MAAO,CAAEF,MAAO,OAAQiG,YAAa,SAC3C7D,cAAA,KAAGlC,MAAO,CAAE6F,UAAW,OAAQ3H,SAAC,kBAGpCgE,cAACnE,EAAS,OAEF,MAAT4E,GAAgBT,cAACkD,GAAU,CAACzB,IAAKyC,GAAYvC,IAAI,sBAI1D,CAEA,MAAMwC,GAAiBrO,UAAOC,IAAGqO,QAAAnO,YAAA,uQAOtBG,SAAOiJ,QACDnJ,OAAKC,QAIXC,SAAOC,OACDH,OAAK0F,QAMhByI,GAAcvO,UAAOC,IAAGuO,QAAArO,YAAA,sEACnBG,SAAOC,OACDH,OAAKC,SAKToO,GAAgBC,IAAgD,IAA/C,SAAExI,EAAQ,aAAEqH,EAAY,cAAEoB,GAAeD,EACrE,OACEzI,eAAAwH,WAAA,CAAAvH,SAAA,CACGqH,GAAgBrD,cAACwD,UAAO,IACzBzH,eAAA,OAAK+B,MAAO,CAAE2F,QAAS,IAAKzH,SAAA,CAC1BgE,cAACuB,GAAS,IAEVvB,cAAC4C,GAAI,CAAA5G,SACHD,eAACoI,GAAc,CAAAnI,SAAA,CACbgE,cAACmC,GAAS,CAACxM,KAAM8O,IACjBzE,cAACqE,GAAW,CAAArI,SAAEA,SAIlBD,eAAC2G,GAAM,CAAA1G,SAAA,CACLgE,cAACT,EAAW,IACZS,cAACnE,EAAS,YAGb,EAIM6I,GAAgBC,IAAiE,IAAhE,SAAE3I,EAAQ,aAAEqH,EAAY,cAAEoB,EAAa,gBAAEG,GAAiBD,EACtF,OACE5I,eAAAwH,WAAA,CAAAvH,SAAA,CACGqH,GAAgBrD,cAACwD,UAAO,IACzBzH,eAAA,OAAK+B,MAAO,CAAE2F,QAAS,IAAKzH,SAAA,CAC1BgE,cAACuB,GAAS,CAAC5L,KAAM8O,IAEjBzE,cAAC4C,GAAI,CAAA5G,SACHD,eAACoI,GAAc,CAAAnI,SAAA,EACX4I,GAAmB5E,cAACmC,GAAS,CAACD,qBAAmB,EAACvM,KAAM8O,IAC1DzE,cAACqE,GAAW,CAAArI,SAAEA,SAIlBD,eAAC2G,GAAM,CAAA1G,SAAA,CACLgE,cAACT,EAAW,IACZS,cAACnE,EAAS,YAGb,C,mCC3LP,sGAAO,MAAMgJ,EAAmBC,GAASA,EAAMC,YAAYC,WAC9CC,EAAoBH,GAASA,EAAMC,YACnCG,EAAwBJ,GAASA,EAAMC,YAAYI,I,8MCGzD,MAAMC,EACS,qBADTA,EAEW,uBAFXA,EAGW,uBAHXA,EAIS,qB,4BCAtB,MAAMC,EAAc,CAClB5O,yBACE,MAAQC,uBAAwBC,EAAM,YAAE2O,GAAgB1O,cAExD,IACE,GDE+B2O,MACnC,MAAMC,EAAcC,cACdC,EAAOC,YAAWH,GACxB,OAAII,gBAAMF,GAAcN,EACjB,OAAO,ECNNG,KAA4BH,EAC9B,MAAMS,MAAMT,GAGd,MAAMU,EDSwBC,MAClC,MAAMT,EAAcU,cACpB,GAAI1Q,kBAAQgQ,GAAc,OAAOF,EAEjC,MAAM,IAAEa,GAAQC,YAAWZ,GAC3B,OAAIM,gBAAMK,GAAab,EAGC,IAANa,IACN,IAAIhK,MAAOkK,UACMf,EAEtB,OAAO,ECrBOW,GACjB,GACED,IAAaV,GACbU,IAAaV,EAEb,MAAMS,MAAMC,GAGd,GAAIA,IAAaV,EAAkC,CACjD,MAAMgB,QAAuBC,eACvB,KAAEhR,SAAeiR,IAAY/Q,IAAI,OAADwB,OAAQJ,EAAM,eAAe,CACjEuB,QAAS,CACPqO,cAAc,UAADxP,OAAYqP,MAG7B,OAAO9O,QAAQC,QAAQ,CAAEiP,KAAMnR,EAAKA,KAAMoR,SAAUpR,EAAKA,KAAKqR,WAChE,CAAO,CACL,MAAM,KAAErR,SAAeiR,IAAY/Q,IAAI,OAADwB,OAAQJ,EAAM,eAAe,CACjEuB,QAAS,CACPqO,cAAc,UAADxP,OAAYuO,MAG7B,OAAOhO,QAAQC,QAAQ,CAAEiP,KAAMnR,EAAKA,KAAMoR,SAAUpR,EAAKA,KAAKqR,WAChE,CACF,CAAE,MAAO7R,GAEP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAUA4B,wBAAuBuD,GAAwC,IAAvC,MAAE2M,EAAK,MAAEC,EAAK,KAAElB,EAAI,aAAEmB,GAAc7M,EAC1D,IACE,MAAMrD,EAASmQ,IAAUpB,GAAMqB,aACzB1O,EAAG,MAAAtB,OAASJ,EAAM,4BAElB7B,QAAiBgC,IAAaiB,IAClCM,EACAL,IAAYC,UAAU,CAAE0O,QAAOC,QAAOC,iBACtC,CACE3O,QAAS,CAAE,eAAgB,uCAI/B,OAAOZ,QAAQC,QAAQ,CAAEiP,KAAM1R,EAASO,KAAKA,KAAMoR,SAAUf,GAC/D,CAAE,MAAO7Q,GACP,IAAI,OAAEK,EAAM,QAAEE,EAAO,KAAED,GAASP,YAASC,GAEzC,OAAe,MAAXK,EACKoC,QAAQE,OAAO,CAAEtC,SAAQE,QAASA,EAAQ,GAAID,SAGnDA,IAAS6R,IAAeC,WAAWC,cAC9B5P,QAAQE,OAAO,CACpB2F,MAAO/H,EACPA,QAAS,4CACTF,SACAC,SAIGmC,QAAQE,OAAO,CAAEtC,SAAQE,UAASD,QAC3C,CACF,EAUAsB,uBAAsB+N,GAA+C,IAA9C,KAAEkB,EAAI,MAAEiB,EAAK,MAAEC,EAAK,oBAAEO,GAAqB3C,EAChE,IACE,IAAI1P,EAAW,KAYf,OATEA,EADEqS,QACeb,IAAY/Q,IAAI,cAAe,CAC9C6R,OAAQ,CAAEC,YAAa3B,EAAMiB,QAAOC,iBAGrB9P,IAAavB,IAAI,cAAe,CAC/C6R,OAAQ,CAAEC,YAAa3B,EAAMiB,QAAOC,WAIjCtP,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,MAAM,OAAEK,EAAM,KAAEC,EAAI,QAAEC,GAAYR,YAASC,GAC3C,OAAe,MAAXK,GAA2B,MAATC,EACbmC,QAAQE,OAAO,CAAEtC,SAAQC,OAAMC,QAAQ,GAAD2B,OAAK4P,EAAK,qBAGlDrP,QAAQE,OAAO,CAAEtC,SAAQC,OAAMC,WACxC,CACF,EAWAqB,kBAAiBkO,GAAsE,IAArE,KAAEjF,EAAO,KAAI,SAAE4H,EAAW,KAAI,KAAEC,EAAO,KAAI,oBAAEJ,GAAqBxC,EAClF,IACE,IAAI7P,EAAW,KAYf,OATEA,EADEqS,QACeb,IAAY/Q,IAAI,0BAA2B,CAC1D6R,OAAQ,CAAE1H,OAAM4H,WAAUC,gBAGXzQ,IAAavB,IAAI,0BAA2B,CAC3D6R,OAAQ,CAAE1H,OAAM4H,WAAUC,UAIvBjQ,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,MAAM,OAAEK,EAAM,KAAEC,EAAI,QAAEC,GAAYR,YAASC,GAC3C,OAAOyC,QAAQE,OAAO,CAAEtC,SAAQC,OAAMC,WACxC,CACF,EASAqB,sBAAqB+Q,GAA6B,IAA5B,gBAAEC,EAAe,KAAE/B,GAAM8B,EAC7C,IACE,MAAM7Q,EAASmQ,IAAUpB,GAAMqB,aACzB1O,EAAG,MAAAtB,OAASJ,EAAM,gCAElB,KAAEtB,SAAeyB,IAAaiB,IAClCM,EACAL,IAAYC,UAAU,CACpBwP,gBAAiBA,EAAgBC,KAAK,OAExC,CACExP,QAAS,CAAE,eAAgB,uCAI/B,OAAOZ,QAAQC,QAAQ,CAAEiP,KAAMnR,EAAKA,KAAMoR,SAAUf,GACtD,CAAE,MAAO7Q,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAMA4B,mBACE,IACE,MAAQC,uBAAwBC,GAAWC,eAErC,KAAEvB,SAAeyB,IAAavB,IAAI,OAADwB,OAAQJ,EAAM,gBAErD,OAAOW,QAAQC,QAAQ,CAAEiP,KAAMnR,EAAKA,KAAMoR,SAAUpR,EAAKA,KAAKqR,WAChE,CAAE,MAAO7R,GACP,MAAM,OAAEK,EAAM,KAAEC,EAAI,QAAEC,GAAYR,YAASC,GAC3C,OAAOyC,QAAQE,OAAO,CAAEtC,SAAQC,OAAMC,WACxC,CACF,EAEAqB,0BACE,IACE,MAAM4B,EAAG,eACHhD,QAAayB,IAAavB,IAAI8C,GACpC,OAAOf,QAAQC,QAAQ,CAAEgE,UAAWlG,EAAKA,KAAKkG,WAChD,CAAE,MAAO1G,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAUA4B,0BAAyBkR,GAA4C,IAA3C,SAAEC,EAAQ,UAAEC,EAAS,SAAEC,EAAW,MAAMH,EAChE,IACE,MAAM,KAAEtS,SAAeyB,IAAavB,IAAI,cAAe,CACrD6R,OAAQ,CAAEQ,WAAUC,YAAWC,cAGjC,OAAOxQ,QAAQC,QAAQlC,EACzB,CAAE,MAAOR,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,GA4CWkT,EAAmBtR,UAMzB,IANgC,MACrC+D,EAAK,SACLwN,EAAQ,sBACRC,EAAqB,KACrBvC,EAAI,aACJmB,GACDqB,EACC,IAEE,MAAMpT,QAAiBwR,IAAY6B,KAAK,MAADpR,OACtB,YAAT2O,EAAqB,OAASA,EAAI,mBACxC1N,IAAYC,UAAU,CAAEuC,QAAOwN,WAAUC,wBAAuBpB,iBAChE,CACE3O,QAAS,CAAE,eAAgB,uCAG/B,OAAOZ,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,MAAM,QAAEO,EAAO,OAAEF,EAAM,KAAEC,GAASP,YAASC,GAE3C,OAAIM,IAAS6R,IAAeoB,eAAelB,cAClC5P,QAAQE,OAAO,CACpB2F,MAAO/H,EACPA,QAAS,wCACTF,SACAC,SAIGmC,QAAQE,OAAO,CAAEpC,UAASF,SAAQC,QAC3C,GAOWkT,EAAqB5R,UAChC,IACE,MAAM,KAAEpB,SAAeyB,IAAaiB,IAAI,yBAEtCC,IAAYC,UAAU,CAAEqQ,aACxB,CACEpQ,QAAS,CACP,eAAgB,uCAKtB,OAAOZ,QAAQC,QAAQ,CAAEiP,KAAMnR,EAAKA,KAAMoR,SAAUpR,EAAKA,KAAKqR,WAChE,CAAE,MAAO7R,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,GAGW0T,EAAiB9R,UAC5B,IACE,MAAM,KAAEpB,SAAeiR,IAAY/Q,IAAI,wBAAyB,CAC9D2C,QAAS,CACP,eAAgB,sBAIpB,OAAOZ,QAAQC,QAAQlC,EACzB,CAAE,MAAOR,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,GAGawQ,K,mCCnVf,wDAEO,SAAS1F,IAGd,OAFa,IAAI6I,KACGC,WAEtB,C,mCCNA,4JAGO,MAAMC,EAAgB1O,IAAA,IAAC,YAAE2O,GAAa3O,EAAA,OAC3CJ,YAAagP,IAAkBC,gBAAiB,CAAEF,eAAc,EAOrDG,EAAkBtE,IAAA,IAAC,MAAEuE,EAAK,UAAEC,GAAWxE,EAAA,OAClD5K,YAAagP,IAAkBK,kBAAmB,CAAEF,QAAOC,aAAY,EAC5DE,EAAiBrU,GAAS+E,YAAagP,IAAkBO,iBAAkBtU,GAC3EuU,EAAaA,IAAMxP,YAAagP,IAAkBS,Y,kCCd/D,mFAAO,MAAMnT,EAAO,CAClBoT,QAAS,QACTC,QAAS,QACTpT,QAAS,QACTkJ,QAAS,QACTzD,OAAQ,QACRvF,OAAQ,SACRmT,QAAS,SACTC,QAAS,UAGErT,EAAS,CACpBkT,QAAQ,eAADvS,OAAiBb,EAAKoT,QAAO,KACpCC,QAAQ,eAADxS,OAAiBb,EAAKqT,QAAO,KACpCpT,QAAQ,eAADY,OAAiBb,EAAKC,QAAO,KACpCkJ,QAAQ,eAADtI,OAAiBb,EAAKmJ,QAAO,KACpCzD,OAAO,eAAD7E,OAAiBb,EAAK0F,OAAM,KAClCvF,OAAO,eAADU,OAAiBb,EAAKG,OAAM,KAClCmT,QAAQ,eAADzS,OAAiBb,EAAKsT,QAAO,KACpCC,QAAQ,eAAD1S,OAAiBb,EAAKuT,QAAO,KACpCC,SAAS,eAAD3S,OAAiBb,EAAKuT,QAAO,K,gFCpBhC,MAAME,EAAgBA,IAEzB5N,eAAA,OACE6B,MAAM,MACNC,OAAO,MACPL,QAAQ,cACRO,KAAK,OACLT,MAAM,6BAA4BtB,SAAA,CAElCgE,cAAA,QACE/B,EAAE,yWACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,wXACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,4GACFF,KAAK,wBAEPiC,cAAA,QACE/B,EAAE,oHACFF,KAAK,wBAEPiC,cAAA,WAAS4J,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUhM,KAAK,YAClEiC,cAAA,QACE/B,EAAE,kKACFF,KAAK,YAEPiC,cAAA,WAAS4J,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUhM,KAAK,YAClEiC,cAAA,WAAS4J,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUhM,KAAK,YAClEiC,cAAA,WAAS4J,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUhM,KAAK,YAClEiC,cAAA,QACE/B,EAAE,gKACFF,KAAK,YAEPiC,cAAA,WAAS4J,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUhM,KAAK,YAClEiC,cAAA,WAAS4J,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUhM,KAAK,YAClEiC,cAAA,WAAS4J,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUC,GAAG,UAAUhM,KAAK,YAClEiC,cAAA,WAAS4J,GAAG,UAAUC,GAAG,UAAUC,GAAG,SAASC,GAAG,UAAUhM,KAAK,YACjEiC,cAAA,QACE/B,EAAE,mKACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+MACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,2SACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,oLACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,mQACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+PACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,iKACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,iTACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,gKACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+SACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,gKACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,kTACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,wMACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,qPACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,yhBACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,oNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+PACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,mNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+TACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+eACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+eACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,8eACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,iNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,gNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,4GACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+MACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,mNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,whBACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,0sBACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,smBACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+dACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,oLACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,iLACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,yMACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,oKACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,0IACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,4MACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,iUACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+SACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,kNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,0YACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,gWACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,oLACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,gNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,gQACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,gQACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,8bACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,kNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,8JACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,oQACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,+JACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,mNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,8SACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,4LACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,iQACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,8PACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,kKACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,iTACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,kKACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,mTACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,mKACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,iTACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,iNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,6kBACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,oNACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,kTACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,4GACFF,KAAK,YAEPiC,cAAA,QAAM/B,EAAE,oEAAoEF,KAAK,YACjFiC,cAAA,QACE/B,EAAE,kFACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,uGACFF,KAAK,YAEPiC,cAAA,QAAM/B,EAAE,mEAAmEF,KAAK,YAChFiC,cAAA,QACE/B,EAAE,oFACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,4GACFF,KAAK,YAEPiC,cAAA,QAAM/B,EAAE,oEAAoEF,KAAK,YACjFiC,cAAA,QACE/B,EAAE,oFACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,2hBACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,kLACFF,KAAK,YAEPiC,cAAA,QACE/B,EAAE,ixBACFF,KAAK,YAEPhC,eAAA,QAAAC,SAAA,CACED,eAAA,kBACElD,GAAG,gBACH2F,GAAG,UACHC,GAAG,UACHC,GAAG,UACHC,GAAG,UACHE,cAAc,iBAAgB7C,SAAA,CAE9BgE,cAAA,QAAM,aAAW,YACjBA,cAAA,QAAMlB,OAAO,IAAI,aAAW,eAE9B/C,eAAA,kBACElD,GAAG,gBACH2F,GAAG,UACHC,GAAG,UACHC,GAAG,UACHC,GAAG,UACHE,cAAc,iBAAgB7C,SAAA,CAE9BgE,cAAA,QAAM,aAAW,YACjBA,cAAA,QAAMlB,OAAO,IAAI,aAAW,oB,uTC5WtC,MAAMkL,EAAaC,gBAAK,IAAM,mCACxBC,EAAsBD,gBAAK,IAAM,mCAmBxBE,MAfI,CACjB,CAAE1J,KAAM,IAAK2J,OAAO,EAAMC,UAAWL,EAAYM,UAAW,WAC5D,CACE7J,KAAM,kBACN4J,UAPmBJ,gBAAK,IAAM,mCAQ9BK,UAAW,0CAEb,CAAE7J,KAAM,gBAAiB2J,OAAO,EAAMC,UAT1BJ,gBAAK,IAAM,8EASiCK,UAAW,WACnE,CACE7J,KAAM,yBACN4J,UAAWH,EACXI,UAAW,iCCff,MAAMC,EAAeC,IAAMP,MAAK,IAAM,mCAChCQ,EAAiBD,IAAMP,MAAK,IAAM,8EAClCS,EAA4BF,IAAMP,MAAK,IAC3C,mCAEIU,EAA4BH,IAAMP,MAAK,IAC3C,mCAEIW,EAA6BJ,IAAMP,MAAK,IAC5C,mCAEIY,EAA6BL,IAAMP,MAAK,IAC5C,mCAGItT,EAAS,WA6CAmU,MA5CO,CACpB,CACErK,KAAK,IAAD1J,OAAMJ,EAAM,UAChB0T,UAAWE,EACXD,UAAW,iBACXS,SAAU,CAAC,cACXC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,IAAD1J,OAAMJ,EAAM,YAChB0T,UAAWI,EACXH,UAAW,mBACXS,SAAU,CAAC,cACXC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,IAAD1J,OAAMJ,EAAM,uBAChB0T,UAAWQ,EACXP,UAAW,uBACXS,SAAU,CAAC,cACXC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,IAAD1J,OAAMJ,EAAM,uBAChB0T,UAAWO,EACXN,UAAW,uBACXS,SAAU,CAAC,cACXC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,IAAD1J,OAAMJ,EAAM,wBAChB0T,UAAWK,EACXJ,UAAW,+BACXS,SAAU,CAAC,cACXC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,IAAD1J,OAAMJ,EAAM,wBAChB0T,UAAWM,EACXL,UAAW,+BACXS,SAAU,CAAC,cACXC,YAAa,CAAC,UAAW,SAAU,aC1DvC,MAAMC,EAAkBhB,gBAAK,IAAM,8EAC7BiB,EAAejB,gBAAK,IAAM,8EAC1BkB,EAAalB,gBAAK,IAAM,8EACxBmB,EAAUnB,gBAAK,IAAM,6EACrBoB,EAAapB,gBAAK,IAAM,6EACxBqB,EAAerB,gBAAK,IAAM,6EAC1BsB,EAAiBtB,gBAAK,IAAM,6EAC5BuB,EAAqBvB,gBAAK,IAAM,6EAChCwB,EAAcxB,gBAAK,IAAM,mCACzByB,EAAiCzB,gBAAK,IAC1C,6EAEI0B,EAAgB1B,gBAAK,IAAM,6EAC3B2B,EAAsB3B,gBAAK,IAC/B,8EAEI4B,EAA0B5B,gBAAK,IAAM,6EACrC6B,EAAY7B,gBAAK,IAAM,6EACvB8B,EAAc9B,gBAAK,IAAM,6EACzB+B,EAAc/B,gBAAK,IAAM,8EACzBgC,EAAchC,gBAAK,IAAM,8EACzBiC,EAAiBjC,gBAAK,IAAM,8EAC5BkC,EAAUlC,gBAAK,IAAM,+EACrBmC,EAAenC,gBAAK,IAAM,8EAC1BoC,EAAQpC,gBAAK,IAAM,8EACnBqC,EAAoBrC,gBAAK,IAAM,iCAC/BsC,GAAUtC,gBAAK,IAAM,8EACrBuC,GAAgBvC,gBAAK,IAAM,8EAC3BwC,GAAYxC,gBAAK,IAAM,6EACvByC,GAAazC,gBAAK,IAAM,6EACxB0C,GAAY1C,gBAAK,IAAM,6EACvB2C,GAAqB3C,gBAAK,IAAM,6EAChC4C,GAAY5C,gBAAK,IAAM,6EAEvBtT,GAAS,UAkGAmW,OAjGM,CACnB,CAAErM,KAAK,GAAD1J,OAAKJ,GAAM,SAASyT,OAAO,EAAMC,UAAWe,EAASd,UAAW,WACtE,CAAE7J,KAAK,GAAD1J,OAAKJ,GAAM,SAASyT,OAAO,EAAMC,UAAWgC,EAAO/B,UAAW,QACpE,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,cACfyT,OAAO,EACPC,UAAWiC,EACXhC,UAAW,eAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,kBACfyT,OAAO,EACPC,UAAW+B,EACX9B,UAAW,cAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,aACfyT,OAAO,EACPC,UAAWkC,GACXjC,UAAW,WAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,mBACfyT,OAAO,EACPC,UAAWmC,GACXlC,UAAW,kBAEb,CAAE7J,KAAK,GAAD1J,OAAKJ,GAAM,YAAYyT,OAAO,EAAMC,UAAW8B,EAAS7B,UAAW,gBACzE,CAAE7J,KAAK,GAAD1J,OAAKJ,GAAM,iBAAiByT,OAAO,EAAMC,UAAW0B,EAAazB,UAAW,eAClF,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,uBACfyT,OAAO,EACPC,UAAWyB,EACXxB,UAAW,cAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,uBACfyT,OAAO,EACPC,UAAWoC,GACXnC,UAAW,cAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,mCACfyT,OAAO,EACPC,UAAWqC,IAEb,CACEjM,KAAK,GAAD1J,OAAKJ,GAAM,kCACfyT,OAAO,EACPC,UAAWsC,IAEb,CACElM,KAAK,GAAD1J,OAAKJ,GAAM,8BACfyT,OAAO,EACPC,UAAWY,EACXX,UAAW,4BAEb,CAAE7J,KAAK,GAAD1J,OAAKJ,GAAM,yBAAyByT,OAAO,EAAMC,UAAW4B,GAClE,CAAExL,KAAK,GAAD1J,OAAKJ,GAAM,wBAAwByT,OAAO,EAAMC,UAAW2B,GACjE,CAAEvL,KAAK,GAAD1J,OAAKJ,GAAM,4BAA4ByT,OAAO,EAAMC,UAAW6B,GAErE,CAAEzL,KAAK,GAAD1J,OAAKJ,GAAM,YAAYyT,OAAO,EAAMC,UAAWsB,GACrD,CACElL,KAAK,GAAD1J,OAAKJ,GAAM,qBACfyT,OAAO,EACPC,UAAWqB,GAEb,CAAEjL,KAAK,GAAD1J,OAAKJ,GAAM,6BAA6ByT,OAAO,EAAMC,UAAWwB,GACtE,CAAEpL,KAAK,GAAD1J,OAAKJ,GAAM,iCAAiCyT,OAAO,EAAMC,UAAWuB,GAC1E,CAAEnL,KAAK,GAAD1J,OAAKJ,GAAM,6BAA6ByT,OAAO,EAAMC,UAAWmB,GACtE,CAAE/K,KAAK,GAAD1J,OAAKJ,GAAM,UAAUyT,OAAO,EAAOC,UAAWoB,GACpD,CAAEhL,KAAK,GAAD1J,OAAKJ,GAAM,aAAayT,OAAO,EAAMC,UAAWkB,GACtD,CAAE9K,KAAK,GAAD1J,OAAKJ,GAAM,WAAWyT,OAAO,EAAMC,UAAWiB,GACpD,CAAE7K,KAAK,GAAD1J,OAAKJ,GAAM,8BAA8ByT,OAAO,EAAMC,UAAWgB,GACvE,CACE5K,KAAK,GAAD1J,OAAKJ,GAAM,kBACfyT,OAAO,EACPC,UAAWa,EACXZ,UAAW,uBAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,8BACfyT,OAAO,EACPC,UAAWc,EACXb,UAAW,uBAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,kBACf0T,UAAWuC,GACXtC,UAAW,iBAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,QACf0T,UAAWwC,GACXvC,UAAW,aCjIf,MAAMyC,GAAU9C,gBAAK,IAAM,8EACrB+C,GAAY/C,gBAAK,IAAM,8EACvBgD,GAAkBhD,gBAAK,IAAM,6EAC7BiD,GAAqBjD,gBAAK,IAAM,6EAChCkD,GAAmBlD,gBAAK,IAAM,6EAC9BmD,GAAenD,gBAAK,IAAM,6EAC1BoD,GAAUpD,gBAAK,IAAM,6EACrBqD,GAAMrD,gBAAK,IAAM,8EACjBsD,GAAOtD,gBAAK,IAAM,8EAClBmC,GAAenC,gBAAK,IAAM,8EAC1BuD,GAAgBvD,gBAAK,IAAM,8EAC3BwD,GAAUxD,gBAAK,IAAM,8EACrByD,GAAiBzD,gBAAK,IAAM,8EAC5B0D,GAAU1D,gBAAK,IAAM,8EACrB2D,GAAgB3D,gBAAK,IAAM,6EAC3B4D,GAAgB5D,gBAAK,IAAM,8EAC3B6D,GAAU7D,gBAAK,IAAM,8EAErB8D,GAAW9D,gBAAK,IAAM,8EACtB+D,GAAa/D,gBAAK,IAAM,6EACxBgE,GAAchE,gBAAK,IAAM,8EACzBiE,GAAiBjE,gBAAK,IAAM,8EAC5BkE,GAAgBlE,gBAAK,IAAM,8EAC3BmE,GAAsBnE,gBAAK,IAAM,8EAEjCoE,GAAOpE,gBAAK,IAAM,8EAClBqE,GAAerE,gBAAK,IAAM,8EAC1BsE,GAAYtE,gBAAK,IAAM,8EACvBuE,GAAavE,gBAAK,IAAM,6EACxBwE,GAAexE,gBAAK,IAAM,8EAE1ByE,GAAoBzE,gBAAK,IAAM,8EAC/B0E,GAAa1E,gBAAK,IAAM,8EACxB2E,GAAY3E,gBAAK,IAAM,8EACvB4E,GAAgB5E,gBAAK,IAAM,8EAC3B6E,GAAmB7E,gBAAK,IAAM,mCAE9B8E,GAAa9E,gBAAK,IAAM,8EACxB+E,GAAoB/E,gBAAK,IAAM,8EAC/BgF,GAAoBhF,gBAAK,IAAM,8EAC/BiF,GAAmBjF,gBAAK,IAAM,8EAC9BkF,GAAiClF,gBAAK,IAC1C,8EAGImF,GAAqBnF,gBAAK,IAC9B,8EAEIoF,GAAiBpF,gBAAK,IAAM,6EAC5BqF,GAAiBrF,gBAAK,IAAM,6EAE5BsF,GAAetF,gBAAK,IAAM,8EAE1BuF,GAAiBvF,gBAAK,IAAM,8EAsWnBwF,OAjWM,CACnB,CACEhP,KAAK,iBACL2J,OAAO,EACPC,UAAWkF,GACXjF,UAAW,oBACXS,SAAU,GACVC,YAAa,CAAC,UAAW,YAE3B,CACEvK,KAAK,WACL2J,OAAO,EACPC,UAAW0D,GACXzD,UAAW,iBACXS,SAAU,GACVC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,0BACL2J,OAAO,EACPC,UAAW8D,GACX7D,UAAW,cACXS,SAAU,GACVC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,mBACL2J,OAAO,EACPC,UAAW+D,GACX9D,UAAW,cACXS,SAAU,GACVC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,eACL2J,OAAO,EACPC,UAAW4D,GACX3D,UAAW,aACXS,SAAU,GACVC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,wBACL2J,OAAO,EACPC,UAAW2D,GACX1D,UAAW,QACXS,SAAU,GACVC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,mBACL2J,OAAO,EACPC,UAAW6D,GACX5D,UAAW,iBACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,sBACL2J,OAAO,EACPC,UAAW2C,GACX1C,UAAW,kBACXS,SAAU,CAAC,cACXC,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,8BACL2J,OAAO,EACPC,UAAW4C,GACX3C,UAAW,aACXS,SAAU,GACVC,YAAa,CAAC,UAAW,UAAW,WAGtC,CACEvK,KAAK,UACL2J,OAAO,EACPC,UAAWyD,GACXxD,UAAW,UACXU,YAAa,CAAC,UAAW,SAAU,YAGrC,CACEvK,KAAK,WACL2J,OAAO,EACPC,UAAWsD,GACXrD,UAAW,UACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,kBACL2J,OAAO,EACPC,UAAWwD,GACXvD,UAAW,eACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,iBACL2J,OAAO,EACPC,UAAWuD,GACXtD,UAAW,gBACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,WACL2J,OAAO,EACPC,UAAWgD,GACX/C,UAAW,aACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,eACL2J,OAAO,EACPC,UAAWiD,GACXhD,UAAW,MACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,gBACL2J,OAAO,EACPC,UAAWkD,GACXjD,UAAW,UACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,mBACL2J,OAAO,EACPC,UAAWoD,GACXnD,UAAW,YACXU,YAAa,CAAC,UAAW,SAAU,YAGrC,CACEvK,KAAK,0BACL2J,OAAO,EACPC,UAAWmD,GACXlD,UAAW,aACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,wBACL2J,OAAO,EACPC,UAAW+B,GACX9B,UAAW,aACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,2BACL2J,OAAO,EACPC,UAAWqD,GACXpD,UAAW,iBACXU,YAAa,CAAC,UAAW,SAAU,YAGrC,CACEvK,KAAK,SACL2J,OAAO,EACPC,UAAWgE,GACX/D,UAAW,SACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,eACL2J,OAAO,EACPC,UAAWkE,GACXjE,UAAW,gBACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,kBACL2J,OAAO,EACPC,UAAWiE,GACXhE,UAAW,iBACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,oBACL2J,OAAO,EACPC,UAAWoE,GACXnE,UAAW,iBACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,cACL2J,OAAO,EACPC,UAAWmE,GACXlE,UAAW,cACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,iBACL2J,OAAO,EACPC,UAAWsE,GACXrE,UAAW,wBACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,uBACL2J,OAAO,EACPC,UAAWqE,GACXpE,UAAW,gBACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,cACL2J,OAAO,EACPC,UAAWuE,GACXtE,UAAW,aACXU,YAAa,CAAC,YAEhB,CACEvK,KAAK,oBACL2J,OAAO,EACPC,UAAWuE,GACXtE,UAAW,aACXU,YAAa,CAAC,YAEhB,CACEvK,KAAK,mBACL2J,OAAO,EACPC,UAAWwE,GACXvE,UAAW,aACXU,YAAa,CAAC,YAEhB,CACEvK,KAAK,yBACL2J,OAAO,EACPC,UAAWwE,GACXvE,UAAW,aACXU,YAAa,CAAC,YAEhB,CACEvK,KAAK,kBACL2J,OAAO,EACPC,UAAWyE,GACXxE,UAAW,aACXU,YAAa,CAAC,YAEhB,CACEvK,KAAK,eACL2J,OAAO,EACPC,UAAW0E,GACXzE,UAAW,WACXU,YAAa,CAAC,UAAW,YAE3B,CACEvK,KAAK,sBACL2J,OAAO,EACPC,UAAW2E,GACX1E,UAAW,WACXU,YAAa,CAAC,UAAW,YAE3B,CACEvK,KAAK,uBACL2J,OAAO,EACPC,UAAW4E,GACX3E,UAAW,WACXU,YAAa,CAAC,UAAW,YAE3B,CACEvK,KAAK,qBACL2J,OAAO,EACPC,UAAW6E,GACX5E,UAAW,WACXU,YAAa,CAAC,UAAW,YAE3B,CACEvK,KAAK,iBACL2J,OAAO,EACPC,UAAW+C,GACXrC,SAAU,GACVT,UAAW,gBACXU,YAAa,CAAC,UAAW,UAAW,WAEtC,CACEvK,KAAK,uBACL2J,OAAO,EACPC,UAAW6C,GACXnC,SAAU,GACVT,UAAW,gBACXU,YAAa,CAAC,UAAW,UAAW,WAEtC,CACEvK,KAAK,4BACL2J,OAAO,EACPC,UAAW8C,GACXpC,SAAU,GACVT,UAAW,gBACXU,YAAa,CAAC,UAAW,UAAW,WAEtC,CACEvK,KAAK,YACL2J,OAAO,EACPC,UAAW0C,GACXzC,UAAW,SACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,sBACL2J,OAAO,EACPC,UAAW8E,GACX7E,UAAW,aACXU,YAAa,CAAC,UAAW,WAE3B,CACEvK,KAAM,wBACN2J,OAAO,EACPC,UAAW+E,GACX9E,UAAW,yBACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAM,qBACN2J,OAAO,EACPC,UAAWgF,GACX/E,UAAW,cACXU,YAAa,CAAC,UAAW,YAE3B,CACEvK,KAAM,iCACN2J,OAAO,EACPC,UAAWiF,GACXhF,UAAW,cACXU,YAAa,CAAC,UAAW,YAE3B,CACEvK,KAAK,uBACL2J,OAAO,EACPC,UA3UeJ,gBAAK,IAAM,8EA4U1BK,UAAW,aACXU,YAAa,CAAC,UAAW,SAAU,YAErC,CACEvK,KAAK,gBACL2J,OAAO,EACPC,UAAWmF,GACXlF,UAAW,eACXU,YAAa,CAAC,YAEhB,CACEvK,KAAM,WACN2J,OAAO,EACPC,UAxVWJ,gBAAK,IAAM,8EAyVtBK,UAAW,SACXU,YAAa,CAAC,UAAW,YAE3B,CACEvK,KAAM,sBACN2J,OAAO,EACPC,UA9VeJ,gBAAK,IAAM,8EA+V1BK,UAAW,SACXU,YAAa,CAAC,UAAW,aCxZ7B,MAAMC,GAAkBhB,gBAAK,IAAM,8EAC7BkB,GAAalB,gBAAK,IAAM,8EACxByF,GAAWzF,gBAAK,IAAM,6EACtB0F,GAAa1F,gBAAK,IAAM,6EACxBiB,GAAejB,gBAAK,IAAM,8EAC1B2F,GAA0B3F,gBAAK,IACnC,8EAEI4F,GAAwB5F,gBAAK,IACjC,8EAEI6F,GAAyB7F,gBAAK,IAClC,8EAEI8F,GAAa9F,gBAAK,IAAM,6EACxBmC,GAAenC,gBAAK,IAAM,8EAC1B+F,GAA2B/F,gBAAK,IACpC,6EAEIgG,GAAchG,gBAAK,IAAM,8EACzBiG,GAAQjG,gBAAK,IAAM,8EACnBkG,GAAmBlG,gBAAK,IAAM,8EAC9BmG,GAAwBnG,gBAAK,IAAM,8EACnCoG,GAAgCpG,gBAAK,IACzC,8EAEIqG,GAAqBrG,gBAAK,IAAM,8EAChCsG,GAAwBtG,gBAAK,IAAM,6EACnCuG,GAA+BvG,gBAAK,IACxC,8EAEIwG,GAA6BxG,gBAAK,IACtC,6EAEIyG,GAAkCzG,gBAAK,IAC3C,8EAEI0G,GAAe1G,gBAAK,IAAM,8EAC1B2G,GAAgB3G,gBAAK,IAAM,8EAC3B4G,GAAc5G,gBAAK,IAAM,8EACzB6G,GAAiB7G,gBAAK,IAAM,8EAC5B8G,GAAe9G,gBAAK,IAAM,8EAC1B+G,GAAyB/G,gBAAK,IAAM,6EACpC2B,GAAsB3B,gBAAK,IAC/B,8EAEI4B,GAA0B5B,gBAAK,IAAM,6EACrCgH,GAAiBhH,gBAAK,IAAM,6EAC5BmB,GAAUnB,gBAAK,IAAM,6EACrBiH,GAAUjH,gBAAK,IAAM,6EACrBkH,GAASlH,gBAAK,IAAM,6EACpBmH,GAAenH,gBAAK,IAAM,6EAC1BoH,GAAYpH,gBAAK,IAAM,6EACvBqH,GAAUrH,gBAAK,IAAM,6EACrBsH,GAActH,gBAAK,IAAM,8EACzBuH,GAAgBvH,gBAAK,IAAM,6EAC3BwH,GAAmBxH,gBAAK,IAAM,8EAC9ByH,GAAqBzH,gBAAK,IAAM,8EAChC0H,GAAkB1H,gBAAK,IAAM,8EAC7B2H,GAAgB3H,gBAAK,IAAM,8EAC3B4H,GAAiB5H,gBAAK,IAAM,8EAC5B6H,GAAmB7H,gBAAK,IAAM,6EAC9B8H,GAAqB9H,gBAAK,IAAM,6EAChC+H,GAAqB/H,gBAAK,IAAM,6EAChCgI,GAAuBhI,gBAAK,IAAM,6EAClCiI,GAAyBjI,gBAAK,IAClC,6EAEIkI,GAAqBlI,gBAAK,IAAM,6EAChCmI,GAAuBnI,gBAAK,IAAM,6EAClCoI,GAAuBpI,gBAAK,IAAM,6EAClCqI,GAAsBrI,gBAAK,IAAM,8EACjCsI,GAAoBtI,gBAAK,IAAM,8EAC/BuI,GAA0BvI,gBAAK,IACnC,6EAEIwI,GAA4BxI,gBAAK,IACrC,6EAEIyI,GAAsBzI,gBAAK,IAAM,8EACjC0I,GAAyB1I,gBAAK,IAClC,8EAEI2I,GAA2B3I,gBAAK,IACpC,8EAEIqB,GAAerB,gBAAK,IAAM,6EAC1BoB,GAAapB,gBAAK,IAAM,6EACxB4I,GAAkB5I,gBAAK,IAAM,6EAC7B6I,GAAc7I,gBAAK,IAAM,8EACzB8I,GAAc9I,gBAAK,IAAM,6EACzB+I,GAAe/I,gBAAK,IAAM,6EAC1BgJ,GAAgBhJ,gBAAK,IAAM,8EAC3B6B,GAAY7B,gBAAK,IAAM,6EAEvB8B,GAAc9B,gBAAK,IAAM,6EACzBiJ,GAAajJ,gBAAK,IAAM,8EACxBkC,GAAUlC,gBAAK,IAAM,+EACrBkJ,GAAelJ,gBAAK,IAAM,6EAE1BmJ,GAAWnJ,gBAAK,IAAM,6EACtBoJ,GAAoBpJ,gBAAK,IAAM,8EAC/BqJ,GAA4BrJ,gBAAK,IAAM,6EACvCsJ,GAA2BtJ,gBAAK,IAAM,8EACtCuJ,GAAwBvJ,gBAAK,IAAM,8EACnCwJ,GAAuBxJ,gBAAK,IAAM,8EAClCyJ,GAAmBzJ,gBAAK,IAAM,8EAC9B0J,GAAkB1J,gBAAK,IAAM,6EAC7B2J,GAAsB3J,gBAAK,IAAM,8EACjC4J,GAAwB5J,gBAAK,IAAM,8EACnC6J,GAAkB7J,gBAAK,IAAM,8EAC7B8J,GAAe9J,gBAAK,IAAM,6EAC1B+J,GAAmB/J,gBAAK,IAAM,6EAC9BgK,GAAqBhK,gBAAK,IAAM,6EAChCiK,GAAuBjK,gBAAK,IAAM,8EAClCkK,GAA8BlK,gBAAK,IACvC,8EAEImK,GAAkCnK,gBAAK,IAC3C,8EAEIoK,GAAoCpK,gBAAK,IAC7C,8EAEIsC,GAAUtC,gBAAK,IAAM,8EACrBuC,GAAgBvC,gBAAK,IAAM,6EAC3BqK,GAAcrK,gBAAK,IAAM,8EACzBwC,GAAYxC,gBAAK,IAAM,6EACvByC,GAAazC,gBAAK,IAAM,6EACxB0C,GAAY1C,gBAAK,IAAM,6EACvB2C,GAAqB3C,gBAAK,IAAM,6EAChC4C,GAAY5C,gBAAK,IAAM,6EACvBsK,GAAStK,gBAAK,IAAM,6EACpBuK,GAAYvK,gBAAK,IAAM,8EACvBwK,GAAexK,gBAAK,IAAM,6EAE1ByK,GAA0BzK,gBAAK,IACnC,mCAGI0K,GAAgB1K,gBAAK,IAAM,6EAC3B2K,GAAc3K,gBAAK,IAAM,8EAEzBtT,GAAS,WAugBAke,OAtgBO,CACpB,CACEpU,KAAK,GAAD1J,OAAKJ,GAAM,uBACfyT,OAAO,EACPC,UAAWqK,GACXpK,UAAW,WAEb,CAAE7J,KAAK,GAAD1J,OAAKJ,GAAM,SAASyT,OAAO,EAAMC,UAAWe,GAASd,UAAW,WACtE,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,SACfyT,OAAO,EACPC,UAAW6G,GACX5G,UAAW,QAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,cACfyT,OAAO,EACPC,UAAW8G,GACX7G,UAAW,eAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,oBACfyT,OAAO,EACPC,UAAW+G,GACX9G,UAAW,iBAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,eACfyT,OAAO,EACPC,UAAWgH,GACX/G,UAAW,gBAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,aACfyT,OAAO,EACPC,UAAWkC,GACXjC,UAAW,WAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,kBACfyT,OAAO,EACPC,UAAWiK,GACXhK,UAAW,kBAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,oBACfyT,OAAO,EACPC,UAAWmC,GACXlC,UAAW,kBAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,mBACfyT,OAAO,EACPC,UAAWmC,GACXlC,UAAW,kBAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,YACfyT,OAAO,EACPC,UAAWiH,GACXhH,UAAW,UACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,gBACfyT,OAAO,EACPC,UAAWkH,GACXjH,UAAW,qBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,qBACfyT,OAAO,EACPC,UAAWsH,GACXrH,UAAW,gBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,kBACfyT,OAAO,EACPC,UAAWmH,GACXlH,UAAW,iBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,wBACfyT,OAAO,EACPC,UAAWqH,GACXpH,UAAW,8BACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,uBACfyT,OAAO,EACPC,UAAWoH,GACXnH,UAAW,qBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,uBACfyT,OAAO,EACPC,UAAWkH,GACXjH,UAAW,qBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,yBACfyT,OAAO,EACPC,UAAWuH,GACXtH,UAAW,sBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,0BACfyT,OAAO,EACPC,UAAWwH,GACXvH,UAAW,yBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,wBACfyT,OAAO,EACPC,UAAWyH,GACXxH,UAAW,uBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,kCACfyT,OAAO,EACPC,UAAW8H,GACX7H,UAAW,uBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,uCACfyT,OAAO,EACPC,UAAWyH,GACXxH,UAAW,qBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,0BACfyT,OAAO,EACPC,UAAW0H,GACXzH,UAAW,wBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,sCACfyT,OAAO,EACPC,UAAW+H,GACX9H,UAAW,wBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,2CACfyT,OAAO,EACPC,UAAW0H,GACXzH,UAAW,sBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,0BACfyT,OAAO,EACPC,UAAW2H,GACX1H,UAAW,sBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,oCACfyT,OAAO,EACPC,UAAWgI,GACX/H,UAAW,sBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,0DACfyT,OAAO,EACPC,UAAWgI,GACX/H,UAAW,sBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,yCACfyT,OAAO,EACPC,UAAW2H,GACX1H,UAAW,oBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,4BACfyT,OAAO,EACPC,UAAW4H,GACX3H,UAAW,4BACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,0CACfyT,OAAO,EACPC,UAAW6H,GACX5H,UAAW,4BACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,+CACfyT,OAAO,EACPC,UAAW4H,GACX3H,UAAW,0BACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,0CACfyT,OAAO,EACPC,UAAWiI,GACXhI,UAAW,qBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,uDACfyT,OAAO,EACPC,UAAWmI,GACXlI,UAAW,4BACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,yDACfyT,OAAO,EACPC,UAAWoI,GACXnI,UAAW,4BACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,wCACfyT,OAAO,EACPC,UAAWkI,GACXjI,UAAW,sBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,gCACfyT,OAAO,EACPC,UAAWqI,GACXpI,UAAW,wBACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,kDACfyT,OAAO,EACPC,UAAWsI,GACXrI,UAAW,2BACXS,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,sDACfyT,OAAO,EACPC,UAAWuI,GACXtI,UAAW,2BACXS,SAAU,IAEZ,CAAEtK,KAAK,GAAD1J,OAAKJ,GAAM,YAAYyT,OAAO,EAAMC,UAAW8B,GAAS7B,UAAW,aACzE,CAAE7J,KAAK,GAAD1J,OAAKJ,GAAM,iBAAiByT,OAAO,EAAMC,UAAW0B,IAC1D,CAAEtL,KAAK,GAAD1J,OAAKJ,GAAM,0BAA0ByT,OAAO,EAAMC,UAAW8I,IACnE,CACE1S,KAAK,GAAD1J,OAAKJ,GAAM,uBACfyT,OAAO,EACPC,UAAWyB,GACXxB,UAAW,cAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,uBACfyT,OAAO,EACPC,UAAWoC,GACXnC,UAAW,cAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,mCACfyT,OAAO,EACPC,UAAWqC,IAEb,CACEjM,KAAK,GAAD1J,OAAKJ,GAAM,kCACfyT,OAAO,EACPC,UAAWsC,IAEb,CACElM,KAAK,GAAD1J,OAAKJ,GAAM,8BACfyT,OAAO,EACPC,UAAWY,GACXX,UAAW,4BAEb,CAAE7J,KAAK,GAAD1J,OAAKJ,GAAM,0BAA0ByT,OAAO,EAAMC,UAAWyI,IACnE,CAAErS,KAAK,GAAD1J,OAAKJ,GAAM,sBAAsByT,OAAO,EAAMC,UAAW6I,IAC/D,CAAEzS,KAAK,GAAD1J,OAAKJ,GAAM,yBAAyByT,OAAO,EAAMC,UAAW0I,IAClE,CACEtS,KAAK,GAAD1J,OAAKJ,GAAM,0CACfyT,OAAO,EACPC,UAAW4I,IAEb,CAAExS,KAAK,GAAD1J,OAAKJ,GAAM,0BAA0ByT,OAAO,EAAMC,UAAW2I,IACnE,CAAEvS,KAAK,GAAD1J,OAAKJ,GAAM,aAAayT,OAAO,EAAMC,UAAWwI,IAEtD,CAAEpS,KAAK,GAAD1J,OAAKJ,GAAM,aAAayT,OAAO,EAAMC,UAAW4G,IACtD,CAAExQ,KAAK,GAAD1J,OAAKJ,GAAM,oBAAoByT,OAAO,EAAMC,UAAW2F,IAC7D,CAAEvP,KAAK,GAAD1J,OAAKJ,GAAM,6BAA6ByT,OAAO,EAAMC,UAAWwB,IACtE,CAAEpL,KAAK,GAAD1J,OAAKJ,GAAM,iCAAiCyT,OAAO,EAAMC,UAAWuB,IAC1E,CAAEnL,KAAK,GAAD1J,OAAKJ,GAAM,sBAAsByT,OAAO,EAAMC,UAAW2G,IAE/D,CAAEvQ,KAAK,GAAD1J,OAAKJ,GAAM,YAAYyT,OAAO,EAAMC,UAAWiB,IACrD,CAAE7K,KAAK,GAAD1J,OAAKJ,GAAM,8BAA8ByT,OAAO,EAAMC,UAAWgB,IACvE,CACE5K,KAAK,GAAD1J,OAAKJ,GAAM,yBACfyT,OAAO,EACPC,UAAWyF,GACX/E,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,0BACfyT,OAAO,EACPC,UAAWuF,GACX7E,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,wBACfyT,OAAO,EACPC,UAAWwF,GACX9E,SAAU,IAEZ,CAAEtK,KAAK,GAAD1J,OAAKJ,GAAM,gBAAgByT,OAAO,EAAMC,UAAW0F,GAAYhF,SAAU,IAE/E,CAAEtK,KAAK,GAAD1J,OAAKJ,GAAM,6BAA6ByT,OAAO,EAAMC,UAAWsG,IACtE,CAAElQ,KAAK,GAAD1J,OAAKJ,GAAM,8BAA8ByT,OAAO,EAAMC,UAAWuG,IACvE,CAAEnQ,KAAK,GAAD1J,OAAKJ,GAAM,4BAA4ByT,OAAO,EAAMC,UAAWwG,IACrE,CAAEpQ,KAAK,GAAD1J,OAAKJ,GAAM,gCAAgCyT,OAAO,EAAMC,UAAWyG,IACzE,CAAErQ,KAAK,GAAD1J,OAAKJ,GAAM,8BAA8ByT,OAAO,EAAMC,UAAW0G,IAEvE,CAAEtQ,KAAK,GAAD1J,OAAKJ,GAAM,uBAAuByT,OAAO,EAAMC,UAAW8F,IAChE,CAAE1P,KAAK,GAAD1J,OAAKJ,GAAM,4BAA4ByT,OAAO,EAAMC,UAAW+F,IACrE,CACE3P,KAAK,GAAD1J,OAAKJ,GAAM,4BACfyT,OAAO,EACPC,UAAWmG,IAEb,CACE/P,KAAK,GAAD1J,OAAKJ,GAAM,qCACfyT,OAAO,EACPC,UAAWgG,IAEb,CAAE5P,KAAK,GAAD1J,OAAKJ,GAAM,yBAAyByT,OAAO,EAAMC,UAAWiG,IAClE,CACE7P,KAAK,GAAD1J,OAAKJ,GAAM,qBACfyT,OAAO,EACPC,UAAWkG,IAEb,CACE9P,KAAK,GAAD1J,OAAKJ,GAAM,uBACfyT,OAAO,EACPC,UAAWoG,IAEb,CACEhQ,KAAK,GAAD1J,OAAKJ,GAAM,iCACfyT,OAAO,EACPC,UAAWqG,IAEb,CAAEjQ,KAAK,GAAD1J,OAAKJ,GAAM,UAAUyT,OAAO,EAAMC,UAAW6F,IACnD,CAAEzP,KAAK,GAAD1J,OAAKJ,GAAM,uBAAuByT,OAAO,EAAMC,UAAW4F,IAChE,CACExP,KAAK,GAAD1J,OAAKJ,GAAM,kBACfyT,OAAO,EACPC,UAAW+B,GACX9B,UAAW,cAGb,CAAE7J,KAAK,GAAD1J,OAAKJ,GAAM,kBAAkByT,OAAO,EAAMC,UAAWa,IAC3D,CAAEzK,KAAK,GAAD1J,OAAKJ,GAAM,yBAAyByT,OAAO,EAAMC,UAAWsF,IAClE,CAAElP,KAAK,GAAD1J,OAAKJ,GAAM,8BAA8ByT,OAAO,EAAMC,UAAWc,IACvE,CAAE1K,KAAK,GAAD1J,OAAKJ,GAAM,mCAAmCyT,OAAO,EAAMC,UAAWqF,IAE5E,CAAEjP,KAAK,GAAD1J,OAAKJ,GAAM,cAAcyT,OAAO,EAAMC,UAAW+I,GAAUrI,SAAU,IAC3E,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,kBACfyT,OAAO,EACPC,UAAWgJ,GACXtI,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,sBACfyT,OAAO,EACPC,UAAWqJ,GACX3I,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,sBACfyT,OAAO,EACPC,UAAWuJ,GACX7I,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,qCACfyT,OAAO,EACPC,UAAWwJ,GACX9I,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,qBACfyT,OAAO,EACPC,UAAWyJ,GACX/I,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,4BACfyT,OAAO,EACPC,UAAWmJ,GACXzI,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,sBACfyT,OAAO,EACPC,UAAWsJ,GACX5I,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,kDACfyT,OAAO,EACPC,UAAWkJ,GACXxI,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,0CACfyT,OAAO,EACPC,UAAWoJ,GACX1I,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,gCACfyT,OAAO,EACPC,UAAWiJ,GACXvI,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,0BACfyT,OAAO,EACPC,UAAW0J,GACXhJ,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,gCACfyT,OAAO,EACPC,UAAW4J,GACXlJ,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,qCACfyT,OAAO,EACPC,UAAW2J,GACXjJ,SAAU,IAEZ,CACEtK,KAAK,GAAD1J,OAAKJ,GAAM,4BACfyT,OAAO,EACPC,UAAW6J,IAEb,CACEzT,KAAK,GAAD1J,OAAKJ,GAAM,0CACfyT,OAAO,EACPC,UAAW8J,IAEb,CACE1T,KAAK,GAAD1J,OAAKJ,GAAM,8CACfyT,OAAO,EACPC,UAAWgK,IAEb,CACE5T,KAAK,GAAD1J,OAAKJ,GAAM,4CACfyT,OAAO,EACPC,UAAW+J,IAEb,CACE3T,KAAK,GAAD1J,OAAKJ,GAAM,kBACf0T,UAAWuC,GACXtC,UAAW,iBAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,QACf0T,UAAWwC,GACXvC,UAAW,YAEb,CACE7J,KAAK,GAAD1J,OAAKJ,GAAM,YACf0T,UAAWkK,GACXjK,UAAW,SACXF,OAAO,GAET,CACE3J,KAAK,GAAD1J,OAAKJ,GAAM,eACf0T,UAAWmK,GACXlK,UAAW,gBACXF,OAAO,GAET,CACE3J,KAAK,GAAD1J,OAAKJ,GAAM,iBACf0T,UAAWoK,GACXnK,UAAW,gBACXF,OAAO,GAET,CACE3J,KAAK,GAAD1J,OAAKJ,GAAM,wBACf0T,UAAWsK,GACXrK,UAAW,cACXF,OAAO,GAET,CACE3J,KAAK,GAAD1J,OAAKJ,GAAM,oCACf0T,UAAWuK,GACXtK,UAAW,qBACXF,OAAO,IClpBX,MAAMc,GAAejB,gBAAK,IAAM,8EAC1BkB,GAAalB,gBAAK,IAAM,8EAExBmB,GAAUnB,gBAAK,IAAM,6EACrBmC,GAAenC,gBAAK,IAAM,8EAC1B6K,GAAiB7K,gBAAK,IAAM,+EAC5B8K,GAAqB9K,gBAAK,IAAM,6EAChCgB,GAAkBhB,gBAAK,IAAM,8EAC7B6B,GAAY7B,gBAAK,IAAM,6EACvBkJ,GAAelJ,gBAAK,IAAM,6EAC1B+K,GAAa/K,gBAAK,IAAM,8EACxBgL,GAAahL,gBAAK,IAAM,8EACxBiL,GAAiBjL,gBAAK,IAAM,8EAC5BkL,GAAclL,gBAAK,IAAM,8EACzBmL,GAAanL,gBAAK,IAAM,8EACxBoL,GAAcpL,gBAAK,IAAM,6EACzBqL,GAAcrL,gBAAK,IAAM,8EACzBsL,GAAetL,gBAAK,IAAM,6EAC1BuL,GAAgBvL,gBAAK,IAAM,6EAC3BqB,GAAerB,gBAAK,IAAM,6EAC1BoB,GAAapB,gBAAK,IAAM,6EACxBwL,GAAkCxL,gBAAK,IAC3C,6EAEIyL,GAAiBzL,gBAAK,IAAM,6EAC5B4B,GAA0B5B,gBAAK,IAAM,6EACrC2B,GAAsB3B,gBAAK,IAC/B,8EAEIwB,GAAcxB,gBAAK,IAAM,8EACzB0L,GAAW1L,gBAAK,IAAM,6EACtBiH,GAAUjH,gBAAK,IAAM,6EACrBkH,GAASlH,gBAAK,IAAM,6EACpBoH,GAAYpH,gBAAK,IAAM,6EACvBmH,GAAenH,gBAAK,IAAM,6EAG1BqH,GAAUrH,gBAAK,IAAM,6EACrB2L,GAAc3L,gBAAK,IAAM,8EACzBuH,GAAgBvH,gBAAK,IAAM,6EAC3ByH,GAAqBzH,gBAAK,IAAM,8EAChCwH,GAAmBxH,gBAAK,IAAM,8EAC9BkI,GAAqBlI,gBAAK,IAAM,6EAChCoI,GAAuBpI,gBAAK,IAAM,8EAClCmI,GAAuBnI,gBAAK,IAAM,8EAClCiI,GAAyBjI,gBAAK,IAClC,8EAEI0I,GAAyB1I,gBAAK,IAClC,8EAEI2I,GAA2B3I,gBAAK,IACpC,8EAGIsC,GAAUtC,gBAAK,IAAM,8EACrBuC,GAAgBvC,gBAAK,IAAM,8EA0RlB4L,OAnRO,CACpB,CACEpV,KAAM,QACN2J,OAAO,EACPC,UAAWe,GACXd,UAAW,WAEb,CACE7J,KAAM,iBACN2J,OAAO,EACPC,UAAW+B,GACX9B,UAAW,WAEb,CACE7J,KAAM,WACN2J,OAAO,EACPC,UAAWyK,GACXxK,UAAW,eAEb,CACE7J,KAAM,gBACN2J,OAAO,EACPC,UAAW0K,GACXzK,UAAW,oBAEb,CACE7J,KAAM,sBACN2J,OAAO,EACPC,UAjCcJ,gBAAK,IAAM,6EAkCzBK,UAAW,0BAEb,CACE7J,KAAK,kCACL2J,OAAO,EACPC,UAtCeJ,gBAAK,IAAM,8EAwC5B,CACExJ,KAAK,iCACL2J,OAAO,EACPC,UA1CcJ,gBAAK,IAAM,8EA4C3B,CACExJ,KAAM,sBACN2J,OAAO,EACPC,UAAWyB,GACXxB,UAAW,mBAEb,CACE7J,KAAM,yBACN2J,OAAO,EACPC,UAAW8I,GACX7I,UAAW,qBAEb,CACE7J,KAAM,6BACN2J,OAAO,EACPC,UAAWY,GACXX,UAAW,4BAEb,CACE7J,KAAM,uBACN2J,OAAO,EACPC,UAAW2K,GACX1K,UAAW,kBAEb,CACE7J,KAAM,uBACN2J,OAAO,EACPC,UAAW4K,GACX3K,UAAW,kBAEb,CACE7J,KAAM,yBACN2J,OAAO,EACPC,UAAW6K,IAEb,CACEzU,KAAM,yBACN2J,OAAO,EACPC,UAAW8K,IAEb,CACE1U,KAAM,qBACN2J,OAAO,EACPC,UAAW+K,IAEb,CACE3U,KAAM,wBACN2J,OAAO,EACPC,UAAWgL,IAEb,CACE5U,KAAM,yBACN2J,OAAO,EACPC,UAAWkL,GACXjL,UAAW,gBAEb,CACE7J,KAAM,wBACN2J,OAAO,EACPC,UAAWiL,GACXhL,UAAW,cAEb,CACE7J,KAAM,yCACN2J,OAAO,EACPC,UAAWmL,GACXlL,UAAW,qBAEb,CACE7J,KAAM,UACN2J,OAAO,EACPC,UAAWiB,IAEb,CACE7K,KAAM,6BACN2J,OAAO,EACPC,UAAWgB,IAEb,CACE5K,KAAM,WACN2J,OAAO,EACPC,UAAWqL,IAEb,CACEjV,KAAM,mBACN2J,OAAO,EACPC,UAAWoL,IAEb,CACEhV,KAAM,4BACN2J,OAAO,EACPC,UAAWwB,IAEb,CACEpL,KAAM,gCACN2J,OAAO,EACPC,UAAWuB,IAEb,CACEnL,KAAM,SACN2J,OAAO,EACPC,UAAWoB,IAEb,CACEhL,KAAM,YACN2J,OAAO,EACPC,UAAWsL,IAEb,CACElV,KAAM,QACN2J,OAAO,EACPC,UAAW6G,GACX5G,UAAW,QAEb,CACE7J,KAAM,aACN2J,OAAO,EACPC,UAAW8G,GACX7G,UAAW,eAEb,CACE7J,KAAM,mBACN2J,OAAO,EACPC,UAAW+G,GACX9G,UAAW,iBAEb,CACE7J,KAAK,cACL2J,OAAO,EACPC,UAAWgH,GACX/G,UAAW,iBAEb,CACE7J,KAAM,YACN2J,OAAO,EACPC,UAAWkC,GACXjC,UAAW,WAEb,CACE7J,KAAM,kBACN2J,OAAO,EACPC,UAAWmC,GACXlC,UAAW,kBAEb,CACE7J,KAAM,WACN2J,OAAO,EACPC,UAAWiH,GACXhH,UAAW,WAEb,CACE7J,KAAK,gBACL2J,OAAO,EACPC,UAAWuL,GACXtL,UAAW,yBAEb,CACE7J,KAAK,sBACL2J,OAAO,EACPC,UAAWuL,GACXtL,UAAW,yBAEb,CACE7J,KAAK,iBACL2J,OAAO,EACPC,UAAWmH,GACXlH,UAAW,kBAEb,CACE7J,KAAK,uBACL2J,OAAO,EACPC,UAAWqH,GACXpH,UAAW,+BAEb,CACE7J,KAAK,sBACL2J,OAAO,EACPC,UAAWoH,GACXnH,UAAW,sBAEb,CACE7J,KAAK,iCACL2J,OAAO,EACPC,UAAW8H,GACX7H,UAAW,wBAEb,CACE7J,KAAK,mCACL2J,OAAO,EACPC,UAAWgI,GACX/H,UAAW,uBAEb,CACE7J,KAAK,qCACL2J,OAAO,EACPC,UAAW+H,GACX9H,UAAW,yBAEb,CACE7J,KAAK,yCACL2J,OAAO,EACPC,UAAW6H,GACX5H,UAAW,6BAEb,CACE7J,KAAK,iDACL2J,OAAO,EACPC,UAAWsI,GACXrI,UAAW,4BAEb,CACE7J,KAAK,qDACL2J,OAAO,EACPC,UAAWuI,GACXtI,UAAW,8BAEb,CACE7J,KAAK,iBACL2J,OAAO,EACPC,UAAWa,GACXZ,UAAW,sBAEb,CACE7J,KAAK,6BACL2J,OAAO,EACPC,UAAWc,GACXb,UAAW,sBAEb,CACE7J,KAAM,iBACN4J,UAjRuBJ,gBAAK,IAAM,6EAkRlCK,UAAW,kB,SChVf,MASawL,GAAmB9b,IAIzB,IAJ0B,OAC/B+b,EACAC,eAAgBC,EAChBC,aAAcC,GACfnc,EACC,OAAO+b,EAAOne,KAAIyF,GACZA,EAAM0N,UAAY1N,EAAM0N,SAAS1P,SAfrB3C,cAgBP0d,wBAACH,EAAc,IAAK5Y,EAAOV,IAAKU,EAAMoD,KAAM4J,UAAW8L,IAGzDC,wBAACH,EAAc,IAAK5Y,EAAOV,IAAKU,EAAMoD,QAC7C,E,8BC6CW4V,OAxDQrc,IAAqE,IAAlEqQ,UAAWiM,EAAS,UAAEhM,EAAS,YAAEU,EAAc,MAAOlP,GAAM9B,EACpF,MAAM,gBAAEuc,EAAe,cAAEC,EAAa,YAAEC,EAAW,KAAE/Q,GAASgR,YAAYC,MACpEC,EAAWC,cAWjB,OATAC,qBAAU,KACJP,GAAiBK,EAASG,cAAsB,GACnD,CAACH,EAAUL,IAEdO,qBAAU,KACR,GAAIxM,EAAW,OAAQ0M,SAAS7Z,MAAQ,aAAemN,EACvD0M,SAAS7Z,MAAQ,SAAS,GACzB,CAACmN,IAGFtK,eAACiX,QAAK,IACAnb,EACJob,OAAQ7Z,IAEN,MAAM8Z,EAAQ,IAAIC,gBAAgB/Z,EAAMqD,SAAS2W,QAC3C9e,EAA+B,OAAvB4e,EAAM5hB,IAAI,SAAoB,GAAK4hB,EAAM5hB,IAAI,SACrD+hB,EAAgC,OAAtBH,EAAM5hB,IAAI,QAAmB,GAAK4hB,EAAM5hB,IAAI,QAE5D,OAAIihB,EACKxW,eAACuX,KAAW,IAGhBf,IAAiBD,GAAoBjhB,kBAAQmhB,IAiB9CpZ,EAAMqD,SAASC,SAAStF,SAAS,YAAe/F,kBAAQiD,IAAWjD,kBAAQgiB,GAK1Ed,GAAkBD,OAAvB,EACSvW,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,IAAKmE,MAAO,CAAE4S,KAAMra,EAAMqD,aALvD4W,IAAYxQ,KAAmB,QAAEF,MAAc5G,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,OACtEX,eAACsW,EAAS,IAAKjZ,IAlBjB2N,EAAY3P,SAASqK,GAItB+Q,EAAYkB,wBAA0Bta,EAAMua,MAAMvf,IAAIgD,SAAS,iBAE/D2E,eAACwX,WAAQ,CACPC,GAAI,CAAE9W,SAAS,GAAD5J,OAAK+P,KAAUpB,GAAMmS,aAAY,gCAK9C7X,eAACsW,EAAS,IAAKjZ,IAZkB2C,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,MAuBpE,GAEF,ECzBSmX,OA5BI9d,IAAmD,IAAhDqQ,UAAWiM,EAAS,UAAEhM,KAAcxO,GAAM9B,EAC9D,MAAM,gBAAEuc,EAAe,cAAEC,EAAa,YAAEC,EAAW,KAAE/Q,GAASgR,YAAYC,MAO1E,OALAG,qBAAU,KACR,GAAIxM,EAAW,OAAQ0M,SAAS7Z,MAAQ,aAAemN,EACvD0M,SAAS7Z,MAAQ,SAAS,GACzB,CAACmN,IAGFtK,eAACiX,QAAK,IACAnb,EACJob,OAAQ7Z,GACFmZ,EACKxW,eAACuX,KAAW,IAGhBf,GAAkBD,EAIlBC,IAAiBD,GAAoBjhB,kBAAQmhB,QAAlD,EACSzW,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAS,GAAD5J,OAAK+P,KAAUpB,GAAMmS,aAAY,WAJzD7X,eAACsW,EAAS,IAAKjZ,KAO1B,EC6BS0a,OApDM/d,IAAmD,IAAhDqQ,UAAWiM,EAAS,UAAEhM,KAAcxO,GAAM9B,EAChE,MAAM,gBAAEuc,EAAe,cAAEC,EAAa,YAAEC,EAAW,KAAE/Q,GAASgR,YAAYC,MACpEC,EAAWC,cAWjB,OATAC,qBAAU,KACJP,GAAiBK,EAASG,cAAsB,GACnD,CAACH,EAAUL,IAEdO,qBAAU,KACR,GAAIxM,EAAW,OAAQ0M,SAAS7Z,MAAQ,aAAemN,EACvD0M,SAAS7Z,MAAQ,SAAS,GACzB,CAACmN,IAGFtK,eAACiX,QAAK,IACAnb,EACJob,OAAQ7Z,IAEN,MAAM8Z,EAAQ,IAAIC,gBAAgB/Z,EAAMqD,SAAS2W,QAC3C9e,EAA+B,OAAvB4e,EAAM5hB,IAAI,SAAoB,GAAK4hB,EAAM5hB,IAAI,SACrD+hB,EAAgC,OAAtBH,EAAM5hB,IAAI,QAAmB,GAAK4hB,EAAM5hB,IAAI,QAE5D,OAAIihB,EACKxW,eAACuX,KAAW,IAGhBf,IAAiBD,GAAoBjhB,kBAAQmhB,IAa9CpZ,EAAMqD,SAASC,SAAStF,SAAS,YAAe/F,kBAAQiD,IAAWjD,kBAAQgiB,GAK1Ed,GAAkBD,OAAvB,EACSvW,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,iBAAkBmE,MAAO,CAAE4S,KAAMra,EAAMqD,aALpE4W,IAAYxQ,KAAmB,QAAEF,MAAc5G,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,OACtEX,eAACsW,EAAS,IAAKjZ,IAdlBqI,IAASoB,KAAmB,QAAEF,MAAc5G,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,OAItE8V,EAAYkB,wBAA0Bta,EAAMua,MAAMvf,IAAIgD,SAAS,iBAC1D2E,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,gCAG5BX,eAACsW,EAAS,IAAKjZ,GAWxB,GAEF,ECIS2a,OApDMhe,IAAmD,IAAhDqQ,UAAWiM,EAAS,UAAEhM,KAAcxO,GAAM9B,EAChE,MAAM,gBAAEuc,EAAe,cAAEC,EAAa,YAAEC,EAAW,KAAE/Q,GAASgR,YAAYC,MACpEC,EAAWC,cAWjB,OATAC,qBAAU,KACJP,GAAiBK,EAASG,cAAsB,GACnD,CAACH,EAAUL,IAEdO,qBAAU,KACR,GAAIxM,EAAW,OAAQ0M,SAAS7Z,MAAQ,aAAemN,EACvD0M,SAAS7Z,MAAQ,SAAS,GACzB,CAACmN,IAGFtK,eAACiX,QAAK,IACAnb,EACJob,OAAQ7Z,IAEN,MAAM8Z,EAAQ,IAAIC,gBAAgB/Z,EAAMqD,SAAS2W,QAC3C9e,EAA+B,OAAvB4e,EAAM5hB,IAAI,SAAoB,GAAK4hB,EAAM5hB,IAAI,SACrD+hB,EAAgC,OAAtBH,EAAM5hB,IAAI,QAAmB,GAAK4hB,EAAM5hB,IAAI,QAE5D,OAAIihB,EACKxW,eAACuX,KAAW,IAGhBf,IAAiBD,GAAoBjhB,kBAAQmhB,IAa9CpZ,EAAMqD,SAASC,SAAStF,SAAS,YAAe/F,kBAAQiD,IAAWjD,kBAAQgiB,GAK1Ed,GAAkBD,OAAvB,EACSvW,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAS,iBAAmBmE,MAAO,CAAE4S,KAAMra,EAAMqD,aALpE4W,IAAYxQ,KAAmB,QAAEF,MAAc5G,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,OACtEX,eAACsW,EAAS,IAAKjZ,IAdlBqI,IAASoB,KAAmB,QAAEF,MAAc5G,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,OAItE8V,EAAYkB,wBAA0Bta,EAAMua,MAAMvf,IAAIgD,SAAS,iBAC1D2E,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,wCAG5BX,eAACsW,EAAS,IAAKjZ,GAWxB,GAEF,ECPS4a,OAzCKje,IAAmD,IAAhDqQ,UAAWiM,EAAS,UAAEhM,KAAcxO,GAAM9B,EAC/D,MAAM,gBAAEuc,EAAe,cAAEC,EAAa,YAAEC,EAAW,KAAE/Q,GAASgR,YAAYC,MACpEC,EAAWC,cAWjB,OATAC,qBAAU,KACJP,GAAiBK,EAASG,cAAsB,GACnD,CAACH,EAAUL,IAEdO,qBAAU,KACR,GAAIxM,EAAW,OAAQ0M,SAAS7Z,MAAQ,aAAemN,EACvD0M,SAAS7Z,MAAQ,SAAS,GACzB,CAACmN,IAGFtK,eAACiX,QAAK,IACAnb,EACJob,OAAQ7Z,GACFmZ,EACKxW,eAACuX,KAAW,IAGhBf,IAAiBD,GAAoBjhB,kBAAQmhB,GAY7CD,GAAkBD,OAAvB,EACSvW,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,gBAAiBmE,MAAO,CAAE4S,KAAMra,EAAMqD,aAZnEgF,IAASoB,KAAkB,OAAEF,MAAc5G,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,OAIrE8V,EAAYkB,wBAA0Bta,EAAMua,MAAMvf,IAAIgD,SAAS,iBAC1D2E,eAACwX,WAAQ,CAACC,GAAI,CAAE9W,SAAU,uCAG5BX,eAACsW,EAAS,IAAKjZ,KAO1B,EC7BN,MAAM6a,GAAgB1N,IAAMP,MAAK,IAAM,mCACjCkO,GAAW3N,IAAMP,MAAK,IAAM,mCAC5BmO,GAAU5N,IAAMP,MAAK,IAAM,mCAC3BqC,GAAoB9B,IAAMP,MAAK,IAAM,iCAsD5BoO,OAnDAA,IAEXrY,eAACwK,IAAM8N,SAAQ,CAACC,SAAUvY,eAACuX,KAAW,IAAIvb,SACxCD,gBAACyc,SAAM,CAAAxc,SAAA,CACJ8Z,GAAiB,CAChBC,OAAQtG,GACRuG,eAAgBK,GAChBH,aAAc5J,KAGfwJ,GAAiB,CAChBC,OAAQjL,EACRkL,eAAgBK,GAChBH,aAAc5J,KAGfwJ,GAAiB,CAChBC,OAAQF,GACRG,eAAgB+B,GAChB7B,aAAc5J,KAGfwJ,GAAiB,CAChBC,OAAQ5L,EACR6L,eAAgB8B,GAChB5B,aAAc5J,KAGfwJ,GAAiB,CAChBC,OAAQlB,GACRmB,eAAgBgC,GAChB9B,aAAc5J,KAGfwJ,GAAiB,CAChBC,OAAQjJ,GACRkJ,eAAgBiC,GAChB/B,aAAc5J,KAIhBtM,eAACiX,QAAK,CAACxW,KAAK,kBAAkB2J,OAAK,EAACC,UAAW6N,KAC/ClY,eAACiX,QAAK,CAACxW,KAAK,QAAQ2J,OAAK,EAACC,UAAW+N,KACrCpY,eAACiX,QAAK,CAACxW,KAAK,cAAc2J,OAAK,EAACC,UAAW+N,KAC3CpY,eAACiX,QAAK,CAACxW,KAAK,eAAe2J,OAAK,EAACC,UAAWiC,KAC5CtM,eAACiX,QAAK,CAAC5M,UAAW8N,U,uCC7D1B,MAAMM,WAAsBjO,IAAM8L,UAChCoC,YAAYrb,GACVsb,MAAMtb,GACNL,KAAK8H,MAAQ,CACX8T,UAAU,EACVC,SAAU,KAEd,CAEAC,gCAAgCC,GAE9B,MAAO,CAAEH,UAAU,EAAMC,SAAUE,EAAO3jB,QAC5C,CAEA4jB,kBAAkBD,EAAQE,GAExB,CAGF/B,SACE,OAAIla,KAAK8H,MAAM8T,SAGX5Y,eAACoD,KAAU,CAAApH,SACTD,gBAAClG,KAAO,CAAAmG,SAAA,CACNgE,eAAC2J,KAAa,IACd3J,eAAC1J,KAAK,CAAA0F,SACJgE,eAAA,MAAAhE,SAAI,gDAEND,gBAAA,KAAAC,SAAA,CAAG,QAEDgE,eAACkZ,KAAiB,CAChBC,MAAM,aACNxjB,KAAK,SACLsK,QAASA,IAAMH,OAAOY,SAAS0Y,WAC/B,mCAEFpZ,eAACkZ,KAAiB,CAACC,MAAM,WAAWxjB,KAAK,SAASmL,KAAI,4BAA+B,OAErFd,eAACkZ,KAAiB,CAChBC,MAAM,2BACNxjB,KAAK,SACLsK,QAASA,IAAMH,OAAOY,SAAShG,QAAQ,eAQ5CsC,KAAKK,MAAMrB,QACpB,EAGaqd,4BAAWZ,ICwCXa,OAhFHA,KACV,MAAM1C,EAAWC,cACX9R,EAAc2R,YAAYzR,MAC1B,YAAEwR,EAAW,gBAAEF,GAAoBG,aAAY5R,GAASA,EAAM0B,QAC5D3N,GAAI0gB,EAAgB,KAAMC,kBAAmBC,GAAuB,GAAUhD,GAC/EiD,EAAaC,GAAkBC,mBAAS,IAE/C9C,qBAAU,KACRF,EAASiD,eACUpjB,iBACXqjB,8BACN,MAAM,KAAEpkB,GAASqkB,KAAKC,MAAMC,yBAAe,WAE3CrD,EAASnhB,YAAQC,GAAM,EAGzBwkB,EAAY,GACX,CAACtD,IAQJ,MAAMuD,EAAwBC,uBAAY,KACxC,GAAK7D,GAAoBgD,EAEzB,IACE,MAAMc,EAAgB7gB,YAAqB+f,GACrCe,EAAqBP,KAAKC,MAAMla,OAAOya,aAAaC,QAAQH,IAClE,IAAII,EAAqBV,KAAKC,MAAMla,OAAO4a,eAAeF,QAAQH,IAE7DzU,gBAAM0U,IAAwBhlB,kBAAQglB,GAIzCxa,OAAOya,aAAaI,QAAQN,EAAeN,KAAK9hB,UAAU8M,KAH1D0V,EAAqBA,GAA0C,CAAEzV,YAAY,GAC7E4R,EAASgE,YAA+B,IAAKN,KAAuBG,KAIxE,CAAE,MAAO5lB,GAAQ,IAEhB,CAAC0hB,EAAiBgD,EAAe3C,IAEpCE,qBAAU,KACRqD,GAAuB,GACtB,CAACA,IAEJ,MAAMU,EAA0BT,uBAAY,KACrC7D,GAAoBgD,EAKrBuB,oBAAoBrB,GAAwC,KAAhBC,GAC1C,iBAAkB5Z,QAAsC,WAA5BsM,aAAa2O,YAC3C3O,aAAa4O,oBAAoBC,MAAKxkB,UACpC,GAAmB,YAAfskB,EACF,IACE,MAAMG,QAAwBC,mCAExBhjB,YAAgB+iB,GACtBvB,EAAeuB,EACjB,CAAE,MAAOniB,GAAI,CACf,IAdJ4gB,EAAe,GAiBjB,GACC,CAACpD,EAAiBgD,EAAeE,IAMpC,OAJA3C,qBAAU,KACR+D,GAAyB,GACxB,CAACA,IAGF7a,eAACyY,GAAa,CAAAzc,SACZgE,eAACqY,GAAM,KACO,ECrFA+C,QACW,cAA7Btb,OAAOY,SAAS2a,UAEe,UAA7Bvb,OAAOY,SAAS2a,UAEhBvb,OAAOY,SAAS2a,SAASzD,MAAM,2D,iCCUqB,CACtD,MAAM0D,EAAU5iB,slDAAY6iB,yBACtBC,EAAM9iB,6EAER4iB,GAAWE,GACbC,KAAY,CACVC,IAAKF,EACLG,aAAc,CAAC,IAAIC,KAAaC,gBAChCC,YAAapjB,aACbqjB,QAAST,GAGf,CAEO,MAAMU,GAAgBC,iCAE7BC,IAAShF,OACPlX,eAACwK,IAAM2R,WAAU,CAAAngB,SACfgE,eAACoc,IAAQ,CAACC,MAAOA,KAAMrgB,SACrBgE,eAACsc,IAAW,CAACC,QAASvc,eAACuX,KAAW,IAAKiF,UAAWA,KAAUxgB,SAC1DgE,eAACyc,IAAe,CAAAzgB,SACdgE,eAAC0c,SAAM,CAAC9b,QAASob,GAAchgB,SAC7BgE,eAAC2c,IAAgB,CAAA3gB,SACfgE,eAACsZ,GAAG,gBAOhBtC,SAAS4F,eAAe,SDmEpB,kBAAmB5nB,WACrBA,UAAU6nB,cAAcC,MACrB7B,MAAK8B,IACJA,EAAaC,YAAY,IAE1BC,OAAMpoB,IACLqoB,QAAQroB,MAAMA,EAAMO,QAAQ,G,kCElIpC,0KAAO,MAAM0R,EAAY,CACvBqW,QAAS,CACPtkB,GAAuCF,SAASD,KAChDiE,IAAKjE,2CACLkO,MAAO,UACPwW,UAAW,QACXrW,aAAc,OACd8Q,aAAc,KAEhBwF,OAAQ,CACNxkB,GAAsCF,SAASD,KAC/CiE,IAAKjE,2CACLkO,MAAO,SACPwW,UAAW,YACXrW,aAAc,SACd8Q,aAAc,YAEhByF,QAAS,CACPzkB,GAAuCF,SAASD,KAChDiE,IAAKjE,2CACLkO,MAAO,UACPwW,UAAW,OACXrW,aAAc,UACd8Q,aAAc,aAEhB0F,OAAQ,CACN1kB,GAAsCF,SAASD,KAC/CiE,IAAKjE,2CACLkO,MAAO,SACPwW,UAAW,UACXrW,aAAc,SACd8Q,aAAc,aASLlS,EAAa6X,IACxB,IAAKA,EAAQ,OAAO,KAEpB,OAAQ7kB,SAAS6kB,IACf,KAAK1W,EAAUqW,QAAQtkB,GACrB,OAAOiO,EAAUqW,QAAQvW,MAC3B,KAAKE,EAAUuW,OAAOxkB,GACpB,OAAOiO,EAAUuW,OAAOzW,MAC1B,KAAKE,EAAUwW,QAAQzkB,GACrB,OAAOiO,EAAUwW,QAAQ1W,MAC3B,KAAKE,EAAUyW,OAAO1kB,GACpB,OAAOiO,EAAUyW,OAAO3W,MAC1B,QACE,OAAO,KAAK,EASL6W,EAAe/X,IAC1B,IAAKA,EAAM,OAAO,KAElB,OAAQA,GACN,KAAKoB,EAAUqW,QAAQvW,MACrB,OAAOE,EAAUqW,QAAQtkB,GAC3B,KAAKiO,EAAUuW,OAAOzW,MACpB,OAAOE,EAAUuW,OAAOxkB,GAC1B,KAAKiO,EAAUwW,QAAQ1W,MACrB,OAAOE,EAAUwW,QAAQzkB,GAC3B,KAAKiO,EAAUyW,OAAO3W,MACpB,OAAOE,EAAUyW,OAAO1kB,GAC1B,QACE,OAAO,KAAK,EASL6kB,EAAgBhY,IAC3B,IAAKA,EAAM,OAAO,KAElB,GAAoB,IAAhBA,EAAKrM,OACP,OAAQV,SAAS+M,IACf,KAAKoB,EAAUqW,QAAQtkB,GACrB,OAAOiO,EAAUqW,QAAQpW,aAC3B,KAAKD,EAAUuW,OAAOxkB,GACpB,OAAOiO,EAAUuW,OAAOtW,aAC1B,KAAKD,EAAUwW,QAAQzkB,GACrB,OAAOiO,EAAUwW,QAAQvW,aAC3B,KAAKD,EAAUyW,OAAO1kB,GACpB,OAAOiO,EAAUyW,OAAOxW,aAC1B,QACE,OAAO,UAGX,OAAQrB,GACN,KAAKoB,EAAUqW,QAAQvW,MACrB,OAAOE,EAAUqW,QAAQpW,aAC3B,KAAKD,EAAUuW,OAAOzW,MACpB,OAAOE,EAAUuW,OAAOtW,aAC1B,KAAKD,EAAUwW,QAAQ1W,MACrB,OAAOE,EAAUwW,QAAQvW,aAC3B,KAAKD,EAAUyW,OAAO3W,MACpB,OAAOE,EAAUyW,OAAOxW,aAC1B,QACE,OAAO,KAEb,EAQW4W,EAAiBjY,IAC5B,IAAKA,EAAM,OAAO,KAElB,OAAQA,GACN,KAAKoB,EAAUqW,QAAQvW,MACrB,OAAOE,EAAUqW,QAAQC,UAC3B,KAAKtW,EAAUuW,OAAOzW,MACpB,OAAOE,EAAUuW,OAAOD,UAC1B,KAAKtW,EAAUwW,QAAQ1W,MACrB,OAAOE,EAAUwW,QAAQF,UAC3B,KAAKtW,EAAUyW,OAAO3W,MACpB,OAAOE,EAAUyW,OAAOH,UAC1B,QACE,OAAO,KAAK,C,kCCtIlB,kCAAO,MAAMxjB,EAAeA,CAACjE,EAAMC,KAAO,CAAQD,OAAMC,W,4ECAxD,+TAEA,MAAMgoB,EAAU,IAAI3hB,KACpB2hB,EAAQC,QAAQD,EAAQE,UAAY,IAEpC,MAAMC,EAAU,IAAIC,IACdC,EAAU,CACdxd,KAAM,IACNmd,UACAM,SAAU,UAQCC,EAAiBC,IACvBA,GACLL,EAAQM,IAAI,eAAgBD,EAAcH,EAAQ,EAQvCK,EAAgBC,IACtBA,GACLR,EAAQM,IAAI,cAAeE,EAAaN,EAAQ,EAQrCO,EAAiB7oB,IACvBA,GACLooB,EAAQM,IAAI,YAAa1oB,EAAMsoB,EAAQ,EAQ5BQ,EAAkBC,IACxBA,GACLX,EAAQM,IAAI,gBAAiBK,EAAeT,EAAQ,EAOzCjY,EAAiBA,IAAM+X,EAAQxoB,IAAI,gBAKnCkQ,EAAgBA,IAAMsY,EAAQxoB,IAAI,eAKlCopB,EAAiBA,IAAMZ,EAAQxoB,IAAI,aAKnCqpB,EAAkBA,IAAMb,EAAQxoB,IAAI,iBA2BpCspB,EAAeA,KArBUd,EAAQe,OAAO,eAAgB,CAAEre,KAAM,MAUtCsd,EAAQe,OAAO,gBAAiB,CAAEre,KAAM,MAL1Csd,EAAQe,OAAO,cAAe,CAAEre,KAAM,MAUrCsd,EAAQe,OAAO,YAAa,CAAEre,KAAM,KAUtD,C,kCCpFLse,IAlBW,CACxBC,uBAAwB,8BACxBC,iBAAkB,wBAElBC,cAAe,qBACfC,gBAAiB,uBACjBC,eAAgB,sBAOhBC,eAAgB,sBAChBC,iBAAkB,wBAClBC,gBAAiB,uB,kCCfnB,sDAGO,MAAM3oB,EAAkBA,KAQ7B,MAAM0O,EAAcU,cACdwZ,EAAeZ,cACfa,EAAeha,cAIrB,MAAO,CACLH,cACAka,eACAC,eACAC,WAPiB/Z,YAAW8Z,GAQ5B/oB,uBAP6BgnB,YAAc+B,GAQ5C,C,kCCbYE,IAVkB,CAC/BC,8BAA+B,4CAC/BC,iCAAkC,+CAClCC,sCAAuC,oDACvCC,uCAAwC,qDACxCC,gBAAiB,8BACjBC,mCAAoC,iDACpCC,kBAAmB,gC,4JCFd,MAAMC,EAAUnmB,IAAsB,IAArB,KAAEomB,EAAI,MAAEtiB,GAAO9D,EACrC,OACE+B,eAAA,OAAK+B,MAAO,CAAEuiB,QAAS,OAAQC,WAAY,SAAUC,eAAgB,YAAaziB,GAAQ9B,SAAA,CACvFokB,GAAQpgB,cAACwgB,IAAM,CAACC,MAAM,OAAOvqB,KAAK,KAAKwqB,QAASN,EAAMO,UAAU,uBAC/DP,GAAQpgB,cAACwgB,IAAM,CAACC,MAAM,OAAOvqB,KAAK,KAAKyqB,UAAU,wBAC/C,EAIJC,EAAqB9qB,UAAOC,IAAGC,MAAAC,YAAA,sVAsBxBshB,EAAcA,IAEvBxb,eAAC6kB,EAAkB,CAAA5kB,SAAA,CACjBgE,cAAA,OAAKyB,IAAKof,IAAUlf,IAAI,YACxB3B,cAAA,OAAAhE,SACEgE,cAACwgB,IAAM,CAACC,MAAM,SAASvqB,KAAK,KAAKwqB,QAAQ,iBAAiBC,UAAU,0B,kCCzC5E,oSASO,MAAMG,EAAiB9mB,IAAA,IAAC,KAAEwM,EAAI,SAAEC,GAAUzM,EAAA,OAC/CJ,YAAamlB,IAAkBE,iBAAkB,CAAEzY,OAAMC,YAAW,EAMzDsa,EAAsBC,GACjCpnB,YAAamlB,IAAkBC,uBAAwBgC,GAM5CC,EAAcC,GAActnB,YAAamlB,IAAkBG,cAAegC,GAQ1EC,EAAgB3c,IAAA,IAAC,KAAEgC,EAAI,SAAEC,GAAUjC,EAAA,OAC9C5K,YAAamlB,IAAkBI,gBAAiB,CAAE3Y,OAAMC,YAAW,EAOxD2a,EAAezc,IAAA,IAAC,WAAEuc,EAAU,QAAE9rB,GAASuP,EAAA,OAClD/K,YAAamlB,IAAkBK,eAAgB,CAAE8B,aAAY9rB,WAAU,EAE5DisB,EAAeA,IAAMznB,YAAamlB,IAAkBM,gBACpDiC,EAAiBA,IAAM1nB,YAAamlB,IAAkBO,kBAMtDiC,EAAgB1sB,GAAS+E,YAAamlB,IAAkBQ,gBAAiB1qB,E,kCCjDtF,wIAAO,MAAM8hB,EAAoB7R,GAASA,EAAM0B,KACnCgb,EAAoB1c,GAASA,EAAM0B,KAAKiQ,YACxCgL,EAAwB3c,GAASA,EAAM0B,KAAKd,KAG5Cgc,EAA2B5c,IAAU,IAAD6c,EAC/C,OAA6B,QAA7BA,EAAO7c,EAAM0B,KAAKiQ,mBAAW,IAAAkL,OAAA,EAAtBA,EAAwBC,SAASC,QAAO,CAACC,EAAaC,KAAoB,IAADC,EAE9E,OADkC,OAAdD,QAAc,IAAdA,GAAsB,QAARC,EAAdD,EAAgBxE,cAAM,IAAAyE,OAAR,EAAdA,EAAwBtiB,MACvB,IAAIoiB,EAAaC,GAAkBD,CAAW,GAClE,GAAG,C,kCCTR,6jBASA,MAWMG,EAAgBvpB,gBAChBwpB,EAAkBxpB,slDAAYypB,6BAA+B,qBAEnEC,IAASC,cAdM,CACbC,OAAQ5pB,0CACR6pB,WAAY7pB,4BACZ8pB,YAAa9pB,mCACb+pB,UAAW/pB,YACXgqB,cAAehqB,wBACfiqB,kBAAmBjqB,eACnBkqB,MAAOlqB,4CACPmqB,cAAenqB,iBAOjB,MAAMoqB,EAAoBV,IAASW,YAE7BC,EAAeZ,IAASY,eAE9BA,EAAaC,cAAgB,CAC3B7qB,OAAQ,iBAGV4qB,EAAaE,SAAW,CACtBC,2BAA4B,KAC5BC,mBAAoB,KAGtB,MAAMC,EAAejB,IAASkB,OAC9BD,EAAaE,oBAEb,IAAIC,EAAY,KACZrI,EAAmB,KACnBL,GAAmB,EAEvB,GAAIsH,IAASoB,UAAUC,cACrB,IACED,EAAYpB,IAASoB,YACrBrI,EAAmB1kB,eACJ+sB,EAAUE,SAAS,CAAEC,SAAUjrB,4FAE9CoiB,GAAmB,CACrB,CAAE,MAAO/hB,GACPmkB,QAAQ0G,IAAI7qB,EACd,CAGF,MAAM8qB,EAAoBA,OAQpB/J,EAAoBrjB,UACxB,UACQusB,EAAac,mBACnB5G,QAAQ0G,IAAI,uCACd,CAAE,MAAO/uB,GACPqoB,QAAQroB,MAAM,+CAAgDA,EAChE,GAGIolB,EAAiBtd,GACdqmB,EAAae,SAASpnB,GAAKqnB,U,kCC1EpC,yPAsBO,MAAMjN,EAAsBA,IAAMtgB,UACvC,IACE,IAAIwtB,EAAiB,GACrB,MAAM,KAAEzd,EAAI,SAAEC,SAAmBpB,IAAY6e,aAC7C,GAAIzoB,YAAW+K,EAAKhM,OAAQ,CAC1B,MAAM,UAAEe,SAAoB8J,IAAY8e,oBACxCF,EAAiB1oB,CACnB,CACAqb,EAASkK,YAAe,CAAEta,KAAM,IAAKA,EAAMjL,UAAW0oB,GAAkBxd,aAC1E,CAAE,MAAO5R,GAAQ,GAONglB,EAAwBA,IAAMpjB,UACzC,IACE,MAAM,KAAE+P,EAAI,SAAEC,SAAmBpB,IAAY+e,mBAC7CxN,EAASuK,YAAc,CAAE3a,OAAMC,aACjC,CAAE,MAAOsS,GAEP8F,cACAjI,EAASwK,YAAa,CAAEF,WAAY,KAAM9rB,QAAS,OACrD,GAYWivB,EACXrqB,IAAA,IAAC,MAAEzB,EAAK,SAAE+rB,EAAQ,KAAE5e,EAAI,WAAEwb,GAAYlnB,EAAA,OACtCvD,UACEmgB,EAASqK,YAAYC,IACrB,IACE,MAAM,KAAE1a,EAAI,SAAEC,SAAmB8d,IAAYC,qBAAqB,CAChEjsB,QACAmO,UAAWhB,EACX4e,SAAUA,IAGZxB,oBAAkB2B,kBAAkB,CAAEpd,YAAa3B,IACnDod,oBAAkB4B,SAAS,QAAS,CAAEC,OAAQzD,IAE9CtK,EAASuK,YAAc,CAAE3a,OAAMC,aACjC,CAAE,MAAO5R,GACP+hB,EAASwK,YAAa,CAAEF,aAAY9rB,QAASP,EAAMO,UACrD,EACD,EAWUwvB,EACXpgB,IAAA,IAAC,SAAEqgB,EAAQ,SAAE7c,EAAQ,KAAEtC,EAAI,WAAEwb,GAAY1c,EAAA,OACzC/N,UACEmgB,EAASqK,YAAYC,IACrB,IACE,MAAQvkB,IAAKmoB,EAAejsB,GAAIksB,GAAcje,IAAUpB,IAElD,KAAEc,EAAI,SAAEC,SAAmB8d,IAAYS,MAAM,CACjDD,YACAD,gBACAD,WACA7c,aAGF8a,oBAAkB2B,kBAAkB,CAAEpd,YAAa3B,IACnDod,oBAAkB4B,SAAS,QAAS,CAAEC,OAAQzD,IAE9CtK,EAASuK,YAAc,CAAE3a,OAAMC,aACjC,CAAE,MAAO5R,GACP+hB,EAASwK,YAAa,CAAEF,aAAY9rB,QAASP,EAAMO,UACrD,EACD,EAEU6vB,EAAeA,IAAMxuB,UAChCmgB,EAASyK,eACT,UACQkD,IAAYW,SAClBtO,EAASxc,eACTwc,EAASuO,eACTvO,EAASxN,eACTwN,EAAS0K,cACX,CAAE,MAAOzsB,GACP+hB,EAAS2K,YAAc1sB,EAAMO,SAC/B,E,kCCjHayE,IAPmB,CAChCC,wBAAyB,uCACzBG,0BAA2B,yCAC3BE,yBAA0B,wCAC1BE,oBAAqB,mC,kCCGRuO,IAPW,CACxBC,gBAAiB,uBACjBI,kBAAmB,yBACnBE,iBAAkB,wBAClBE,YAAa,mB,8ICEf,MAAM+b,EAAU1sB,uBAGH4N,EAAc+e,IAAMC,OAAO,CACtCC,QAASH,EACTI,aAAc,SAGH1uB,EAAeuuB,IAAMC,OAAO,CACvCC,QAASH,EACTI,aAAc,SAGhBlf,EAAYmf,aAAa1wB,QAAQ2wB,KAC/BttB,IACE,MAAM,KAAE1C,GAAS2mB,IAAMsJ,WAAWjwB,MAC5B,SAAEkwB,GAAalwB,EAErB,OADA0C,EAAOmtB,QAAUK,GAAYR,EACtBhtB,CAAM,IAEfvD,GACSyC,QAAQE,OAAO3C,KAI1BiC,EAAa2uB,aAAa1wB,QAAQ2wB,KAChCttB,IACE,MAAMkN,EAAcU,cACpB5N,EAAOF,QAAuB,cAAC,UAAAnB,OAAauO,GAC5C,MAAM,KAAE5P,GAAS2mB,IAAMsJ,WAAWjwB,MAC5B,SAAEkwB,EAAQ,SAAEC,GAAanwB,EAC/B0C,EAAOmtB,QAAUK,GAAYR,EAM7B,OALehtB,EAAO0tB,SAAU,KAE9B1tB,EAAOmtB,QAAUM,GAjCFntB,uBAoCVN,CAAM,IAEfvD,GACSyC,QAAQE,OAAO3C,KCpCmBkxB,EAACC,EAAeC,EAAmBhI,KAC9E,MAAM,cAAEiI,EAAa,YAAEC,EAAc,GAAE,qBAAEC,GAAyBnI,EAE5DoI,EAAe,CAAC,OAAQF,GAE9B,IAAIG,GAAgB,EAChBC,EAAe,GAUZP,EAAcP,aAAa3wB,SAAS4wB,KACzC5wB,GAAYA,IACZ2B,UACE,MAAM,OAAE2B,EAAM,SAAEtD,GAAaD,EACvB2xB,EAAkBpuB,EAExB,GAAItD,GAAYuxB,EAAahrB,SAASvG,EAASI,QAAS,CACtD,MAAMuxB,EAAe,IAAInvB,SAAQC,IAfRmvB,QAgBAnuB,IAGrBiuB,EAAgBtuB,QAAU,IAAKsuB,EAAgBtuB,SAC/CsuB,EAAgBtuB,QAAuB,cAAC,UAAAnB,OAAawB,GACrDhB,EAAQ2uB,EAAcM,GAAiB,EApB/CD,EAAavlB,KAAK0lB,EAqBV,IAGJ,IAAKJ,EAAe,CAClBA,GAAgB,EAEhB,IACE,MAAMlgB,QAAuB6f,IAC7BK,GAAgB,EA1BL/tB,EA2BE6N,EA1BrBmgB,EAAaI,SAAQD,GAAMA,EAAGnuB,KA2BtBguB,EAAe,EACjB,CAAE,MAAOxN,GAGP,OAFAuN,GAAgB,EAChBC,EAAe,GACVH,EAEEA,EAAqBrN,GAFMzhB,QAAQE,OAAOuhB,EAGnD,CACF,CAEA,OAAO0N,CACT,CAvCiBluB,MAyCjB,OAAOjB,QAAQE,OAAO3C,EAAM,GAE/B,EDfHkxB,CAA8BjvB,EAAcuP,IAAkB,CAC5D6f,cAAe5f,EACf8f,qBAAsBvxB,IAChBA,EAAMC,WACR+pB,cACA/e,OAAOY,SAAS0Y,SAClB,G,yME4LWwN,MAhPa,CAK1BnwB,oBAAyBowB,MAACC,GACjB,IAAIxvB,SAAQb,MAAOc,EAASC,KACjC,IACE,MAAMa,EAAM,yBAGZd,QAFuBT,IAAavB,IAAI8C,EAAK,CAAE+O,OAAQ,CAAE0f,aAG3D,CAAE,MAAOjyB,GACP2C,EAAO5C,YAASC,GAClB,KAQJ4B,kBAAuBswB,MAACC,GACf,IAAI1vB,SAAQb,MAAOc,EAASC,KACjC,IACE,MAAMa,EAAM,sBAGZd,QAFuBT,IAAavB,IAAI8C,EAAK,CAAE+O,OAAQ,CAAE4f,eAG3D,CAAE,MAAOnyB,GACP2C,EAAO5C,YAASC,GAClB,KAWJ4B,4BAA2BuD,GAAyB,IAAxB,EAAEitB,EAAC,SAAE3f,EAAQ,KAAEC,GAAMvN,EAC/C,OAAO,IAAI1C,SAAQb,MAAOc,EAASC,KACjC,IACE,MAAMa,EAAG,2BAETd,QADuBT,IAAavB,IAAI8C,EAAK,CAAE+O,OAAQ,CAAE6f,IAAG3f,WAAUC,UAExE,CAAE,MAAO1S,GACP2C,EAAO5C,YAASC,GAClB,IAEJ,EAUA4B,uBAAsB+N,GAAmC,IAAlC,EAAEyiB,EAAC,SAAE3f,EAAQ,KAAEC,EAAI,SAAEe,GAAU9D,EACpD,OAAO,IAAIlN,SAAQb,MAAOc,EAASC,KACjC,IACE,MAAMa,EAAG,4BAAAtB,OAA+BuR,EAAQ,YAGhD/Q,QAFuBT,IAAavB,IAAI8C,EAAK,CAAE+O,OAAQ,CAAE6f,IAAG3f,WAAUC,OAAMe,cAG9E,CAAE,MAAOzT,GACP2C,EAAO5C,YAASC,GAClB,IAEJ,EAMA4B,WAAgBywB,MAACC,GACR,IAAI7vB,SAAQb,MAAOc,EAASC,KACjC,IACE,MAAM4vB,EAAW,IAAIC,SACrB,IAAK,IAAI1qB,KAAOwqB,EACU,KAApBA,EAAWxqB,IAAmC,OAApBwqB,EAAWxqB,IACvCyqB,EAASE,OAAO3qB,EAAKwqB,EAAWxqB,IAIpC,MAAMtE,EAAG,6BAGTd,QAFuBT,IAAaqR,KAAK9P,EAAK+uB,GAGhD,CAAE,MAAOvyB,GACP2C,EAAO5C,YAASC,GAClB,KAcJ4B,cAAakO,GAMT,IANU,gBACZ4iB,EAAkB,KAAI,SACtBC,EAAW,EAAC,WACZC,EAAa,KAAI,OACjBC,EAAS,KAAI,QACbZ,EAAU,MACXniB,EACC,OAAO,IAAIrN,SAAQb,MAAOc,EAASC,KACjC,IACE,IAAIa,EAAM,GACV,MAAQ3B,uBAAwBC,GAAWC,cACrCwB,EAAS,CAAC,EAEXsvB,EAIHrvB,EAAG,OAAAtB,OAAUJ,EAAM,oBAAAI,OAAmB2wB,IAHtCtvB,EAAOgP,OAAS,CAAEmgB,kBAAiBC,WAAUC,aAAYX,WACzDzuB,EAAG,OAAAtB,OAAUJ,EAAM,oBAMrBY,QADuBT,IAAavB,IAAI8C,EAAKD,GAE/C,CAAE,MAAOvD,GACP2C,EAAO5C,YAASC,GAClB,IAEJ,EASA4B,mBAAwBkxB,MAACJ,EAAiBC,EAAUV,IAC3C,IAAIxvB,SAAQb,MAAOc,EAASC,KACjC,IACE,MAAQd,uBAAwBC,GAAWC,cAErCyB,EAAG,OAAAtB,OAAUJ,EAAM,2BAQzBY,QAPuBT,IAAavB,IAAI8C,EAAK,CAC3C+O,OAAQ,CACNmgB,kBACAC,WACAV,aAIN,CAAE,MAAOjyB,GACP2C,EAAO5C,YAASC,GAClB,KASJ4B,WAAgBmxB,MAACT,EAAYO,IACpB,IAAIpwB,SAAQb,MAAOc,EAASC,KACjC,IACE,MAAM4vB,EAAW,IAAIC,SAEfQ,EAAc,CAClB,OACA,aACA,QACA,cACA,iBACA,cAGF,IAAK,IAAIlrB,KAAOwqB,EACVA,EAAWxqB,IAAQkrB,EAAYxsB,SAASsB,IAC1CyqB,EAASE,OAAO3qB,EAAKwqB,EAAWxqB,IAIpC,MAAMtE,EAAG,8BAAAtB,OAAiC2wB,GAE1CnwB,QADuBT,IAAaqR,KAAK9P,EAAK+uB,GAEhD,CAAE,MAAOvyB,GACP2C,EAAO5C,YAASC,GAClB,KASJ4B,WAAgBqxB,MAACJ,GACR,IAAIpwB,SAAQb,MAAOc,EAASC,KACjC,IACE,MAAMa,EAAG,8BAAAtB,OAAiC2wB,GAG1CnwB,QAFuBT,IAAaixB,OAAO1vB,GAG7C,CAAE,MAAOxD,GACP2C,EAAO5C,YAASC,GAClB,KAUJ4B,UAAeuxB,MAACT,EAAiBC,IACxB,IAAIlwB,SAAQb,MAAOc,EAASC,KACjC,IACE,MAAMY,EAAS,CACbgP,OAAQ,CAAEmgB,kBAAiBC,YAC3BhC,aAAc,QAGhB,IAAIntB,EAAG,kCAEPd,QADkBT,IAAavB,IAAI8C,EAAKD,GAE1C,CAAE,MAAOvD,GACP2C,EAAO5C,YAASC,GAClB,M,iBC3ON,MAAMozB,EAAgB,CAQpBxxB,wBAAwB6R,EAAUmf,EAAYS,GAC5C,IACE,MAAM9vB,EAAS,CACbgP,OAAQ,CAAEkB,WAAUmf,aAAYS,WAE5B7vB,EAAG,0BACHvD,QAAiBgC,IAAavB,IAAI8C,EAAKD,GAC7C,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAQA4B,oBAAoBqwB,EAASzxB,GAC3B,IACE,MAAM+C,EAAS,CACbF,QAAS,CACP,eAAgB,oBAElBkP,OAAQ,CAAE0f,YAENzuB,EAAG,6BAAAtB,OAAgC+vB,GACnChyB,QAAiBgC,IAAaiB,IAAIM,EAAK0hB,KAAK9hB,UAAU5C,GAAO+C,GACnE,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAQA4B,mBAAmBqwB,EAASW,GAC1B,IACE,MAAMrvB,EAAS,CACbgP,OAAQ,CACN0f,UACAW,eAGEpvB,EAAG,6BAAAtB,OAAgC+vB,GACnChyB,QAAiBgC,IAAavB,IAAI8C,EAAKD,GAC7C,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EASA4B,iBAAiB6R,EAAUmf,GACzB,IACE,MAAMrvB,EAAS,CACbgP,OAAQ,CACNkB,WACAmf,eAGEpvB,EAAG,2BAAAtB,OAA8BuR,GACjCxT,QAAiBgC,IAAavB,IAAI8C,EAAKD,GAC7C,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAOA4B,mBAAmB6R,GACjB,IACE,MAAMlQ,EAAS,CACbgP,OAAQ,CAAEkB,aAENjQ,EAAG,4BACHvD,QAAiBgC,IAAavB,IAAI8C,EAAKD,GAC7C,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAOA4B,uBAAuB6R,GACrB,IACE,MAAMjQ,EAAG,kCAAAtB,OAAqCuR,GACxCxT,QAAiBgC,IAAavB,IAAI8C,GACxC,OAAOf,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAQA4B,qBAAqB6R,EAAUmf,GAC7B,IACE,MAAMrvB,EAAS,CACbgP,OAAQ,CAAEkB,WAAUmf,eAEhBpvB,EAAG,+BACHvD,QAAiBgC,IAAavB,IAAI8C,EAAKD,GAC7C,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAUA4B,sBAAsB6R,GAA8C,IAApC2e,EAAC7tB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAQlO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAImO,EAAInO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAC9D,IACE,MAAMhB,EAAS,CACbgP,OAAQ,CAAE6f,IAAG3f,WAAUC,SAEnBlP,EAAG,4BAAAtB,OAA+BuR,EAAQ,YAC1CxT,QAAiBgC,IAAavB,IAAI8C,EAAKD,GAC7C,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EASA4B,qBAAqB6R,EAAUmf,EAAYtqB,GACzC,IACE,MAAM/E,EAAS,CACbgP,OAAQ,CAAEkB,WAAUmf,aAAYtqB,UAE5B9E,EAAG,qCACHvD,QAAiBgC,IAAavB,IAAI8C,EAAKD,GAC7C,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAOA4B,qBAAqBpB,GACnB,IACE,MAAM+C,EAAS,CACbF,QAAS,CACP,eAAgB,qBAGdG,EAAG,qCACHvD,QAAiBgC,IAAaqR,KAAK9P,EAAK0hB,KAAK9hB,UAAU5C,GAAO+C,GACpE,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAOA4B,sBAAsBpB,GACpB,IACE,MAAM+C,EAAS,CACbF,QAAS,CACP,eAAgB,qBAGdG,EAAG,qCACHvD,QAAiBgC,IAAaiB,IAAIM,EAAK0hB,KAAK9hB,UAAU5C,GAAO+C,GACnE,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAOA4B,uBAAuBoC,GACrB,IACE,MAAMR,EAAG,kCAAAtB,OAAqC8B,GACxC/D,QAAiBgC,IAAavB,IAAI8C,GACxC,OAAOf,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAOA4B,4BAA4Bd,GAC1B,IACE,MAAMyC,EAAS,CACbgP,OAAQ,CAAEzR,SAEN0C,EAAG,iCACHvD,QAAiBgC,IAAavB,IAAI8C,EAAKD,GAC7C,OAAOd,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAEA4B,qBAAqB0xB,GACnB,IACE,MAAQzxB,uBAAwBC,GAAWC,cACrCwB,EAAS,CAAEgP,OAAQ,CAAE+gB,eAErB9vB,EAAG,OAAAtB,OAAUJ,EAAM,0BACnByxB,QAAYtxB,IAAavB,IAAI8C,EAAKD,GACxC,OAAOd,QAAQC,QAAQ6wB,EACzB,CAAE,MAAOvzB,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAQA4B,gBAAgB+wB,EAAUD,GAAqC,IAApBY,EAAU/uB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KACtD,IACE,MAAQ1C,uBAAwBC,GAAWC,cACrCwB,EAAS,CAAEgP,OAAQ,CAAEogB,WAAUD,kBAAiBY,eAEtD,IAAI9vB,EAAM,KACK,SAAX1B,IAAmB0B,EAAM,kBACd,WAAX1B,GAAkC,YAAXA,IACzB0B,EAAG,OAAAtB,OAAUJ,EAAM,aAAAI,OAAYoxB,EAAU,WAG3C,MAAMC,QAAYtxB,IAAavB,IAAI8C,EAAKD,GACxC,OAAOd,QAAQC,QAAQ6wB,EACzB,CAAE,MAAOvzB,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EASA4B,qBAAqB+wB,EAAUD,EAAiBE,GAAgC,IAApBU,EAAU/uB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KACvE,IACE,MAAQ1C,uBAAwBC,GAAWC,cACrCwB,EAAS,CAAEgP,OAAQ,CAAEogB,WAAUD,kBAAiBE,aAAYU,eAElE,IAAI9vB,EAAM,KACK,SAAX1B,IAAmB0B,EAAM,yBACd,WAAX1B,GAAkC,YAAXA,IACzB0B,EAAG,OAAAtB,OAAUJ,EAAM,aAAAI,OAAYoxB,EAAU,kBAG3C,MAAMC,QAAYtxB,IAAavB,IAAI8C,EAAKD,GACxC,OAAOd,QAAQC,QAAQ6wB,EACzB,CAAE,MAAOvzB,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EASA4B,wBAA0D,IAApCwwB,EAAC7tB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAQlO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAImO,EAAInO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACpD,IACE,MAAMhB,EAAS,CAAEgP,OAAQ,CAAE6f,IAAG3f,WAAUC,SAClClP,EAAG,2BACH+vB,QAAYtxB,IAAavB,IAAI8C,EAAKD,GACxC,OAAOd,QAAQC,QAAQ6wB,EACzB,CAAE,MAAOvzB,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAUA4B,0BAA6E,IAArDwwB,EAAC7tB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAQlO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAImO,EAAInO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGkP,EAAQlP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KACpE,IACE,MAAMhB,EAAS,CAAEgP,OAAQ,CAAE6f,IAAG3f,WAAUC,OAAMe,aACxCjQ,EAAG,4BAAAtB,OAA+BuR,EAAQ,YAC1C8f,QAAYtxB,IAAavB,IAAI8C,EAAKD,GACxC,OAAOd,QAAQC,QAAQ6wB,EACzB,CAAE,MAAOvzB,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAEA4B,0BAAyBuD,GAA0D,IAAzD,EAAEitB,EAAI,KAAI,SAAE3f,EAAW,GAAE,KAAEC,EAAO,EAAC,SAAEe,EAAW,MAAMtO,EAC9E,IACE,MAAM5B,EAAS,CACbgP,OAAQ,CAAE6f,IAAG3f,WAAUC,OAAMe,aAEzBjQ,EAAG,4BAAAtB,OAA+BuR,EAAQ,YAC1C8f,QAAYtxB,IAAavB,IAAI8C,EAAKD,GACxC,OAAOd,QAAQC,QAAQ6wB,EACzB,CAAE,MAAOvzB,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,GAGaozB,O,kCCnXf,kCAAO,MAAMjhB,EAAiB,CAC5BqhB,SAAU,CACRnhB,cAAe,iBAEjBkB,eAAgB,CACdlB,cAAe,iBAEjBohB,cAAe,CACbphB,cAAe,iBAEjBD,WAAY,CACVC,cAAe,gBACfqhB,kBAAmB,qBAErBC,eAAgB,CACdD,kBAAmB,qBAErBE,aAAc,CACZC,mBAAoB,qBACpBC,gBAAiB,mB,iGCjBrB,MAAMC,EAAgB,CACpBzjB,KAAM,CACJ0jB,KAAM,CACJC,aAAa,EACbC,cAAe,MAEjBnoB,QAAS,CACPkoB,aAAa,EACbC,cAAe,MAEjBC,YAAa,CACXF,aAAa,EACbC,cAAe,MAEjBE,aAAc,CACZH,aAAa,EACbC,cAAe,OAGnB/jB,YAAY,GAwDCkkB,MArDW,WAAoC,IAAnCpkB,EAAK1L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGwvB,EAAeO,EAAM/vB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACtD,MAAM,KAAE3D,EAAI,QAAEC,GAAYuzB,EAE1B,OAAQxzB,GACN,KAAKgqB,IAAyBC,8BAC5B,MAAO,IACF9a,EACHK,KAAM,IACDL,EAAMK,KACT0jB,KAAMjzB,IAGZ,KAAK+pB,IAAyBE,iCAC5B,MAAO,IACF/a,EACHK,KAAM,IACDL,EAAMK,KACTvE,QAAShL,IAGf,KAAK+pB,IAAyBG,sCAC5B,MAAO,IACFhb,EACHK,KAAM,IACDL,EAAMK,KACT6jB,YAAapzB,IAGnB,KAAK+pB,IAAyBI,uCAC5B,MAAO,IACFjb,EACHK,KAAM,IACDL,EAAMK,KACT8jB,aAAcrzB,IAGpB,KAAK+pB,IAAyBM,mCAC5B,MAAO,IACFnb,KACAlP,GAEP,KAAK+pB,IAAyBO,kBAC5B,MAAO,IAAK0I,GACd,KAAKjJ,IAAyBK,gBAC5B,MAAO,IACFlb,KACAlP,GAEP,QACE,OAAOkP,EAEb,E,QCzEA,MAAM8jB,EAAgB,CACpBxxB,KAAM,GACND,OAAQ,GACRtC,MAAO,KACPu0B,WAAW,GAoBEC,MAjBa,WAAoC,IAAnCvkB,EAAK1L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGwvB,EAAeO,EAAM/vB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACxD,MAAM,KAAE3D,EAAI,QAAEC,GAAYuzB,EAE1B,OAAQxzB,GACN,KAAKkE,IAA0BC,wBAC7B,MAAO,IAAKgL,EAAOskB,WAAW,EAAMv0B,MAAO,MAC7C,KAAKgF,IAA0BI,0BAC7B,MAAO,CAAEmvB,WAAW,EAAOv0B,MAAO,KAAMuC,KAAMxB,EAAQwB,KAAMD,OAAQvB,EAAQuB,QAC9E,KAAK0C,IAA0BM,yBAC7B,MAAO,IAAK2K,EAAOskB,WAAW,EAAOv0B,MAAOe,GAC9C,KAAKiE,IAA0BQ,oBAC7B,MAAO,IAAKuuB,GACd,QACE,OAAO9jB,EAEb,E,QCtBA,MAAM8jB,EAAgB,CACpBnS,YAAa,CAAC,EACd/Q,KAAM,QACN8Q,eAAe,EACfD,iBAAiB,EACjB1hB,MAAO,KACPy0B,wBAAwB,EACxBC,uBAAuB,EACvBC,YAAa,CACXtI,WAAY,KACZ9rB,QAAS,MAEXq0B,kBAAkB,GA4ELC,MAzEK,WAAoC,IAAnC5kB,EAAK1L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGwvB,EAAeO,EAAM/vB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAChD,MAAM,KAAE3D,EAAI,QAAEC,GAAYuzB,EAE1B,OAAQxzB,GACN,KAAKopB,IAAkBG,cACrB,MAAO,IACFpa,EACHwkB,uBAAwBlO,QAAoB,YAAZxlB,GAChC2zB,sBAAuBnO,QAAoB,WAAZxlB,GAC/B4zB,YAAa,CAAEtI,WAAYtrB,EAASR,QAAS,OAGjD,KAAK2pB,IAAkBI,gBACrB,MAAO,CACL1I,YAAa7gB,EAAQ4Q,KACrBd,KAAM9P,EAAQ6Q,SACd+P,eAAe,EACfD,iBAAiB,EACjB1hB,MAAO,KACP20B,YAAa,CAAEtI,WAAY,KAAM9rB,QAAS,MAC1Ck0B,wBAAwB,EACxBC,uBAAuB,GAG3B,KAAKxK,IAAkBK,eACrB,MAAO,IACFwJ,EACHpS,eAAe,EACfgT,YAAa5zB,GAGjB,KAAKmpB,IAAkBM,eACrB,MAAO,IACFva,EACH2kB,kBAAkB,EAClB50B,MAAO,MAGX,KAAKkqB,IAAkBO,iBACrB,MAAO,IACFsJ,EACHpS,eAAe,EACf3hB,MAAO,MAGX,KAAKkqB,IAAkBQ,gBACrB,MAAO,IACFza,EACH2kB,kBAAkB,EAClB50B,MAAOe,GAGX,KAAKmpB,IAAkBE,iBACrB,MAAO,IACFna,EACH2R,YAAa7gB,EAAQ4Q,KACrBd,KAAM9P,EAAQ6Q,SAAW7Q,EAAQ6Q,SAAW3B,EAAMY,MAGtD,KAAKqZ,IAAkBC,uBACrB,MAAO,IACFla,EACH2R,YAAa,IACR3R,EAAM2R,YACTuK,MAAOprB,IAIb,QACE,OAAOkP,EAEb,E,QCtFA,MAAM8jB,EAAgB,CACpBpuB,MAAO,GACPmvB,UAAW,KACXC,WAAY,KACZC,SAAU,MAsBGC,MAnBc,WAAoC,IAAnChlB,EAAK1L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGwvB,EAAeO,EAAM/vB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACzD,MAAM,KAAE3D,EAAI,QAAEC,GAAYuzB,EAE1B,OAAQxzB,GACN,KAAKo0B,IAA4BC,iBAC/B,MAAO,IAAKllB,EAAOtK,MAAO5E,GAC5B,KAAKm0B,IAA4BE,gBAC/B,MAAO,IAAKnlB,EAAO8kB,WAAYh0B,GACjC,KAAKm0B,IAA4BG,qBAC/B,MAAO,IAAKplB,EAAO+kB,SAAUj0B,GAC/B,KAAKm0B,IAA4BI,iBAC/B,MAAO,IAAKrlB,EAAO6kB,UAAW/zB,GAChC,KAAKm0B,IAA4BK,MAC/B,MAAO,IAAKxB,GACd,QACE,OAAO9jB,EAEb,E,QCxBA,MAAM8jB,EAAgB,CACpB7f,MAAO,GACPC,WAAW,EACXnU,MAAO,KACPu0B,WAAW,EACXzgB,aAAa,GA0BA0hB,MAvBK,WAAoC,IAAnCvlB,EAAK1L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGwvB,EAAeO,EAAM/vB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAChD,MAAM,KAAE3D,EAAI,QAAEC,GAAYuzB,EAE1B,OAAQxzB,GACN,KAAKiT,IAAkBC,gBACrB,MAAO,IAAK/D,EAAOskB,WAAW,EAAMv0B,MAAO,KAAM8T,YAAa/S,EAAQ+S,aACxE,KAAKC,IAAkBK,kBACrB,MAAO,CACLmgB,WAAW,EACXv0B,MAAO,KACPkU,MAAOnT,EAAQmT,MACfC,UAAWpT,EAAQoT,UACnBL,aAAa,GAEjB,KAAKC,IAAkBO,iBACrB,MAAO,IAAKrE,EAAOskB,WAAW,EAAOv0B,MAAOe,EAAS+S,aAAa,GACpE,KAAKC,IAAkBS,YACrB,MAAO,IAAKuf,GACd,QACE,OAAO9jB,EAEb,E,SC3BA,MAAMwlB,EAAe,CACnB50B,KAAM,MAeO60B,MAZK,WAAmC,IAAlCzlB,EAAK1L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGkxB,EAAcnB,EAAM/vB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/C,OAAQ6vB,EAAOxzB,OACRH,IACI,IACFsP,EACHpP,KAAMyzB,EAAOvzB,SAGRkP,CAEb,E,QCdA,MAAMwlB,EAAe,CACnBntB,MAAO,KACPqtB,YAAa,GACbC,MAAO,KACPC,QAAS,KACT9I,SAAU,KACV+I,MAAO,KAEPC,MAAO,KAEPC,WAAY,IAmCCC,MAhCa,WAAmC,IAAlChmB,EAAK1L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGkxB,EAAcnB,EAAM/vB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACvD,OAAQ6vB,EAAOxzB,MACb,KAAKo1B,IACH,MAAO,IACFjmB,EACH3H,MAAOgsB,EAAOvzB,QAAQuH,MACtBqtB,YAAarB,EAAOvzB,QAAQ40B,YAC5BC,MAAOtB,EAAOvzB,QAAQ60B,MACtBC,QAASvB,EAAOvzB,QAAQ80B,QACxB9I,SAAUuH,EAAOvzB,QAAQgsB,SACzB+I,MAAOxB,EAAOvzB,QAAQ+0B,MAEtBC,MAAOzB,EAAOvzB,QAAQg1B,OAE1B,KAAKI,IACH,MAAO,IACFlmB,EACH6lB,MAAOxB,EAAOvzB,SAElB,KAAKq1B,IACH,MAAO,IACFnmB,EACH+lB,WAAY1B,EAAOvzB,SAEvB,KAAKw0B,IAEH,OADAlN,QAAQ0G,IAAI,2BACL0G,EACT,QACE,OAAOxlB,EAEb,E,QC3CA,MAAMwlB,EAAe,CACnBntB,MAAO,KACPqtB,YAAa,GACbC,MAAO,KACPC,QAAS,KACT9I,SAAU,KACVsJ,SAAU,KACVC,SAAU,MAiCGC,MA9BY,WAAmC,IAAlCtmB,EAAK1L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGkxB,EAAcnB,EAAM/vB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACtD,OAAQ6vB,EAAOxzB,MACb,KAAK01B,IACH,MAAO,IACFvmB,EACH3H,MAAOgsB,EAAOvzB,QAAQuH,MACtBqtB,YAAarB,EAAOvzB,QAAQ40B,YAC5BC,MAAOtB,EAAOvzB,QAAQ60B,MACtBC,QAASvB,EAAOvzB,QAAQ80B,QACxB9I,SAAUuH,EAAOvzB,QAAQgsB,SACzBsJ,SAAU/B,EAAOvzB,QAAQs1B,SACzBC,SAAUhC,EAAOvzB,QAAQu1B,UAO7B,KAAKG,IACH,MAAO,IACFxmB,EACHqmB,SAAUhC,EAAOvzB,SAErB,KAAKw0B,IACH,OAAOE,EACT,QACE,OAAOxlB,EAEb,ECrBeymB,MAXKC,YAAgB,CAClCzmB,YAAamkB,EACbuC,aAAcpC,EACd7iB,KAAMkjB,EACNgC,cAAe5B,EACf/gB,MAAOshB,EACP30B,KAAM60B,EACNoB,aAAcb,EACdc,YAAaR,I,2BCYf,MAEMS,EAAgB,CACpBlvB,IAAK,OACLmvB,Q,OAAAA,EACAC,UAAW,CAAC,SAGRC,EAAmBC,YAAeJ,EAAeN,GAEjDW,EAAc,EAACC,EAAwCC,KAAOC,OAAOjR,SACrEkR,EAEJC,IAEIlQ,EAAQmQ,YAAYR,EAAkBM,EAAgBG,eAAmBP,KAClE1P,EAAYkQ,YAAarQ,GAEvBA,K,kCChDf,qFAOO,MAAMhW,EAAmB5P,UAC9B,IACE,MAAM,aAAE+oB,EAAY,WAAEE,GAAe9oB,eAC7BiC,GAAIksB,EAAWpoB,IAAKmoB,GAAkBhe,IAAU4Y,GAElD0H,EAAW,IAAIC,SACrBD,EAASE,OAAO,aAAc,iBAC9BF,EAASE,OAAO,gBAAiB9H,GACjC4H,EAASE,OAAO,YAAavC,GAC7BqC,EAASE,OAAO,gBAAiBxC,GAEjC,MAAM,KAAEzvB,SAAeiR,IAAY6B,KAAK,iBAAkBif,IACpD,aAAEhJ,EAAY,YAAEuO,EAAW,cAAEjO,EAAa,YAAEkO,GAAgBv3B,EAKlE,OAHA8oB,YAAeC,GACfK,YAAgBC,GAETpnB,QAAQC,QAAQ6mB,EACzB,CAAE,MAAOvpB,GAEP,OADAqoB,QAAQ0G,IAAI,YACLtsB,QAAQE,OAAO3C,EACxB,GAGIg4B,EAAc,CASlBp2B,YAAWuD,GAAoD,IAAnD,UAAE+qB,EAAS,cAAED,EAAa,SAAED,EAAQ,SAAE7c,GAAUhO,EAC1D,IACE,MAAMotB,EAAW,IAAIC,SACrBD,EAASE,OAAO,aAAc,YAC9BF,EAASE,OAAO,YAAavC,GAC7BqC,EAASE,OAAO,gBAAiBxC,GACjCsC,EAASE,OAAO,WAAYzC,GAC5BuC,EAASE,OAAO,WAAYtf,GAE5B,MAAM,KAAE3S,SAAeiR,IAAY6B,KAAK,iBAAkBif,IACpD,aAAEhJ,EAAY,YAAEuO,EAAW,gBAAEG,EAAe,cAAEpO,EAAa,YAAEkO,EAAW,KAAEpmB,GAASnR,EAMzF,OAJA8oB,YAAeC,GACfK,YAAgBC,GAChBJ,YAAcb,YAAajX,EAAKE,YAEzBpP,QAAQC,QAAQ,CAAEiP,OAAMC,SAAUD,EAAKE,WAChD,CAAE,MAAO7R,GACP,MAAM,QAAEO,EAAO,KAAED,EAAI,OAAED,GAAWN,YAASC,GAE3C,OAAe,MAAXK,EAAuBoC,QAAQE,OAAO,CAAEpC,QAAS,wBAAyBF,SAAQC,SACvE,MAAXD,EACKoC,QAAQE,OAAO,CACpBpC,QAAS,oDACTF,SACAC,SAGGmC,QAAQE,OAAO,CAAEpC,UAASD,OAAMD,UACzC,CACF,EAmBAuB,eAAc+N,GAkBV,IAlBW,KACb9E,EAAI,IACJqtB,EAAG,SACHlI,EAAQ,MACRmI,EAAK,SACLhlB,EAAQ,sBACRC,EAAqB,MACrBzN,EAAK,mBACLyyB,EAAkB,gBAClBC,EAAe,QACfpG,EAAO,gBACPrf,EAAe,KACf/B,EAAI,aACJmB,EAAY,SACZsmB,EAAQ,QACRC,EAAO,SACPC,EAAQ,UACRC,GACD9oB,EACC,IACE,MAAM4iB,EAAW,IAAIC,SACrBD,EAASE,OAAO,OAAQ5nB,GACxB0nB,EAASE,OAAO,MAAOyF,GACvB3F,EAASE,OAAO,WAAYzC,GAC5BuC,EAASE,OAAO,QAAS0F,GACzB5F,EAASE,OAAO,WAAYtf,GAC5Bof,EAASE,OAAO,wBAAyBrf,GACzCmf,EAASE,OAAO,QAAS9sB,GACzB4sB,EAASE,OAAO,eAAgBzgB,GAChCugB,EAASE,OAAO,cAAe6F,GAC/B/F,EAASE,OAAO,aAAc8F,GAC9BhG,EAASE,OAAO,cAAe+F,GAC/BC,GAAalG,EAASE,OAAO,oBAAqBgG,GAClDL,GAAsB7F,EAASE,OAAO,qBAAsB2F,GAC5DC,GAAmB9F,EAASE,OAAO,kBAAmB4F,GAEtDpG,GAAWM,EAASE,OAAO,UAAWR,GACtCrf,GAAmB2f,EAASE,OAAO,kBAAmB7f,GAEtD,MAAM9Q,EAASmQ,IAAUpB,GAAMqB,cACzB,KAAE1R,SAAeiR,IAAY6B,KAAK,MAADpR,OAAOJ,EAAM,aAAaywB,GAEjE,OAAO9vB,QAAQC,QAAQlC,EAAKA,KAC9B,CAAE,MAAOR,GACP,IAAI,OAAEK,EAAM,QAAEE,EAAO,KAAED,GAASP,YAASC,GAEzC,OAAIM,IAAS6R,IAAeqhB,SAASnhB,cAC5B5P,QAAQE,OAAO,CACpB2F,MAAO/H,EACPA,QAAS,qCACTF,SACAC,SAIGmC,QAAQE,OAAO,CAAEpC,UAASF,SAAQC,QAC3C,CACF,EAEAsB,eACE,IACE,MAAM,YAAE6O,EAAa5O,uBAAwBC,GAAWC,cAClDwwB,EAAW,IAAIC,SAKrB,OAJAD,EAASE,OAAO,QAAShiB,SAEnBgB,IAAY6B,KAAK,MAADpR,OAAOJ,EAAM,WAAWywB,GAC9CvI,cACOvnB,QAAQC,SAAQ,EACzB,CAAE,MAAO1C,GACP,OAAOyC,QAAQE,OAAO5C,YAASC,GACjC,CACF,EAeA4B,eAAckO,GAWV,IAXW,KACbjF,EAAI,MACJstB,EAAK,SACLhlB,EAAQ,sBACRC,EAAqB,MACrBzN,EAAK,SACLqqB,EAAQ,mBACRoI,EAAkB,gBAClBC,EAAe,KACfxnB,EAAI,aACJmB,GACDlC,EACC,IACE,MAAMhO,EAASmQ,IAAUpB,GAAMqB,aAEzBjS,QAAiBgC,IAAaiB,IAAI,OAADhB,OAC9BJ,EAAM,sBACbojB,KAAK9hB,UAAU,CACbyH,OACAstB,QACAhlB,WACAC,wBACAzN,QACAqqB,WACAoI,qBACAC,kBACArmB,iBAEF,CACE3O,QAAS,CACP,eAAgB,sBAItB,OAAOZ,QAAQC,QAAQzC,EACzB,CAAE,MAAOD,GACP,IAAI,OAAEK,EAAM,QAAEE,EAAO,KAAED,GAASP,YAASC,GAEzC,OAAIM,IAAS6R,IAAeshB,cAAcphB,cACjC5P,QAAQE,OAAO,CACpB2F,MAAO/H,EACPA,QAAS,yCACTF,SACAC,SAIGmC,QAAQE,OAAO,CAAEpC,UAASF,SAAQC,QAC3C,CACF,EASAsB,2BAA0B+Q,GAAkC,IAAjC,MAAEjP,EAAK,SAAE+rB,EAAQ,UAAE5d,GAAWc,EACvD,IACE,MAAM,KAAEnS,SAAeiR,IAAY6B,KACjC,mBACA4R,KAAK9hB,UAAU,CAAEM,QAAO+rB,WAAU5d,cAClC,CACExO,QAAS,CACP,eAAgB,uBAKhB,aAAEkmB,EAAY,cAAEM,EAAa,KAAElY,GAASnR,EAM9C,OAJA8oB,YAAeC,GACfK,YAAgBC,GAChBJ,YAAcb,YAAajX,EAAKE,YAEzBpP,QAAQC,QAAQ,CAAEiP,OAAMC,SAAUD,EAAKE,WAChD,CAAE,MAAO7R,GACP,MAAM,QAAEO,EAAO,KAAED,EAAI,OAAED,GAAWN,YAASC,GAC3C,OAAOyC,QAAQE,OAAO,CAAEpC,UAASD,OAAMD,UACzC,CACF,GAGa23B,K,kCC3PA9C,IARqB,CAClCC,iBAAkB,kCAClBE,qBAAsB,sCACtBC,iBAAkB,kCAClBF,gBAAiB,iCACjBG,MAAO,uB,kCCLT,gRAAO,MAAMW,EAAa,aACbX,EAAQ,QACRa,EAAY,YACZD,EAAe,eAEfuC,EAAgBC,IAAU,CACrC73B,KAAMo1B,EACNn1B,QAAS43B,IAGEC,EAAWC,IAAK,CAC3B/3B,KAAMs1B,EACNr1B,QAAS83B,IAGEC,EAAgBhD,IAAK,CAChCh1B,KAAMq1B,EACNp1B,QAAS+0B,IAGEiD,EAAeA,KAAA,CAC1Bj4B,KAAMy0B,G,kCCrBR,kQAGO,MAAMyD,EAA2Bl4B,GACtCiE,YAAa+lB,IAAyBC,8BAA+B,CACnEkJ,aAAa,EACbC,cAAepzB,GAAc,WAGpBm4B,EAA8Bn4B,GACzCiE,YAAa+lB,IAAyBE,iCAAkC,CACtEiJ,aAAa,EACbC,cAAepzB,GAAc,WAGpBo4B,EAAkCp4B,GAC7CiE,YAAa+lB,IAAyBG,sCAAuC,CAC3EgJ,aAAa,EACbC,cAAepzB,GAAc,WAGpBq4B,EAAmCr4B,GAC9CiE,YAAa+lB,IAAyBI,uCAAwC,CAC5E+I,aAAa,EACbC,cAAepzB,GAAc,WAGpBilB,EAAiC7V,GAC5CnL,YAAa+lB,IAAyBM,mCAAoClb,GAE/DogB,EAAmBA,IAC9BvrB,YAAa+lB,IAAyBO,kBAAmB,MAE9C+N,EAAgBr4B,GAC3BgE,YAAa+lB,IAAyBK,gBAAiBpqB,E,qEC7BzD,MAAMs4B,EAAcC,cAAG,6XAmCjBjV,EAAoBlf,IAanB,IAboB,WACzBo0B,EAAU,SACVC,EAAQ,QACRC,EAAO,KACPp4B,EAAI,UACJkzB,EAAS,KACTtoB,EAAI,WACJytB,EAAU,MACVpV,EAAK,QACLlZ,EAAO,SACPuuB,EAAQ,SACRxyB,KACGF,GACJ9B,EACC,OACE+B,eAAA0yB,EAAA,CACEC,MAAOJ,EACPp4B,KAAMA,EACNqmB,QAAS6M,EACTtoB,KAAMA,EACN6tB,SAAUJ,EACVtuB,QAASA,EACT2uB,OAAQJ,KAEJ1yB,EAAIE,SAAA,CAEPmd,EACAnd,IACM,EAuCbkd,EAAkB9W,aAAe,CAC/B+W,MAAO,SACPmV,SAAS,EACTp4B,KAAM,KACNkzB,WAAW,EACXmF,YAAY,EACZC,UAAU,GAGGtV,MAAkB,IAAAuV,EAAAI,kBAAAC,KAAAC,WAAA,CAAAC,YAAA,mBAAAH,CAAA,QArDtBX,E,kCC/DI,QAA0B,wC,kCCA1B,QAA0B,2C,kCCAzC,4MAAO,MAAM7C,EAAW,WACXjB,EAAQ,QACRkB,EAAe,eAGf2D,EAAcC,IAAQ,CACjCv5B,KAAM01B,EACNz1B,QAASs5B,IAGEC,EAAcC,IAAS,CAClCz5B,KAAM21B,EACN11B,QAASw5B,IAQExB,EAAeA,KAAA,CAC1Bj4B,KAAMy0B,G,kCCrBO,QAA0B,uC,kCCA1B,QAA0B,wC","file":"static/js/main.18da5e1e.chunk.js","sourcesContent":["import { get, isEmpty } from 'lodash';\n\n/**\n *\n * @param {Error} error\n * @returns\n */\nexport const getError = error => {\n const { response, request } = error;\n if (navigator.onLine === false) {\n return {\n status: null,\n code: null,\n message: 'Gagal! Harap periksa koneksi internet kamu.',\n };\n }\n\n if (response) {\n // The request was made and the server responded with a status code that falls out of the range of 2xx\n\n let { status, data } = response;\n let code = null;\n let message = null;\n\n /**\n * Check for error pattern 1\n * If data is not empty & have error key inside\n * Example: data.error.code && data.error.message\n */\n if (!isEmpty(data) && 'error' in data) {\n code = get(data.error, 'code', null);\n message = get(data.error, 'message', null);\n const { error } = data;\n if (message === null) {\n message = error;\n }\n }\n\n /**\n * Check for error pattern 2\n * This error happens in response 400\n * If data is not empty & have message key inside\n * Example: data.message && data.data\n */\n if (!isEmpty(data) && 'message' in data) {\n code = get(data, 'code', null);\n // here we attach data to message, so we can get the message or data in controller, like message.message & message.data. data could be object, array or null, it depends on the api response\n message = data;\n }\n\n // in case server response with status or code 500\n if (status >= 500 || code >= 500) {\n // error otp\n // Anda sudah mencoba lebih dari maksimal request OTP, silahkan coba lagi dalam 20 detik\n // Anda sudah mencoba lebih dari maximal request OTP, silahkan coba lagi beberapa saat\n if (code === 505) return { status, code, message };\n\n // Terlalu banyak mencoba resend OTP, silahkan coba 5 menit lagi\n if (code === 506) return { status, code, message };\n\n // Anda sudah salah input pin OTP lebih dari 3 kali, Silahkan klik kirim ulang\n // Kode OTP sudah invalid, silahkan mencoba kembali\n if (code === 502) return { status, code, message };\n\n // Kode OTP yang anda masukkan salah\n if (code === 501) return { status, code, message };\n\n // Maaf, terdapat kendala di sistem kami silahkan mencoba beberapa saat lagi\n if (code === 504) return { status, code, message };\n\n return {\n status,\n code,\n // force replace api message\n message:\n 'Mohon maaf, terjadi kesalahan pada sistem kami. Cobalah dalam beberapa saat lagi.',\n };\n }\n\n if (status === 401) {\n return {\n status,\n code,\n // force replace api message\n message: 'Sesi telah berakhir, silahkan login kembali.',\n };\n }\n\n return {\n status,\n code,\n message: !isEmpty(message) ? message : 'Mohon maaf, terjadi kesalahan pada sistem kami.',\n };\n }\n\n if (request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n\n return {\n status: null,\n code: null,\n message: 'Mohon maaf, terjadi kesalahan pada sistem kami. Cobalah dalam beberapa saat lagi.',\n };\n }\n\n return {\n status: null,\n code: null,\n message: error.message || 'Mohon maaf, terjadi kesalahan pada sistem kami.',\n };\n};\n","export const SET_HOST = 'SET_HOST';\n\nexport const setHost = host => ({\n type: SET_HOST,\n payload: host,\n});\n","import styled from 'styled-components';\nimport { device, size } from 'utils/breakpoints';\n\nexport const Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: ${size.mobileL};\n margin: 0 auto;\n p {\n margin: 0 auto;\n font-weight: 300;\n font-size: 15px;\n text-align: center;\n width: 85%;\n\n button,\n a {\n font-weight: inherit;\n font-size: 15px;\n text-transform: lowercase;\n margin-left: 4px !important;\n margin-right: 4px !important;\n line-height: inherit;\n }\n }\n\n svg {\n width: 70%;\n height: auto;\n }\n\n @media ${device.laptop} {\n svg {\n width: 100%;\n }\n p {\n width: 100%;\n }\n }\n`;\n\nexport const Title = styled.div`\n padding: 0 24px;\n margin-top: 16px;\n margin-bottom: 8px;\n h1 {\n line-height: normal;\n font-size: 15px;\n font-weight: 600;\n text-align: center;\n }\n`;\n","export default __webpack_public_path__ + \"static/media/ic_nav_action_back.7b5c1176.svg\";","import { axiosPrivate } from 'configs/axios-instance.configs';\nimport QueryString from 'qs';\nimport { getError } from 'utils/service/service.utils';\nimport { getUserProperty } from './contracts/user.contract';\n\n/**\n *\n * @param {boolean} signal - Abortcontroller signal\n * @returns {promise}\n */\nexport const allNotification = async signal => {\n try {\n const { accessRoleApiUrlPrefix: prefix } = getUserProperty();\n\n const responseUnread = await axiosPrivate.get(`/v1/${prefix}/notifications?type=unread`, {\n signal,\n });\n const responseRead = await axiosPrivate.get(`/v1/${prefix}/notifications?type=read`, {\n signal,\n });\n const responseAll = await axiosPrivate.get(`/v1/${prefix}/notifications?type=all`, {\n signal,\n });\n\n const data = {\n unread: responseUnread.data.data,\n read: responseRead.data.data,\n all: responseAll.data.data,\n };\n\n return Promise.resolve(data);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n};\n\n/**\n *\n * @param {number[]} theIds - array of notification id\n * @returns {promise}\n */\nexport const markRead = async theIds => {\n try {\n const { accessRoleApiUrlPrefix: prefix } = getUserProperty();\n\n const data = {\n ids: theIds.map(any => any).toString(),\n };\n\n const response = await axiosPrivate.put(\n `/v1/${prefix}/notifications/mark_read`,\n QueryString.stringify(data),\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n },\n );\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n};\n\n/**\n *\n * @param {string} token\n * @returns promise\n */\nexport const updateFcmClient = async token => {\n try {\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n\n const { accessRoleApiUrlPrefix: prefix } = getUserProperty();\n\n const url = `v1/${prefix}/me/fcm_token`;\n const response = await axiosPrivate.put(\n url,\n QueryString.stringify({ fcm_token: token }),\n config,\n );\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n};\n","import Hashids from 'hashids';\n\nconst SALT = process.env.REACT_APP_HASH_KEY || 'skulid_salt';\nconst SALT_LENGTH = process.env.REACT_APP_HASH_LENGTH || 20;\nconst hashids = new Hashids(SALT, parseInt(SALT_LENGTH));\n\nexport const decodeHash = id => {\n return new Promise((resolve, reject) => {\n try {\n const v = hashids.decode(id);\n resolve(v);\n } catch (e) {\n reject(e);\n }\n });\n};\n\nexport const encodeHash = id => {\n return new Promise((resolve, reject) => {\n try {\n const v = hashids.encode(id);\n resolve(v);\n } catch (e) {\n reject(e);\n }\n });\n};\n\nexport const decodeHashNonPromise = (id, resultType = 'array') => {\n const v = hashids.decode(id);\n if (resultType === 'array') return v;\n if (resultType === 'str') return v.toString();\n if (resultType === 'int') return parseInt([v]);\n return [v];\n};\n\nexport const encodeHashNonPromise = id => {\n const v = hashids.encode(id);\n return v;\n};\n\n/**\n * @param {string} id\n */\nexport const decodeId = id => hashids.decode(id);\nexport const encodeId = (...number) => hashids.encode(...number);\n","export default __webpack_public_path__ + \"static/media/logo.435e260d.svg\";","import { createAction } from 'utils/reducer/reducer.utils';\nimport NOTIFICATION_ACTION_TYPES from './notification.types';\n\nexport const getNotificationsStart = () =>\n createAction(NOTIFICATION_ACTION_TYPES.GET_NOTIFICATIONS_START);\nexport const getNotificationsSuccess = ({ read, unread }) =>\n createAction(NOTIFICATION_ACTION_TYPES.GET_NOTIFICATIONS_SUCCESS, { read, unread });\nexport const getNotificationsFailed = error =>\n createAction(NOTIFICATION_ACTION_TYPES.GET_NOTIFICATIONS_FAILED, error);\nexport const resetNotifications = () => createAction(NOTIFICATION_ACTION_TYPES.RESET_NOTIFICATIONS);\n","// import CryptoJS from 'crypto-js';\n\nconst helperPhone = {\n groupPhone(phone) {\n if (!phone) return null;\n\n if (/^628/.test(phone)) {\n return phone.replace(/(\\d{2})(\\d{3})(\\d{4})(\\d{4})/, '+ ($1) $2-$3-$4');\n }\n\n if (/^08/.test(phone)) {\n return phone.replace(/(\\d{4})(\\d{4})(\\d{4})/, '$1-$2-$3');\n }\n\n return phone;\n },\n\n /**\n *\n * @param {number|string} phone\n * @param {'international' | 'national'} returnType\n * @returns {string}\n */\n convertPhone(phone, returnType) {\n const isLocalPhone = /^08/.test(phone);\n const isInternPhone = /^628/.test(phone);\n\n if (phone && returnType === 'international') {\n if (isLocalPhone) return phone.toString().replace(/^08/, '628');\n return phone.toString();\n }\n\n if (phone && returnType === 'national') {\n if (isInternPhone) return phone.toString().replace(/^628/, '08');\n }\n\n return phone?.toString() ?? '';\n },\n};\n\nconst TSEL_PREFIX = ['0852', '0853', '0811', '0812', '0813', '0821', '0822'];\nconst BYU_PREFIX = ['0851'];\n\n/**\n * @param {string|number} phone\n */\nexport const isTselNumber = phone => {\n const newPhone = helperPhone.convertPhone(phone, 'national');\n const prefixPhone = newPhone.slice(0, 4);\n\n return TSEL_PREFIX.includes(prefixPhone) || BYU_PREFIX.includes(prefixPhone);\n};\n\n// const encryptStringWithCBC256AndBase64 = (plainText, secretKey, iv) => {\n// const encrypted = CryptoJS.AES.encrypt(plainText, secretKey, {\n// iv: iv,\n// mode: CryptoJS.mode.CBC,\n// padding: CryptoJS.pad.Pkcs7,\n// keySize: 256 / 8,\n// });\n\n// const encryptedBase64 = encrypted.toString();\n// return encryptedBase64;\n// };\n\n// /**\n// * @param {string|number} phone\n// */\n// export const getEncryptPhone = phone => {\n// const secretKey = CryptoJS.enc.Utf8.parse(process.env.REACT_APP_BYU_SECRECT_KEY_AES);\n// const iv = CryptoJS.enc.Utf8.parse(process.env.REACT_APP_IV_BYU_SECRECT_KEY_AES);\n// const plaintext = CryptoJS.enc.Utf8.parse(phone);\n// const encryptedTextBase64 = encryptStringWithCBC256AndBase64(plaintext, secretKey, iv);\n// return encryptedTextBase64;\n// };\n\n/**\n * @param {string|number} phone\n */\nexport const getPulsaAndEvent = (phone, encrypted) => {\n const newPhone = helperPhone.convertPhone(phone, 'national');\n const prefixPhone = newPhone.slice(0, 4);\n\n if (BYU_PREFIX.includes(prefixPhone)) {\n const url =\n process.env.REACT_APP_ENVIRONMENT === 'production'\n ? `https://www.byu.id/v2/i-renew/input-nomor?mid=${encrypted}`\n : `https://camelot.byu.id/v2/i-renew/input-nomor?mid=${encrypted}`;\n return {\n url,\n eventName: 'web_pulsa_internet_byu',\n };\n }\n\n if (TSEL_PREFIX.includes(prefixPhone)) {\n return {\n url: 'https://www.telkomsel.com/shops/digital-product?utm_source=wec&utm_medium=skulbanner&utm_campaign=EPskul&utm_id=EPskul&embed=on',\n eventName: 'web_pulsa_internet_tsel',\n };\n }\n\n return {\n url: 'https://www.byu.id/',\n eventName: 'web_pulsa_internet_other',\n };\n};\n\nexport const isPhoneByU = phone => {\n const newPhone = helperPhone.convertPhone(phone, 'national');\n const prefixPhone = newPhone.slice(0, 4);\n\n if (BYU_PREFIX.includes(prefixPhone)) {\n return true;\n }\n return false;\n};\n\nexport default helperPhone;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { device } from 'utils/breakpoints';\n\nconst P = styled.p`\n font-size: 12px;\n color: #424d55;\n text-align: center;\n margin-bottom: 0;\n z-index: 1;\n\n @media ${device.tablet} {\n display: block;\n font-size: 13px;\n }\n`;\n\nexport default function Copyright({ ...rest }) {\n return (\n

\n Copyright {new Date().getFullYear()} PT Kuncie Pintar Nusantara All Rights Reserved\n

\n );\n}\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgBtnAppstore(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 175.5 54\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"a\",\n transform: \"translate(-0.5)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n width: 175.5,\n height: 54,\n style: {\n fill: \"none\"\n }\n }))), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"btn_appstore\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n style: {\n clipPath: \"url(#a)\"\n }\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M149,0H27.5a27,27,0,0,0,0,54H149a27,27,0,0,0,0-54Z\",\n transform: \"translate(-0.5)\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.63,26.74A6.81,6.81,0,0,1,46,21a7.28,7.28,0,0,0-5.66-3c-2.39-.24-4.7,1.39-5.91,1.39S31.29,18,29.28,18.08a7.57,7.57,0,0,0-6.35,3.77c-2.75,4.64-.7,11.45,1.93,15.19,1.32,1.84,2.85,3.88,4.87,3.81s2.7-1.22,5.07-1.22,3.05,1.22,5.1,1.18,3.45-1.85,4.71-3.7a14.58,14.58,0,0,0,2.16-4.28,6.62,6.62,0,0,1-4.14-6.08ZM38.75,15.55a6.63,6.63,0,0,0,1.58-4.83A7.07,7.07,0,0,0,35.78,13a6.3,6.3,0,0,0-1.62,4.66,5.9,5.9,0,0,0,4.59-2.12Zm32.37,25H68.37L66.86,36H61.62l-1.43,4.62H57.51L62.7,24.87h3.2ZM66.41,34,65,29.93c-.14-.42-.41-1.41-.81-3h0l-.77,3L62.08,34h4.33Zm18.06.75a6.34,6.34,0,0,1-1.61,4.57,4.72,4.72,0,0,1-3.56,1.49A3.58,3.58,0,0,1,76,39.23h0v6H73.37V33l-.1-3.73h2.27l.15,1.8h0a4.68,4.68,0,0,1,7.36-.45,6.14,6.14,0,0,1,1.38,4.18Zm-2.64.09a4.61,4.61,0,0,0-.76-2.73,2.78,2.78,0,0,0-4-.5,2.87,2.87,0,0,0-1,1.62A3.3,3.3,0,0,0,76,34v1.89A3,3,0,0,0,76.73,38a2.59,2.59,0,0,0,2,.85A2.66,2.66,0,0,0,81,37.77a4.77,4.77,0,0,0,.81-2.9Zm16-.09a6.34,6.34,0,0,1-1.61,4.57,4.7,4.7,0,0,1-3.56,1.49,3.58,3.58,0,0,1-3.3-1.61h-.05v6H86.74V33l-.1-3.73h2.27l.15,1.8h0A4.31,4.31,0,0,1,93,29a4.38,4.38,0,0,1,3.43,1.58,6.14,6.14,0,0,1,1.38,4.18Zm-2.63.09a4.61,4.61,0,0,0-.77-2.73,2.75,2.75,0,0,0-1-.84A2.8,2.8,0,0,0,92.19,31a2.7,2.7,0,0,0-1.73.62,2.87,2.87,0,0,0-1,1.62,3.3,3.3,0,0,0-.12.77v1.89A3,3,0,0,0,90.1,38a2.59,2.59,0,0,0,2,.85,2.66,2.66,0,0,0,2.27-1.09,4.77,4.77,0,0,0,.82-2.9Zm17.58,1.31a4.14,4.14,0,0,1-1.43,3.26,6.46,6.46,0,0,1-4.4,1.38,7.85,7.85,0,0,1-4.17-1l.59-2.1a7.24,7.24,0,0,0,3.74,1,3.57,3.57,0,0,0,2.27-.65,2.19,2.19,0,0,0,.62-.76,2.07,2.07,0,0,0,.19-1,2.18,2.18,0,0,0-.16-.88,2.23,2.23,0,0,0-.51-.74,6.2,6.2,0,0,0-2.22-1.21c-2.82-1-4.24-2.53-4.24-4.51a4,4,0,0,1,1.49-3.18,6,6,0,0,1,4-1.23,8.14,8.14,0,0,1,3.66.74l-.65,2.06a6.53,6.53,0,0,0-3.09-.73,3.15,3.15,0,0,0-2.12.66,1.83,1.83,0,0,0-.49.64,1.88,1.88,0,0,0-.16.78,1.83,1.83,0,0,0,.19.86,2,2,0,0,0,.55.68,8.33,8.33,0,0,0,2.35,1.21,8.13,8.13,0,0,1,3.06,1.91,4,4,0,0,1,1,2.73Zm8.54-5h-2.85v5.51c0,1.4.5,2.1,1.51,2.1a4.66,4.66,0,0,0,1.15-.12l.07,1.91a5.89,5.89,0,0,1-2,.28,3.11,3.11,0,0,1-2.39-.91,4.37,4.37,0,0,1-.87-3.06V31.14h-1.69V29.25h1.69V27.17l2.54-.74v2.82h2.85v1.89Zm12.84,3.69a6.13,6.13,0,0,1-1.53,4.29,5.54,5.54,0,0,1-4.26,1.72,5.26,5.26,0,0,1-4.07-1.65A5.91,5.91,0,0,1,122.79,35a6.09,6.09,0,0,1,1.56-4.31A5.5,5.5,0,0,1,128.57,29a5.37,5.37,0,0,1,4.12,1.66,5.86,5.86,0,0,1,1.48,4.15Zm-2.68.08a4.94,4.94,0,0,0-.69-2.69,2.55,2.55,0,0,0-2.32-1.36,2.62,2.62,0,0,0-1.37.35,2.56,2.56,0,0,0-1,1,5.14,5.14,0,0,0-.69,2.74,5.05,5.05,0,0,0,.69,2.69A2.63,2.63,0,0,0,128.46,39a2.59,2.59,0,0,0,2.32-1.38,5.07,5.07,0,0,0,.71-2.71Zm11.08-3.44a4.21,4.21,0,0,0-.81-.07,2.47,2.47,0,0,0-2.11,1,3.71,3.71,0,0,0-.65,2.24v6h-2.58l0-7.77-.1-3.57h2.25l.1,2.17h.07a3.86,3.86,0,0,1,1.29-1.79,3.12,3.12,0,0,1,1.87-.61,3.45,3.45,0,0,1,.64.05v2.4Zm11.55,2.91a5.37,5.37,0,0,1-.09,1.14h-7.75a3.25,3.25,0,0,0,1.12,2.57,3.91,3.91,0,0,0,2.54.79,8.68,8.68,0,0,0,3.13-.53l.41,1.75a10.06,10.06,0,0,1-3.9.7,5.75,5.75,0,0,1-4.25-1.55,5.66,5.66,0,0,1-1.54-4.17,6.35,6.35,0,0,1,1.44-4.26A5,5,0,0,1,149.29,29a4.35,4.35,0,0,1,3.81,1.82,6,6,0,0,1,1,3.56Zm-2.46-.65a3.35,3.35,0,0,0-.5-1.94,2.28,2.28,0,0,0-2.06-1.05,2.48,2.48,0,0,0-2.06,1,3.7,3.7,0,0,0-.76,2ZM65.55,15.2a3.85,3.85,0,0,1-1.28,3.14,5.18,5.18,0,0,1-3.37,1A14.48,14.48,0,0,1,59,19.22v-7.6a14.67,14.67,0,0,1,2.19-.16,4.86,4.86,0,0,1,3.14.88,3.54,3.54,0,0,1,1.18,2.86Zm-1.34,0a2.77,2.77,0,0,0-.73-2.07,2.91,2.91,0,0,0-2.15-.72,5.83,5.83,0,0,0-1,.07v5.78a8.07,8.07,0,0,0,.86,0,3,3,0,0,0,2.25-.79,3.09,3.09,0,0,0,.79-2.3Zm8.44,1.18a3,3,0,0,1-.75,2.11,2.71,2.71,0,0,1-2.09.85,2.61,2.61,0,0,1-2-.81,2.93,2.93,0,0,1-.74-2.06,3,3,0,0,1,.77-2.12,2.72,2.72,0,0,1,2.07-.82,2.64,2.64,0,0,1,2,.81,2.88,2.88,0,0,1,.73,2Zm-1.32,0A2.45,2.45,0,0,0,71,15.13a1.26,1.26,0,0,0-1.14-.67,1.29,1.29,0,0,0-1.16.67,2.47,2.47,0,0,0-.34,1.34,2.46,2.46,0,0,0,.34,1.33,1.3,1.3,0,0,0,1.15.66A1.25,1.25,0,0,0,71,17.78a2.38,2.38,0,0,0,.35-1.33Zm10.84-2.78-1.79,5.57H79.22l-.74-2.42A16.21,16.21,0,0,1,78,15h0a13.42,13.42,0,0,1-.46,1.79l-.79,2.42H75.57l-1.68-5.57H75.2l.64,2.65.39,1.79h0a18,18,0,0,1,.47-1.78l.81-2.66h1l.78,2.61.46,1.83h0q.14-.86.39-1.83l.69-2.61Zm6.58,5.57H87.48V16.05c0-1-.38-1.47-1.15-1.47a1.07,1.07,0,0,0-.5.1,1.25,1.25,0,0,0-.42.3,1.48,1.48,0,0,0-.35,1v3.3H83.79v-4l-.05-1.6h1.12l.06.87h0a1.84,1.84,0,0,1,.66-.67,2.14,2.14,0,0,1,1.15-.31,1.86,1.86,0,0,1,1.33.5,2.41,2.41,0,0,1,.66,1.85v3.33Zm3.5,0H91V11.12h1.27v8.12Zm7.48-2.83A3,3,0,0,1,99,18.52a2.69,2.69,0,0,1-2.09.85,2.57,2.57,0,0,1-2-.81,2.94,2.94,0,0,1-.75-2.06,3,3,0,0,1,.77-2.12A2.76,2.76,0,0,1,97,13.56a2.66,2.66,0,0,1,2,.81,2.93,2.93,0,0,1,.73,2Zm-1.32,0a2.54,2.54,0,0,0-.34-1.32,1.28,1.28,0,0,0-1.14-.67,1.3,1.3,0,0,0-1.17.67,2.79,2.79,0,0,0,0,2.67,1.3,1.3,0,0,0,1.16.66,1.25,1.25,0,0,0,1.13-.68,2.38,2.38,0,0,0,.36-1.33Zm7.46,2.79h-1.14l-.09-.64h0a2,2,0,0,1-1.67.77,1.76,1.76,0,0,1-1.3-.5,1.58,1.58,0,0,1-.45-1.14,1.72,1.72,0,0,1,.88-1.56,4.62,4.62,0,0,1,2.46-.52v-.11c0-.73-.39-1.1-1.18-1.1a2.73,2.73,0,0,0-1.49.41l-.26-.81a3.75,3.75,0,0,1,2-.48,2,2,0,0,1,2.24,2.31v2.05a9,9,0,0,0,.08,1.32Zm-1.32-1.91v-.86c-1.4,0-2.1.35-2.1,1.12a.83.83,0,0,0,.25.66.91.91,0,0,0,.62.21,1.31,1.31,0,0,0,.77-.25,1.06,1.06,0,0,0,.44-.66.75.75,0,0,0,0-.22Zm8.54,1.91H112l-.06-.89h0a1.9,1.9,0,0,1-1.83,1,2.22,2.22,0,0,1-1-.2,2.2,2.2,0,0,1-.76-.59,3,3,0,0,1-.68-2,3.16,3.16,0,0,1,.74-2.19,2.28,2.28,0,0,1,1.76-.78,1.75,1.75,0,0,1,1.61.75h0V11.12H113v6.62l0,1.5Zm-1.32-2.35V16a2.47,2.47,0,0,0,0-.39,1.37,1.37,0,0,0-.46-.75,1.23,1.23,0,0,0-.85-.31,1.33,1.33,0,0,0-1.12.55,2.33,2.33,0,0,0-.41,1.41,2.15,2.15,0,0,0,.39,1.34,1.41,1.41,0,0,0,.49.42,1.33,1.33,0,0,0,.62.13,1.22,1.22,0,0,0,.56-.11,1.28,1.28,0,0,0,.45-.35,1.51,1.51,0,0,0,.36-1Zm12.17-.48a3,3,0,0,1-.75,2.11,2.69,2.69,0,0,1-2.09.85,2.59,2.59,0,0,1-2-.81,2.94,2.94,0,0,1-.75-2.06,3,3,0,0,1,.77-2.12,2.74,2.74,0,0,1,2.08-.82,2.66,2.66,0,0,1,2,.81,2.92,2.92,0,0,1,.72,2Zm-1.31,0a2.54,2.54,0,0,0-.34-1.32,1.32,1.32,0,0,0-2.3,0,2.72,2.72,0,0,0,0,2.67,1.25,1.25,0,0,0,.48.49,1.2,1.2,0,0,0,.67.17,1.27,1.27,0,0,0,1.14-.68A2.46,2.46,0,0,0,122.63,16.45Zm8.14,2.79h-1.26V16.05c0-1-.39-1.47-1.16-1.47a1.14,1.14,0,0,0-.91.4,1.4,1.4,0,0,0-.36,1v3.3h-1.27v-4l0-1.6h1.11l.06.87h0a1.84,1.84,0,0,1,.66-.67,2.13,2.13,0,0,1,1.15-.31,1.89,1.89,0,0,1,1.33.5,2.41,2.41,0,0,1,.65,1.85v3.33Zm8.55-4.64h-1.4v2.71c0,.68.25,1,.74,1a2.76,2.76,0,0,0,.57-.06l0,.94a3,3,0,0,1-1,.14,1.52,1.52,0,0,1-1.17-.45,2.17,2.17,0,0,1-.42-1.5V14.6h-.84v-.93h.84v-1l1.24-.36v1.38h1.4v.93ZM146,19.24h-1.27V16.08c0-1-.39-1.5-1.15-1.5a1.21,1.21,0,0,0-1.21.87,1.42,1.42,0,0,0-.06.44v3.35h-1.27V11.12h1.27v3.36h0a1.93,1.93,0,0,1,1.72-.92,1.8,1.8,0,0,1,1.3.5,2.51,2.51,0,0,1,.65,1.87v3.31Zm6.93-3a3.11,3.11,0,0,1,0,.57h-3.81a1.59,1.59,0,0,0,.55,1.26,1.92,1.92,0,0,0,1.24.39,4.27,4.27,0,0,0,1.55-.27l.19.86a4.82,4.82,0,0,1-1.91.35,2.82,2.82,0,0,1-2.09-.77,2.76,2.76,0,0,1-.75-2,3.15,3.15,0,0,1,.7-2.1,2.47,2.47,0,0,1,2-.89,2.14,2.14,0,0,1,1.86.89,2.94,2.94,0,0,1,.51,1.75Zm-1.21-.32a1.62,1.62,0,0,0-.25-.95,1.11,1.11,0,0,0-1-.51,1.2,1.2,0,0,0-.56.12,1.27,1.27,0,0,0-.45.38,1.85,1.85,0,0,0-.37,1Z\",\n transform: \"translate(-0.5)\",\n style: {\n fill: \"#fff\"\n }\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgBtnAppstore);\nexport default __webpack_public_path__ + \"static/media/btn_appstore.68ae1b91.svg\";\nexport { ForwardRef as ReactComponent };","var _linearGradient, _linearGradient2, _linearGradient3, _linearGradient4, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgBtnGoogleplay(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 175.5 54\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"a\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 175.5,\n height: 54,\n style: {\n fill: \"none\"\n }\n })), _linearGradient || (_linearGradient = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"b\",\n x1: 31.85,\n y1: 15.52,\n x2: 12.03,\n y2: 35.81,\n gradientTransform: \"matrix(1, 0, 0, -1, 0, 56)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#00a0ff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.01,\n stopColor: \"#00a1ff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.26,\n stopColor: \"#00beff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.51,\n stopColor: \"#00d2ff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.76,\n stopColor: \"#00dfff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#00e3ff\"\n }))), _linearGradient2 || (_linearGradient2 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"c\",\n x1: 46.56,\n y1: 29,\n x2: 17.29,\n y2: 29,\n gradientTransform: \"matrix(1, 0, 0, -1, 0, 56)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ffe000\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.41,\n stopColor: \"#ffbd00\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.78,\n stopColor: \"orange\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#ff9c00\"\n }))), _linearGradient3 || (_linearGradient3 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"d\",\n x1: 25.63,\n y1: 21.92,\n x2: -1.24,\n y2: 49.45,\n gradientTransform: \"matrix(1, 0, 0, -1, 0, 56)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ff3a44\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#c31162\"\n }))), _linearGradient4 || (_linearGradient4 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"e\",\n x1: 4.94,\n y1: 14.88,\n x2: 16.94,\n y2: 27.17,\n gradientTransform: \"matrix(1, 0, 0, -1, 0, 56)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#32a071\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.07,\n stopColor: \"#2da771\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.48,\n stopColor: \"#15cf74\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.8,\n stopColor: \"#06e775\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#00f076\"\n })))), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"btn_googleplay\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n style: {\n clipPath: \"url(#a)\"\n }\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.5,0H27a27,27,0,0,0,0,54H148.5a27,27,0,0,0,0-54Z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63,15.47a3.21,3.21,0,0,1-.89,2.37,3.59,3.59,0,0,1-2.68,1.05A3.75,3.75,0,0,1,58,18.63a3.85,3.85,0,0,1-1.22-.8,3.49,3.49,0,0,1-.83-1.21,3.34,3.34,0,0,1-.27-1.43,3.5,3.5,0,0,1,1.1-2.64,3.68,3.68,0,0,1,2.66-1.07,4,4,0,0,1,1.49.3,2.94,2.94,0,0,1,1.14.79l-.63.63a2.51,2.51,0,0,0-2-.84,2.81,2.81,0,0,0-2,.78,2.72,2.72,0,0,0-.83,2,2.66,2.66,0,0,0,.83,2,2.94,2.94,0,0,0,4,0,2.17,2.17,0,0,0,.61-1.44H59.42v-.85h3.52a2.44,2.44,0,0,1,.05.53Zm5.58-3h-3.3v2.24h3v.85h-3v2.25h3.3v.87H64.34V11.65h4.23v.87Zm3.93,6.21h-.93V12.52h-2v-.87h5v.87h-2Zm5.64,0V11.65h.93v7.08Zm5.07,0h-.93V12.52h-2v-.87h5v.87h-2Zm11.47-.91a3.84,3.84,0,0,1-5.32,0,3.58,3.58,0,0,1-1.07-2.63A3.67,3.67,0,0,1,92,11.48a3.67,3.67,0,0,1,3.73,3.71,3.58,3.58,0,0,1-1.07,2.63Zm-4.63-.6a2.68,2.68,0,0,0,.9.6A2.82,2.82,0,0,0,92,18a2.68,2.68,0,0,0,2-.8,2.77,2.77,0,0,0,.81-2,2.73,2.73,0,0,0-.81-2,2.7,2.7,0,0,0-2-.8,2.71,2.71,0,0,0-2,.8,2.73,2.73,0,0,0-.81,2,2.73,2.73,0,0,0,.81,2Zm7,1.51V11.65H98.2l3.52,5.5h0l0-1.36V11.65h.93v7.08h-1L98,13h0l0,1.37v4.41Z\",\n style: {\n fill: \"#fff\",\n stroke: \"#fff\",\n strokeMiterlimit: 10,\n strokeWidth: \"0.18000000715255737px\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88.06,29.07a5,5,0,1,0,5.17,5A5,5,0,0,0,88.06,29.07Zm0,8.07a3,3,0,1,1,2.91-3A2.94,2.94,0,0,1,88.06,37.14ZM76.79,29.07a5,5,0,1,0,5.17,5A5,5,0,0,0,76.79,29.07Zm0,8.07a3,3,0,1,1,2.9-3A2.94,2.94,0,0,1,76.79,37.14Zm-13.4-6.53v2.13h5.22a4.38,4.38,0,0,1-1.19,2.69,5.46,5.46,0,0,1-4,1.56,5.67,5.67,0,1,1,0-11.34,5.58,5.58,0,0,1,3.93,1.52l1.54-1.51a7.73,7.73,0,0,0-5.47-2.15,8,8,0,0,0-8.11,7.81,8,8,0,0,0,8.11,7.8A7.41,7.41,0,0,0,69,36.93a7,7,0,0,0,1.89-5,7.46,7.46,0,0,0-.12-1.33Zm54.82,1.65a4.77,4.77,0,0,0-4.41-3.19,4.83,4.83,0,0,0-4.85,5,5,5,0,0,0,5.1,5,5.16,5.16,0,0,0,4.29-2.23l-1.75-1.14a3,3,0,0,1-2.54,1.39,2.63,2.63,0,0,1-2.49-1.52l6.88-2.78-.23-.57Zm-7,1.68a2.7,2.7,0,0,1,.16-1.09,2.67,2.67,0,0,1,.57-.94,2.88,2.88,0,0,1,.89-.65,2.75,2.75,0,0,1,1.07-.25,2,2,0,0,1,1.91,1.06Zm-5.6,4.87h2.27V24.05h-2.27Zm-3.7-8.62h-.08a3.6,3.6,0,0,0-2.7-1.12,5,5,0,0,0,0,10,3.57,3.57,0,0,0,2.7-1.14h.08v.72c0,1.92-1,2.95-2.75,2.95a2.84,2.84,0,0,1-2.59-1.79l-2,.8a4.91,4.91,0,0,0,4.56,3c2.65,0,4.89-1.52,4.89-5.23v-9h-2.14v.81Zm-2.59,7a3.05,3.05,0,0,1,0-6.09,2.85,2.85,0,0,1,2.75,3.06A2.84,2.84,0,0,1,99.3,37.14Zm29.5-13.09h-5.41V38.81h2.25V33.22h3.16a4.75,4.75,0,0,0,5-4.59A4.74,4.74,0,0,0,128.8,24.05Zm.06,7.11h-3.22V26.1h3.22a2.51,2.51,0,0,1,1.84,4.34,2.63,2.63,0,0,1-1.84.72ZM142.8,29a4.25,4.25,0,0,0-4,2.26l2,.82a2.45,2.45,0,0,1,4.43.81v.16a5,5,0,0,0-2.35-.57c-2.16,0-4.36,1.16-4.36,3.32,0,2,1.77,3.25,3.75,3.25a3.24,3.24,0,0,0,2.89-1.44h.07v1.14h2.18V33.12c0-2.62-2-4.08-4.6-4.08Zm-.27,8.09c-.74,0-1.76-.36-1.76-1.25,0-1.14,1.28-1.58,2.39-1.58a4,4,0,0,1,2.06.5,2.72,2.72,0,0,1-2.69,2.33Zm12.81-7.77-2.59,6.41h-.08L150,29.36h-2.43l4,9-2.3,5h2.35l6.21-13.93ZM135,38.81h2.26V24.05H135Z\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.25,12.28a2.29,2.29,0,0,0-.56,1.66V40.07a2.31,2.31,0,0,0,.56,1.66l.09.08,15-14.64v-.34l-15-14.64-.09.09Z\",\n style: {\n fill: \"url(#b)\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.32,32.05l-5-4.88v-.34l5-4.88.11.06,5.92,3.29c1.69.93,1.69,2.47,0,3.41L38.44,32l-.12.06Z\",\n style: {\n fill: \"url(#c)\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.44,32l-5.11-5L18.25,41.73a2,2,0,0,0,2.52.06L38.44,32Z\",\n style: {\n fill: \"url(#d)\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.44,22,20.77,12.2a2,2,0,0,0-2.52.08L33.33,27l5.11-5Z\",\n style: {\n fill: \"url(#e)\"\n }\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgBtnGoogleplay);\nexport default __webpack_public_path__ + \"static/media/btn_googleplay.1ec480ea.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgBtnHuawei(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 175.5 54\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"a\",\n transform: \"translate(-0.25)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.25,\n width: 175.5,\n height: 54,\n style: {\n fill: \"none\"\n }\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"b\",\n transform: \"translate(-0.25)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 18.25,\n y: 11.25,\n width: 31.5,\n height: 31.5,\n style: {\n fill: \"none\"\n }\n }))), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"btn_huawei\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n style: {\n clipPath: \"url(#a)\"\n }\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.75,0H27.25a27,27,0,0,0,0,54h121.5a27,27,0,0,0,0-54Z\",\n transform: \"translate(-0.25)\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M68.08,39.68H62.93l-1,3H58.82l5.31-14.28h2.73L72.2,42.63H69.07ZM63.72,37.3h3.57L65.5,32Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.43,37.42a6.34,6.34,0,0,1-1.12,3.93,3.56,3.56,0,0,1-3,1.47,3.3,3.3,0,0,1-2.6-1.12v5H72.88V32h2.63l.1,1a3.3,3.3,0,0,1,2.68-1.24,3.58,3.58,0,0,1,3,1.45,6.51,6.51,0,0,1,1.09,4Zm-2.83-.21a4.16,4.16,0,0,0-.53-2.28,1.71,1.71,0,0,0-1.52-.81,1.87,1.87,0,0,0-1.84,1v4.35a1.9,1.9,0,0,0,1.86,1C78.92,40.54,79.6,39.43,79.6,37.21Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M93.75,37.42a6.41,6.41,0,0,1-1.12,3.93,3.56,3.56,0,0,1-3,1.47A3.28,3.28,0,0,1,87,41.7v5H84.19V32h2.63l.1,1a3.32,3.32,0,0,1,2.69-1.24,3.6,3.6,0,0,1,3,1.45,6.58,6.58,0,0,1,1.09,4Zm-2.84-.21a4.16,4.16,0,0,0-.53-2.28,1.68,1.68,0,0,0-1.52-.81,1.85,1.85,0,0,0-1.83,1v4.35a1.88,1.88,0,0,0,1.85,1C90.23,40.54,90.91,39.43,90.91,37.21Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107,40.82a5.18,5.18,0,0,1-2.24,1.48,9.42,9.42,0,0,1-3.22.52,6.44,6.44,0,0,1-3.25-.8,5.5,5.5,0,0,1-2.16-2.36,8.28,8.28,0,0,1-.78-3.61v-1a8.74,8.74,0,0,1,.72-3.69A5.25,5.25,0,0,1,98.14,29a6.8,6.8,0,0,1,7.16.38A5.14,5.14,0,0,1,107,32.89h-2.86a2.84,2.84,0,0,0-.87-1.8,2.76,2.76,0,0,0-1.85-.56,2.6,2.6,0,0,0-2.28,1.12,6,6,0,0,0-.8,3.36v.91a5.61,5.61,0,0,0,.86,3.39,2.91,2.91,0,0,0,2.5,1.15,3.26,3.26,0,0,0,2.36-.71V37.29h-2.68V35.12H107Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.35,42.63a3,3,0,0,1-.29-1,3.4,3.4,0,0,1-2.67,1.15,3.78,3.78,0,0,1-2.59-.9,2.91,2.91,0,0,1-1-2.28A3,3,0,0,1,110,37.06a6.18,6.18,0,0,1,3.62-.92h1.3v-.6a1.71,1.71,0,0,0-.38-1.18,1.44,1.44,0,0,0-1.18-.44,1.69,1.69,0,0,0-1.13.34,1.16,1.16,0,0,0-.4.94H109a2.83,2.83,0,0,1,.57-1.7,3.68,3.68,0,0,1,1.61-1.23,5.8,5.8,0,0,1,2.33-.45,4.59,4.59,0,0,1,3.11,1,3.44,3.44,0,0,1,1.16,2.77v4.59a4.94,4.94,0,0,0,.42,2.29v.17Zm-2.35-2a2.51,2.51,0,0,0,1.16-.27,1.85,1.85,0,0,0,.78-.76V37.8h-1c-1.42,0-2.18.49-2.27,1.47v.17a1.16,1.16,0,0,0,.37.87A1.45,1.45,0,0,0,113,40.65Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M123,42.63h-2.85V27.56H123Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.29,42.63h-2.84V27.56h2.84Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.52,42.82a5.25,5.25,0,0,1-3.81-1.43,5.11,5.11,0,0,1-1.46-3.81V37.3a6.38,6.38,0,0,1,.62-2.85,4.45,4.45,0,0,1,1.74-1.94,4.89,4.89,0,0,1,2.59-.69,4.4,4.4,0,0,1,3.42,1.37,5.57,5.57,0,0,1,1.26,3.89v1.16h-6.76a2.63,2.63,0,0,0,.83,1.67,2.51,2.51,0,0,0,1.75.63,3.06,3.06,0,0,0,2.56-1.19l1.39,1.56a4.29,4.29,0,0,1-1.72,1.41A5.77,5.77,0,0,1,135.52,42.82Zm-.33-8.71a1.78,1.78,0,0,0-1.37.57,3,3,0,0,0-.67,1.63h3.94v-.23a2.06,2.06,0,0,0-.51-1.45A1.83,1.83,0,0,0,135.19,34.11Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M147.46,34.67a8.26,8.26,0,0,0-1-.08,2.09,2.09,0,0,0-2.11,1.09v7H141.5V32h2.67l.08,1.26a2.64,2.64,0,0,1,2.37-1.46,2.84,2.84,0,0,1,.88.13Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M153,38.61l2-6.59h3L153.7,44.27l-.23.56a3.23,3.23,0,0,1-3.14,2.08,4.22,4.22,0,0,1-1.25-.19V44.58h.43a2.32,2.32,0,0,0,1.19-.25,1.56,1.56,0,0,0,.63-.81l.33-.88L148,32H151Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.22,16.4H60v3.43H64.9v1.05H58.75V11.2h6.08v1.05H60v3.11h4.2Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.64,14.91,72,11.2h1.51L70.41,16l3.13,4.88H72L69.64,17.1l-2.39,3.78H65.74L68.88,16l-3.07-4.8h1.5Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.3,17.09v3.79H75V11.2h3.57a3.59,3.59,0,0,1,2.49.81,2.74,2.74,0,0,1,.9,2.14,2.73,2.73,0,0,1-.88,2.18,3.79,3.79,0,0,1-2.52.76Zm0-1.05h2.29a2.3,2.3,0,0,0,1.57-.48,1.78,1.78,0,0,0,.55-1.39,1.85,1.85,0,0,0-.55-1.39,2.15,2.15,0,0,0-1.5-.53H76.3Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.89,19.83h4.59v1.05H83.61V11.2h1.28Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.94,16.35a5.93,5.93,0,0,1-.48,2.48,3.56,3.56,0,0,1-1.35,1.62,3.74,3.74,0,0,1-5.45-1.6,5.74,5.74,0,0,1-.5-2.42v-.69a6,6,0,0,1,.48-2.47A3.78,3.78,0,0,1,92,11.63a4,4,0,0,1,4.09,0,3.5,3.5,0,0,1,1.36,1.63,6,6,0,0,1,.48,2.48Zm-1.27-.63A4.37,4.37,0,0,0,96,13.08a2.46,2.46,0,0,0-3.84,0,4.28,4.28,0,0,0-.71,2.56v.71a4.31,4.31,0,0,0,.7,2.62A2.47,2.47,0,0,0,96,19a4.36,4.36,0,0,0,.69-2.59Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.41,17h-2.28v3.92H99.85V11.2h3.21a3.78,3.78,0,0,1,2.51.74,2.68,2.68,0,0,1,.88,2.17,2.55,2.55,0,0,1-.49,1.57,2.88,2.88,0,0,1-1.36,1l2.28,4.11v.08h-1.37Zm-2.28-1h2a2.17,2.17,0,0,0,1.5-.5,1.63,1.63,0,0,0,.57-1.31,1.75,1.75,0,0,0-.54-1.38,2.22,2.22,0,0,0-1.54-.48h-2Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.72,16.4h-4.2v3.43h4.88v1.05h-6.15V11.2h6.08v1.05h-4.81v3.11h4.2Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.73,20.88h-1.27V11.2h1.27Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.56,12.25h-3.11v8.63h-1.27V12.25h-3.11V11.2h7.49Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.55,16.35a5.93,5.93,0,0,1-.48,2.48,3.63,3.63,0,0,1-1.35,1.62,4,4,0,0,1-4.08,0,3.71,3.71,0,0,1-1.37-1.6,5.74,5.74,0,0,1-.5-2.42v-.69a6,6,0,0,1,.48-2.47,3.78,3.78,0,0,1,1.37-1.64,3.94,3.94,0,0,1,4.08,0,3.52,3.52,0,0,1,1.37,1.63,6,6,0,0,1,.48,2.48Zm-1.27-.63a4.37,4.37,0,0,0-.69-2.64,2.46,2.46,0,0,0-3.84,0,4.28,4.28,0,0,0-.71,2.56v.71a4.31,4.31,0,0,0,.7,2.62,2.46,2.46,0,0,0,3.84.06,4.29,4.29,0,0,0,.7-2.59Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.9,20.88h-1.28l-4.87-7.46v7.46h-1.28V11.2h1.28l4.88,7.49V11.2h1.27Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"g\", {\n style: {\n clipPath: \"url(#b)\"\n }\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43,11.25H25A6.78,6.78,0,0,0,18.25,18V36A6.79,6.79,0,0,0,25,42.75H43A6.79,6.79,0,0,0,49.75,36V18A6.78,6.78,0,0,0,43,11.25Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#c8102e\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.93,13.31a.86.86,0,0,0-.63.26.9.9,0,0,0-.27.63.92.92,0,0,0,.9.9.89.89,0,0,0,.63-.27.87.87,0,0,0,.27-.63h0a.93.93,0,0,0-.27-.63.88.88,0,0,0-.63-.26Zm16,0a.9.9,0,0,0-.64.26.94.94,0,0,0-.26.63.9.9,0,0,0,.9.9.89.89,0,0,0,.63-.27.86.86,0,0,0,.26-.63h0a.88.88,0,0,0-.26-.63.89.89,0,0,0-.63-.26Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#c73148\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.89,14.08c-.31,0-.29.47-.29.47a8.92,8.92,0,0,0,8.31,4.86,9,9,0,0,0,8.33-4.88s.07-.61-.59-.4a8.9,8.9,0,0,1-15.49,0A.45.45,0,0,0,25.89,14.08ZM37.22,26.75l-.95,2.83-.93-2.83h-.9l1.46,4.12h.7l1-2.71.95,2.71h.71l1.46-4.12h-.89l-.92,2.83-1-2.83Zm-5.06,0-1.85,4.12h.87l.36-.8,0-.06h1.91l.38.86h.89l-1.83-4.1v0Zm13.38,0v4.12h.84V26.75Zm-24.07,0v4.12h.85V29.2h1.92v1.67h.85V26.75h-.85v1.66H22.32V26.75Zm7.56,0v2.36c0,.67-.34,1-1,1s-1-.37-1-1.06V26.75h-.85v2.36a1.65,1.65,0,0,0,1.8,1.83,1.67,1.67,0,0,0,1.81-1.86V26.75Zm12.33,0v4.12h3.17v-.75H42.2v-1h1.55v-.75H42.2V27.5h2.25v-.75Zm-8.84,1,.61,1.38,0,.1H31.88l0-.1Z\",\n transform: \"translate(-0.25)\",\n style: {\n fill: \"#fff\"\n }\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgBtnHuawei);\nexport default __webpack_public_path__ + \"static/media/btn_huawei.e3e3ede5.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport styled from 'styled-components';\nimport { device } from '../../../../utils/breakpoints';\nimport { ReactComponent as IOSSVG } from 'assets/images/btn_appstore.svg';\nimport { ReactComponent as AndroidSVG } from 'assets/images/btn_googleplay.svg';\nimport { ReactComponent as HuaweiSVG } from 'assets/images/btn_huawei.svg';\nimport { getUserDeviceInfo } from 'helpers/user/user-device.helper';\n\nconst Wrapper = styled.div`\n border: 1px solid #d7e1e7;\n border-radius: 10px;\n padding: 16px;\n margin: 0 auto;\n\n > p {\n font-size: 13px;\n margin-bottom: 16px;\n }\n\n @media ${device.tabletM} {\n display: grid;\n grid-template-columns: 45% 50%;\n gap: 32px;\n > p {\n margin-bottom: 0;\n }\n }\n\n @media ${device.laptop} {\n padding: 24px;\n grid-template-columns: 57% 40%;\n word-wrap: normal;\n > p {\n font-size: 16px;\n }\n }\n`;\n\nconst ButtonGroup = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 8px;\n\n > button {\n padding: 0;\n background: none;\n\n > div {\n display: flex;\n justify-content: center;\n align-items: center;\n > svg {\n width: 100%;\n }\n }\n }\n`;\n\nconst DownloadApp = () => {\n const {\n os: { name },\n } = getUserDeviceInfo();\n\n const onClickHandler = osParam => {\n if (osParam === 'android') {\n if (name === 'Android') {\n window.open('market://details?id=co.id.telkomsel', '_target');\n } else {\n window.open('https://play.google.com/store/apps/details?id=co.id.telkomsel', '_target');\n }\n }\n\n if (osParam === 'ios') {\n window.open('https://apps.apple.com/id/app/skul-id-school-platform/id6444022306', '_blank');\n }\n\n if (osParam === 'huawei') {\n window.open('https://appgallery.huawei.com/app/C104929199', '_blank');\n }\n };\n\n return (\n \n

\n Dapatkan aplikasi skul.id agar dapat melakukan presensi online, lihat jadwal mata pelajaran,\n dan fitur-fitur lainnya.\n

\n\n \n \n \n \n \n
\n );\n};\n\nexport default DownloadApp;\n","var _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLogo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 181 65.71\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"a\",\n x1: 63,\n y1: 30.13,\n x2: 181,\n y2: 30.13,\n gradientTransform: \"matrix(1, 0, 0, -1, 0, 68)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#e61a62\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#4cb8dd\"\n })))), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"logo\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.37,55.71l12.91,10v-10H49a2.39,2.39,0,0,0,2.39-2.38v-33A2.39,2.39,0,0,0,49,17.9H38.22V42.5a3.93,3.93,0,0,1-2.64,3.6L2.64,55.44a2.11,2.11,0,0,1-1.58-.13,2.42,2.42,0,0,0,1.33.4ZM3.31,17.9l-.67.19A3.93,3.93,0,0,0,0,21.69v-.3c0-1.32,1.07-3.49,2.39-3.49Z\",\n transform: \"translate(0 0)\",\n style: {\n fill: \"#ee3a71\",\n fillRule: \"evenodd\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.34.31,1.81,17.46A5.91,5.91,0,0,0,0,21.69V53.16c0,1.57.81,2.4,1.81,1.64L24.34,37.65a5.91,5.91,0,0,0,1.81-4.23V1.8C26.15.22,25.33-.45,24.34.31Z\",\n transform: \"translate(0 0)\",\n style: {\n fill: \"#4db9da\",\n fillRule: \"evenodd\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.92,39.54a7.71,7.71,0,0,1,1.81,5.21,7.83,7.83,0,0,1-.75,3.5,7.93,7.93,0,0,1-2.3,3,12.47,12.47,0,0,1-8.12,2.47A16.84,16.84,0,0,1,68.42,53a17.88,17.88,0,0,1-4-1.75,2.59,2.59,0,0,1-1.31-1.63,2.18,2.18,0,0,1,.45-1.91l.32-.41a3.42,3.42,0,0,1,4.33-.76c.36.18.75.37,1.18.56s.89.38,1.39.56a8.87,8.87,0,0,0,2.94.4,8.38,8.38,0,0,0,1.92-.22,4.46,4.46,0,0,0,1.33-.63,3.63,3.63,0,0,0,.81-.89A4.19,4.19,0,0,0,78,44.8a5.83,5.83,0,0,0-.09-1,1.47,1.47,0,0,0-.45-.88,4.42,4.42,0,0,0-.94-.65,11,11,0,0,0-2-.79h0l-2.14-.67A27.56,27.56,0,0,1,69,39.45a11.5,11.5,0,0,1-2.54-1.66A7.4,7.4,0,0,1,64,31.86a7.5,7.5,0,0,1,.86-3.64,7.05,7.05,0,0,1,2.29-2.69,11.2,11.2,0,0,1,3.42-1.61,14.13,14.13,0,0,1,3.69-.45,16.59,16.59,0,0,1,4.81.68,15.24,15.24,0,0,1,3.37,1.39,2.51,2.51,0,0,1,1.36,1.53,2.16,2.16,0,0,1-.3,1.88l-.27.4a3.26,3.26,0,0,1-1.92,1.3,3.61,3.61,0,0,1-2.41-.31,8.27,8.27,0,0,0-1.1-.47l-1.14-.43a7.58,7.58,0,0,0-2.41-.31,4.43,4.43,0,0,0-2.78.71l-.43.49a2.63,2.63,0,0,0-.32,1.53,6.86,6.86,0,0,0,0,.88,1.81,1.81,0,0,0,.16.51,1.39,1.39,0,0,0,.48.72,7,7,0,0,0,1,.68l.91.36c.32.12.67.23,1.07.36h0l2.62.85A12.29,12.29,0,0,1,82.92,39.54Zm22.66,9.7a2.28,2.28,0,0,1,.48,1.43v.18a2.31,2.31,0,0,1-.91,1.84,3.22,3.22,0,0,1-2.14.76h-.59a3.16,3.16,0,0,1-2.56-1.16L93.39,44v6.82a2.31,2.31,0,0,1-.91,1.84,3.28,3.28,0,0,1-2.19.76h-.54a3.3,3.3,0,0,1-2.19-.76,2.31,2.31,0,0,1-.91-1.84V24.64a2.24,2.24,0,0,1,.8-1.75,3.29,3.29,0,0,1,2-.81L90,22a3.19,3.19,0,0,1,2.36.67,2.3,2.3,0,0,1,1,1.88V37.25l5.89-5.92a3.22,3.22,0,0,1,2.35-.95h.48a3.38,3.38,0,0,1,2.2.76,2.36,2.36,0,0,1,.91,1.84v.18a2.11,2.11,0,0,1-.7,1.66l-5.77,5.79ZM109.81,51q-2.09-2.16-2.09-6.33v-12a2.36,2.36,0,0,1,.91-1.84,3.35,3.35,0,0,1,2.2-.75h.53a3.37,3.37,0,0,1,2.2.75,2.36,2.36,0,0,1,.91,1.84v12.3a2.47,2.47,0,0,0,.91,2.15,3.46,3.46,0,0,0,2.06.7,4.78,4.78,0,0,0,2.19-.5A2.19,2.19,0,0,0,120.89,46V32.75a2.3,2.3,0,0,1,.91-1.84,3.29,3.29,0,0,1,2.2-.76h.59a3.3,3.3,0,0,1,2.19.76,2.11,2.11,0,0,1,.85,1.84c0,2,0,3.75,0,5.25s0,2.79,0,3.88v4.51a8.82,8.82,0,0,1,0,1.61v2.69a2.31,2.31,0,0,1-.91,1.84,3.28,3.28,0,0,1-2.19.76h-.49a3.07,3.07,0,0,1-2.24-.85,2,2,0,0,1-.48.17l0,0a1.71,1.71,0,0,1-.27.13,12.22,12.22,0,0,1-4,.63Q112,53.47,109.81,51Zm24-29a3.35,3.35,0,0,1,2.2.74,2.29,2.29,0,0,1,.91,1.81V50.85a2.34,2.34,0,0,1-.91,1.84,3.31,3.31,0,0,1-2.2.76h-.53a3.3,3.3,0,0,1-2.19-.76,2.31,2.31,0,0,1-.91-1.84V24.59a2.24,2.24,0,0,1,.91-1.81,3.37,3.37,0,0,1,2.19-.74ZM144,53.59a3.86,3.86,0,0,1-2.73-1,3.07,3.07,0,0,1-.69-.88,2.72,2.72,0,0,1-.32-1.37,2.9,2.9,0,0,1,.29-1.35,3.53,3.53,0,0,1,.62-.85,4,4,0,0,1,2.83-1,4.17,4.17,0,0,1,2.78.9,2.91,2.91,0,0,1,1.12,2.33,2.79,2.79,0,0,1-1.17,2.34,5,5,0,0,1-1.07.59A4.33,4.33,0,0,1,144,53.59Zm9.84-23.21a3.35,3.35,0,0,1,2.19.76A2.33,2.33,0,0,1,157,33V50.85a2.31,2.31,0,0,1-.91,1.84,3.28,3.28,0,0,1-2.19.76h-.53a3.31,3.31,0,0,1-2.2-.76,2.31,2.31,0,0,1-.91-1.84V33a2.33,2.33,0,0,1,.91-1.84,3.36,3.36,0,0,1,2.2-.76Zm-.27-1.3a3.81,3.81,0,0,1-2.59-.89,2.94,2.94,0,0,1,0-4.49,4.18,4.18,0,0,1,5.18,0,2.94,2.94,0,0,1,0,4.49A3.86,3.86,0,0,1,153.58,29.08Zm7.21,8a10,10,0,0,1,2.14-3.78,9.28,9.28,0,0,1,3.8-2.38,13.94,13.94,0,0,1,4.49-.71,13,13,0,0,1,1.55.09c.5.06,1,.13,1.49.23V24.59a2.27,2.27,0,0,1,1-1.88,3,3,0,0,1,2.35-.67l.53,0a3.34,3.34,0,0,1,2,.81,2.27,2.27,0,0,1,.8,1.75V51a2.33,2.33,0,0,1-.91,1.84,3.34,3.34,0,0,1-2.2.76h-.48a2.84,2.84,0,0,1-1.25-.23,4.32,4.32,0,0,1-.56-.31,2.52,2.52,0,0,1-.43.1l-.64.14-.59.13-.27.07a13.65,13.65,0,0,1-2.46.23,14,14,0,0,1-4.49-.72,9.31,9.31,0,0,1-3.8-2.38,9.78,9.78,0,0,1-2.13-3.77,16.5,16.5,0,0,1-.64-4.9A16.92,16.92,0,0,1,160.79,37Zm7.32,10a3.12,3.12,0,0,0,.24.27,3.42,3.42,0,0,0,.53.36,3.25,3.25,0,0,0,.91.29,7,7,0,0,0,1.42.11,4.49,4.49,0,0,0,2.22-.38,4.73,4.73,0,0,0,.83-.6V36.8a3.58,3.58,0,0,0-3-1,4.3,4.3,0,0,0-2.32.43,6,6,0,0,0-.78.61,5,5,0,0,0-.82,1.66,10.88,10.88,0,0,0-.4,3.45,11,11,0,0,0,.4,3.44A5.25,5.25,0,0,0,168.11,47Z\",\n transform: \"translate(0 0)\",\n style: {\n fillRule: \"evenodd\",\n fill: \"url(#a)\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.435e260d.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { useHistory } from 'react-router';\nimport { ReactComponent as SkulSvg } from 'assets/logos/logo.svg';\nimport styled from 'styled-components';\nimport { device } from 'utils/breakpoints';\n\nconst Wrapper = styled.div`\n > svg,\n a > svg {\n width: 80px;\n cursor: pointer;\n }\n\n @media ${device.laptop} {\n > svg,\n a > svg {\n width: 110px;\n }\n }\n`;\n\nexport default function Logo() {\n const path = window.location.pathname;\n const history = useHistory();\n const onClickHandler = () => history.push('/');\n\n if (path === '/') {\n return (\n \n \n \n \n \n );\n }\n\n return (\n \n \n \n );\n}\n","export default __webpack_public_path__ + \"static/media/flowy_top.44c03c15.svg\";","import React from 'react';\nimport styled from 'styled-components';\nimport { device } from 'utils/breakpoints';\nimport Logo from 'stories/components/general/logo/logo.component';\nimport PropTypes from 'prop-types';\nimport studentImg from 'assets/images/banner_siswa.svg';\nimport parentImg from 'assets/images/banner_orangtua.svg';\nimport teacherImg from 'assets/images/banner_guru.svg';\nimport verifyImg from 'assets/images/img_password.svg';\nimport backIcon from 'assets/icons/ic_nav_action_back.svg';\nimport flowTop from 'assets/images/flowy_top.svg';\nimport { useHistory, useRouteMatch } from 'react-router-dom/cjs/react-router-dom.min';\n\nconst Header = styled.header`\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 32px;\n\n > img {\n width: 100px;\n }\n\n @media ${device.laptop} {\n margin-bottom: 80px;\n\n > img {\n display: none;\n }\n }\n`;\n\nconst IconLeftWrapper = styled.div`\n position: relative;\n top: 0;\n height: 100%;\n display: flex;\n align-items: center;\n left: 0;\n cursor: pointer;\n\n @media ${device.laptop} {\n left: 20px;\n }\n`;\n\nconst ImgFlowTop = styled.img`\n display: block !important;\n width: 200px !important;\n position: absolute;\n right: 0;\n top: 0;\n @media ${device.laptop} {\n max-width: ${device.laptop};\n width: 280px !important;\n }\n`;\n\n/**\n *\n * @param {object} p\n * @param {'student'|'teacher'|'parent'|'verify'} p.type\n * @returns\n */\n\nexport default function HeaderBar({ type }) {\n const history = useHistory();\n const { path } = useRouteMatch();\n\n if (type) {\n return (\n
\n \n\n {type === 'student' && {type}}\n {type === 'parent' && {type}}\n {type === 'teacher' && {type}}\n {type === 'verify' && {type}}\n
\n );\n }\n\n return (\n
\n {path !== '/' && (\n history.goBack()}>\n \"\"\n \n )}\n \n {path === '/' && }\n
\n );\n}\n\nHeaderBar.propTypes = {\n type: PropTypes.oneOf(['student', 'teacher', 'parent', 'verify', null]),\n};\n","import React from 'react';\nimport studentImg from 'assets/images/banner_siswa.svg';\nimport parentImg from 'assets/images/banner_orangtua.svg';\nimport teacherImg from 'assets/images/banner_guru.svg';\nimport verifyImg from 'assets/images/img_password.svg';\n\nimport styled from 'styled-components';\nimport { device } from 'utils/breakpoints';\nimport PropTypes from 'prop-types';\n\nconst Wrapper = styled.div`\n text-align: center;\n display: ${props => (props.isHideImageOnMobile ? 'none' : 'block')};\n\n > img {\n width: 200px;\n height: auto;\n\n @media ${device.tabletM} {\n width: 278px;\n }\n @media ${device.laptop} {\n width: 312px;\n }\n }\n\n @media ${device.laptop} {\n display: block;\n }\n`;\n\n/**\n *\n * @param {object} p\n * @param {boolean} p.isHideImageOnMobile\n * @param {'student'|'teacher'|'parent'|'verify'} p.type\n * @returns\n */\nconst RoleImage = ({ isHideImageOnMobile, type, ...rest }) => {\n return (\n \n {type === 'student' && {type}}\n {type === 'parent' && {type}}\n {type === 'teacher' && {type}}\n {type === 'verify' && {type}}\n \n );\n};\n\nRoleImage.propTypes = {\n isHideImageOnMobile: PropTypes.bool,\n type: PropTypes.oneOf(['student', 'teacher', 'parent', 'verify']).isRequired,\n};\n\nRoleImage.defaultProps = {\n type: 'student',\n isHideImageOnMobile: false,\n};\n\nexport default RoleImage;\n","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgYoutubeIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 21,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_9358_76652)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.32796 12.9824V7.51347C10.2694 8.42702 11.7731 9.30954 13.5515 10.261C12.0847 11.0745 10.2694 11.9872 8.32796 12.9824ZM19.1478 4.79353C18.8129 4.3523 18.2421 4.00884 17.6344 3.89513C15.8483 3.55595 4.70518 3.55498 2.92 3.89513C2.43269 3.98649 1.99876 4.2073 1.626 4.55037C0.055349 6.00818 0.547516 13.8259 0.926104 15.0923C1.0853 15.6404 1.29111 16.0357 1.55029 16.2952C1.88423 16.6383 2.34144 16.8745 2.8666 16.9804C4.33727 17.2846 11.9139 17.4547 17.6033 17.0261C18.1275 16.9348 18.5915 16.6909 18.9575 16.3333C20.4097 14.8813 20.3107 6.62453 19.1478 4.79353Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_9358_76652\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 19.4907,\n height: 19.4907,\n fill: \"white\",\n transform: \"translate(0.537109 0.717407)\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgYoutubeIcon);\nexport default __webpack_public_path__ + \"static/media/youtube-icon.114c96f6.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgInstagramIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 19,\n viewBox: \"0 0 18 19\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_9358_76657)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.25496 0.458998C3.79431 0.524903 2.52829 0.882014 1.50601 1.89998C0.480161 2.92329 0.127485 4.19432 0.0614165 5.63978C0.0203465 6.54197 -0.219809 13.3578 0.476591 15.1453C0.946214 16.3511 1.87115 17.2783 3.08807 17.7494C3.6559 17.9703 4.30411 18.1198 5.25496 18.1635C13.2055 18.5233 16.1527 18.3274 17.3955 15.1453C17.616 14.5788 17.7678 13.9312 17.8098 12.9827C18.1732 5.01174 17.7509 3.28398 16.3652 1.89998C15.2662 0.803638 13.9733 0.0573347 5.25496 0.458998ZM5.32815 16.5604C4.45765 16.5212 3.98536 16.3761 3.67019 16.2541C2.87737 15.946 2.28186 15.3529 1.97562 14.5647C1.44529 13.2066 1.62118 6.75587 1.6685 5.71207C1.71493 4.68965 1.92206 3.75522 2.64346 3.03384C3.53628 2.14322 4.68979 1.70674 12.5439 2.06121C13.5689 2.10752 14.5055 2.31422 15.2287 3.03384C16.1215 3.92444 16.5643 5.08683 16.2036 12.9108C16.1643 13.7792 16.0188 14.2504 15.8965 14.5647C15.0885 16.6354 13.2296 16.9229 5.32815 16.5604ZM12.6305 4.55674C12.6305 5.14633 13.11 5.62576 13.7019 5.62576C14.2939 5.62576 14.7742 5.14633 14.7742 4.55674C14.7742 3.96716 14.2939 3.48817 13.7019 3.48817C13.11 3.48817 12.6305 3.96716 12.6305 4.55674ZM4.35142 9.3108C4.35142 11.8366 6.40402 13.8843 8.93605 13.8843C11.4681 13.8843 13.5207 11.8366 13.5207 9.3108C13.5207 6.78503 11.4681 4.73856 8.93605 4.73856C6.40402 4.73856 4.35142 6.78503 4.35142 9.3108ZM5.96028 9.3108C5.96028 7.67208 7.29237 6.34253 8.93605 6.34253C10.5797 6.34253 11.9118 7.67208 11.9118 9.3108C11.9118 10.9504 10.5797 12.2804 8.93605 12.2804C7.29237 12.2804 5.96028 10.9504 5.96028 9.3108Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_9358_76657\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 17.9454,\n height: 17.9454,\n fill: \"white\",\n transform: \"translate(0 0.350098)\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInstagramIcon);\nexport default __webpack_public_path__ + \"static/media/instagram-icon.1b988308.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgFacebookIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.08075 4.83264H18.3075C18.7559 4.83264 19.1598 5.23652 19.1598 5.68487V18.9117C19.1598 19.36 18.7559 19.7639 18.3075 19.7639H5.08075C4.63239 19.7639 4.22852 19.36 4.22852 18.9117V5.68487C4.22852 5.23652 4.63239 4.83264 5.08075 4.83264ZM14.8319 13.2165H16.8943L16.984 11.2437H14.8319V9.78677C14.8319 9.22651 14.9438 8.9123 15.6612 8.9123H16.9166L16.9618 7.07369C16.9618 7.07369 16.4015 6.98402 15.5945 6.98402C13.6217 6.98402 12.7472 8.21717 12.7472 9.54V11.2437H11.2903V13.2165H12.7472V18.6864H14.8319V13.2165Z\",\n fill: \"white\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFacebookIcon);\nexport default __webpack_public_path__ + \"static/media/facebook-icon.a61bf07f.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/flowy_bottom.b4a7e4d9.svg\";","import React from 'react';\nimport styled from 'styled-components';\nimport { device, size } from 'utils/breakpoints';\nimport Copyright from 'stories/components/data-display/copyright/copyright.component';\nimport DownloadApp from 'stories/components/data-display/download-app/download-app.component';\nimport { Toaster } from 'react-hot-toast';\nimport HeaderBar from './component/header/header-bar.component';\nimport RoleImage from './component/role-image/role-image.component';\nimport { ReactComponent as YoutubeIC } from 'assets/icons/youtube-icon.svg';\nimport { ReactComponent as InstaIC } from 'assets/icons/instagram-icon.svg';\nimport { ReactComponent as FBIC } from 'assets/icons/facebook-icon.svg';\nimport flowBottom from 'assets/images/flowy_bottom.svg';\nimport { useRouteMatch } from 'react-router-dom/cjs/react-router-dom.min';\n\nconst Footer = styled.footer`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: 32px;\n\n margin: 0 auto;\n\n @media ${device.laptop} {\n max-width: ${size.laptop};\n }\n`;\n\nconst Main = styled.main`\n margin: 0 auto;\n margin-bottom: 56px;\n\n @media ${device.laptop} {\n max-width: ${size.laptop};\n margin-bottom: 85px;\n }\n`;\n\nconst Sosmed = styled.div`\n margin: 0 auto;\n margin-bottom: 56px;\n display: flex;\n justify-content: center;\n width: 100%;\n border-radius: 5px;\n background: #4db9da;\n padding: 10px;\n`;\n\nconst SosmedItem = styled.button`\n cursor: pointer;\n background: transparent;\n color: white;\n display: flex;\n align-items: center;\n`;\n\nconst ImgFlowBot = styled.img`\n display: block;\n width: 200px;\n position: absolute;\n left: 0;\n bottom: 0;\n z-index: 0;\n @media ${device.laptop} {\n max-width: ${size.laptop};\n width: 280px;\n }\n`;\n\nexport default function AuthLayout({ children, isUseToaster }) {\n const { path } = useRouteMatch();\n const onClickHandler = sosmed => {\n if (sosmed == 'youtube') {\n window.open('https://www.youtube.com/@skuldotid6051', '_blank');\n }\n if (sosmed == 'insta') {\n window.open('https://www.instagram.com/skul.id/', '_blank');\n }\n if (sosmed == 'fb') {\n window.open('https://www.facebook.com/skuldotid/', '_blank');\n }\n };\n\n return (\n <>\n {isUseToaster && }\n
\n \n\n
{children}
\n\n
\n \n \n onClickHandler('youtube')}>\n \n

Skuldotid

\n
\n onClickHandler('insta')}\n >\n \n

@skul.id

\n \n onClickHandler('fb')} style={{ marginTop: '2.6px' }}>\n \n

Skul.id

\n
\n
\n \n
\n {path === '/' && }\n
\n \n );\n}\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: 100%;\n gap: 32px;\n\n @media ${device.tabletM} {\n max-width: ${size.mobileL};\n margin: 0 auto;\n }\n\n @media ${device.laptop} {\n max-width: ${size.tablet};\n flex-direction: row;\n gap: 72px;\n }\n`;\n\nconst FormWrapper = styled.div`\n @media ${device.laptop} {\n max-width: ${size.mobileL};\n flex-grow: 1;\n }\n`;\n\nexport const AuthLayoutOne = ({ children, isUseToaster, roleImageType }) => {\n return (\n <>\n {isUseToaster && }\n
\n \n\n
\n \n \n {children}\n \n
\n\n
\n \n \n
\n
\n \n );\n};\n\nexport const AuthLayoutTwo = ({ children, isUseToaster, roleImageType, isHideRoleImage }) => {\n return (\n <>\n {isUseToaster && }\n
\n \n\n
\n \n {!isHideRoleImage && }\n {children}\n \n
\n\n
\n \n \n
\n
\n \n );\n};\n","export const selectSocmedSkip = state => state.preferences.socmedSkip;\nexport const selectPreferences = state => state.preferences;\nexport const selectPreferencesTour = state => state.preferences.tour;\n","import { getAccessRole, getAccessToken } from '../configs/cookies';\nimport jwt_decode from 'jwt-decode';\nimport { isEmpty, isNil } from 'lodash';\nimport { switchRole } from 'helpers/switchRole';\n\nexport const TOKEN_ERROR = {\n EMPTY_ACCESS_TOKEN: 'EMPTY_ACCESS_TOKEN',\n INVALID_ACCESS_TOKEN: 'INVALID_ACCESS_TOKEN',\n EXPIRED_ACCESS_TOKEN: 'EXPIRED_ACCESS_TOKEN',\n INVALID_SAVED_ROLE: 'INVALID_SAVED_ROLE',\n};\n\n/**\n * Used to check user role id saved in cookies is valid or not\n * @returns Promise\n */\nexport const getAccessRoleIdStatus = () => {\n const savedRoleId = getAccessRole();\n const role = switchRole(savedRoleId);\n if (isNil(role)) return TOKEN_ERROR.INVALID_SAVED_ROLE;\n return 'VALID';\n};\n\n/**\n * Used to check access token status\n * @returns Promise\n */\nexport const getAccessTokenStatus = () => {\n const accessToken = getAccessToken();\n if (isEmpty(accessToken)) return TOKEN_ERROR.EMPTY_ACCESS_TOKEN;\n\n const { exp } = jwt_decode(accessToken);\n if (isNil(exp)) return TOKEN_ERROR.INVALID_ACCESS_TOKEN;\n\n // comment cause bug on first mount\n const expiredAt = exp * 1000;\n const now = new Date().getTime();\n if (expiredAt <= now) return TOKEN_ERROR.EXPIRED_ACCESS_TOKEN;\n\n return 'VALID';\n};\n","import { axiosPrivate, axiosPublic } from 'configs/axios-instance.configs';\nimport { ERROR_CONSTANT } from 'constant/error-code.constant';\nimport { USER_ROLE } from 'helpers/switchRole';\nimport QueryString from 'qs';\nimport { getAccessRoleIdStatus, getAccessTokenStatus, TOKEN_ERROR } from 'utils/checkTokenExpire';\nimport { getError } from 'utils/service/service.utils';\nimport { refreshAuthToken } from './auth.services';\nimport { getUserProperty } from './contracts/user.contract';\n\nconst userService = {\n async checkUserSession() {\n const { accessRoleApiUrlPrefix: prefix, accessToken } = getUserProperty();\n\n try {\n if (getAccessRoleIdStatus() === TOKEN_ERROR.INVALID_SAVED_ROLE) {\n throw Error(TOKEN_ERROR.INVALID_SAVED_ROLE);\n }\n\n const ACStatus = getAccessTokenStatus();\n if (\n ACStatus === TOKEN_ERROR.INVALID_ACCESS_TOKEN ||\n ACStatus === TOKEN_ERROR.EMPTY_ACCESS_TOKEN\n ) {\n throw Error(ACStatus);\n }\n\n if (ACStatus === TOKEN_ERROR.EXPIRED_ACCESS_TOKEN) {\n const newAccessToken = await refreshAuthToken();\n const { data } = await axiosPublic.get(`/v1/${prefix}/me/profile`, {\n headers: {\n Authorization: `Bearer ${newAccessToken}`,\n },\n });\n return Promise.resolve({ user: data.data, userRole: data.data.user_type });\n } else {\n const { data } = await axiosPublic.get(`/v1/${prefix}/me/profile`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n return Promise.resolve({ user: data.data, userRole: data.data.user_type });\n }\n } catch (error) {\n // reject here will cause by invalid refresh token or access token, so we don't need to call logout\n return Promise.reject(getError(error));\n }\n },\n /**\n * Used to update single data\n * @param {object} param\n * @param {'phone' | 'email'} param.field\n * @param {string | number} param.value\n * @param {string} param.role student | teacher | parent\n * @param {string=} param.secret_token\n * @returns Promise\n */\n async updateSingleField({ field, value, role, secret_token }) {\n try {\n const prefix = USER_ROLE[role].apiUrlPrefix;\n const url = `v1/${prefix}/me/profile/update/patch`;\n\n const response = await axiosPrivate.put(\n url,\n QueryString.stringify({ field, value, secret_token }),\n {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n },\n );\n\n return Promise.resolve({ user: response.data.data, userRole: role });\n } catch (error) {\n let { status, message, code } = getError(error);\n\n if (status === 422) {\n return Promise.reject({ status, message: message[0], code });\n }\n\n if (code === ERROR_CONSTANT.EDIT_PHONE.INVALID_TOKEN) {\n return Promise.reject({\n title: message,\n message: 'Silahkan ulangi proses ubah no. handphone',\n status,\n code,\n });\n }\n\n return Promise.reject({ status, message, code });\n }\n },\n\n /**\n * Used to verify user data\n * @param {string} role student | teacher | parent\n * @param {string} field\n * @param {string} value\n * @param {boolean} isNotUseBearerToken\n * @returns Promise\n */\n async verifySingleData({ role, field, value, isNotUseBearerToken }) {\n try {\n let response = null;\n\n if (isNotUseBearerToken) {\n response = await axiosPublic.get('v1/validate', {\n params: { stakeholder: role, field, value },\n });\n } else {\n response = await axiosPrivate.get('v1/validate', {\n params: { stakeholder: role, field, value },\n });\n }\n\n return Promise.resolve(response);\n } catch (error) {\n const { status, code, message } = getError(error);\n if (status === 422 || code === 422) {\n return Promise.reject({ status, code, message: `${field} tidak tersedia` });\n }\n\n return Promise.reject({ status, code, message });\n }\n },\n\n /**\n * Used to get user interest\n * @param {object} param\n * @param {string} param.name\n * @param {number} param.page default 10\n * @param {number} param.per_page default 1\n * @param {boolean} param.isNotUseBearerToken\n * @returns Promise\n */\n async getInterest({ name = null, per_page = null, page = null, isNotUseBearerToken }) {\n try {\n let response = null;\n\n if (isNotUseBearerToken) {\n response = await axiosPublic.get('v1/interest_field_users', {\n params: { name, per_page, page },\n });\n } else {\n response = await axiosPrivate.get('v1/interest_field_users', {\n params: { name, per_page, page },\n });\n }\n\n return Promise.resolve(response);\n } catch (error) {\n const { status, code, message } = getError(error);\n return Promise.reject({ status, code, message });\n }\n },\n\n /**\n *\n * @param {object} param\n * @param {number[]} param.interest_fields\n * @param {string} param.role\n * @returns Promise\n */\n async updateInterests({ interest_fields, role }) {\n try {\n const prefix = USER_ROLE[role].apiUrlPrefix;\n const url = `v1/${prefix}/me/profile/interest_fields`;\n\n const { data } = await axiosPrivate.put(\n url,\n QueryString.stringify({\n interest_fields: interest_fields.join(','),\n }),\n {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n },\n );\n\n return Promise.resolve({ user: data.data, userRole: role });\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Used to get user profile\n * @returns Promise\n */\n async getProfile() {\n try {\n const { accessRoleApiUrlPrefix: prefix } = getUserProperty();\n\n const { data } = await axiosPrivate.get(`/v1/${prefix}/me/profile`);\n\n return Promise.resolve({ user: data.data, userRole: data.data.user_type });\n } catch (error) {\n const { status, code, message } = getError(error);\n return Promise.reject({ status, code, message });\n }\n },\n\n async getPhoneEncrypted() {\n try {\n const url = `v1/phone-enc`;\n const data = await axiosPrivate.get(url);\n return Promise.resolve({ encrypted: data.data.encrypted });\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Used to get address by lat lng\n * @param {object} param\n * @param {number} param.latitude\n * @param {number} param.longitude\n * @param {string} param.language\n * @returns Promise\n */\n async getAddressByGeocode({ latitude, longitude, language = 'id' }) {\n try {\n const { data } = await axiosPrivate.get(`/v1/geocode`, {\n params: { latitude, longitude, language },\n });\n\n return Promise.resolve(data);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n};\n/**\n * Used to reset user password\n * @param {string} phone\n * @param {string} password\n * @param {string} password_confirmation\n * @param {string} role student | teacher | parent\n * @param {string} secret_token secret_token got after successfully verified otp\n * @returns Promise\n */\nexport const resetPassword = async ({\n phone,\n password,\n password_confirmation,\n role,\n secret_token,\n}) => {\n try {\n // exclusive for this api, be changed student prefix from user to student\n const response = await axiosPublic.put(\n `v1/${role}/16-03-2023/password/reset`,\n QueryString.stringify({ phone, password, password_confirmation, secret_token }),\n {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n },\n );\n return Promise.resolve(response);\n } catch (error) {\n const { message, status, code } = getError(error);\n\n if (code === ERROR_CONSTANT.RESET_PASSWORD.INVALID_TOKEN) {\n return Promise.reject({\n title: message,\n message: 'Silahkan ulangi proses reset password',\n status,\n code,\n });\n }\n\n return Promise.reject({ message, status, code });\n }\n};\n\nexport const newResetPassword = async ({\n phone,\n password,\n password_confirmation,\n role,\n secret_token,\n}) => {\n try {\n // exclusive for this api, be changed student prefix from user to student\n const response = await axiosPublic.post(\n `v2/${role === 'student' ? 'user' : role}/password/reset`,\n QueryString.stringify({ phone, password, password_confirmation, secret_token }),\n {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n },\n );\n return Promise.resolve(response);\n } catch (error) {\n const { message, status, code } = getError(error);\n\n if (code === ERROR_CONSTANT.RESET_PASSWORD.INVALID_TOKEN) {\n return Promise.reject({\n title: message,\n message: 'Silahkan ulangi proses reset password',\n status,\n code,\n });\n }\n\n return Promise.reject({ message, status, code });\n }\n};\n\n/**\n * @param {number} class_id\n * @returns Promise\n */\nexport const updateClassStudent = async class_id => {\n try {\n const { data } = await axiosPrivate.put(\n `/v1/user/class_student`,\n QueryString.stringify({ class_id }),\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n },\n );\n\n return Promise.resolve({ user: data.data, userRole: data.data.user_type });\n } catch (error) {\n return Promise.reject(getError(error));\n }\n};\n\nexport const educationLevel = async () => {\n try {\n const { data } = await axiosPublic.get(`/v1/educational-level`, {\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n return Promise.resolve(data);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n};\n\nexport default userService;\n","import UAParser from '@amplitude/ua-parser-js';\n\nexport function getUserDeviceInfo() {\n let parser = new UAParser();\n let result = parser.getResult();\n return result;\n}\n","import { createAction } from 'utils/reducer/reducer.utils';\nimport CHAT_ACTION_TYPES from './chat.types';\n\nexport const getChatsStart = ({ isSearching }) =>\n createAction(CHAT_ACTION_TYPES.GET_CHATS_START, { isSearching });\n\n/**\n * @param {object} p\n * @param {object[]} p.chats\n * @param {boolean} p.isHasMore\n */\nexport const getChatsSuccess = ({ chats, isHasMore }) =>\n createAction(CHAT_ACTION_TYPES.GET_CHATS_SUCCESS, { chats, isHasMore });\nexport const getChatsFailed = error => createAction(CHAT_ACTION_TYPES.GET_CHATS_FAILED, error);\nexport const resetChats = () => createAction(CHAT_ACTION_TYPES.RESET_CHATS);\n","export const size = {\n mobileS: '320px',\n mobileM: '375px',\n mobileL: '425px',\n tabletM: '600px',\n tablet: '768px',\n laptop: '1024px',\n laptopL: '1440px',\n desktop: '2560px',\n};\n\nexport const device = {\n mobileS: `(min-width: ${size.mobileS})`,\n mobileM: `(min-width: ${size.mobileM})`,\n mobileL: `(min-width: ${size.mobileL})`,\n tabletM: `(min-width: ${size.tabletM})`,\n tablet: `(min-width: ${size.tablet})`,\n laptop: `(min-width: ${size.laptop})`,\n laptopL: `(min-width: ${size.laptopL})`,\n desktop: `(min-width: ${size.desktop})`,\n desktopL: `(min-width: ${size.desktop})`,\n};\n","export const NotFoundImage = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { lazy } from 'react';\nconst ChooseRole = lazy(() => import('views/_auth/choose-role/choose-role.page'));\nconst ResetPasswordRoutes = lazy(() => import('views/_auth/resetPassword/reset-password.routes'));\nconst RegisterRoutes = lazy(() => import('views/_auth/register/register.routes'));\nconst Login = lazy(() => import('views/_auth/login/login'));\n\nconst authRoutes = [\n { path: '/', exact: true, component: ChooseRole, pageTitle: 'Web App' },\n {\n path: '/:slug/register',\n component: RegisterRoutes,\n pageTitle: 'Registrasi Pengguna Baru Lewat Web App',\n },\n { path: '/:slug/login/', exact: true, component: Login, pageTitle: 'Web App' },\n {\n path: '/:slug/reset-password/',\n component: ResetPasswordRoutes,\n pageTitle: 'Reset Password Lewat Web App',\n },\n];\n\nexport default authRoutes;\n","import React from 'react';\n\nconst LinkAjaError = React.lazy(() => import('../views/linkaja/error/linkaja-error.page'));\nconst LinkAjaConnect = React.lazy(() => import('../views/linkaja/linkaja-connect.page'));\nconst LinkAjaIntegrationSuccess = React.lazy(() =>\n import('../views/linkaja/success_integration/linkaja-integration-success.page'),\n);\nconst LinkAjaTransactionSuccess = React.lazy(() =>\n import('../views/linkaja/success_transaction/linkaja-transaction-success.page'),\n);\nconst LinkAjaEndpointIntegration = React.lazy(() =>\n import('../views/linkaja/endpoint_integration/linkaja-endpoint-integration.page'),\n);\nconst LinkAjaEndpointTransaction = React.lazy(() =>\n import('../views/linkaja/endpoint_transaction/linkaja-endpoint-transaction.page'),\n);\n\nconst prefix = 'link-aja';\nconst linkAjaRoutes = [\n {\n path: `/${prefix}/error`,\n component: LinkAjaError,\n pageTitle: 'Link Aja error',\n closeEnv: ['production'],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/${prefix}/connect`,\n component: LinkAjaConnect,\n pageTitle: 'Link Aja Connect',\n closeEnv: ['production'],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/${prefix}/transaction/:token`,\n component: LinkAjaEndpointTransaction,\n pageTitle: 'Link Aja Transaction',\n closeEnv: ['production'],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/${prefix}/integration/:token`,\n component: LinkAjaEndpointIntegration,\n pageTitle: 'Link Aja Integration',\n closeEnv: ['production'],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/${prefix}/success_integration`,\n component: LinkAjaIntegrationSuccess,\n pageTitle: 'Link Aja Success Integration',\n closeEnv: ['production'],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/${prefix}/success_transaction`,\n component: LinkAjaTransactionSuccess,\n pageTitle: 'Link Aja Success Transaction',\n closeEnv: ['production'],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n];\nexport default linkAjaRoutes;\n","import { lazy } from 'react';\nconst EditSocialMedia = lazy(() => import('views/_parent/profileEdit/EditSocialMedia'));\nconst AttitudeNote = lazy(() => import('../views/_parent/attitudeNote/AttitudeNote'));\nconst NoteDetail = lazy(() => import('../views/_parent/attitudeNote/NoteDetail'));\nconst Beranda = lazy(() => import('../views/beranda/Beranda'));\nconst EditPermit = lazy(() => import('../views/_parent/permit-v2/edit-permit.page'));\nconst CreatePermit = lazy(() => import('views/_parent/permit-v2/create-permit.page'));\nconst ScheduleParent = lazy(() => import('../views/schedule/Schedule'));\nconst HistoryWaitingList = lazy(() => import('../views/history/HistoryWaitingList'));\nconst GradeRoutes = lazy(() => import('../views/_parent/grade/GradeRoutes'));\nconst ParentAttendanceSummaryDetails = lazy(() =>\n import('../views/history/ParentAttendanceSummaryDetails'),\n);\nconst HistoryParent = lazy(() => import('../views/history/HistoryParent'));\nconst HistoryPermitDetail = lazy(() =>\n import('../views/_parent/history-permit/history-permit-detail.page'),\n);\nconst HistoryAttendanceDetail = lazy(() => import('../views/history/HistoryAttendanceDetail'));\nconst EmailEdit = lazy(() => import('../views/email-edit/email-edit.page'));\nconst EditProfile = lazy(() => import('../views/_parent/profileEdit/EditProfile'));\nconst FormStudent = lazy(() => import('../views/_parent/connectStudent/pages/FormStudent'));\nconst ListStudent = lazy(() => import('../views/_parent/connectStudent/pages/ListStudent'));\nconst ConnectStudent = lazy(() => import('../views/_parent/connectStudent/pages/ConnectStudent'));\nconst Profile = lazy(() => import('../views/_parent/profile/profile-parent.page'));\nconst Notification = lazy(() => import('../views/notification/notification-parent.page'));\nconst Point = lazy(() => import('../views/_parent/point/Point'));\nconst UnderConstruction = lazy(() => import('../views/error/under-construction.page'));\nconst Eraport = lazy(() => import('../views/_parent/eraport/Eraport'));\nconst EraportDetail = lazy(() => import('../views/_parent/eraport/EraportDetail'));\nconst PhoneEdit = lazy(() => import('views/phone-edit/phone-edit.page'));\nconst OTPRequest = lazy(() => import('views/phone-edit/OTP-request.page'));\nconst OTPVerify = lazy(() => import('views/phone-edit/OTP-verify.page'));\nconst CompleteDataRoutes = lazy(() => import('views/complete-data/complete-data.routes'));\nconst MBGRoutes = lazy(() => import('views/mbg/mbg.routes'));\n\nconst prefix = '/parent';\nconst parentRoutes = [\n { path: `${prefix}/home`, exact: true, component: Beranda, pageTitle: 'Beranda' },\n { path: `${prefix}/koin`, exact: true, component: Point, pageTitle: 'Koin' },\n {\n path: `${prefix}/koin/gift`,\n exact: true,\n component: UnderConstruction,\n pageTitle: 'Hadiah Koin',\n },\n {\n path: `${prefix}/notifications`,\n exact: true,\n component: Notification,\n pageTitle: 'Notifikasi',\n },\n {\n path: `${prefix}/e-raport`,\n exact: true,\n component: Eraport,\n pageTitle: 'E-Rapor',\n },\n {\n path: `${prefix}/e-raport/:uuid`,\n exact: true,\n component: EraportDetail,\n pageTitle: 'E-Rapor detail',\n },\n { path: `${prefix}/profile`, exact: true, component: Profile, pageTitle: 'Profile Saya' },\n { path: `${prefix}/profile/edit`, exact: true, component: EditProfile, pageTitle: 'Edit Profil' },\n {\n path: `${prefix}/profile/edit/email`,\n exact: true,\n component: EmailEdit,\n pageTitle: 'Edit email',\n },\n {\n path: `${prefix}/profile/edit/phone`,\n exact: true,\n component: PhoneEdit,\n pageTitle: 'Edit phone',\n },\n {\n path: `${prefix}/profile/edit/phone/request-otp`,\n exact: true,\n component: OTPRequest,\n },\n {\n path: `${prefix}/profile/edit/phone/verify-otp`,\n exact: true,\n component: OTPVerify,\n },\n {\n path: `${prefix}/profile/edit/social-media`,\n exact: true,\n component: EditSocialMedia,\n pageTitle: 'Tambah akun social media',\n },\n { path: `${prefix}/profile/list/student`, exact: true, component: ListStudent },\n { path: `${prefix}/profile/add/student`, exact: true, component: FormStudent },\n { path: `${prefix}/profile/connect/student`, exact: true, component: ConnectStudent },\n\n { path: `${prefix}/history`, exact: true, component: HistoryParent },\n {\n path: `${prefix}/history/summary/`,\n exact: true,\n component: ParentAttendanceSummaryDetails,\n },\n { path: `${prefix}/history/attendance/:slug`, exact: true, component: HistoryAttendanceDetail },\n { path: `${prefix}/history/permit/:permitHashId`, exact: true, component: HistoryPermitDetail },\n { path: `${prefix}/waiting/attendance/:slug`, exact: true, component: HistoryWaitingList },\n { path: `${prefix}/grade`, exact: false, component: GradeRoutes },\n { path: `${prefix}/schedule`, exact: true, component: ScheduleParent },\n { path: `${prefix}/permit`, exact: true, component: CreatePermit },\n { path: `${prefix}/permit/edit/:permitHashId`, exact: true, component: EditPermit },\n {\n path: `${prefix}/attitude-note`,\n exact: true,\n component: AttitudeNote,\n pageTitle: 'Catatan Sikap Siswa',\n },\n {\n path: `${prefix}/attitude-note/:hashNoteId`,\n exact: true,\n component: NoteDetail,\n pageTitle: 'Catatan Sikap Siswa',\n },\n {\n path: `${prefix}/complete-data`,\n component: CompleteDataRoutes,\n pageTitle: 'Lengkapi Data',\n },\n {\n path: `${prefix}/mbg`,\n component: MBGRoutes,\n pageTitle: 'Menu MBG',\n },\n];\nexport default parentRoutes;\n","import { lazy } from 'react';\nconst Success = lazy(() => import('views/Success'));\nconst BlockList = lazy(() => import('views/messanger/BlockList'));\nconst GroupDirectChat = lazy(() => import('views/messangerGroup/GroupDirectChat'));\nconst VirtualClassDetail = lazy(() => import('views/virtualClass/VirtualClassDetail'));\nconst VirtualClassEdit = lazy(() => import('views/virtualClass/VirtualClassEdit'));\nconst VirtualClass = lazy(() => import('views/virtualClass/VirtualClass'));\nconst Setting = lazy(() => import('views/setting/Setting'));\nconst Faq = lazy(() => import('views/setting/pages/Faq'));\nconst Help = lazy(() => import('views/setting/pages/Bantuan'));\nconst Notification = lazy(() => import('views/setting/pages/Notification'));\nconst DeleteAccount = lazy(() => import('views/setting/pages/DeleteAccount'));\nconst Account = lazy(() => import('views/setting/pages/Account'));\nconst ChangePassword = lazy(() => import('views/setting/pages/ChangePassword'));\nconst Article = lazy(() => import('views/article/Article'));\nconst ArticleDetail = lazy(() => import('views/article/ArticleDetail'));\nconst ArticleSearch = lazy(() => import('views/article/ArticleSearch'));\nconst Madding = lazy(() => import('views/madding/madding.page'));\n\nconst LastChat = lazy(() => import('views/messanger-v2/last-chat.page'));\nconst DirectChat = lazy(() => import('views/messanger/DirectChat'));\nconst ContactList = lazy(() => import('views/messanger/ContactList'));\nconst ForwardMessage = lazy(() => import('views/messanger/ForwardMessage'));\nconst SearchContact = lazy(() => import('views/messanger/SearchContact'));\nconst SearchContactResult = lazy(() => import('views/messanger/SearchContactResult'));\n\nconst Book = lazy(() => import('views/_student/book/Book'));\nconst FavoriteBook = lazy(() => import('views/_student/book/FavoriteBook'));\nconst BookLists = lazy(() => import('views/_student/book/BookLists'));\nconst BookReader = lazy(() => import('views/_student/book/BookReader'));\nconst DownloadBook = lazy(() => import('views/_student/book/DownloadBook'));\n\nconst DuniaGamesDetails = lazy(() => import('views/duniaGames/DuniaGamesDetails'));\nconst DuniaGames = lazy(() => import('views/duniaGames/DuniaGames'));\nconst UserGames = lazy(() => import('views/duniaGames/UserGames'));\nconst UserGamesPost = lazy(() => import('views/duniaGames/UserGamesPost'));\nconst GamesLandingPage = lazy(() => import('views/duniaGames/UserGamesLandingPage'));\n\nconst Attendance = lazy(() => import('views/attendance/attendance.page'));\nconst AttendanceSuccess = lazy(() => import('views/attendance/attendance-success.page'));\nconst AttendanceOnLeave = lazy(() => import('views/attendance/attendance-on-leave.page'));\nconst AttendanceSubmit = lazy(() => import('views/attendance/attendance-submit.page'));\nconst AnnouncementParticipantsDetail = lazy(() =>\n import('views/homeroom/AnnouncementParticipantsDetail'),\n);\n\nconst ConnectSocialMedia = lazy(() =>\n import('views/connect-social-media/connect-social-media.page'),\n);\nconst CreateActivity = lazy(() => import('views/activities/create-activity.page'));\nconst UpdateActivity = lazy(() => import('views/activities/update-activity.page'));\n\nconst RestrictTsel = lazy(() => import('views/restrict-tsel/restrict-tsel.page'));\n\nconst ComingSoonPage = lazy(() => import('views/ComingSoon'));\nconst Beasiswaku = lazy(() => import('views/beasiswaku/Beasiswaku'));\nconst ZenGPT = lazy(() => import('views/zengpt'));\nconst ZenGPTChat = lazy(() => import('views/zengpt/components/Chat'));\n\nconst commonRoutes = [\n {\n path: `/restrict-tsel`,\n exact: true,\n component: RestrictTsel,\n pageTitle: 'Hubungkan Sekolah',\n closeEnv: [],\n allowedRole: ['student', 'teacher'],\n },\n {\n path: `/message`,\n exact: true,\n component: LastChat,\n pageTitle: 'Pesan Terakhir',\n closeEnv: [],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/message/search/contact`,\n exact: true,\n component: SearchContact,\n pageTitle: 'Cari Kontak',\n closeEnv: [],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/message/contact`,\n exact: true,\n component: SearchContactResult,\n pageTitle: 'Kontak Baru',\n closeEnv: [],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/message/new`,\n exact: true,\n component: ContactList,\n pageTitle: 'Pesan Baru',\n closeEnv: [],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/message/direct/:slug`,\n exact: true,\n component: DirectChat,\n pageTitle: 'Pesan',\n closeEnv: [],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/message/forward`,\n exact: true,\n component: ForwardMessage,\n pageTitle: 'Teruskan Pesan',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/message/block-list`,\n exact: true,\n component: BlockList,\n pageTitle: 'Kontak Diblokir',\n closeEnv: ['production'],\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/message-group/direct/:slug`,\n exact: true,\n component: GroupDirectChat,\n pageTitle: 'Pesan Grup',\n closeEnv: [],\n allowedRole: ['teacher', 'student', 'parent'],\n },\n\n {\n path: `/mading`,\n exact: true,\n component: Madding,\n pageTitle: 'Madding',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n\n {\n path: `/article`,\n exact: true,\n component: Article,\n pageTitle: 'Artikel',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/article/search`,\n exact: true,\n component: ArticleSearch,\n pageTitle: 'Cari Artikel',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/article/:slug`,\n exact: true,\n component: ArticleDetail,\n pageTitle: 'Lihat Artikel',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/setting`,\n exact: true,\n component: Setting,\n pageTitle: 'Pengaturan',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/setting/faq`,\n exact: true,\n component: Faq,\n pageTitle: 'FAQ',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/setting/help`,\n exact: true,\n component: Help,\n pageTitle: 'Bantuan',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/setting/account`,\n exact: true,\n component: Account,\n pageTitle: 'Akun Saya',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n\n {\n path: `/setting/account/delete`,\n exact: true,\n component: DeleteAccount,\n pageTitle: 'Hapus Akun',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/setting/notification`,\n exact: true,\n component: Notification,\n pageTitle: 'Notifikasi',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/setting/change-password`,\n exact: true,\n component: ChangePassword,\n pageTitle: 'Ganti Password',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n\n {\n path: `/ebook`,\n exact: true,\n component: Book,\n pageTitle: 'E-book',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/ebook/lists`,\n exact: true,\n component: BookLists,\n pageTitle: 'Daftar E-book',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/ebook/favorite`,\n exact: true,\n component: FavoriteBook,\n pageTitle: 'E-book Favorit',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/ebook/downloaded`,\n exact: true,\n component: DownloadBook,\n pageTitle: 'E-book Unduhan',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/ebook/read`,\n exact: true,\n component: BookReader,\n pageTitle: 'Baca E-book',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/voucher-games`,\n exact: true,\n component: DuniaGames,\n pageTitle: 'Katalog Voucher Games',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/voucher-games/:slug`,\n exact: true,\n component: DuniaGamesDetails,\n pageTitle: 'Voucher Games',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/user/games`,\n exact: true,\n component: UserGames,\n pageTitle: 'User Games',\n allowedRole: ['student'],\n },\n {\n path: `/user/games/:type`,\n exact: true,\n component: UserGames,\n pageTitle: 'User Games',\n allowedRole: ['student'],\n },\n {\n path: `/user/games-post`,\n exact: true,\n component: UserGamesPost,\n pageTitle: 'User Games',\n allowedRole: ['student'],\n },\n {\n path: `/user/games-post/:type`,\n exact: true,\n component: UserGamesPost,\n pageTitle: 'User Games',\n allowedRole: ['student'],\n },\n {\n path: `/favorite-games`,\n exact: true,\n component: GamesLandingPage,\n pageTitle: 'User Games',\n allowedRole: ['student'],\n },\n {\n path: `/attendance/`,\n exact: true,\n component: Attendance,\n pageTitle: 'Presensi',\n allowedRole: ['student', 'teacher'],\n },\n {\n path: `/attendance/success`,\n exact: true,\n component: AttendanceSuccess,\n pageTitle: 'Presensi',\n allowedRole: ['student', 'teacher'],\n },\n {\n path: `/attendance/on-leave`,\n exact: true,\n component: AttendanceOnLeave,\n pageTitle: 'Presensi',\n allowedRole: ['student', 'teacher'],\n },\n {\n path: `/attendance/submit`,\n exact: true,\n component: AttendanceSubmit,\n pageTitle: 'Presensi',\n allowedRole: ['student', 'teacher'],\n },\n {\n path: `/virtual-class`,\n exact: true,\n component: VirtualClass,\n closeEnv: [],\n pageTitle: 'Kelas Virtual',\n allowedRole: ['teacher', 'student', 'parent'],\n },\n {\n path: `/virtual-class/:uuid`,\n exact: true,\n component: VirtualClassDetail,\n closeEnv: [],\n pageTitle: 'Kelas Virtual',\n allowedRole: ['teacher', 'student', 'parent'],\n },\n {\n path: `/virtual-class/:uuid/edit`,\n exact: true,\n component: VirtualClassEdit,\n closeEnv: [],\n pageTitle: 'Kelas Virtual',\n allowedRole: ['teacher', 'student', 'parent'],\n },\n {\n path: `/success/`,\n exact: true,\n component: Success,\n pageTitle: 'Sukses',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/announcement/:uuid`,\n exact: true,\n component: AnnouncementParticipantsDetail,\n pageTitle: 'Pengumuman',\n allowedRole: ['student', 'parent'],\n },\n {\n path: '/connect-social-media',\n exact: true,\n component: ConnectSocialMedia,\n pageTitle: 'Hubungkan Sosial Media',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: '/activities/create',\n exact: true,\n component: CreateActivity,\n pageTitle: 'Buat Jadwal',\n allowedRole: ['student', 'teacher'],\n },\n {\n path: '/activities/update/:activityId',\n exact: true,\n component: UpdateActivity,\n pageTitle: 'Ubah Jadwal',\n allowedRole: ['student', 'teacher'],\n },\n {\n path: `/beasiswakuxschoters`,\n exact: true,\n component: Beasiswaku,\n pageTitle: 'Beasiswaku',\n allowedRole: ['student', 'parent', 'teacher'],\n },\n {\n path: `/games-corner`,\n exact: true,\n component: ComingSoonPage,\n pageTitle: 'Games Corner',\n allowedRole: ['student'],\n },\n {\n path: '/zengpt/',\n exact: true,\n component: ZenGPT,\n pageTitle: 'ZenGPT',\n allowedRole: ['student', 'teacher'],\n },\n {\n path: '/zengpt/chat/:uuid?',\n exact: true,\n component: ZenGPTChat,\n pageTitle: 'ZenGPT',\n allowedRole: ['student', 'teacher'],\n },\n];\nexport default commonRoutes;\n","import { lazy } from 'react';\nconst EditSocialMedia = lazy(() => import('views/_teacher/profileEdit/EditSocialMedia'));\nconst NoteDetail = lazy(() => import('../views/_teacher/attitudeNote/NoteDetail'));\nconst NoteEdit = lazy(() => import('../views/_teacher/attitudeNote/NoteEdit'));\nconst NoteCreate = lazy(() => import('../views/_teacher/attitudeNote/NoteCreate'));\nconst AttitudeNote = lazy(() => import('../views/_teacher/attitudeNote/AttitudeNote'));\nconst PermitBulkChooseStudent = lazy(() =>\n import('../views/_teacher/permitBulk/PermitBulkChooseStudent'),\n);\nconst PermitBulkChooseClass = lazy(() =>\n import('../views/_teacher/permitBulk/PermitBulkChooseClass'),\n);\nconst PermitBulkClassStudent = lazy(() =>\n import('../views/_teacher/permitBulk/PermitBulkClassStudent'),\n);\nconst PermitBulk = lazy(() => import('../views/_teacher/permitBulk/PermitBulk'));\nconst Notification = lazy(() => import('../views/notification/notification-teacher.page'));\nconst TeacherAttendanceSummary = lazy(() =>\n import('../views/history/TeacherAttendanceSummaryDetails'),\n);\nconst GradeDetail = lazy(() => import('../views/_teacher/grade/GradeDetails'));\nconst Grade = lazy(() => import('../views/_teacher/grade/Grade'));\nconst GradeChooseClass = lazy(() => import('../views/_teacher/grade/GradeChooseClass'));\nconst GradeChooseClassInput = lazy(() => import('../views/_teacher/grade/GradeChooseClassInput'));\nconst GradeChooseClassImportTugasku = lazy(() =>\n import('../views/_teacher/grade/GradeChooseClassImportTugasku'),\n);\nconst GradeChooseStudent = lazy(() => import('../views/_teacher/grade/GradeChooseStudent'));\nconst GradeChooseComponents = lazy(() => import('../views/_teacher/grade/GradeChooseComponents'));\nconst GradeChooseStudentDetailList = lazy(() =>\n import('../views/_teacher/grade/GradeChooseStudentDetailList'),\n);\nconst GradeChooseStudentDetailBy = lazy(() =>\n import('../views/_teacher/grade/GradeChooseStudentDetailBy'),\n);\nconst GradeChooseStudentDetailProfile = lazy(() =>\n import('../views/_teacher/grade/GradeChooseStudentDetailProfile'),\n);\nconst ClassStudent = lazy(() => import('../views/_teacher/clockInStudent/ClassStudent'));\nconst ChooseStudent = lazy(() => import('../views/_teacher/clockInStudent/ChooseStudent'));\nconst ChooseClass = lazy(() => import('../views/_teacher/clockInStudent/ChooseClass'));\nconst ClockInStudent = lazy(() => import('../views/_teacher/clockInStudent/ClockInStudent'));\nconst ClockInClass = lazy(() => import('../views/_teacher/clockInStudent/ClockInClass'));\nconst HistoryClassroomDetail = lazy(() => import('../views/history/HistoryClassroomDetail'));\nconst HistoryPermitDetail = lazy(() =>\n import('../views/_teacher/history-permit/history-permit-detail.page'),\n);\nconst HistoryAttendanceDetail = lazy(() => import('../views/history/HistoryAttendanceDetail'));\nconst HistoryTeacher = lazy(() => import('../views/history/HistoryTeacher'));\nconst Beranda = lazy(() => import('../views/beranda/Beranda'));\nconst PointV2 = lazy(() => import('../views/coin/Point-v2'));\nconst Reward = lazy(() => import('../views/reward-koin/RewardList'));\nconst RewardDetail = lazy(() => import('../views/reward-koin/DetailReward'));\nconst ClaimList = lazy(() => import('../views/reward-koin/RewardClaimList'));\nconst TugasKu = lazy(() => import('../views/_teacher/tugasku/TugasKu'));\nconst TugasKuForm = lazy(() => import('../views/_teacher/tugasku/TugasKuForm'));\nconst TugasKuDetail = lazy(() => import('../views/_teacher/tugasku/TugasKuDetail'));\nconst TugasKuInfoClass = lazy(() => import('../views/_teacher/tugasku/TugasKuInfoClass'));\nconst TugasKuInfoHistory = lazy(() => import('../views/_teacher/tugasku/TugasKuInfoHistory'));\nconst TugasKuArchives = lazy(() => import('../views/_teacher/tugasku/TugasKuArchives'));\nconst TugasKuTopics = lazy(() => import('../views/_teacher/tugasku/TugasKuTopics'));\nconst TugasKuMembers = lazy(() => import('../views/_teacher/tugasku/TugasKuMembers'));\nconst TugasKuTasksForm = lazy(() => import('../views/_teacher/tugasku/TugasKuTasksForm'));\nconst TugasKuModulesForm = lazy(() => import('../views/_teacher/tugasku/TugasKuModulesForm'));\nconst TugasKuQuizzesForm = lazy(() => import('../views/_teacher/tugasku/TugasKuQuizzesForm'));\nconst TugasKuAnnouncesForm = lazy(() => import('../views/_teacher/tugasku/TugasKuAnnouncesForm'));\nconst TugasKuAnnouncesDetail = lazy(() =>\n import('../views/_teacher/tugasku/TugasKuAnnouncesDetail'),\n);\nconst TugasKuTasksDetail = lazy(() => import('../views/_teacher/tugasku/TugasKuTasksDetail'));\nconst TugasKuModulesDetail = lazy(() => import('../views/_teacher/tugasku/TugasKuModulesDetail'));\nconst TugasKuQuizzesDetail = lazy(() => import('../views/_teacher/tugasku/TugasKuQuizzesDetail'));\nconst TugasKuQuizzesScore = lazy(() => import('../views/_teacher/tugasku/TugasKuQuizzesScore'));\nconst TugasKuTasksScore = lazy(() => import('../views/_teacher/tugasku/TugasKuTasksScore'));\nconst TugasKuTasksScoreDetail = lazy(() =>\n import('../views/_teacher/tugasku/TugasKuTasksScoreDetail'),\n);\nconst TugasKuQuizzesScoreDetail = lazy(() =>\n import('../views/_teacher/tugasku/TugasKuQuizzesScoreDetail'),\n);\nconst TugasKuStudentScore = lazy(() => import('../views/_teacher/tugasku/TugasKuStudentScore'));\nconst TugasKuTasksDetailFile = lazy(() =>\n import('../views/_teacher/tugasku/TugasKuTasksDetailFile'),\n);\nconst TugasKuModulesDetailFile = lazy(() =>\n import('../views/_teacher/tugasku/TugasKuModulesDetailFile'),\n);\nconst CreatePermit = lazy(() => import('../views/_teacher/permit-v2/create-permit.page'));\nconst EditPermit = lazy(() => import('../views/_teacher/permit-v2/edit-permit.page'));\nconst ScheduleTeacher = lazy(() => import('../views/schedule/Schedule'));\nconst SubjectEdit = lazy(() => import('../views/_teacher/subject-edit/subject-edit.page'));\nconst SchoolEmpty = lazy(() => import('../views/empty-school/empty-school.page'));\nconst SchoolSearch = lazy(() => import('../views/search-school/search-school.page'));\nconst SchoolConnect = lazy(() => import('../views/_teacher/connectSchool/connect-school.page'));\nconst EmailEdit = lazy(() => import('../views/email-edit/email-edit.page'));\n\nconst EditProfile = lazy(() => import('../views/_teacher/profileEdit/EditProfile'));\nconst SchoolMine = lazy(() => import('../views/_teacher/connectSchool/school-mine.page'));\nconst Profile = lazy(() => import('../views/_teacher/profile/profile-teacher.page'));\nconst FavoriteEdit = lazy(() => import('../views/favorite-edit/favorite-edit.page'));\nconst UnderConstruction = lazy(() => import('../views/error/under-construction.page'));\nconst Homeroom = lazy(() => import('../views/homeroom/Homeroom'));\nconst HomeroomClassList = lazy(() => import('views/homeroom/HomeroomClassList'));\nconst HomeroomAttendanceHistory = lazy(() => import('../views/homeroom/HomeroomAttendanceHistory'));\nconst HomeroomAttendanceDetail = lazy(() => import('../views/homeroom/HomeroomAttendanceDetail'));\nconst HomeroomPermitHistory = lazy(() => import('../views/homeroom/HomeroomPermitHistory'));\nconst HomeroomPermitDetail = lazy(() => import('../views/homeroom/HomeroomPermitDetail'));\nconst HomeroomRegister = lazy(() => import('../views/homeroom/HomeroomRegister'));\nconst HomeroomRequest = lazy(() => import('../views/homeroom/HomeroomRequest'));\nconst HomeroomStudentList = lazy(() => import('../views/homeroom/HomeroomStudentList'));\nconst HomeroomStudentDetail = lazy(() => import('../views/homeroom/HomeroomStudentDetail'));\nconst HomeroomHistory = lazy(() => import('../views/homeroom/HomeroomHistory'));\nconst Announcement = lazy(() => import('../views/homeroom/Announcement'));\nconst AnnouncementEdit = lazy(() => import('../views/homeroom/AnnouncementEdit'));\nconst AnnouncementDetail = lazy(() => import('../views/homeroom/AnnouncementDetail'));\nconst HomeroomAttitudeNote = lazy(() => import('../views/homeroom/HomeroomAttitudeNote'));\nconst HomeroomAttitudeNoteStudent = lazy(() =>\n import('../views/homeroom/HomeroomAttitudeNoteStudent'),\n);\nconst HomeroomAttitudeNoteStudentEdit = lazy(() =>\n import('../views/homeroom/HomeroomAttitudeNoteStudentEdit'),\n);\nconst HomeroomAttitudeNoteStudentDetail = lazy(() =>\n import('../views/homeroom/HomeroomAttitudeNoteStudentDetail'),\n);\nconst Eraport = lazy(() => import('../views/_teacher/eraport/Eraport'));\nconst EraportDetail = lazy(() => import('../views/_teacher/eraport/EraportDetail'));\nconst EraportList = lazy(() => import('../views/_teacher/eraport/EraportList'));\nconst PhoneEdit = lazy(() => import('views/phone-edit/phone-edit.page'));\nconst OTPRequest = lazy(() => import('views/phone-edit/OTP-request.page'));\nconst OTPVerify = lazy(() => import('views/phone-edit/OTP-verify.page'));\nconst CompleteDataRoutes = lazy(() => import('views/complete-data/complete-data.routes'));\nconst MBGRoutes = lazy(() => import('views/mbg/mbg.routes'));\nconst Module = lazy(() => import('views/_teacher/module/ModuleList'));\nconst ModuleAdd = lazy(() => import('views/_teacher/module/ModuleAdd'));\nconst ModuleDetail = lazy(() => import('views/_teacher/module/ModuleDetail'));\n\nconst StudentAttendanceRouter = lazy(() =>\n import('views/_teacher/student-attendance/attendance.routes'),\n);\n\nconst ModuleTugasku = lazy(() => import('views/_teacher/tugasku/Modul'));\nconst QuizTugasku = lazy(() => import('views/_teacher/tugasku/Modul/Quiz'));\n\nconst prefix = '/teacher';\nconst teacherRoutes = [\n {\n path: `${prefix}/student-attendance`,\n exact: false,\n component: StudentAttendanceRouter,\n pageTitle: 'Beranda',\n },\n { path: `${prefix}/home`, exact: true, component: Beranda, pageTitle: 'Beranda' },\n {\n path: `${prefix}/koin`,\n exact: true,\n component: PointV2,\n pageTitle: 'Koin',\n },\n {\n path: `${prefix}/koin/gift`,\n exact: true,\n component: Reward,\n pageTitle: 'Hadiah Koin',\n },\n {\n path: `${prefix}/koin/gift/:uuid`,\n exact: true,\n component: RewardDetail,\n pageTitle: 'Hadiah Detail',\n },\n {\n path: `${prefix}/claim/list`,\n exact: true,\n component: ClaimList,\n pageTitle: 'Klaim Hadiah',\n },\n {\n path: `${prefix}/e-raport`,\n exact: true,\n component: Eraport,\n pageTitle: 'E-Rapor',\n },\n {\n path: `${prefix}/e-raport/list`,\n exact: true,\n component: EraportList,\n pageTitle: 'E-Rapor detail',\n },\n {\n path: `${prefix}/e-raport/detail`,\n exact: true,\n component: EraportDetail,\n pageTitle: 'E-Rapor detail',\n },\n {\n path: `${prefix}/e-raport/:uuid`,\n exact: true,\n component: EraportDetail,\n pageTitle: 'E-Rapor detail',\n },\n {\n path: `${prefix}/tugasku`,\n exact: true,\n component: TugasKu,\n pageTitle: 'Tugasku',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/new`,\n exact: true,\n component: TugasKuForm,\n pageTitle: 'Buat Tugasku Kelas',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/archives`,\n exact: true,\n component: TugasKuArchives,\n pageTitle: 'Tugasku Arsip',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash`,\n exact: true,\n component: TugasKuDetail,\n pageTitle: 'Tugasku Detail',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/notif`,\n exact: true,\n component: TugasKuInfoHistory,\n pageTitle: 'Tugasku Information History',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/info`,\n exact: true,\n component: TugasKuInfoClass,\n pageTitle: 'Tugasku Info Kelas',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/edit`,\n exact: true,\n component: TugasKuForm,\n pageTitle: 'Edit Tugasku Kelas',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/topics`,\n exact: true,\n component: TugasKuTopics,\n pageTitle: 'Tugasku Kelas Topik',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/members`,\n exact: true,\n component: TugasKuMembers,\n pageTitle: 'Tugasku Tambah Anggota',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/tasks`,\n exact: true,\n component: TugasKuTasksForm,\n pageTitle: 'Tugasku Tambah Tugas',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/tasks/:hashtask`,\n exact: true,\n component: TugasKuTasksDetail,\n pageTitle: 'Tugasku Detail Tugas',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/tasks/:hashtask/edit`,\n exact: true,\n component: TugasKuTasksForm,\n pageTitle: 'Tugasku Edit Tugas',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/modules`,\n exact: true,\n component: TugasKuModulesForm,\n pageTitle: 'Tugasku Tambah Materi',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/modules/:hashmodule`,\n exact: true,\n component: TugasKuModulesDetail,\n pageTitle: 'Tugasku Detail Materi',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/modules/:hashmodule/edit`,\n exact: true,\n component: TugasKuModulesForm,\n pageTitle: 'Tugasku Edit Materi',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/quizzes`,\n exact: true,\n component: TugasKuQuizzesForm,\n pageTitle: 'Tugasku Tambah Quiz',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/quizzes/:hashquiz`,\n exact: true,\n component: TugasKuQuizzesDetail,\n pageTitle: 'Tugasku Detail Quiz',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/quizzes/:hashquiz/students/:hashstudent`,\n exact: true,\n component: TugasKuQuizzesDetail,\n pageTitle: 'Tugasku Detail Quiz',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/quizzes/:hashquiz/edit`,\n exact: true,\n component: TugasKuQuizzesForm,\n pageTitle: 'Tugasku Edit Quiz',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/announces`,\n exact: true,\n component: TugasKuAnnouncesForm,\n pageTitle: 'Tugasku Tambah Pengumuman',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/announces/:hashannounce`,\n exact: true,\n component: TugasKuAnnouncesDetail,\n pageTitle: 'Tugasku Detail Pengumuman',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/announces/:hashannounce/edit`,\n exact: true,\n component: TugasKuAnnouncesForm,\n pageTitle: 'Tugasku Pengumuman Edit',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/quizzes/:hashquiz/score`,\n exact: true,\n component: TugasKuQuizzesScore,\n pageTitle: 'Tugasku Quiz Score',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/tasks/:hashtask/score/:hashtaskscore`,\n exact: true,\n component: TugasKuTasksScoreDetail,\n pageTitle: 'Tugasku Task Detail Score',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/quizzes/:hashquiz/score/:hashquizscore`,\n exact: true,\n component: TugasKuQuizzesScoreDetail,\n pageTitle: 'Tugasku Quiz Detail Score',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/tasks/:hashtask/score`,\n exact: true,\n component: TugasKuTasksScore,\n pageTitle: 'Tugasku Tasks Score',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/student-score`,\n exact: true,\n component: TugasKuStudentScore,\n pageTitle: 'Tugasku Student Score',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/tasks/:hashtask/file/:hashmedia`,\n exact: true,\n component: TugasKuTasksDetailFile,\n pageTitle: 'Tugasku Task Detail File',\n closeEnv: [],\n },\n {\n path: `${prefix}/tugasku/:hash/modules/:hashmodule/file/:hashmedia`,\n exact: true,\n component: TugasKuModulesDetailFile,\n pageTitle: 'Tugasku Task Detail File',\n closeEnv: [],\n },\n { path: `${prefix}/profile`, exact: true, component: Profile, pageTitle: 'Akun Saya' },\n { path: `${prefix}/profile/edit`, exact: true, component: EditProfile },\n { path: `${prefix}/profile/edit/favorite`, exact: true, component: FavoriteEdit },\n {\n path: `${prefix}/profile/edit/email`,\n exact: true,\n component: EmailEdit,\n pageTitle: 'Edit email',\n },\n {\n path: `${prefix}/profile/edit/phone`,\n exact: true,\n component: PhoneEdit,\n pageTitle: 'Edit phone',\n },\n {\n path: `${prefix}/profile/edit/phone/request-otp`,\n exact: true,\n component: OTPRequest,\n },\n {\n path: `${prefix}/profile/edit/phone/verify-otp`,\n exact: true,\n component: OTPVerify,\n },\n {\n path: `${prefix}/profile/edit/social-media`,\n exact: true,\n component: EditSocialMedia,\n pageTitle: 'Tambah akun social media',\n },\n { path: `${prefix}/profile/edit/subjects`, exact: true, component: SubjectEdit },\n { path: `${prefix}/profile/my-school`, exact: true, component: SchoolMine },\n { path: `${prefix}/profile/empty-school`, exact: true, component: SchoolEmpty },\n {\n path: `${prefix}/profile/connect-school/:newSchoolUuid`,\n exact: true,\n component: SchoolConnect,\n },\n { path: `${prefix}/profile/search-school`, exact: true, component: SchoolSearch },\n { path: `${prefix}/schedule`, exact: true, component: ScheduleTeacher },\n\n { path: `${prefix}/history/`, exact: true, component: HistoryTeacher },\n { path: `${prefix}/history/summary`, exact: true, component: TeacherAttendanceSummary },\n { path: `${prefix}/history/attendance/:slug`, exact: true, component: HistoryAttendanceDetail },\n { path: `${prefix}/history/permit/:permitHashId`, exact: true, component: HistoryPermitDetail },\n { path: `${prefix}/history/classroom`, exact: true, component: HistoryClassroomDetail },\n\n { path: `${prefix}/permit/`, exact: true, component: CreatePermit },\n { path: `${prefix}/permit/edit/:permitHashId`, exact: true, component: EditPermit },\n {\n path: `${prefix}/permit/class-student`,\n exact: true,\n component: PermitBulkClassStudent,\n closeEnv: [],\n },\n {\n path: `${prefix}/permit/choose-student`,\n exact: true,\n component: PermitBulkChooseStudent,\n closeEnv: [],\n },\n {\n path: `${prefix}/permit/choose-class`,\n exact: true,\n component: PermitBulkChooseClass,\n closeEnv: [],\n },\n { path: `${prefix}/permit/bulk`, exact: true, component: PermitBulk, closeEnv: [] },\n\n { path: `${prefix}/attendance/class-student`, exact: true, component: ClassStudent },\n { path: `${prefix}/attendance/choose-student`, exact: true, component: ChooseStudent },\n { path: `${prefix}/attendance/choose-class`, exact: true, component: ChooseClass },\n { path: `${prefix}/attendance/clock-in-student`, exact: true, component: ClockInStudent },\n { path: `${prefix}/attendance/clock-in-class`, exact: true, component: ClockInClass },\n\n { path: `${prefix}/grade/choose-class`, exact: true, component: GradeChooseClass },\n { path: `${prefix}/grade/class-input-score`, exact: true, component: GradeChooseClassInput },\n {\n path: `${prefix}/grade/detail-list-score`,\n exact: true,\n component: GradeChooseStudentDetailList,\n },\n {\n path: `${prefix}/grade/class-import-tugasku-score`,\n exact: true,\n component: GradeChooseClassImportTugasku,\n },\n { path: `${prefix}/grade/choose-student`, exact: true, component: GradeChooseStudent },\n {\n path: `${prefix}/grade/components`,\n exact: true,\n component: GradeChooseComponents,\n },\n {\n path: `${prefix}/grade/student-list`,\n exact: true,\n component: GradeChooseStudentDetailBy,\n },\n {\n path: `${prefix}/grade/student-detail-profile`,\n exact: true,\n component: GradeChooseStudentDetailProfile,\n },\n { path: `${prefix}/grade`, exact: true, component: Grade },\n { path: `${prefix}/grade/detail/:slug`, exact: true, component: GradeDetail },\n {\n path: `${prefix}/notifications`,\n exact: true,\n component: Notification,\n pageTitle: 'Notifikasi',\n },\n\n { path: `${prefix}/attitude-note`, exact: true, component: AttitudeNote },\n { path: `${prefix}/attitude-note/create`, exact: true, component: NoteCreate },\n { path: `${prefix}/attitude-note/:hashNoteId`, exact: true, component: NoteDetail },\n { path: `${prefix}/attitude-note/:hashNoteId/edit`, exact: true, component: NoteEdit },\n\n { path: `${prefix}/homeroom/`, exact: true, component: Homeroom, closeEnv: [] },\n {\n path: `${prefix}/homeroom/edit`,\n exact: true,\n component: HomeroomClassList,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/register`,\n exact: true,\n component: HomeroomRegister,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/students`,\n exact: true,\n component: HomeroomStudentList,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/students/:studentHashId`,\n exact: true,\n component: HomeroomStudentDetail,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/history`,\n exact: true,\n component: HomeroomHistory,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/history/permit`,\n exact: true,\n component: HomeroomPermitHistory,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/requests`,\n exact: true,\n component: HomeroomRequest,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/request/:hashAttendanceId/attendance`,\n exact: true,\n component: HomeroomAttendanceDetail,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/request/:hashPermitId/permit`,\n exact: true,\n component: HomeroomPermitDetail,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/history/attendance`,\n exact: true,\n component: HomeroomAttendanceHistory,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/announcement`,\n exact: true,\n component: Announcement,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/announcement/:uuid`,\n exact: true,\n component: AnnouncementDetail,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/announcement/:uuid/edit`,\n exact: true,\n component: AnnouncementEdit,\n closeEnv: [],\n },\n {\n path: `${prefix}/homeroom/attitude-note/`,\n exact: true,\n component: HomeroomAttitudeNote,\n },\n {\n path: `${prefix}/homeroom/attitude-note/:hashStudentId`,\n exact: true,\n component: HomeroomAttitudeNoteStudent,\n },\n {\n path: `${prefix}/homeroom/attitude-note/:hashNoteId/detail`,\n exact: true,\n component: HomeroomAttitudeNoteStudentDetail,\n },\n {\n path: `${prefix}/homeroom/attitude-note/:hashNoteId/edit`,\n exact: true,\n component: HomeroomAttitudeNoteStudentEdit,\n },\n {\n path: `${prefix}/complete-data`,\n component: CompleteDataRoutes,\n pageTitle: 'Lengkapi Data',\n },\n {\n path: `${prefix}/mbg`,\n component: MBGRoutes,\n pageTitle: 'Menu MBG',\n },\n {\n path: `${prefix}/module/`,\n component: Module,\n pageTitle: 'Module',\n exact: true,\n },\n {\n path: `${prefix}/module/add`,\n component: ModuleAdd,\n pageTitle: 'Tambah Module',\n exact: true,\n },\n {\n path: `${prefix}/module/:uuid`,\n component: ModuleDetail,\n pageTitle: 'Detail Module',\n exact: true,\n },\n {\n path: `${prefix}/modul/tugasku/:type`,\n component: ModuleTugasku,\n pageTitle: 'List Module',\n exact: true,\n },\n {\n path: `${prefix}/modul/tugasku/:module_uuid/quiz`,\n component: QuizTugasku,\n pageTitle: 'Detail Quiz Module',\n exact: true,\n },\n];\n\nexport default teacherRoutes;\n","import { lazy } from 'react';\nconst AttitudeNote = lazy(() => import('../views/_student/attitudeNote/AttitudeNote'));\nconst NoteDetail = lazy(() => import('../views/_student/attitudeNote/NoteDetail'));\n// const TugasKu = lazy(() => import('../views/_student/tugasku/TugasKu'));\nconst Beranda = lazy(() => import('../views/beranda/Beranda'));\nconst Notification = lazy(() => import('../views/notification/notification-student.page'));\nconst ProfileStudent = lazy(() => import('../views/_student/profile/profile-student.page'));\nconst ProfileEditStudent = lazy(() => import('../views/_student/profile_edit/ProfileEditStudent'));\nconst EditSocialMedia = lazy(() => import('../views/_student/profile_edit/pages/EditSocialMedia'));\nconst EmailEdit = lazy(() => import('../views/email-edit/email-edit.page'));\nconst FavoriteEdit = lazy(() => import('../views/favorite-edit/favorite-edit.page'));\nconst ParentEdit = lazy(() => import('../views/_student/profile_edit/pages/ParentEdit'));\nconst ParentList = lazy(() => import('../views/_student/profile_edit/pages/ParentList'));\nconst ParentNotFound = lazy(() => import('../views/_student/profile_edit/pages/ParentNotFound'));\nconst ParentFound = lazy(() => import('../views/_student/profile_edit/pages/ParentFound'));\nconst SchoolList = lazy(() => import('../views/_student/profile_edit/pages/SchoolList'));\nconst EmptySchool = lazy(() => import('../views/empty-school/empty-school.page'));\nconst SearchClass = lazy(() => import('../views/_student/connect-school/search-class.page.jsx'));\nconst SearchSchool = lazy(() => import('../views/search-school/search-school.page'));\nconst ConnectSchool = lazy(() => import('../views/_student/connect-school/connect-school.page'));\nconst CreatePermit = lazy(() => import('views/_student/permit-v2/create-permit.page'));\nconst EditPermit = lazy(() => import('views/_student/permit-v2/edit-permit.page'));\nconst StudentAttendanceSummaryDetails = lazy(() =>\n import('../views/history/StudentAttendanceSummaryDetails'),\n);\nconst HistoryStudent = lazy(() => import('../views/history/HistoryStudent'));\nconst HistoryAttendanceDetail = lazy(() => import('../views/history/HistoryAttendanceDetail'));\nconst HistoryPermitDetail = lazy(() =>\n import('views/_student/history-permit/history-permit-detail.page'),\n);\nconst GradeRoutes = lazy(() => import('../views/_student/grade/GradeRoutes'));\nconst Schedule = lazy(() => import('../views/schedule/Schedule'));\nconst PointV2 = lazy(() => import('../views/coin/Point-v2'));\nconst Reward = lazy(() => import('../views/reward-koin/RewardList'));\nconst ClaimList = lazy(() => import('../views/reward-koin/RewardClaimList'));\nconst RewardDetail = lazy(() => import('../views/reward-koin/DetailReward'));\n\n// tugasku\nconst TugasKu = lazy(() => import('../views/_student/tugasku/TugasKu'));\nconst TugasKuJoin = lazy(() => import('../views/_student/tugasku/TugasKuJoin'));\nconst TugasKuDetail = lazy(() => import('../views/_student/tugasku/TugasKuDetail'));\nconst TugasKuInfoHistory = lazy(() => import('../views/_student/tugasku/TugasKuInfoHistory'));\nconst TugasKuInfoClass = lazy(() => import('../views/_student/tugasku/TugasKuInfoClass'));\nconst TugasKuTasksDetail = lazy(() => import('../views/_student/tugasku/TugasKuTasksDetail'));\nconst TugasKuQuizzesDetail = lazy(() => import('../views/_student/tugasku/TugasKuQuizzesDetail'));\nconst TugasKuModulesDetail = lazy(() => import('../views/_student/tugasku/TugasKuModulesDetail'));\nconst TugasKuAnnouncesDetail = lazy(() =>\n import('../views/_student/tugasku/TugasKuAnnouncesDetail'),\n);\nconst TugasKuTasksDetailFile = lazy(() =>\n import('../views/_student/tugasku/TugasKuTasksDetailFile'),\n);\nconst TugasKuModulesDetailFile = lazy(() =>\n import('../views/_student/tugasku/TugasKuModulesDetailFile'),\n);\nconst UnderConstruction = lazy(() => import('../views/error/under-construction.page'));\nconst Eraport = lazy(() => import('../views/_student/eraport/Eraport'));\nconst EraportDetail = lazy(() => import('../views/_student/eraport/EraportDetail'));\n\nconst PhoneEdit = lazy(() => import('views/phone-edit/phone-edit.page'));\nconst OTPRequest = lazy(() => import('views/phone-edit/OTP-request.page'));\nconst OTPVerify = lazy(() => import('views/phone-edit/OTP-verify.page'));\nconst CompleteDataRoutes = lazy(() => import('views/complete-data/complete-data.routes'));\n\nconst studentRoutes = [\n {\n path: '/home',\n exact: true,\n component: Beranda,\n pageTitle: 'Beranda',\n },\n {\n path: '/notifications',\n exact: true,\n component: Notification,\n pageTitle: 'Beranda',\n },\n {\n path: '/profile',\n exact: true,\n component: ProfileStudent,\n pageTitle: 'Profil saya',\n },\n {\n path: '/profile/edit',\n exact: true,\n component: ProfileEditStudent,\n pageTitle: 'Ubah profil saya',\n },\n {\n path: '/profile/edit/phone',\n exact: true,\n component: PhoneEdit,\n pageTitle: 'Ubah nomor ponsel saya',\n },\n {\n path: `/profile/edit/phone/request-otp`,\n exact: true,\n component: OTPRequest,\n },\n {\n path: `/profile/edit/phone/verify-otp`,\n exact: true,\n component: OTPVerify,\n },\n {\n path: '/profile/edit/email',\n exact: true,\n component: EmailEdit,\n pageTitle: 'Ubah email saya',\n },\n {\n path: '/profile/edit/favorite',\n exact: true,\n component: FavoriteEdit,\n pageTitle: 'Ubah favorit saya',\n },\n {\n path: '/profile/edit/social-media',\n exact: true,\n component: EditSocialMedia,\n pageTitle: 'Tambah akun social media',\n },\n {\n path: '/profile/edit/parent',\n exact: true,\n component: ParentEdit,\n pageTitle: 'Ubah orang tua',\n },\n {\n path: '/profile/list/parent',\n exact: true,\n component: ParentList,\n pageTitle: 'Orang tua saya',\n },\n {\n path: '/profile/empty/parent/',\n exact: true,\n component: ParentNotFound,\n },\n {\n path: '/profile/found/parent/',\n exact: true,\n component: ParentFound,\n },\n {\n path: '/profile/my-school',\n exact: true,\n component: SchoolList,\n },\n {\n path: '/profile/empty-school',\n exact: true,\n component: EmptySchool,\n },\n {\n path: '/profile/search-school',\n exact: true,\n component: SearchSchool,\n pageTitle: 'Cari sekolah',\n },\n {\n path: '/profile/search-class',\n exact: true,\n component: SearchClass,\n pageTitle: 'Cari kelas',\n },\n {\n path: '/profile/connect-school/:newSchoolUuid',\n exact: true,\n component: ConnectSchool,\n pageTitle: 'Hubungkan sekolah',\n },\n {\n path: '/permit',\n exact: true,\n component: CreatePermit,\n },\n {\n path: '/permit/edit/:permitHashId',\n exact: true,\n component: EditPermit,\n },\n {\n path: '/history',\n exact: true,\n component: HistoryStudent,\n },\n {\n path: '/history/summary',\n exact: true,\n component: StudentAttendanceSummaryDetails,\n },\n {\n path: '/history/attendance/:slug',\n exact: true,\n component: HistoryAttendanceDetail,\n },\n {\n path: '/history/permit/:permitHashId',\n exact: true,\n component: HistoryPermitDetail,\n },\n {\n path: '/grade',\n exact: false,\n component: GradeRoutes,\n },\n {\n path: '/schedule',\n exact: true,\n component: Schedule,\n },\n {\n path: '/koin',\n exact: true,\n component: PointV2,\n pageTitle: 'Koin',\n },\n {\n path: '/koin/gift',\n exact: true,\n component: Reward,\n pageTitle: 'Hadiah Koin',\n },\n {\n path: '/koin/gift/:uuid',\n exact: true,\n component: RewardDetail,\n pageTitle: 'Hadiah Detail',\n },\n {\n path: `/claim/list`,\n exact: true,\n component: ClaimList,\n pageTitle: 'Klaim Hadiah',\n },\n {\n path: '/e-raport',\n exact: true,\n component: Eraport,\n pageTitle: 'E-Rapor',\n },\n {\n path: '/e-raport/:uuid',\n exact: true,\n component: EraportDetail,\n pageTitle: 'E-Rapor detail',\n },\n {\n path: '/tugasku',\n exact: true,\n component: TugasKu,\n pageTitle: 'Tugasku',\n },\n {\n path: `/tugasku/join`,\n exact: true,\n component: TugasKuJoin,\n pageTitle: 'Tugasku Join New Room',\n },\n {\n path: `/tugasku/join/:code`,\n exact: true,\n component: TugasKuJoin,\n pageTitle: 'Tugasku Join New Room',\n },\n {\n path: `/tugasku/:hash`,\n exact: true,\n component: TugasKuDetail,\n pageTitle: 'Tugasku Detail',\n },\n {\n path: `/tugasku/:hash/notif`,\n exact: true,\n component: TugasKuInfoHistory,\n pageTitle: 'Tugasku Information History',\n },\n {\n path: `/tugasku/:hash/info`,\n exact: true,\n component: TugasKuInfoClass,\n pageTitle: 'Tugasku Info Kelas',\n },\n {\n path: `/tugasku/:hash/tasks/:hashtask`,\n exact: true,\n component: TugasKuTasksDetail,\n pageTitle: 'Tugasku Detail Tugas',\n },\n {\n path: `/tugasku/:hash/quizzes/:hashquiz`,\n exact: true,\n component: TugasKuQuizzesDetail,\n pageTitle: 'Tugasku Detail Quiz',\n },\n {\n path: `/tugasku/:hash/modules/:hashmodule`,\n exact: true,\n component: TugasKuModulesDetail,\n pageTitle: 'Tugasku Detail Materi',\n },\n {\n path: `/tugasku/:hash/announces/:hashannounce`,\n exact: true,\n component: TugasKuAnnouncesDetail,\n pageTitle: 'Tugasku Detail Pengumuman',\n },\n {\n path: `/tugasku/:hash/tasks/:hashtask/file/:hashmedia`,\n exact: true,\n component: TugasKuTasksDetailFile,\n pageTitle: 'Tugasku Task Detail File',\n },\n {\n path: `/tugasku/:hash/modules/:hashmodule/file/:hashmedia`,\n exact: true,\n component: TugasKuModulesDetailFile,\n pageTitle: 'Tugasku Module Detail File',\n },\n {\n path: `/attitude-note`,\n exact: true,\n component: AttitudeNote,\n pageTitle: 'Catatan Sikap Saya',\n },\n {\n path: `/attitude-note/:hashNoteId`,\n exact: true,\n component: NoteDetail,\n pageTitle: 'Catatan Sikap Saya',\n },\n {\n path: '/complete-data',\n component: CompleteDataRoutes,\n pageTitle: 'Lengkapi Data',\n },\n];\nexport default studentRoutes;\n","const ENVIRONMENT = process.env.REACT_APP_ENVIRONMENT;\n/**\n * helper to crete group routes\n * @param {object} p\n * @param {object[]} p.routes\n * @param {element} p.routeComponent\n * @param {element} p.closeEnvPage\n * @returns\n */\nexport const createGroupRoute = ({\n routes,\n routeComponent: RouteComponent,\n closeEnvPage: CloseEnvPage,\n}) => {\n return routes.map(props => {\n if (props.closeEnv && props.closeEnv.includes(ENVIRONMENT)) {\n return ;\n }\n\n return ;\n });\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect, Route } from 'react-router-dom';\nimport { isEmpty } from 'lodash';\nimport { USER_ROLE } from 'helpers/switchRole';\nimport { LoadingPage } from 'components/Loading';\nimport { selectUserReducer } from 'store/user/user.selector';\nimport { setCurrentUserAsync } from 'store/user/user.thunk';\n\nconst ProtectedRoute = ({ component: Component, pageTitle, allowedRole = [], ...rest }) => {\n const { isAuthenticated, isAuthLoading, currentUser, role } = useSelector(selectUserReducer);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (isAuthenticated) dispatch(setCurrentUserAsync());\n }, [dispatch, isAuthenticated]);\n\n useEffect(() => {\n if (pageTitle) return (document.title = 'Skul.id | ' + pageTitle);\n document.title = 'Skul.id';\n }, [pageTitle]);\n\n return (\n {\n // this one is only for tugasku\n const query = new URLSearchParams(props.location.search);\n const token = query.get('token') === null ? '' : query.get('token');\n const roleUrl = query.get('role') === null ? '' : query.get('role');\n\n if (isAuthLoading) {\n return ;\n }\n\n if (!isAuthLoading && isAuthenticated && !isEmpty(currentUser)) {\n if (!allowedRole.includes(role)) return ;\n\n // if is_need_complete_data true and is not in complete-data routes\n // used to avoid infinite loop\n if (currentUser.is_need_complete_data && !props.match.url.includes('complete-data')) {\n return (\n \n );\n }\n\n return ;\n }\n\n // this one is only for tugasku\n if (props.location.pathname.includes('tugasku') && !isEmpty(token) && !isEmpty(roleUrl)) {\n if (roleUrl !== USER_ROLE['student'].value) return ;\n return ;\n }\n\n if (!isAuthLoading && !isAuthenticated) {\n return ;\n }\n }}\n />\n );\n};\n\nexport default ProtectedRoute;\n","import { LoadingPage } from 'components/Loading';\nimport { USER_ROLE } from 'helpers/switchRole';\nimport { isEmpty } from 'lodash';\nimport React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect, Route } from 'react-router-dom';\nimport { selectUserReducer } from 'store/user/user.selector';\n\nconst GuestRoute = ({ component: Component, pageTitle, ...rest }) => {\n const { isAuthenticated, isAuthLoading, currentUser, role } = useSelector(selectUserReducer);\n\n useEffect(() => {\n if (pageTitle) return (document.title = 'Skul.id | ' + pageTitle);\n document.title = 'Skul.id';\n }, [pageTitle]);\n\n return (\n {\n if (isAuthLoading) {\n return ;\n }\n\n if (!isAuthLoading && !isAuthenticated) {\n return ;\n }\n\n if (!isAuthLoading && isAuthenticated && !isEmpty(currentUser)) {\n return ;\n }\n }}\n />\n );\n};\n\nexport default GuestRoute;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect, Route } from 'react-router-dom';\nimport { isEmpty } from 'lodash';\nimport { LoadingPage } from 'components/Loading';\nimport { USER_ROLE } from 'helpers/switchRole';\nimport { selectUserReducer } from 'store/user/user.selector';\nimport { setCurrentUserAsync } from 'store/user/user.thunk';\n\nconst StudentRoute = ({ component: Component, pageTitle, ...rest }) => {\n const { isAuthenticated, isAuthLoading, currentUser, role } = useSelector(selectUserReducer);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (isAuthenticated) dispatch(setCurrentUserAsync());\n }, [dispatch, isAuthenticated]);\n\n useEffect(() => {\n if (pageTitle) return (document.title = 'Skul.id | ' + pageTitle);\n document.title = 'Skul.id';\n }, [pageTitle]);\n\n return (\n {\n // this one is only for tugasku\n const query = new URLSearchParams(props.location.search);\n const token = query.get('token') === null ? '' : query.get('token');\n const roleUrl = query.get('role') === null ? '' : query.get('role');\n\n if (isAuthLoading) {\n return ;\n }\n\n if (!isAuthLoading && isAuthenticated && !isEmpty(currentUser)) {\n if (role !== USER_ROLE['student'].value) return ;\n\n // if is_need_complete_data true and is not in complete-data routes\n // used to avoid infinite loop\n if (currentUser.is_need_complete_data && !props.match.url.includes('complete-data')) {\n return ;\n }\n\n return ;\n }\n\n // this one is only for tugasku\n if (props.location.pathname.includes('tugasku') && !isEmpty(token) && !isEmpty(roleUrl)) {\n if (roleUrl !== USER_ROLE['student'].value) return ;\n return ;\n }\n\n if (!isAuthLoading && !isAuthenticated) {\n return ;\n }\n }}\n />\n );\n};\n\nexport default StudentRoute;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect, Route } from 'react-router-dom';\nimport { isEmpty } from 'lodash';\nimport { LoadingPage } from 'components/Loading';\nimport { USER_ROLE } from 'helpers/switchRole';\nimport { selectUserReducer } from 'store/user/user.selector';\nimport { setCurrentUserAsync } from 'store/user/user.thunk';\n\nconst TeacherRoute = ({ component: Component, pageTitle, ...rest }) => {\n const { isAuthenticated, isAuthLoading, currentUser, role } = useSelector(selectUserReducer);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (isAuthenticated) dispatch(setCurrentUserAsync());\n }, [dispatch, isAuthenticated]);\n\n useEffect(() => {\n if (pageTitle) return (document.title = 'Skul.id | ' + pageTitle);\n document.title = 'Skul.id';\n }, [pageTitle]);\n\n return (\n {\n // this one is only for tugasku\n const query = new URLSearchParams(props.location.search);\n const token = query.get('token') === null ? '' : query.get('token');\n const roleUrl = query.get('role') === null ? '' : query.get('role');\n\n if (isAuthLoading) {\n return ;\n }\n\n if (!isAuthLoading && isAuthenticated && !isEmpty(currentUser)) {\n if (role !== USER_ROLE['teacher'].value) return ;\n\n // if is_need_complete_data true and is not in complete-data routes\n // used to avoid infinite loop\n if (currentUser.is_need_complete_data && !props.match.url.includes('complete-data')) {\n return ;\n }\n\n return ;\n }\n\n // this one is only for tugasku\n if (props.location.pathname.includes('tugasku') && !isEmpty(token) && !isEmpty(roleUrl)) {\n if (roleUrl !== USER_ROLE['teacher'].value) return ;\n return ;\n }\n\n if (!isAuthLoading && !isAuthenticated) {\n return ;\n }\n }}\n />\n );\n};\n\nexport default TeacherRoute;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect, Route } from 'react-router-dom';\nimport { isEmpty } from 'lodash';\nimport { LoadingPage } from 'components/Loading';\nimport { USER_ROLE } from 'helpers/switchRole';\nimport { selectUserReducer } from 'store/user/user.selector';\nimport { setCurrentUserAsync } from 'store/user/user.thunk';\n\nconst ParentRoute = ({ component: Component, pageTitle, ...rest }) => {\n const { isAuthenticated, isAuthLoading, currentUser, role } = useSelector(selectUserReducer);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (isAuthenticated) dispatch(setCurrentUserAsync());\n }, [dispatch, isAuthenticated]);\n\n useEffect(() => {\n if (pageTitle) return (document.title = 'Skul.id | ' + pageTitle);\n document.title = 'Skul.id';\n }, [pageTitle]);\n\n return (\n {\n if (isAuthLoading) {\n return ;\n }\n\n if (!isAuthLoading && isAuthenticated && !isEmpty(currentUser)) {\n if (role !== USER_ROLE['parent'].value) return ;\n\n // if is_need_complete_data true and is not in complete-data routes\n // used to avoid infinite loop\n if (currentUser.is_need_complete_data && !props.match.url.includes('complete-data')) {\n return ;\n }\n\n return ;\n }\n\n if (!isAuthLoading && !isAuthenticated) {\n return ;\n }\n }}\n />\n );\n};\n\nexport default ParentRoute;\n","import React from 'react';\nimport { Route, Switch } from 'react-router-dom';\n\nimport authRoutes from 'routes/auth.routes';\nimport linkAjaRoutes from 'routes/link-aja.routes';\nimport parentRoutes from 'routes/parent.routes';\nimport commonRoutes from 'routes/common.routes';\nimport teacherRoutes from 'routes/teacher.routes';\nimport studentRoutes from 'routes/student.routes';\nimport { LoadingPage } from 'components/Loading';\nimport { createGroupRoute } from 'utils/route/create-group-route.utils';\nimport ProtectedRoute from 'utils/route/protected-route.utils';\nimport GuestRoute from 'utils/route/guest-route.utils';\nimport StudentRoute from 'utils/route/student-route.utils';\nimport TeacherRoute from 'utils/route/teacher-route.utils';\nimport ParentRoute from 'utils/route/parent-route.utils';\n\nconst SuccessDelete = React.lazy(() => import('views/setting/pages/SuccessDelete'));\nconst NotFound = React.lazy(() => import('views/error/404.page'));\nconst GetApps = React.lazy(() => import('views/setting/pages/OpenApps'));\nconst UnderConstruction = React.lazy(() => import('views/error/under-construction.page'));\n\n// NOTE: we do not implement createBrowserRoutes and integrate to redux yet, might need in future\nconst Routes = () => {\n return (\n }>\n \n {createGroupRoute({\n routes: commonRoutes,\n routeComponent: ProtectedRoute,\n closeEnvPage: UnderConstruction,\n })}\n\n {createGroupRoute({\n routes: linkAjaRoutes,\n routeComponent: ProtectedRoute,\n closeEnvPage: UnderConstruction,\n })}\n\n {createGroupRoute({\n routes: studentRoutes,\n routeComponent: StudentRoute,\n closeEnvPage: UnderConstruction,\n })}\n\n {createGroupRoute({\n routes: authRoutes,\n routeComponent: GuestRoute,\n closeEnvPage: UnderConstruction,\n })}\n\n {createGroupRoute({\n routes: teacherRoutes,\n routeComponent: TeacherRoute,\n closeEnvPage: UnderConstruction,\n })}\n\n {createGroupRoute({\n routes: parentRoutes,\n routeComponent: ParentRoute,\n closeEnvPage: UnderConstruction,\n })}\n\n {/* down below is normal route */}\n \n \n \n \n \n \n \n );\n};\n\nexport default Routes;\n","import AuthLayout from 'layouts/auth/auth.layout';\nimport React from 'react';\nimport { NotFoundImage } from './svg-images';\nimport { Wrapper, Title } from './error.styled';\nimport { withRouter } from 'react-router-dom';\nimport ButtonLinkPrimary from 'stories/components/forms/button-link-primary/button-link-primary.component';\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false,\n errorMsg: null,\n };\n }\n\n static getDerivedStateFromError(_error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true, errorMsg: _error.message };\n }\n\n componentDidCatch(_error, _errorInfo) {\n // You can also log the error to an error reporting service\n // console.log('error =>', error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n \n \n \n \n <h1>Maaf, terjadi kesalahan pada sistem kami.</h1>\n \n

\n Harap\n window.location.reload()}\n />\n browser kamu, hubungi kami lewat\n \n atau\n window.location.replace('/')}\n />\n

\n
\n
\n );\n }\n\n return this.props.children;\n }\n}\n\nexport default withRouter(ErrorBoundary);\n","import React, { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n getTokenFirebase,\n isNotifSupported,\n fetchRemoteConfig,\n getConfigValue,\n} from './configs/firebase';\nimport { encodeHashNonPromise } from 'helpers/hashes';\nimport { setPreferencesFromLocalStorage } from 'store/preferences/preferences.action';\nimport { setHost } from 'store/get-config-firebase/host.action';\n\nimport { useState } from 'react';\nimport { selectPreferences } from 'store/preferences/preferences.selector';\nimport { useEffect } from 'react';\nimport { isEmpty, isNil } from 'lodash';\nimport { checkUserSessionAsync } from 'store/user/user.thunk';\nimport { updateFcmClient } from 'services/notification.services';\nimport Routes from 'routes/index.routes';\nimport ErrorBoundary from 'views/error/error-boundary.page';\n\nconst App = () => {\n const dispatch = useDispatch();\n const preferences = useSelector(selectPreferences);\n const { currentUser, isAuthenticated } = useSelector(state => state.user);\n const { id: currentUserId = null, is_sub_push_notif: isPushNotifChannelOn = false } = currentUser;\n const [clientToken, setClientToken] = useState('');\n\n useEffect(() => {\n dispatch(checkUserSessionAsync());\n const loadConfig = async () => {\n await fetchRemoteConfig();\n const { host } = JSON.parse(getConfigValue('config'));\n\n dispatch(setHost(host));\n };\n\n loadConfig();\n }, [dispatch]);\n\n /**\n * Why used session preferences?\n * If user click skip in connect socmed page without check on \"Jangan tampilkan lagi\", the connect socmed page will be appear again in another tabs\n * The value of socmedSkip in local storage will be override to true if socmedSkip is exist in session storage, if does not exist in session storage, the value will be set to false\n * The socmedSkip value will be ignore in render and the connect socmed page will not appear in any user devices if user check on \"Jangan tampilkan lagi\", why ? cause it will be saved in database\n */\n const checkSavedPreferences = useCallback(() => {\n if (!isAuthenticated || !currentUserId) return;\n\n try {\n const encodedUserId = encodeHashNonPromise(currentUserId);\n const storagePreferences = JSON.parse(window.localStorage.getItem(encodedUserId));\n let sessionPreferences = JSON.parse(window.sessionStorage.getItem(encodedUserId));\n\n if (!isNil(storagePreferences) && !isEmpty(storagePreferences)) {\n sessionPreferences = sessionPreferences ? sessionPreferences : { socmedSkip: false };\n dispatch(setPreferencesFromLocalStorage({ ...storagePreferences, ...sessionPreferences }));\n } else {\n window.localStorage.setItem(encodedUserId, JSON.stringify(preferences));\n }\n } catch (error) {}\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isAuthenticated, currentUserId, dispatch]);\n\n useEffect(() => {\n checkSavedPreferences();\n }, [checkSavedPreferences]);\n\n const pushNotificationHandler = useCallback(() => {\n if (!isAuthenticated || !currentUserId) {\n setClientToken('');\n return;\n }\n\n if (isNotifSupported && isPushNotifChannelOn && clientToken === '') {\n if ('Notification' in window && Notification.permission !== 'denied') {\n Notification.requestPermission().then(async permission => {\n if (permission === 'granted') {\n try {\n const dataClientToken = await getTokenFirebase();\n\n await updateFcmClient(dataClientToken);\n setClientToken(dataClientToken);\n } catch (e) {}\n }\n });\n }\n }\n }, [isAuthenticated, currentUserId, isPushNotifChannelOn]);\n\n useEffect(() => {\n pushNotificationHandler();\n }, [pushNotificationHandler]);\n\n return (\n \n \n \n );\n};\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log('This web app is being served cache-first by a service worker');\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { PersistGate } from 'redux-persist/integration/react';\nimport { Router } from 'react-router-dom';\nimport { CookiesProvider } from 'react-cookie';\nimport SnackbarProvider from 'react-simple-snackbar';\nimport { createBrowserHistory } from 'history';\n\nimport '@fontsource/open-sans/300.css';\nimport '@fontsource/open-sans/400.css';\nimport '@fontsource/open-sans/500.css';\nimport '@fontsource/open-sans/600.css';\nimport '@fontsource/open-sans/700.css';\nimport '@fontsource/open-sans/800.css';\n\nimport 'rsuite/dist/styles/rsuite-default.css';\nimport './assets/styles/style.scss';\nimport 'react-confirm-alert/src/react-confirm-alert.css';\n\nimport App from './App';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport * as Sentry from '@sentry/react';\nimport { Integrations } from '@sentry/tracing';\nimport store, { persistor } from 'store/store';\nimport { LoadingPage } from 'components/Loading';\n\nif (process.env.REACT_APP_ENVIRONMENT === 'production') {\n const RELEASE = process.env.REACT_APP_SENTRY_RELEASE;\n const DSN = process.env.REACT_APP_SENTRY_DSN;\n\n if (RELEASE && DSN) {\n Sentry.init({\n dsn: DSN,\n integrations: [new Integrations.BrowserTracing()],\n environment: process.env.REACT_APP_ENVIRONMENT,\n release: RELEASE,\n });\n }\n}\n\nexport const customHistory = createBrowserHistory();\n\nReactDOM.render(\n \n \n } persistor={persistor}>\n \n \n \n \n \n \n \n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorkerRegistration.unregister();\n","export const USER_ROLE = {\n student: {\n id: process.env.REACT_APP_STUDENT_ID ? parseInt(process.env.REACT_APP_STUDENT_ID) : null,\n key: process.env.REACT_APP_STUDENT_SECRET,\n value: 'student',\n valueIndo: 'siswa',\n apiUrlPrefix: 'user',\n appUrlPrefix: '/',\n },\n parent: {\n id: process.env.REACT_APP_PARENT_ID ? parseInt(process.env.REACT_APP_PARENT_ID) : null,\n key: process.env.REACT_APP_PARENT_SECRET,\n value: 'parent',\n valueIndo: 'orang tua',\n apiUrlPrefix: 'parent',\n appUrlPrefix: '/parent/',\n },\n teacher: {\n id: process.env.REACT_APP_TEACHER_ID ? parseInt(process.env.REACT_APP_TEACHER_ID) : null,\n key: process.env.REACT_APP_TEACHER_SECRET,\n value: 'teacher',\n valueIndo: 'guru',\n apiUrlPrefix: 'teacher',\n appUrlPrefix: '/teacher/',\n },\n school: {\n id: process.env.REACT_APP_SCHOOL_ID ? parseInt(process.env.REACT_APP_SCHOOL_ID) : null,\n key: process.env.REACT_APP_SCHOOL_SECRET,\n value: 'school',\n valueIndo: 'sekolah',\n apiUrlPrefix: 'school',\n appUrlPrefix: '/school/',\n },\n};\n\n/**\n * Used to get role string from role id\n * @param {number | string} roleId\n * @returns string | null\n */\nexport const switchRole = roleId => {\n if (!roleId) return null;\n\n switch (parseInt(roleId)) {\n case USER_ROLE.student.id:\n return USER_ROLE.student.value;\n case USER_ROLE.parent.id:\n return USER_ROLE.parent.value;\n case USER_ROLE.teacher.id:\n return USER_ROLE.teacher.value;\n case USER_ROLE.school.id:\n return USER_ROLE.school.value;\n default:\n return null;\n }\n};\n\n/**\n * Used to get role id from role string\n * @param {string} role\n * @returns number | null\n */\nexport const switchRoleId = role => {\n if (!role) return null;\n\n switch (role) {\n case USER_ROLE.student.value:\n return USER_ROLE.student.id;\n case USER_ROLE.parent.value:\n return USER_ROLE.parent.id;\n case USER_ROLE.teacher.value:\n return USER_ROLE.teacher.id;\n case USER_ROLE.school.value:\n return USER_ROLE.school.id;\n default:\n return null;\n }\n};\n\n/**\n * Used to get role api url prefix\n * @param {number|string} role\n * @returns string | null\n */\nexport const switchRoleUrl = role => {\n if (!role) return null;\n\n if (role.length === 1) {\n switch (parseInt(role)) {\n case USER_ROLE.student.id:\n return USER_ROLE.student.apiUrlPrefix;\n case USER_ROLE.parent.id:\n return USER_ROLE.parent.apiUrlPrefix;\n case USER_ROLE.teacher.id:\n return USER_ROLE.teacher.apiUrlPrefix;\n case USER_ROLE.school.id:\n return USER_ROLE.school.apiUrlPrefix;\n default:\n return null;\n }\n } else {\n switch (role) {\n case USER_ROLE.student.value:\n return USER_ROLE.student.apiUrlPrefix;\n case USER_ROLE.parent.value:\n return USER_ROLE.parent.apiUrlPrefix;\n case USER_ROLE.teacher.value:\n return USER_ROLE.teacher.apiUrlPrefix;\n case USER_ROLE.school.value:\n return USER_ROLE.school.apiUrlPrefix;\n default:\n return null;\n }\n }\n};\n\n/**\n *\n * @param {string} role\n * @returns string | null\n */\nexport const switchRoleIndo = role => {\n if (!role) return null;\n\n switch (role) {\n case USER_ROLE.student.value:\n return USER_ROLE.student.valueIndo;\n case USER_ROLE.parent.value:\n return USER_ROLE.parent.valueIndo;\n case USER_ROLE.teacher.value:\n return USER_ROLE.teacher.valueIndo;\n case USER_ROLE.school.value:\n return USER_ROLE.school.valueIndo;\n default:\n return null;\n }\n};\n","export const createAction = (type, payload) => ({ type, payload });\n","import { Cookies } from 'react-cookie';\n\nconst expires = new Date();\nexpires.setDate(expires.getDate() + 14);\n\nconst cookies = new Cookies();\nconst options = {\n path: '/',\n expires,\n sameSite: 'strict',\n};\n\n/**\n * used to set access token in cookies\n * @param {string} access_token\n * @returns void\n */\nexport const setAccessToken = access_token => {\n if (!access_token) return;\n cookies.set('access_token', access_token, options);\n};\n\n/**\n * used to set role code in cookies\n * @param {string | number} access_role 2 | 3 | 4 | 5\n * @returns void\n */\nexport const setAccessRole = access_role => {\n if (!access_role) return;\n cookies.set('access_role', access_role, options);\n};\n\n/**\n * used to set type in cookies\n * @param {string} type flutter\n * @returns void\n */\nexport const setTypeFlutter = type => {\n if (!type) return;\n cookies.set('type_from', type, options);\n};\n\n/**\n * used to set refresh token in cookies\n * @param {string} refresh_token\n * @returns void\n */\nexport const setRefreshToken = refresh_token => {\n if (!refresh_token) return;\n cookies.set('refresh_token', refresh_token, options);\n};\n\n/**\n *\n * @returns string | null | undefined\n */\nexport const getAccessToken = () => cookies.get('access_token');\n/**\n *\n * @returns string | null | undefined\n */\nexport const getAccessRole = () => cookies.get('access_role');\n/**\n *\n * @returns string | null | undefined\n */\nexport const getTypeFlutter = () => cookies.get('type_from');\n/**\n *\n * @returns string | null | undefined\n */\nexport const getRefreshToken = () => cookies.get('refresh_token');\n\n/**\n *\n * @returns void\n */\nexport const clearAccessToken = () => cookies.remove('access_token', { path: '/' });\n/**\n *\n * @returns void\n */\nexport const clearAccessRole = () => cookies.remove('access_role', { path: '/' });\n/**\n *\n * @returns void\n */\nexport const clearRefreshToken = () => cookies.remove('refresh_token', { path: '/' });\n/**\n *\n * @returns void\n */\nexport const clearTypeFlutter = () => cookies.remove('type_from', { path: '/' });\n\n/**\n *\n * @returns void\n */\nexport const clearCookies = () => {\n clearAccessToken();\n clearRefreshToken();\n clearAccessRole();\n clearTypeFlutter();\n};\n","const USER_ACTION_TYPES = {\n SET_CURRENT_USER_IMAGE: 'user/SET_CURRENT_USER_IMAGE',\n SET_CURRENT_USER: 'user/SET_CURRENT_USER',\n\n SIGN_IN_START: 'user/SIGN_IN_START',\n SIGN_IN_SUCCESS: 'user/SIGN_IN_SUCCESS',\n SIGN_IN_FAILED: 'user/SIGN_IN_FAILED',\n\n // Not implement yet\n // SIGN_UP_START: 'user/SIGN_UP_START',\n // SIGN_UP_SUCCESS: 'user/SIGN_UP_SUCCESS',\n // SIGN_UP_FAILED: 'user/SIGN_UP_FAILED',\n\n SIGN_OUT_START: 'user/SIGN_OUT_START',\n SIGN_OUT_SUCCESS: 'user/SIGN_OUT_SUCCESS',\n SIGN_OUT_FAILED: 'user/SIGN_OUT_FAILED',\n};\n\nexport default USER_ACTION_TYPES;\n","import { getAccessRole, getAccessToken, getRefreshToken } from '../../configs/cookies';\nimport { switchRole, switchRoleUrl } from '../../helpers/switchRole';\n\nexport const getUserProperty = () => {\n /*\n * General things that probably need in every services\n * 1. Access Token\n * 2. Role Key\n * 3. Role Value\n * 4. API url prefix\n */\n const accessToken = getAccessToken();\n const refreshToken = getRefreshToken();\n const accessRoleId = getAccessRole();\n const accessRole = switchRole(accessRoleId);\n const accessRoleApiUrlPrefix = switchRoleUrl(accessRoleId);\n\n return {\n accessToken,\n refreshToken,\n accessRoleId,\n accessRole,\n accessRoleApiUrlPrefix,\n };\n};\n","const PREFERENCES_ACTION_TYPES = {\n SET_IS_COMPLETED_TOUR_IN_HOME: 'preferences/SET_IS_COMPLETED_TOUR_IN_HOME',\n SET_IS_COMPLETED_TOUR_IN_HISTORY: 'preferences/SET_IS_COMPLETED_TOUR_IN_HISTORY',\n SET_IS_COMPLETED_TOUR_IN_TUGASKU_HOME: 'preferences/SET_IS_COMPLETED_TOUR_IN_TUGASKU_HOME',\n SET_IS_COMPLETED_TOUR_IN_TUGASKU_CLASS: 'preferences/SET_IS_COMPLETED_TOUR_IN_TUGASKU_CLASS',\n SET_SKIP_SOCMED: 'preferences/SET_SKIP_SOCMED',\n SET_PREFERENCES_FROM_LOCAL_STORAGE: 'preferences/SET_PREFERENCES_FROM_LOCAL_STORAGE',\n RESET_PREFERENCES: 'preferences/RESET_PREFERENCES',\n};\n\nexport default PREFERENCES_ACTION_TYPES;\n","import React from 'react';\nimport { Loader } from 'rsuite';\nimport styled from 'styled-components';\nimport skulLogo from '../assets/logos/logo.svg';\n\nexport const Loading = ({ text, style }) => {\n return (\n
\n {text && }\n {!text && }\n
\n );\n};\n\nconst LoadingPageWrapper = styled.div`\n width: 100vw;\n height: 90vh;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n img {\n width: 120px;\n }\n > div {\n margin-top: 15px;\n display: flex;\n align-items: center;\n }\n h6 {\n margin-left: 8px;\n font-weight: 300;\n font-size: 13px;\n }\n`;\nexport const LoadingPage = () => {\n return (\n \n \"skul.id\"\n
\n \n
\n
\n );\n};\n","import { createAction } from 'utils/reducer/reducer.utils';\nimport USER_ACTION_TYPES from './user.types';\n\n/**\n *\n * @param {object} param\n * @param {object} param.user\n * @param {string} param.userRole\n */\nexport const setCurrentUser = ({ user, userRole }) =>\n createAction(USER_ACTION_TYPES.SET_CURRENT_USER, { user, userRole });\n\n/**\n *\n * @param {string} image\n */\nexport const setCurrentUserImage = image =>\n createAction(USER_ACTION_TYPES.SET_CURRENT_USER_IMAGE, image);\n\n/**\n *\n * @param {'general' | 'google' | 'facebook'} signInType\n */\nexport const signInStart = signInType => createAction(USER_ACTION_TYPES.SIGN_IN_START, signInType);\n\n/**\n *\n * @param {object} param\n * @param {object} param.user\n * @param {string} param.userRole\n */\nexport const signInSuccess = ({ user, userRole }) =>\n createAction(USER_ACTION_TYPES.SIGN_IN_SUCCESS, { user, userRole });\n/**\n *\n * @param {object} param\n * @param {'general' | 'google' | 'facebook'} [param.signInType]\n * @param {string} [param.message]\n */\nexport const signInFailed = ({ signInType, message }) =>\n createAction(USER_ACTION_TYPES.SIGN_IN_FAILED, { signInType, message });\n\nexport const signOutStart = () => createAction(USER_ACTION_TYPES.SIGN_OUT_START);\nexport const signOutSuccess = () => createAction(USER_ACTION_TYPES.SIGN_OUT_SUCCESS);\n\n/**\n *\n * @param {error} error\n */\nexport const signOutFailed = error => createAction(USER_ACTION_TYPES.SIGN_OUT_FAILED, error);\n","export const selectUserReducer = state => state.user;\nexport const selectCurrentUser = state => state.user.currentUser;\nexport const selectCurrentUserRole = state => state.user.role;\nexport const selectStudents = state => state.user.currentUser?.students || [];\n\nexport const selectStudentsHaveSchool = state => {\n return state.user.currentUser?.students.reduce((accumulator, currentStudent) => {\n const isHasSchool = currentStudent?.school?.name;\n return isHasSchool ? [...accumulator, currentStudent] : accumulator;\n }, []);\n};\n","import firebase from 'firebase/app';\nimport 'firebase/auth';\nimport 'firebase/firestore';\nimport 'firebase/messaging';\nimport 'firebase/analytics';\nimport 'firebase/remote-config';\n\n// Your web app's Firebase configuration\n// For Firebase JS SDK v7.20.0 and later, measurementId is optional\nconst config = {\n apiKey: process.env.REACT_APP_API_KEY,\n authDomain: process.env.REACT_APP_AUTH_DOMAIN,\n databaseURL: process.env.REACT_APP_DATABASE_URL,\n projectId: process.env.REACT_APP_PROJECT_ID,\n storageBucket: process.env.REACT_APP_STORAGE_BUCKET,\n messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,\n appId: process.env.REACT_APP_APP_ID,\n measurementId: process.env.REACT_APP_MEASUREMENT_ID,\n};\n\nconst privateChatDB = process.env.REACT_APP_PRIVATE_CHAT_DB || 'messages';\nconst classroomChatDB = process.env.REACT_APP_CLASSROOM_CHAT_DB || 'classroom-messages';\n\nfirebase.initializeApp(config);\nconst firebaseAnalytics = firebase.analytics();\n\nconst remoteConfig = firebase.remoteConfig();\n\nremoteConfig.defaultConfig = {\n config: 'default_value',\n};\n\nremoteConfig.settings = {\n minimumFetchIntervalMillis: 3600000,\n fetchTimeoutMillis: 60000,\n};\n\nconst firebaseAuth = firebase.auth();\nfirebaseAuth.signInAnonymously();\n\nlet messaging = null;\nlet getTokenFirebase = null;\nlet isNotifSupported = false;\n\nif (firebase.messaging.isSupported()) {\n try {\n messaging = firebase.messaging();\n getTokenFirebase = async () => {\n return await messaging.getToken({ vapidKey: process.env.REACT_APP_VAPID_KEY });\n };\n isNotifSupported = true;\n } catch (e) {\n console.log(e);\n }\n}\n\nconst onMessageListener = () => {\n // i am commmenting this because it keep sending twice\n // return new Promise((resolve) => {\n // messaging.onMessage((payload) => {\n // resolve(payload);\n // });\n // });\n};\nconst fetchRemoteConfig = async () => {\n try {\n await remoteConfig.fetchAndActivate();\n console.log('Remote config activated successfully');\n } catch (error) {\n console.error('Error fetching and activating remote config:', error);\n }\n};\n\nconst getConfigValue = key => {\n return remoteConfig.getValue(key).asString();\n};\n\nexport {\n firebase,\n privateChatDB,\n classroomChatDB,\n firebaseAuth,\n firebaseAnalytics,\n messaging,\n getTokenFirebase,\n onMessageListener,\n isNotifSupported,\n fetchRemoteConfig,\n getConfigValue,\n};\n","import { clearCookies } from 'configs/cookies';\nimport { firebaseAnalytics } from 'configs/firebase';\nimport { USER_ROLE } from 'helpers/switchRole';\nimport { authService, userService } from 'services';\nimport { resetNotifications } from 'store/notification/notification.action';\nimport { resetPreferences } from 'store/preferences/preferences.action';\nimport { isPhoneByU } from 'helpers/helperPhone';\nimport {\n signInStart,\n setCurrentUser,\n signInFailed,\n signInSuccess,\n signOutFailed,\n signOutStart,\n signOutSuccess,\n} from './user.action';\nimport { resetChats } from 'store/chat/chat.action';\n\n/**\n * Used to set user data\n * @returns void\n */\nexport const setCurrentUserAsync = () => async dispatch => {\n try {\n let phoneEncrypted = '';\n const { user, userRole } = await userService.getProfile();\n if (isPhoneByU(user.phone)) {\n const { encrypted } = await userService.getPhoneEncrypted();\n phoneEncrypted = encrypted;\n }\n dispatch(setCurrentUser({ user: { ...user, encrypted: phoneEncrypted }, userRole }));\n } catch (error) {}\n};\n\n/**\n * Used to check user session and set user data when first time app load\n * @returns void\n */\nexport const checkUserSessionAsync = () => async dispatch => {\n try {\n const { user, userRole } = await userService.checkUserSession();\n dispatch(signInSuccess({ user, userRole }));\n } catch (_error) {\n // in check session, we don't show any error message to user in case session was expired, just clear cookies & redirect to login again\n clearCookies();\n dispatch(signInFailed({ signInType: null, message: null }));\n }\n};\n\n/**\n * Sign in\n * @param {object} param\n * @param {string} param.token\n * @param {'google' | 'facebook'} param.provider\n * @param {string} param.role\n * @param {'general' | 'google' | 'facebook'} param.signInType\n * @returns {void}\n */\nexport const signInWithGoogleAsync =\n ({ token, provider, role, signInType }) =>\n async dispatch => {\n dispatch(signInStart(signInType));\n try {\n const { user, userRole } = await authService.loginWithSocialMedia({\n token,\n user_type: role,\n provider: provider,\n });\n\n firebaseAnalytics.setUserProperties({ stakeholder: role });\n firebaseAnalytics.logEvent('login', { method: signInType });\n\n dispatch(signInSuccess({ user, userRole }));\n } catch (error) {\n dispatch(signInFailed({ signInType, message: error.message }));\n }\n };\n\n/**\n * Sign in\n * @param {object} param\n * @param {string} param.username\n * @param {string} param.password\n * @param {string} param.role\n * @param {'general' | 'google' | 'facebook'} param.signInType\n * @returns {void}\n */\nexport const signInAsync =\n ({ username, password, role, signInType }) =>\n async dispatch => {\n dispatch(signInStart(signInType));\n try {\n const { key: client_secret, id: client_id } = USER_ROLE[role];\n\n const { user, userRole } = await authService.login({\n client_id,\n client_secret,\n username,\n password,\n });\n\n firebaseAnalytics.setUserProperties({ stakeholder: role });\n firebaseAnalytics.logEvent('login', { method: signInType });\n\n dispatch(signInSuccess({ user, userRole }));\n } catch (error) {\n dispatch(signInFailed({ signInType, message: error.message }));\n }\n };\n\nexport const signOutAsync = () => async dispatch => {\n dispatch(signOutStart());\n try {\n await authService.logout();\n dispatch(resetNotifications());\n dispatch(resetPreferences());\n dispatch(resetChats());\n dispatch(signOutSuccess());\n } catch (error) {\n dispatch(signOutFailed(error.message));\n }\n};\n","const NOTIFICATION_ACTION_TYPES = {\n GET_NOTIFICATIONS_START: 'notification/GET_NOTIFICATIONS_START',\n GET_NOTIFICATIONS_SUCCESS: 'notification/GET_NOTIFICATIONS_SUCCESS',\n GET_NOTIFICATIONS_FAILED: 'notification/GET_NOTIFICATIONS_FAILED',\n RESET_NOTIFICATIONS: 'notification/RESET_NOTIFICATIONS',\n};\n\nexport default NOTIFICATION_ACTION_TYPES;\n","const CHAT_ACTION_TYPES = {\n GET_CHATS_START: 'chat/GET_CHATS_START',\n GET_CHATS_SUCCESS: 'chat/GET_CHATS_SUCCESS',\n GET_CHATS_FAILED: 'chat/GET_CHATS_FAILED',\n RESET_CHATS: 'chat/RESET_CHATS',\n};\n\nexport default CHAT_ACTION_TYPES;\n","import axios from 'axios';\nimport { refreshAuthToken } from 'services/auth.services';\nimport { createAxiosRefreshInterceptor } from 'utils/axios/refresh-interceptor.utils';\nimport { clearCookies, getAccessToken } from './cookies';\nimport store from '../store/store';\n\nconst API_URL = process.env.REACT_APP_API_URL; // change this using redux host\nconst API_CHAT_URL = process.env.REACT_APP_API_CHAT_URL; // change this using redux host\n\nexport const axiosPublic = axios.create({\n baseURL: API_URL,\n responseType: 'json',\n});\n\nexport const axiosPrivate = axios.create({\n baseURL: API_URL,\n responseType: 'json',\n});\n\naxiosPublic.interceptors.request.use(\n config => {\n const { host } = store.getState().host;\n const { base_url } = host;\n config.baseURL = base_url || API_URL; // needfallback\n return config;\n },\n error => {\n return Promise.reject(error);\n },\n);\n\naxiosPrivate.interceptors.request.use(\n config => {\n const accessToken = getAccessToken();\n config.headers['Authorization'] = `Bearer ${accessToken}`;\n const { host } = store.getState().host;\n const { base_url, chat_url } = host;\n config.baseURL = base_url || API_URL; // needfallback\n const isChat = config.isChat || false;\n if (isChat) {\n config.baseURL = chat_url || API_CHAT_URL;\n }\n\n return config;\n },\n error => {\n return Promise.reject(error);\n },\n);\n\ncreateAxiosRefreshInterceptor(axiosPrivate, refreshAuthToken, {\n retryInstance: axiosPublic,\n onRefreshTokenFailed: error => {\n if (error.response) {\n clearCookies();\n window.location.reload();\n }\n },\n});\n","/**\n *\n * @param {AxiosInstance} axiosInstance - Axios instance that will be used to attach interceptor\n * @param {Function} refreshTokenLogic - Async Function that will be used to refresh token & return new access token\n * @param {object} options\n * @param {AxiosInstance} options.retryInstance - Axios instance that will be used to retry 401 response in queue. It should be another axios instance, do not use the same instance as axiosInstance, it will cause infinity loop\n * @param {number[]=} options.retryStatus - Http status code that will trigger refresh token logic.\n * @param {Function=} options.onRefreshTokenFailed - Use to handle error in refresh token\n * @return {number} interceptor id\n */\nexport const createAxiosRefreshInterceptor = (axiosInstance, refreshTokenLogic, options) => {\n const { retryInstance, retryStatus = [], onRefreshTokenFailed } = options;\n\n const _retryStatus = [401, ...retryStatus];\n\n let _isRefreshing = false;\n let _failedQueue = [];\n\n const _subscribeTokenRefresh = cb => {\n _failedQueue.push(cb);\n };\n\n const _onRefreshed = token => {\n _failedQueue.forEach(cb => cb(token));\n };\n\n return axiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const { config, response } = error;\n const originalRequest = config;\n\n if (response && _retryStatus.includes(response.status)) {\n const retryOrigReq = new Promise(resolve => {\n _subscribeTokenRefresh(token => {\n // replace the expired token and retry\n // bugs on axios, so we need to spread the header first\n originalRequest.headers = { ...originalRequest.headers };\n originalRequest.headers['Authorization'] = `Bearer ${token}`;\n resolve(retryInstance(originalRequest));\n });\n });\n\n if (!_isRefreshing) {\n _isRefreshing = true;\n\n try {\n const newAccessToken = await refreshTokenLogic();\n _isRefreshing = false;\n _onRefreshed(newAccessToken);\n _failedQueue = [];\n } catch (_error) {\n _isRefreshing = false;\n _failedQueue = [];\n if (!onRefreshTokenFailed) return Promise.reject(_error);\n\n return onRefreshTokenFailed(_error);\n }\n }\n\n return retryOrigReq;\n }\n\n return Promise.reject(error);\n },\n );\n};\n","import { axiosPrivate } from 'configs/axios-instance.configs';\nimport { getError } from 'utils/service/service.utils';\nimport { getUserProperty } from './contracts/user.contract';\n\nconst attitudeNoteService = {\n /**\n * @param {Number} user_id - student id(if parent)\n * @returns Promise\n */\n async getSchoolYearActive(user_id) {\n return new Promise(async (resolve, reject) => {\n try {\n const url = 'v1/tahun_ajaran/active';\n const response = await axiosPrivate.get(url, { params: { user_id } });\n\n resolve(response);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n\n /**\n * @param {Number} school_id - for role parent\n * @returns Promise\n */\n async getSchoolSubjects(school_id) {\n return new Promise(async (resolve, reject) => {\n try {\n const url = 'v1/teacher/subjects';\n const response = await axiosPrivate.get(url, { params: { school_id } });\n\n resolve(response);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n\n /**\n * @param {Object} param\n * @param {String} param.q\n * @param {Number} param.per_page\n * @param {Number} param.page\n * @returns Promise\n */\n async getSchoolClassStudent({ q, per_page, page }) {\n return new Promise(async (resolve, reject) => {\n try {\n const url = `/v1/teacher/school/class`;\n const response = await axiosPrivate.get(url, { params: { q, per_page, page } });\n resolve(response);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n\n /**\n * @param {Object} param\n * @param {String} param.q\n * @param {Number} param.per_page\n * @param {Number} param.page\n * @param {Number} param.class_id\n * @returns Promise\n */\n async getSchoolStudent({ q, per_page, page, class_id }) {\n return new Promise(async (resolve, reject) => {\n try {\n const url = `/v1/teacher/school/class/${class_id}/student`;\n const response = await axiosPrivate.get(url, { params: { q, per_page, page, class_id } });\n\n resolve(response);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n\n /**\n * @param {Object} dataObject\n * @returns Promise\n */\n async createNote(dataObject) {\n return new Promise(async (resolve, reject) => {\n try {\n const formData = new FormData();\n for (let key in dataObject) {\n if (dataObject[key] !== '' || dataObject[key] !== null) {\n formData.append(key, dataObject[key]);\n }\n }\n\n const url = `/v1/teacher/attitude_notes`;\n const response = await axiosPrivate.post(url, formData);\n\n resolve(response);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n\n /**\n *\n * @param {Object} param\n * @param {Number} param.tahun_ajaran_id\n * @param {Number} param.semester\n * @param {Number} param.subject_id\n * @param {Number} param.noteId\n * @param {Number} param.user_id\n * @returns Promise\n */\n async getNote({\n tahun_ajaran_id = null,\n semester = 1,\n subject_id = null,\n noteId = null,\n user_id = null,\n }) {\n return new Promise(async (resolve, reject) => {\n try {\n let url = '';\n const { accessRoleApiUrlPrefix: prefix } = getUserProperty();\n const config = {};\n\n if (!noteId) {\n config.params = { tahun_ajaran_id, semester, subject_id, user_id };\n url = `/v1/${prefix}/attitude_notes`;\n } else {\n url = `/v1/${prefix}/attitude_notes/${noteId}`;\n }\n\n const response = await axiosPrivate.get(url, config);\n resolve(response);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n\n /**\n *\n * @param {Number} tahun_ajaran_id\n * @param {Number} semester\n * @param {Number} user_id\n * @returns Promise\n */\n async getNoteSubjectList(tahun_ajaran_id, semester, user_id) {\n return new Promise(async (resolve, reject) => {\n try {\n const { accessRoleApiUrlPrefix: prefix } = getUserProperty();\n\n const url = `/v1/${prefix}/attitude_notes/subject`;\n const response = await axiosPrivate.get(url, {\n params: {\n tahun_ajaran_id,\n semester,\n user_id,\n },\n });\n resolve(response);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n /**\n *\n * @param {Object} dataObject\n * @param {Number} noteId\n * @returns Promise\n */\n async updateNote(dataObject, noteId) {\n return new Promise(async (resolve, reject) => {\n try {\n const formData = new FormData();\n\n const allowedData = [\n 'type',\n 'instrument',\n 'grade',\n 'description',\n 'follow_up_desc',\n 'send_notif',\n ];\n\n for (let key in dataObject) {\n if (dataObject[key] && allowedData.includes(key)) {\n formData.append(key, dataObject[key]);\n }\n }\n\n const url = `/v1/teacher/attitude_notes/${noteId}`;\n const response = await axiosPrivate.post(url, formData);\n resolve(response);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n\n /**\n *\n * @param {Number} noteId\n * @returns Promise\n */\n async removeNote(noteId) {\n return new Promise(async (resolve, reject) => {\n try {\n const url = `/v1/teacher/attitude_notes/${noteId}`;\n const response = await axiosPrivate.delete(url);\n\n resolve(response);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n\n /**\n *\n * @param {Number} tahun_ajaran_id\n * @param {Number} semester\n * @returns Promise\n */\n async printNote(tahun_ajaran_id, semester) {\n return new Promise(async (resolve, reject) => {\n try {\n const config = {\n params: { tahun_ajaran_id, semester },\n responseType: 'blob',\n };\n\n let url = `v1/teacher/attitude_notes/print`;\n const res = await axiosPrivate.get(url, config);\n resolve(res);\n } catch (error) {\n reject(getError(error));\n }\n });\n },\n};\n\nexport default attitudeNoteService;\n","import { axiosPrivate } from 'configs/axios-instance.configs';\nimport { getError } from 'utils/service/service.utils';\nimport { getUserProperty } from './contracts/user.contract';\n\nconst gradeServices = {\n /**\n * Index student\n * @param {String} class_id class id\n * @param {String} subject_id subject id\n * @param {String} format pdf, xlsx\n * @returns Promise\n */\n async printStudentGrade(class_id, subject_id, format) {\n try {\n const config = {\n params: { class_id, subject_id, format },\n };\n const url = `/v1/teacher/grade/print`;\n const response = await axiosPrivate.get(url, config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Index student\n * @param {String} user_id class id\n * @param {Object} data object fill with subject_id, items array\n * @returns Promise\n */\n async updateStudent(user_id, data) {\n try {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n },\n params: { user_id },\n };\n const url = `/v1/teacher/grade/student/${user_id}`;\n const response = await axiosPrivate.put(url, JSON.stringify(data), config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n /**\n * Index student\n * @param {String} user_id class id\n * @param {String} subject_id subject id\n * @returns Promise\n */\n\n async indexStudent(user_id, subject_id) {\n try {\n const config = {\n params: {\n user_id,\n subject_id,\n },\n };\n const url = `/v1/teacher/grade/student/${user_id}`;\n const response = await axiosPrivate.get(url, config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Index class\n * @param {String} class_id class id\n * @param {String} subject_id subject id\n * @returns Promise\n */\n\n async indexClass(class_id, subject_id) {\n try {\n const config = {\n params: {\n class_id,\n subject_id,\n },\n };\n const url = `/v1/teacher/grade/class/${class_id}`;\n const response = await axiosPrivate.get(url, config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Index subject\n * @param {String} class_id class id\n * @returns Promise\n */\n async indexSubject(class_id) {\n try {\n const config = {\n params: { class_id },\n };\n const url = `/v1/teacher/grade/subject`;\n const response = await axiosPrivate.get(url, config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Index tugasku room\n * @param {String} class_id class id\n * @returns Promise\n */\n async indexTugaskuRoom(class_id) {\n try {\n const url = `/v1/teacher/grade/tugasku-room/${class_id}`;\n const response = await axiosPrivate.get(url);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Index class task\n * @param {String} class_id class id\n * @param {String} subject_id class id\n * @returns Promise\n */\n async indexClassTask(class_id, subject_id) {\n try {\n const config = {\n params: { class_id, subject_id },\n };\n const url = `/v1/teacher/grade/class-task`;\n const response = await axiosPrivate.get(url, config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Get student index\n * @param {String} class_id class\n * @param {String} q query keyword\n * @param {String} per_page user per page limit\n * @param {String} page active page\n * @returns Promise\n */\n async getStudentIndex(class_id, q = null, per_page = 25, page = 1) {\n try {\n const config = {\n params: { q, per_page, page },\n };\n const url = `/v1/teacher/school/class/${class_id}/student`;\n const response = await axiosPrivate.get(url, config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Index grade task\n * @param {string} class_id id of class\n * @param {string} subject_id id of subject\n * @param {string} title title task\n * @returns Promise\n */\n async indexGradeTask(class_id, subject_id, title) {\n try {\n const config = {\n params: { class_id, subject_id, title },\n };\n const url = `/v1/teacher/grade/class-task-grade`;\n const response = await axiosPrivate.get(url, config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Store grade task\n * @param {Object} data object fill with class_id, subject_id, title, and grade array\n * @returns Promise\n */\n async storeGradeTask(data) {\n try {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n },\n };\n const url = `/v1/teacher/grade/class-task-grade`;\n const response = await axiosPrivate.post(url, JSON.stringify(data), config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Update grade task\n * @param {Object} data object fill with class_id, subject_id, title, and grade array\n * @returns Promise\n */\n async updateGradeTask(data) {\n try {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n },\n };\n const url = `/v1/teacher/grade/class-task-grade`;\n const response = await axiosPrivate.put(url, JSON.stringify(data), config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Index tugasku task\n * @param {string} id id of room\n * @returns Promise\n */\n async indexTugaskuTask(id) {\n try {\n const url = `/v1/teacher/grade/tugasku-task/${id}`;\n const response = await axiosPrivate.get(url);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * Index grade tugasku task\n * @param {string} type type consist quiz or task with value id\n * @returns Promise\n */\n async indexGradeTugaskuTask(type) {\n try {\n const config = {\n params: { type },\n };\n const url = `v1/teacher/grade/tugasku-grade`;\n const response = await axiosPrivate.get(url, config);\n return Promise.resolve(response);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n async getTahunAjaran(student_id) {\n try {\n const { accessRoleApiUrlPrefix: prefix } = getUserProperty();\n const config = { params: { student_id } };\n\n const url = `/v1/${prefix}/tahun_ajaran_by_siswa`;\n const res = await axiosPrivate.get(url, config);\n return Promise.resolve(res);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n *\n * @param {1 | 2} semester\n * @param {number} tahun_ajaran_id\n * @param {number} student_id\n */\n async getGrades(semester, tahun_ajaran_id, student_id = null) {\n try {\n const { accessRoleApiUrlPrefix: prefix } = getUserProperty();\n const config = { params: { semester, tahun_ajaran_id, student_id } };\n\n let url = null;\n if (prefix === 'user') url = '/v1/user/grade';\n if (prefix === 'parent' || prefix === 'teacher') {\n url = `/v1/${prefix}/student/${student_id}/grade`;\n }\n\n const res = await axiosPrivate.get(url, config);\n return Promise.resolve(res);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n *\n * @param {1 | 2} semester\n * @param {number} tahun_ajaran_id\n * @param {number} subject_id\n * @param {number} student_id\n */\n async getGradeDetail(semester, tahun_ajaran_id, subject_id, student_id = null) {\n try {\n const { accessRoleApiUrlPrefix: prefix } = getUserProperty();\n const config = { params: { semester, tahun_ajaran_id, subject_id, student_id } };\n\n let url = null;\n if (prefix === 'user') url = '/v1/user/grade/detail';\n if (prefix === 'parent' || prefix === 'teacher') {\n url = `/v1/${prefix}/student/${student_id}/grade/detail`;\n }\n\n const res = await axiosPrivate.get(url, config);\n return Promise.resolve(res);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n *\n * @param {string} q\n * @param {number} per_page\n * @param {number} page\n * @returns promise\n */\n async getClassStudent(q = null, per_page = 25, page = 1) {\n try {\n const config = { params: { q, per_page, page } };\n const url = `/v1/teacher/school/class`;\n const res = await axiosPrivate.get(url, config);\n return Promise.resolve(res);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n *\n * @param {string} q\n * @param {number} per_page\n * @param {number} page\n * @param {number} class_id require\n * @returns promise\n */\n async getStudentByClass(q = null, per_page = 25, page = 1, class_id = null) {\n try {\n const config = { params: { q, per_page, page, class_id } };\n const url = `/v1/teacher/school/class/${class_id}/student`;\n const res = await axiosPrivate.get(url, config);\n return Promise.resolve(res);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n async getStudentByClassV2({ q = null, per_page = 25, page = 1, class_id = null }) {\n try {\n const config = {\n params: { q, per_page, page, class_id },\n };\n const url = `/v1/teacher/school/class/${class_id}/student`;\n const res = await axiosPrivate.get(url, config);\n return Promise.resolve(res);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n};\n\nexport default gradeServices;\n","export const ERROR_CONSTANT = {\n REGISTER: {\n INVALID_TOKEN: 'INVALID_TOKEN',\n },\n RESET_PASSWORD: {\n INVALID_TOKEN: 'INVALID_TOKEN',\n },\n COMPLETE_DATA: {\n INVALID_TOKEN: 'INVALID_TOKEN',\n },\n EDIT_PHONE: {\n INVALID_TOKEN: 'INVALID_TOKEN',\n WARNING_TSEL_ONLY: 'WARNING_TSEL_ONLY',\n },\n CONNECT_SCHOOL: {\n WARNING_TSEL_ONLY: 'WARNING_TSEL_ONLY',\n },\n PERMIT_CHECK: {\n WARNING_DATA_EXIST: 'WARNING_DATA_EXIST',\n INVALID_REQUEST: 'INVALID_REQUEST',\n },\n};\n","import PREFERENCES_ACTION_TYPES from './preferences.types';\n\nconst INITIAL_STATE = {\n tour: {\n home: {\n isCompleted: false,\n completedType: null, // finish or skip\n },\n history: {\n isCompleted: false,\n completedType: null, // finish or skip\n },\n tugasKuHome: {\n isCompleted: false,\n completedType: null, // finish or skip\n },\n tugasKuClass: {\n isCompleted: false,\n completedType: null, // finish or skip\n },\n },\n socmedSkip: false,\n};\n\nconst preferenceReducer = (state = INITIAL_STATE, action) => {\n const { type, payload } = action;\n\n switch (type) {\n case PREFERENCES_ACTION_TYPES.SET_IS_COMPLETED_TOUR_IN_HOME:\n return {\n ...state,\n tour: {\n ...state.tour,\n home: payload,\n },\n };\n case PREFERENCES_ACTION_TYPES.SET_IS_COMPLETED_TOUR_IN_HISTORY:\n return {\n ...state,\n tour: {\n ...state.tour,\n history: payload,\n },\n };\n case PREFERENCES_ACTION_TYPES.SET_IS_COMPLETED_TOUR_IN_TUGASKU_HOME:\n return {\n ...state,\n tour: {\n ...state.tour,\n tugasKuHome: payload,\n },\n };\n case PREFERENCES_ACTION_TYPES.SET_IS_COMPLETED_TOUR_IN_TUGASKU_CLASS:\n return {\n ...state,\n tour: {\n ...state.tour,\n tugasKuClass: payload,\n },\n };\n case PREFERENCES_ACTION_TYPES.SET_PREFERENCES_FROM_LOCAL_STORAGE:\n return {\n ...state,\n ...payload,\n };\n case PREFERENCES_ACTION_TYPES.RESET_PREFERENCES:\n return { ...INITIAL_STATE };\n case PREFERENCES_ACTION_TYPES.SET_SKIP_SOCMED:\n return {\n ...state,\n ...payload,\n };\n default:\n return state;\n }\n};\n\nexport default preferenceReducer;\n","import NOTIFICATION_ACTION_TYPES from './notification.types';\n\nconst INITIAL_STATE = {\n read: [],\n unread: [],\n error: null,\n isLoading: false,\n};\n\nconst notificationReducer = (state = INITIAL_STATE, action) => {\n const { type, payload } = action;\n\n switch (type) {\n case NOTIFICATION_ACTION_TYPES.GET_NOTIFICATIONS_START:\n return { ...state, isLoading: true, error: null };\n case NOTIFICATION_ACTION_TYPES.GET_NOTIFICATIONS_SUCCESS:\n return { isLoading: false, error: null, read: payload.read, unread: payload.unread };\n case NOTIFICATION_ACTION_TYPES.GET_NOTIFICATIONS_FAILED:\n return { ...state, isLoading: false, error: payload };\n case NOTIFICATION_ACTION_TYPES.RESET_NOTIFICATIONS:\n return { ...INITIAL_STATE };\n default:\n return state;\n }\n};\n\nexport default notificationReducer;\n","import USER_ACTION_TYPES from './user.types';\n\nconst INITIAL_STATE = {\n currentUser: {},\n role: 'guest',\n isAuthLoading: true,\n isAuthenticated: false,\n error: null,\n isGeneralSignInLoading: false,\n isGoogleSignInLoading: false,\n signInError: {\n signInType: null, // general | google | facebook | null\n message: null,\n },\n isSignOutLoading: false,\n};\n\nconst userReducer = (state = INITIAL_STATE, action) => {\n const { type, payload } = action;\n\n switch (type) {\n case USER_ACTION_TYPES.SIGN_IN_START:\n return {\n ...state,\n isGeneralSignInLoading: Boolean(payload === 'general'),\n isGoogleSignInLoading: Boolean(payload === 'google'),\n signInError: { signInType: payload, message: null },\n };\n\n case USER_ACTION_TYPES.SIGN_IN_SUCCESS:\n return {\n currentUser: payload.user,\n role: payload.userRole,\n isAuthLoading: false,\n isAuthenticated: true,\n error: null,\n signInError: { signInType: null, message: null },\n isGeneralSignInLoading: false,\n isGoogleSignInLoading: false,\n };\n\n case USER_ACTION_TYPES.SIGN_IN_FAILED:\n return {\n ...INITIAL_STATE,\n isAuthLoading: false,\n signInError: payload,\n };\n\n case USER_ACTION_TYPES.SIGN_OUT_START:\n return {\n ...state,\n isSignOutLoading: true,\n error: null,\n };\n\n case USER_ACTION_TYPES.SIGN_OUT_SUCCESS:\n return {\n ...INITIAL_STATE,\n isAuthLoading: false,\n error: null,\n };\n\n case USER_ACTION_TYPES.SIGN_OUT_FAILED:\n return {\n ...state,\n isSignOutLoading: false,\n error: payload,\n };\n\n case USER_ACTION_TYPES.SET_CURRENT_USER:\n return {\n ...state,\n currentUser: payload.user,\n role: payload.userRole ? payload.userRole : state.role,\n };\n\n case USER_ACTION_TYPES.SET_CURRENT_USER_IMAGE:\n return {\n ...state,\n currentUser: {\n ...state.currentUser,\n image: payload,\n },\n };\n\n default:\n return state;\n }\n};\n\nexport default userReducer;\n","import RESET_PASSWORD_ACTION_TYPES from './reset-password.types';\n\nconst INITIAL_STATE = {\n phone: '',\n scrtToken: null,\n otpChannel: null,\n otpToken: null,\n};\n\nconst resetPasswordReducer = (state = INITIAL_STATE, action) => {\n const { type, payload } = action;\n\n switch (type) {\n case RESET_PASSWORD_ACTION_TYPES.SET_PHONE_NUMBER:\n return { ...state, phone: payload };\n case RESET_PASSWORD_ACTION_TYPES.SET_OTP_CHANNEL:\n return { ...state, otpChannel: payload };\n case RESET_PASSWORD_ACTION_TYPES.SET_OTP_SECRET_TOKEN:\n return { ...state, otpToken: payload };\n case RESET_PASSWORD_ACTION_TYPES.SET_SECRET_TOKEN:\n return { ...state, scrtToken: payload };\n case RESET_PASSWORD_ACTION_TYPES.RESET:\n return { ...INITIAL_STATE };\n default:\n return state;\n }\n};\n\nexport default resetPasswordReducer;\n","import CHAT_ACTION_TYPES from './chat.types';\n\nconst INITIAL_STATE = {\n chats: [],\n isHasMore: true,\n error: null,\n isLoading: false,\n isSearching: false,\n};\n\nconst chatReducer = (state = INITIAL_STATE, action) => {\n const { type, payload } = action;\n\n switch (type) {\n case CHAT_ACTION_TYPES.GET_CHATS_START:\n return { ...state, isLoading: true, error: null, isSearching: payload.isSearching };\n case CHAT_ACTION_TYPES.GET_CHATS_SUCCESS:\n return {\n isLoading: false,\n error: null,\n chats: payload.chats,\n isHasMore: payload.isHasMore,\n isSearching: false,\n };\n case CHAT_ACTION_TYPES.GET_CHATS_FAILED:\n return { ...state, isLoading: false, error: payload, isSearching: false };\n case CHAT_ACTION_TYPES.RESET_CHATS:\n return { ...INITIAL_STATE };\n default:\n return state;\n }\n};\n\nexport default chatReducer;\n","// src/redux/host/host.reducer.js\n\nimport { SET_HOST } from './host.action';\n\nconst initialState = {\n host: null, // Initial state is null until the host is set\n};\n\nconst hostReducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_HOST:\n return {\n ...state,\n host: action.payload,\n };\n default:\n return state;\n }\n};\n\nexport default hostReducer;\n","// src/redux/host/host.reducer.js\n\nimport { SET_MATERI, RESET, SET_NOTES, UPDATE_FILES } from './materi-module.action';\n\nconst initialState = {\n title: null,\n description: '',\n topic: null,\n classes: null,\n students: null,\n files: null,\n // schedule: null,\n links: null,\n // this is for module not tugaku module\n filesModul: [],\n};\n\nconst materiModuleReducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_MATERI:\n return {\n ...state,\n title: action.payload.title,\n description: action.payload.description,\n topic: action.payload.topic,\n classes: action.payload.classes,\n students: action.payload.students,\n files: action.payload.files,\n // schedule: action.payload.schedule,\n links: action.payload.links,\n };\n case UPDATE_FILES:\n return {\n ...state,\n files: action.payload,\n };\n case SET_NOTES:\n return {\n ...state,\n filesModul: action.payload,\n };\n case RESET:\n console.log('RESET action dispatched');\n return initialState;\n default:\n return state;\n }\n};\n\nexport default materiModuleReducer;\n","// src/redux/host/host.reducer.js\n\nimport { SET_QUESTION, RESET, SET_QUIZ, UPDATE_FILES } from './tugasku-quiz.action';\n\nconst initialState = {\n title: null,\n description: '',\n topic: null,\n classes: null,\n students: null,\n duration: null,\n question: null,\n};\n\nconst quizTugaskuReducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_QUIZ:\n return {\n ...state,\n title: action.payload.title,\n description: action.payload.description,\n topic: action.payload.topic,\n classes: action.payload.classes,\n students: action.payload.students,\n duration: action.payload.duration,\n question: action.payload.question,\n };\n // case UPDATE_QUESTION:\n // return {\n // ...state,\n // question: action.payload,\n // };\n case SET_QUESTION:\n return {\n ...state,\n question: action.payload,\n };\n case RESET:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default quizTugaskuReducer;\n","import { combineReducers } from 'redux';\nimport preferenceReducer from './preferences/preferences.reducer';\nimport notificationReducer from './notification/notification.reducer';\nimport userReducer from './user/user.reducer';\nimport resetPasswordReducer from './reset-password/reset-password.reducer';\nimport chatReducer from './chat/chat.reducer';\nimport hostReducer from './get-config-firebase/host.reducer';\nimport materiModuleReducer from './materi-module/materi-module.reducer';\nimport quizTugaskuReducer from './tugasku-quiz/tugasku-quiz.reducer';\n\nconst rootReducer = combineReducers({\n preferences: preferenceReducer,\n notification: notificationReducer,\n user: userReducer,\n resetPassword: resetPasswordReducer,\n chats: chatReducer,\n host: hostReducer,\n materiModule: materiModuleReducer,\n quizTugasku: quizTugaskuReducer,\n});\n\nexport default rootReducer;\n","// import { compose, createStore, applyMiddleware } from 'redux';\n// import logger from 'redux-logger';\n// import rootReducer from './root-reducer';\n// import thunk from 'redux-thunk';\n\n// const ENVIRONMENT = process.env.REACT_APP_ENVIRONMENT;\n\n// // enable logger if not in production mode\n// const middleWares = [ENVIRONMENT !== 'production' && logger, thunk].filter(Boolean);\n\n// // enable redux devtools if not in production mode\n// const composeEnhancer =\n// (ENVIRONMENT !== 'production' && window && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) ||\n// compose;\n\n// const composeEnhancers = composeEnhancer(applyMiddleware(...middleWares));\n\n// const store = createStore(rootReducer, composeEnhancers);\n\n// export default store;\n\n// src/redux/store.js\n\nimport { compose, createStore, applyMiddleware } from 'redux';\nimport logger from 'redux-logger';\nimport rootReducer from './root-reducer';\nimport thunk from 'redux-thunk';\nimport { persistStore, persistReducer } from 'redux-persist';\nimport storage from 'redux-persist/lib/storage';\n\nconst ENVIRONMENT = process.env.REACT_APP_ENVIRONMENT;\n\nconst persistConfig = {\n key: 'host', // Persist only the host slice\n storage,\n whitelist: ['host'], // Persist only the host reducer\n};\n\nconst persistedReducer = persistReducer(persistConfig, rootReducer);\n\nconst middleWares = [ENVIRONMENT !== 'production' && logger, thunk].filter(Boolean);\nconst composeEnhancer =\n (ENVIRONMENT !== 'production' && window && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) ||\n compose;\n\nconst store = createStore(persistedReducer, composeEnhancer(applyMiddleware(...middleWares)));\nexport const persistor = persistStore(store);\n\nexport default store;\n","import { clearCookies, setAccessRole, setAccessToken, setRefreshToken } from 'configs/cookies';\nimport { switchRoleId, USER_ROLE } from 'helpers/switchRole';\nimport { getError } from 'utils/service/service.utils';\nimport { getUserProperty } from './contracts/user.contract';\nimport { axiosPrivate, axiosPublic } from 'configs/axios-instance.configs';\nimport { ERROR_CONSTANT } from 'constant/error-code.constant';\n\nexport const refreshAuthToken = async () => {\n try {\n const { refreshToken, accessRole } = getUserProperty();\n const { id: client_id, key: client_secret } = USER_ROLE[accessRole];\n\n const formData = new FormData();\n formData.append('grant_type', 'refresh_token');\n formData.append('refresh_token', refreshToken);\n formData.append('client_id', client_id);\n formData.append('client_secret', client_secret);\n\n const { data } = await axiosPublic.post('v1/oauth/token', formData);\n const { access_token, _expires_in, refresh_token, _token_type } = data;\n\n setAccessToken(access_token);\n setRefreshToken(refresh_token);\n\n return Promise.resolve(access_token);\n } catch (error) {\n console.log('is error');\n return Promise.reject(error);\n }\n};\n\nconst AuthService = {\n /**\n *\n * @param {number} client_id\n * @param {string} client_secret\n * @param {string} username\n * @param {string} password\n * @returns\n */\n async login({ client_id, client_secret, username, password }) {\n try {\n const formData = new FormData();\n formData.append('grant_type', 'password');\n formData.append('client_id', client_id);\n formData.append('client_secret', client_secret);\n formData.append('username', username);\n formData.append('password', password);\n\n const { data } = await axiosPublic.post('v1/oauth/token', formData);\n const { access_token, _expires_in, _popup_referral, refresh_token, _token_type, user } = data;\n\n setAccessToken(access_token);\n setRefreshToken(refresh_token);\n setAccessRole(switchRoleId(user.user_type));\n\n return Promise.resolve({ user, userRole: user.user_type });\n } catch (error) {\n const { message, code, status } = getError(error);\n\n if (status === 404) return Promise.reject({ message: 'Akun tidak ditemukan!', status, code });\n if (status === 400) {\n return Promise.reject({\n message: 'Username, nomor ponsel atau password tidak benar!',\n status,\n code,\n });\n }\n return Promise.reject({ message, code, status });\n }\n },\n\n /**\n * @param {object} p\n * @param {string} p.name user name\n * @param {string} p.dob Date of Birth Ex 1996-12-02\n * @param {string} p.username\n * @param {string} p.email\n * @param {string} p.password\n * @param {string} p.password_confirmation\n * @param {string} p.phone\n * @param {string=} p.instagram_username\n * @param {string=} p.tiktok_username\n * @param {string | number=} p.user_id student id, to connect on parent register\n * @param {array=} p.interest_fields\n * @param {string} p.role student | teacher | parent\n * @param {string} p.secret_token\n * @returns\n */\n async register({\n name,\n dob,\n username,\n email,\n password,\n password_confirmation,\n phone,\n instagram_username,\n tiktok_username,\n user_id,\n interest_fields,\n role,\n secret_token,\n province,\n regency,\n district,\n edu_level,\n }) {\n try {\n const formData = new FormData();\n formData.append('name', name);\n formData.append('dob', dob);\n formData.append('username', username);\n formData.append('email', email);\n formData.append('password', password);\n formData.append('password_confirmation', password_confirmation);\n formData.append('phone', phone);\n formData.append('secret_token', secret_token);\n formData.append('province_id', province);\n formData.append('regency_id', regency);\n formData.append('district_id', district);\n edu_level && formData.append('educational_level', edu_level);\n instagram_username && formData.append('instagram_username', instagram_username);\n tiktok_username && formData.append('tiktok_username', tiktok_username);\n\n user_id && formData.append('user_id', user_id);\n interest_fields && formData.append('interest_fields', interest_fields);\n\n const prefix = USER_ROLE[role].apiUrlPrefix;\n const { data } = await axiosPublic.post(`v1/${prefix}/register`, formData);\n\n return Promise.resolve(data.data);\n } catch (error) {\n let { status, message, code } = getError(error);\n\n if (code === ERROR_CONSTANT.REGISTER.INVALID_TOKEN) {\n return Promise.reject({\n title: message,\n message: 'Silahkan ulangi proses daftar akun',\n status,\n code,\n });\n }\n\n return Promise.reject({ message, status, code });\n }\n },\n\n async logout() {\n try {\n const { accessToken, accessRoleApiUrlPrefix: prefix } = getUserProperty();\n const formData = new FormData();\n formData.append('token', accessToken);\n\n await axiosPublic.post(`v1/${prefix}/logout`, formData);\n clearCookies();\n return Promise.resolve(true);\n } catch (error) {\n return Promise.reject(getError(error));\n }\n },\n\n /**\n * @param {object} p\n * @param {string} p.name user name\n * @param {string} p.username\n * @param {string} p.email\n * @param {string} p.password\n * @param {string} p.password_confirmation\n * @param {string} p.phone\n * @param {string=} p.instagram_username\n * @param {string=} p.tiktok_username\n * @param {string} p.role student | teacher | parent\n * @param {string} p.secret_token\n */\n async complete({\n name,\n email,\n password,\n password_confirmation,\n phone,\n username,\n instagram_username,\n tiktok_username,\n role,\n secret_token,\n }) {\n try {\n const prefix = USER_ROLE[role].apiUrlPrefix;\n\n const response = await axiosPrivate.put(\n `/v1/${prefix}/register/complete`,\n JSON.stringify({\n name,\n email,\n password,\n password_confirmation,\n phone,\n username,\n instagram_username,\n tiktok_username,\n secret_token,\n }),\n {\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n );\n return Promise.resolve(response);\n } catch (error) {\n let { status, message, code } = getError(error);\n\n if (code === ERROR_CONSTANT.COMPLETE_DATA.INVALID_TOKEN) {\n return Promise.reject({\n title: message,\n message: 'Silahkan ulangi proses login dari awal',\n status,\n code,\n });\n }\n\n return Promise.reject({ message, status, code });\n }\n },\n\n /**\n * User login by social media\n * @param {String} token graph accesstoken\n * @param {String} provider provider google/facebook\n * @param {String} user_type user type student/parent/teacher\n * @returns Promise\n */\n async loginWithSocialMedia({ token, provider, user_type }) {\n try {\n const { data } = await axiosPublic.post(\n '/v1/social/login',\n JSON.stringify({ token, provider, user_type }),\n {\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n );\n\n const { access_token, refresh_token, user } = data;\n\n setAccessToken(access_token);\n setRefreshToken(refresh_token);\n setAccessRole(switchRoleId(user.user_type));\n\n return Promise.resolve({ user, userRole: user.user_type });\n } catch (error) {\n const { message, code, status } = getError(error);\n return Promise.reject({ message, code, status });\n }\n },\n};\n\nexport default AuthService;\n","const RESET_PASSWORD_ACTION_TYPES = {\n SET_PHONE_NUMBER: 'reset-password/SET_PHONE_NUMBER',\n SET_OTP_SECRET_TOKEN: 'reset-password/SET_OTP_SECRET_TOKEN',\n SET_SECRET_TOKEN: 'reset-password/SET_SECRET_TOKEN',\n SET_OTP_CHANNEL: 'reset-password/SET_OTP_CHANNEL',\n RESET: 'reset-password/RESET',\n};\n\nexport default RESET_PASSWORD_ACTION_TYPES;\n","export const SET_MATERI = 'SET_MATERI';\nexport const RESET = 'RESET';\nexport const SET_NOTES = 'SET_NOTES';\nexport const UPDATE_FILES = 'UPDATE_FILES';\n\nexport const setFormMateri = formMateri => ({\n type: SET_MATERI,\n payload: formMateri,\n});\n\nexport const setNotes = notes => ({\n type: SET_NOTES,\n payload: notes,\n});\n\nexport const setUpdateFile = files => ({\n type: UPDATE_FILES,\n payload: files,\n});\n\nexport const setResetForm = () => ({\n type: RESET,\n});\n","import { createAction } from 'utils/reducer/reducer.utils';\nimport PREFERENCES_ACTION_TYPES from './preferences.types';\n\nexport const setIsCompletedTourInHome = type =>\n createAction(PREFERENCES_ACTION_TYPES.SET_IS_COMPLETED_TOUR_IN_HOME, {\n isCompleted: true,\n completedType: type ? type : 'finish',\n });\n\nexport const setIsCompletedTourInHistory = type =>\n createAction(PREFERENCES_ACTION_TYPES.SET_IS_COMPLETED_TOUR_IN_HISTORY, {\n isCompleted: true,\n completedType: type ? type : 'finish',\n });\n\nexport const setIsCompletedTourInTugasKuHome = type =>\n createAction(PREFERENCES_ACTION_TYPES.SET_IS_COMPLETED_TOUR_IN_TUGASKU_HOME, {\n isCompleted: true,\n completedType: type ? type : 'finish',\n });\n\nexport const setIsCompletedTourInTugasKuClass = type =>\n createAction(PREFERENCES_ACTION_TYPES.SET_IS_COMPLETED_TOUR_IN_TUGASKU_CLASS, {\n isCompleted: true,\n completedType: type ? type : 'finish',\n });\n\nexport const setPreferencesFromLocalStorage = preferences =>\n createAction(PREFERENCES_ACTION_TYPES.SET_PREFERENCES_FROM_LOCAL_STORAGE, preferences);\n\nexport const resetPreferences = () =>\n createAction(PREFERENCES_ACTION_TYPES.RESET_PREFERENCES, null);\n\nexport const setSkipSocmed = payload =>\n createAction(PREFERENCES_ACTION_TYPES.SET_SKIP_SOCMED, payload);\n","import React from 'react';\nimport { Button } from 'rsuite';\nimport PropTypes from 'prop-types';\nimport { css } from 'styled-components/macro';\n\nconst PrimaryLink = css`\n border-radius: 5px;\n text-transform: uppercase;\n font-style: normal;\n font-weight: 700;\n font-size: 15px;\n text-align: center;\n\n color: #0ecab8;\n padding: 0;\n margin: 0;\n box-shadow: none;\n display: inline-block;\n height: auto;\n background: transparent;\n\n &:hover,\n &:focus,\n &:active,\n &:active:focus {\n color: #0ecab8;\n background: transparent;\n }\n\n &:disabled,\n &.rs-btn-disabled {\n opacity: 0.75;\n box-shadow: none;\n background: transparent;\n }\n`;\n\n/**\n * Custom button component using rsuite default button, ref: https://v4.rsuitejs.com/components/button\n */\nconst ButtonLinkPrimary = ({\n appearance,\n isActive,\n isBlock,\n size,\n isLoading,\n href,\n isDisabled,\n label,\n onClick,\n isRipple,\n children,\n ...rest\n}) => {\n return (\n \n {label}\n {children}\n \n );\n};\n\nButtonLinkPrimary.propTypes = {\n /**\n * A button can have a label text\n */\n label: PropTypes.string,\n /**\n * A button can have different sizes\n */\n size: PropTypes.oneOf(['lg', 'md', 'sm', 'xs']),\n /**\n * Providing a href will render an a element\n */\n href: PropTypes.string,\n /**\n * Spans the full width of the Button parent\n */\n isBlock: PropTypes.bool,\n /**\n * A button can show a loading indicator\n */\n isLoading: PropTypes.bool,\n /**\n * A button can show it is currently unable to be interacted with\n */\n isDisabled: PropTypes.bool,\n /**\n * A button can have ripple effect\n */\n isRipple: PropTypes.bool,\n /**\n * A button can handler click event\n */\n onClick: PropTypes.func,\n};\n\nButtonLinkPrimary.defaultProps = {\n label: 'simpan',\n isBlock: false,\n size: 'lg',\n isLoading: false,\n isDisabled: false,\n isRipple: true,\n};\n\nexport default ButtonLinkPrimary;\n","export default __webpack_public_path__ + \"static/media/banner_siswa.821a00df.svg\";","export default __webpack_public_path__ + \"static/media/banner_orangtua.b3f3c010.svg\";","export const SET_QUIZ = 'SET_QUIZ';\nexport const RESET = 'RESET';\nexport const SET_QUESTION = 'SET_QUESTION';\n// export const UPDATE_FILES = 'UPDATE_FILES';\n\nexport const setFormQuiz = formQuiz => ({\n type: SET_QUIZ,\n payload: formQuiz,\n});\n\nexport const setQuestion = questions => ({\n type: SET_QUESTION,\n payload: questions,\n});\n\n// export const setUpdateFile = files => ({\n// type: UPDATE_FILES,\n// payload: files,\n// });\n\nexport const setResetForm = () => ({\n type: RESET,\n});\n","export default __webpack_public_path__ + \"static/media/banner_guru.d6fd63a7.svg\";","export default __webpack_public_path__ + \"static/media/img_password.092cdd0f.svg\";"],"sourceRoot":""}