{"version":3,"sources":["variants/original/icon.png","variants/mirror/icon.png","assets/fonts/Roboto-Regular.ttf","variants/original/logo.png","variants/mirror/logo.png","web/google_translate_logo_gray.svg","web/language_feature.png","navigation/LinkingConfiguration.ts","constants/Colors.ts","components/Spinner.tsx","constants/Config.ts","state/articles/articles.state.ts","state/articles/articles.reducer.ts","state/analyses/analyses.state.ts","state/analyses/analyses.reducer.ts","state/languages/languages.state.ts","state/languages/languages.reducer.ts","state/tags/tags.reducer.ts","state/tags/tags.state.ts","state/user/user.reducer.ts","state/user/user.state.ts","api/client.ts","api/index.ts","constants/Browser.ts","utils/debounce.ts","utils/index.ts","api/user/user.query.ts","state/user/user.creators.ts","context/user.context.tsx","api/tags/tags.query.ts","state/tags/tags.creators.ts","context/content-tags.context.tsx","context/source-tags.context.tsx","context/sentiment-tags.context.tsx","api/articles/articles.query.ts","context/articles.context.tsx","state/articles/articles.creators.ts","api/analyses/analyses.query.ts","context/analyses.context.tsx","state/analyses/analyses.creators.ts","context/filters.context.tsx","screens/LoginScreen.tsx","components/TopTabNavigationBar.tsx","context/preferred-tags.context.tsx","context/scroll-to-top.context.tsx","navigation/TopTabNavigator.tsx","components/CircularProgressComponent.tsx","components/AnimatedCircularProgressComponent.tsx","components/RefreshControl.tsx","components/SentimentIcon.tsx","components/DateConverter.tsx","components/ArticleSourceIconComponent.tsx","api/languages/languages.query.ts","context/languages.context.tsx","state/languages/languages.creators.ts","api/languages/languages.types.ts","components/LanguageDropdownComponent.tsx","utils/languageSelector.ts","components/LanguageSelectorComponent.tsx","components/ArticleHeader.tsx","context/screen-size.context.tsx","components/Tile.tsx","context/unread.context.tsx","components/Themed.tsx","components/ListComponent.tsx","screens/SearchScreen.tsx","screens/FavoritesScreen.tsx","components/BottomNavigationBar.tsx","screens/ListScreen.tsx","screens/PDFReaderScreen.tsx","components/DropdownComponent.tsx","components/DropdownList.tsx","components/NavbarIconButton.tsx","components/HeaderComponent.tsx","navigation/RootNavigator.tsx","components/ProfileDeleteModal.tsx","components/ConfirmationModal.tsx","screens/SettingsScreen.tsx","screens/HelpScreen.tsx","screens/NotFoundScreen.tsx","screens/CategoriesScreen.tsx","screens/PreferredLanguageScreen.tsx","components/SnoozeModal.tsx","utils/dayjs.ts","screens/NotificationScreen.tsx","components/AnaysisTopTabNavigationBar.tsx","navigation/AnalysisTopTabNavigator.tsx","components/CommentingModal.tsx","components/AnalysisTile.tsx","components/AnalysisListComponent.tsx","screens/AnalysisFavoritesScreen.tsx","screens/AnalysisListScreen.tsx","screens/AnalysisSearchScreen.tsx","navigation/AnalysisRootNavigator.tsx","components/NewContentTagsModal.tsx","navigation/AuthNavigation.tsx","components/NewLanguageFeatureModal.tsx","navigation/index.tsx","workers/serviceWorkerRegistration.js","components/InstallPrompt.tsx","screens/InstallScreen.tsx","constants/GoogleTracker.ts","App.tsx","hooks/useCachedResources.ts","assets/fonts/Roboto-Light.ttf","assets/fonts/Roboto-Medium.ttf","web/social-media-icons sync /^/.//.*/.svg$","web/social-media-icons/facebook.svg","web/social-media-icons/instagram.svg","web/social-media-icons/linkedin.svg","web/social-media-icons/tiktok.svg","web/social-media-icons/twitter.svg","web/social-media-icons/youtube.svg"],"names":["module","exports","hasNestedRoute","route","routeName","name","state","routes","index","linking","prefixes","Linking","config","screens","Home","path","initialRouteName","Root","ArticleList","Search","Favorites","Analysis","AnalysisRoot","AnalysisList","AnalysisSearch","AnalysisFavorites","Login","Settings","PDFReader","Categories","PreferredLanguage","Notification","Help","NotFound","getStateFromPath","defaultState","unshift","includes","styles","StyleSheet","create","container","flex","justifyContent","position","left","right","top","bottom","backgroundColor","zIndex","horizontal","flexDirection","padding","Spinner","props","isLoading","View","style","ActivityIndicator","size","window","apiUrl","API_URL","googleAppId","TRACKING_ID","isMirror","appName","httpRegexp","env","initialArticleState","total","articles","articleReducer","action","type","payload","Total","Articles","error","initialAnalysesState","analyses","analysesReducer","Analyses","initialLanguageState","languages","languagesReducer","tagReducer","tags","initialTagsState","userReducer","user","BookmarkedNews","BookmarkedAnalyses","PreferredTags","DidUnsubscribe","localStorage","setItem","token","removeItem","undefined","refreshToken","userUnreadMessages","unreadAnalyses","unreadAnalysesCount","unreadArticles","unreadArticlesCount","initialUserState","Id","Name","Email","Phone","IsSnooze","SnoozeTime","getItem","client","axios","baseURL","headers","interceptors","request","use","Authorization","response","a","async","status","Promise","reject","location","href","reload","result","access_token","refresh_token","AxiosMockAdapter","delayResponse","onAny","passThrough","BrowserType","userAgent","navigator","toLowerCase","match","this","browser","Chrome","Firefox","Safari","Opera","Edge","Unknown","isStandalone","matchMedia","matches","isMobile","test","whereIsShare","isIOS","document","showIOSSafariHow2","isSupportingBrowser","hasOwnProperty","useDebounce","obj","wait","useState","setState","setDebouncedState","_val","debounce","useCallback","_","_prop","omitEmpty","value","Object","keys","reduce","object","key","isUndefiendOrNull","parts","separator","start","RegExp","end","map","part","replace","join","now","date","Date","userTimezoneOffset","getTimezoneOffset","getTime","fetchProfile","deviceId","deviceName","get","params","data","filter","t","console","fetchProfileUnreadMessages","updateReadMessages","contentIds","put","markAllRead","patch","Error","login","post","username","password","ActivationCode","Browser","refreshtoken","logout","updateProfile","updateSnooze","updateUnsubscribe","useFetchProfile","dispatch","useFetchProfileUnreadMessages","newPayload","toString","useLogout","Toast","show","text1","message","UserContext","React","createContext","setPreferredTags","setPreferredLanguage","setSnoozeTime","setDidUnsubscribe","setBookmarks","setReadMessages","setMarkAllRead","UserProvider","useReducer","useSetReadMessages","useSetMarkAllRead","useLogin","useSetPreferredTags","useSetPreferredLanguage","useSetSnoozeTime","useSetDidUnsubscribe","useSetBookmarks","useEffect","Provider","children","UserConsumer","Consumer","fetchTags","TagType","useFetchTags","tagSet","Set","tag","Value","add","values","find","ContentTagsContext","ContentTagsProvider","ContentTagsConsumer","SourceTagsContext","SourceTagsProvider","useContext","SourceTagsConsumer","SentimentTagsContext","SentimentTagsProvider","fetchArticles","Offset","Limit","ContentTag","SourceTag","SearchText","CreatedBefore","ArticleIds","fetchTranslation","initialState","refresh","setCount","setIsRefreshable","ArticlesContext","ArticlesProvider","setOffset","isRefreshable","useFetchArticles","refreshArticles","useRefreshArticles","count","fetchAnalyses","AnalysesIds","AnalysisId","Message","AnalysesContext","AnalysesProvider","useFetchAnalyses","refreshAnalyses","useRefreshAnalyses","useMessage","AnalysesConsumer","FiltersContext","FiltersProvider","FiltersConsumer","imgSrc","mirrorSrcfrom","originalSrc","LoginScreen","passwordInputRef","createRef","formState","setFormState","onFocusEmail","setOnFocusEmail","onFocusActivationCode","setOnFocusActivationCode","mainBody","ScrollView","keyboardShouldPersistTaps","contentContainerStyle","alignContent","KeyboardAvoidingView","enabled","imageWrapper","Image","source","uri","image","sectionStyle","TextInput","inputStyle","onFocus","onBlur","onChangeText","placeholder","placeholderTextColor","Colors","autoCapitalize","textContentType","keyboardType","returnKeyType","underlineColorAndroid","onSubmitEditing","current","focus","blurOnSubmit","ref","Keyboard","dismiss","secureTextEntry","Text","errorTextStyle","TouchableOpacity","buttonStyle","activeOpacity","onPress","buttonTextStyle","alignSelf","width","margin","height","alignItems","borderRadius","marginTop","marginBottom","color","fontFamily","paddingVertical","fontSize","paddingLeft","paddingRight","outlineStyle","registerTextStyle","textAlign","fontWeight","marginHorizontal","borderWidth","borderColor","text","fontDisplay","marginVertical","pressable","hidden","maxHeight","block","TopTabNavigationBar","descriptors","navigation","scrollView","useRef","widthRefFirst","widthRefLast","navPosition","setNavPosition","isFocused","setIsFocused","scrollPosition","scrollTo","x","parent","childNodes","child","parentRect","getBoundingClientRect","childRect","screenWidth","Dimensions","length","showsHorizontalScrollIndicator","decelerationRate","onScroll","event","nativeEvent","contentOffset","scrollEventThrottle","removeClippedSubviews","options","label","tabBarLabel","title","Pressable","accessibilityRole","accessibilityState","selected","accessibilityLabel","tabBarAccessibilityLabel","testID","tabBarTestID","navigationEvent","emit","target","canPreventDefault","defaultPrevented","navigate","merge","marginLeft","clientWidth","marginRight","toUpperCase","PreferredTagsContext","PreferredTagsProvider","PreferredTagsConsumer","ScrollToTopContext","ScrollToTop","ScrollToTopProvider","ScrollToTopConsumer","TopTab","createMaterialTopTabNavigator","TopTabNavigator","filteredTags","HasArticles","Navigator","tabBar","screenOptions","tabBarActiveTintColor","tabBarScrollEnabled","Screen","initialParams","Title","CircularProgressComponent","clampFill","fill","Math","min","max","centerX","centerY","radius","angleInDegrees","angleInRadians","PI","cos","y","sin","startAngle","endAngle","polarToCartesian","largeArcFlag","backgroundWidth","tintColor","tintTransparency","rotation","lineCap","fillLineCap","arcSweepAngle","childrenContainerStyle","renderCap","dashedBackground","gap","dashedTint","maxWidthCircle","sizeWithPadding","currentFillAngle","backgroundPath","circlePath","coordinate","cap","center","offset","localChildrenContainerStyle","overflow","strokeDasharrayTint","parseInt","strokeDasharrayBackground","originX","originY","d","stroke","strokeWidth","strokeLinecap","strokeDasharray","PureComponent","AnimatedProgress","Animated","createAnimatedComponent","AnimatedCircularProgressComponent","prefill","fillAnimation","onFillChange","addListener","animate","prevProps","toVal","dur","ease","toValue","duration","easing","Easing","out","useNativeDriver","delay","anim","timing","onAnimationComplete","tintColorSecondary","interpolate","inputRange","outputRange","other","animateColor","RefreshControl","refreshing","colors","progressViewOffset","titleColor","onRefresh","onRefreshRef","enabledRef","containerRef","pullPosReachedState","pullPosReachedAnimated","pullDownSwipeMargin","setValue","onPanResponderFinish","panResponder","PanResponder","onStartShouldSetPanResponder","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponder","containerDOM","findNodeHandle","scrollTop","onMoveShouldSetPanResponderCapture","onPanResponderMove","gestureState","adjustedDy","dy","newValue","floor","onPanResponderTerminationRequest","onPanResponderRelease","onPanResponderTerminate","refreshIndicatorColor","useMemo","containerStyle","overflowY","paddingTop","indicatorTransformStyle","transform","translateY","AnimatedContentContainer","WrappedComponent","displayName","WithAnimated","Component","withAnimated","childProps","newContentContainerStyle","newChildren","cloneElement","panHandlers","Sentiment","square","bad","neutral","good","active","inactive","SentimentIcon","sentimentTag","DateConverter","creationDate","convertedCreationDate","substring","round","ArticleSourceIconComponent","article","fileName","articleType","ArticleTypes","Video","VideoUrl","Facebook","LinkedIn","Twitter","Instagram","TikTok","setSource","iconSourceContainer","icon","require","socialMediaIcons","svgStyle","elevation","display","fetchLanguages","LanguagesContext","LanguagesProvider","useFetchLanguages","defaultLanguage","Code","Flag","flagSrc","statusBarHeight","StatusBar","currentHeight","ListWrapper","scrollable","LanguageDropdownComponent","forwardRef","currentRef","visible","setVisible","sourceLanguage","itemTestIDField","onChange","placeholderStyle","selectedTextStyle","itemContainerStyle","itemTextStyle","selectedTextProps","labelField","valueField","activeColor","minHeight","disable","keyboardAvoiding","inverted","renderLeftIcon","renderRightIcon","renderItem","autoScroll","showsVerticalScrollIndicator","dropdownPosition","flatListProps","confirmSelectItem","onConfirmSelectItem","itemAccessibilityLabelField","mode","refList","currentValue","setCurrentValue","listData","setListData","setPosition","keyboardHeight","setKeyboardHeight","W","H","styleContainerVertical","styleHorizontal","useImperativeHandle","open","eventOpen","close","eventClose","reorderedList","emptyCodeIndex","findIndex","item","splice","itemWithEmptyCode","matchingIndex","matchingItem","reorderList","scrollIndex","font","_measure","measureInWindow","pageX","pageY","isFull","I18nManager","isRTL","onKeyboardDidShow","e","endCoordinates","onKeyboardDidHide","susbcriptionKeyboardDidShow","susbcriptionKeyboardDidHide","remove","getValue","defaultValue","isEqual","setTimeout","scrollToIndex","animated","showOrClose","onSelect","_renderItem","isSelected","assign","_index","isGoogleTranslateElement","TouchableHighlight","accessible","underlayColor","disabled","flatten","borderBottomColor","borderBottomWidth","textItem","_renderList","isTopPosition","isInverted","_renderListHelper","FlatList","onScrollToIndexFailed","keyExtractor","_item","TouchableWithoutFeedback","flexShrink","_renderModal","styleVertical","extendHeight","Modal","transparent","statusBarTranslucent","supportedOrientations","onRequestClose","flex1","paddingBottom","fullScreen","mainWrap","onLayout","dropdown","_renderDropdown","shadowColor","shadowOffset","shadowOpacity","shadowRadius","wrapTop","writingDirection","input","paddingHorizontal","getImageUri","startsWith","LanguageSelectorComponent","initialLanguage","language","MAX_ITEM_SIZE","getFlag","targetLanguage","prev","next","viewContainer","dropdownContainerTextWrap","resizeMode","code","isSourceLanguage","textTransform","renderListItem","numberOfLines","dropdownContainer","dropdownContainerScroll","WebkitOverflowScrolling","dropdownContainerText","ArticleHeader","onLanguageChangeProp","onLanguageChange","setTitle","titleFavoriteContainer","tileTitle","iconWrapper","SourceLanguage","TargetLanguage","ContentId","ArticleId","LanguageCode","lineHeight","ScreenSizeContext","innerWidth","innerHeight","ScreenSizeProvider","setWidth","setHeight","resizeListener","useLayoutEffect","addEventListener","removeEventListener","ScreenSizeConsumer","getTranslatedURL","url","lngCode","gTranslatedURL","getArticleType","local","Tile","isUnread","pageName","tempLngCode","setTempLngCode","indexOf","isBookmarked","needTranslation","FacebookArticleUrl","LinkedInArticleUrl","TwitterArticleUrl","InstagramArticleUrl","TikTokArticleUrl","Url","openURL","opacity","pressed","maxWidth","cardContainer","borderTopLeftRadius","borderTopRightRadius","imageTopShadow","SentimentTag","favoriteIcon","imageContainer","imagePlaceholder","Thumbnail","imageShadow","playIconWrap","playIcon","cardInfoWrapper","sourceSentimentContainer","Author","subTitle","author","emptyMessageCache","UnreadContext","unreadItems","setUnreadItems","UnreadProvider","prevUnread","setPrevUnread","readItems","setReadItems","readMarked","promises","push","ContentType","all","diffArticles","difference","diffAnalyses","timer","clearTimeout","UnreadConsumer","otherProps","lightColor","darkColor","containerView","flatList","empty","URL","isScrolled","setIsScrolled","isScrollToTop","setIsScrollToTop","ListComponent","ScrollToTopC","setCreatedBefore","flatlistRef","viewabilityConfigCallbackPairs","viewabilityConfig","itemVisiblePercentThreshold","onViewableItemsChanged","info","prevScroll","changed","isViewable","prevTagsRef","comparator","diff1","differenceBy","diff2","toISOString","InnerListComponent","isRefreshing","setRefreshing","onEndReached","onEndReachedThreshold","refreshControl","ListEmptyComponent","view","SearchScreen","setSearchText","searchInput","clear","FavoritesScreen","setArticleIds","useIsFocused","bottomNavigationBar","iconWrap","checkWithRootSearchFavorites","BottomNavigationBar","setParams","ListScreen","getPDFUri","PDFReaderScreen","isPDFLoading","setPDFLoading","PDFuri","Uri","PDFJSuri","src","onLoad","DropdownComponent","borderBottomStartRadius","borderBottomEndRadius","unselected","EmptySourceTag","Type","HasAnalyses","DropdownList","setSelected","sourceTags","navbarIcons","direction","NavbarIconButton","side","i","unreadMessageCount","className","titles","iconHeaderSide","wideSide","HeaderComponent","canGoBack","SourceName","setActive","isCanGoBack","setIsCanGoBack","isPDFScreen","setIsPDFScreen","isDropdownVisible","setIsDropdownVisible","setActiveState","setIsPDFScreenState","setIsDropdownVisibleState","setIsCanGoBackState","screenOptionsHeader","goBack","narrowSide","leftHeaderSideCanGoBack","screenOptionsHeaderTitle","headerTitle","rightHeaderSideCanGoBack","minWidth","BottomTab","createBottomTabNavigator","RootNavigator","header","unmountOnBlur","component","centeredView","modalView","modalText","buttonView","buttonTextCancel","buttonTextContinue","buttonCancel","buttonContinue","ProfileDeleteModal","modalVisible","setModalVisible","question","onSubmit","canSubmit","animationType","ConfirmationModalModal","isVisible","cancelText","submitText","ConfirmationModalType","headerView","headerText","viewSplit","SettingsScreen","isConfirmationModalVisible","setIsConfirmationModalVisible","Logout","confirmationModalType","setConfirmationModalType","confirmationModalProps","MarkAllRead","deleteModalVisible","setDeleteModalVisible","isUnreadMessagesZero","setIsUnreadMessagesZero","isUnreadCountZero","JSON","version","HelpScreen","NotFoundScreen","link","linkText","switch","preferredTags","contentItem","CategoriesScreen","content","tagsLoading","onValueChange","backgroundActive","backgroundInactive","activeText","inActiveText","circleSize","barHeight","circleActiveColor","circleInActiveColor","circleBorderWidth","switchWidthMultiplier","switchLeftPx","switchRightPx","radio","PreferredLanguageScreen","isLanguageListLoading","radioButtonsData","formHorizontal","animation","initial","labelHorizontal","labelStyle","buttonInnerColor","buttonOuterColor","buttonSize","buttonOuterSize","buttonWrapStyle","snoozeOptions","SnoozeModal","setShow","snoozeTimeInSeconds","dayjs","modalTitle","borderTopWidth","borderTopColor","extend","relativeTime","utc","timezone","locale","NotificationScreen","updateSnoozeTime","snoozeTime","isSnoozed","setSnoozed","showAlert","setShowAlert","snooze","format","useFocusEffect","isValid","AnalysisTopTabNavigationBar","AnalysisTopTab","AnalysisTopTabNavigator","titleContainer","CommentingModal","id","setId","maxLength","multiline","Boolean","then","visibilityTime","catch","text2","AnalysisTile","analysis","setCommentingModalVisible","setCommentedAnalysisId","read","borderLeftColor","Content","listItemContent","listItemTitleContainer","listItemTitle","messageIcon","commentIcon","Subtitle","subtitle","dateSentimentContainer","sentimentContainer","sentimentWrapper","favoriteIconWrapper","Chevron","Source","borderRightColor","borderRightWidth","flexWrap","AnalysisListComponent","isCommentingModalVisible","commentedAnalysisId","AnalysisFavoritesScreen","initialBookmarkedAnalysesState","setAnalysesIds","AnalysisListScreen","AnalysisSearchScreen","analysisSearchInput","AnalysisRootNavigator","getDifference","currentTag","prevTag","getContentTagsFromLS","parse","setContentTagsToLS","currentContentTags","stringify","NewContentTagsModal","newContentTags","fetchedContentTags","activationText","highlight","listWrapper","persistentScrollbar","listText","RootNavigation","isReady","tagValues","newContentTagValues","concat","activateNewPreferredTags","navigationRef","mirrorSrc","NewLanguageFeatureModal","setIsVisible","head","headText","body","banner","bannerContainer","bannerPlaceholder","bannerSrc","bodyText","button","textStyle","Stack","createNativeStackNavigator","safeArea","createNavigationContainerRef","AuthNavigation","isNewContentTagsModalVisible","setIsNewContentTagsModalVisible","contentTagsDifference","setContentTagsDifference","SafeAreaView","checkedContentTagsDifference","oldContentTags","checkContentTagsWithLS","NavigationContainer","LinkingConfiguration","theme","DefaultTheme","headerShown","isLocalhost","hostname","_publicUrl","PUBLIC_URL","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","log","onUpdate","onSuccess","InstallPrompt","installDisabled","hasprompt","userInstalled","sectionTitle","preventDefault","deferredprompt","evt","prompt","userChoice","outcome","shouldShowBrowserPrompt","manifest","replaceAll","description","install","SuccessCard","card","successIcon","Divider","FailureCard","failureIcon","list","listItem","WaitCard","warningIcon","SafariHowToCard","InstallScreen","isInstalled","setIsInstalled","fullView","GoogleTracker","ReactGA","initialize","pageview","pathname","interval","App","isLoadingComplete","setLoadingComplete","SplashScreen","Font","roboto","BLOCK","Roboto_300Light","Roboto_400Regular","Roboto_500Medium","Icon","loadFont","warn","useCachedResources","oldVersion","newVersion","FingerprintJS","fp","visitorId","media","getIsInstalled","listener","origin","fetch","contentType","ready","unregister","checkValidServiceWorker","webpackContext","req","webpackContextResolve","__webpack_require__","o","resolve"],"mappings":"qtEAAAA,EAAOC,QAAU,IAA0B,kC,oBCA3CD,EAAOC,QAAU,IAA0B,kC,+/CCA3CD,EAAOC,QAAU,IAA0B,8B,oBCA3CD,EAAOC,QAAU,IAA0B,kC,oBCA3CD,EAAOC,QAAU,IAA0B,kC,oBCA3CD,EAAOC,QAAU,IAA0B,wD,oBCA3CD,EAAOC,QAAU,IAA0B,8C,yQCkBrCC,EAAiB,SAAjBA,EAAkBC,EAAeC,GACrC,GAAID,EAAME,OAASD,EAAW,OAAO,EACrC,IAAKD,EAAMG,MAAO,OAAO,EACzB,MAA8BH,EAAMG,MAA5BC,EAAR,EAAQA,OAAR,IAAgBC,MAChB,OAAON,EAAeK,OADtB,MAAwB,EAAxB,GACqCH,IAqGxBK,EAlGqC,CAClDC,SAAU,CAACC,IAAgB,MAC3BC,OAAQ,CACNC,QAAS,CACPC,KAAM,CACJC,KAAM,GACNC,iBAAkB,OAClBH,QAAS,CACPI,KAAM,CACJD,iBAAkB,cAClBH,QAAS,CACPK,YAAa,aAGjBC,OAAQ,CACNH,iBAAkB,cAClBH,QAAS,CACPK,YAAa,WAGjBE,UAAW,cAGfC,SAAU,CACRN,KAAM,WACNC,iBAAkB,eAClBH,QAAS,CACPS,aAAc,CACZN,iBAAkB,eAClBH,QAAS,CACPU,aAAc,KAGlBC,eAAgB,CACdR,iBAAkB,eAClBH,QAAS,CACPU,aAAc,WAGlBE,kBAAmB,cAGvBC,MAAO,QACPC,SAAU,WACVC,UAAW,YACXC,WAAY,aACZC,kBAAmB,oBACnBC,aAAc,eACdC,KAAM,OACNC,SAAU,MAGdC,iBApDkD,SAoDjCnB,EAAMH,GACrB,IAAMuB,EAAeD,YAAiBnB,EAAMH,GAC5C,GAA4B,MAAZuB,OAAA,EAAAA,EAAc5B,SAAU,GAAjCJ,EAAP,YACA,GAAoB,gBAAX,MAALA,OAAA,EAAAA,EAAOE,MACG,MAAZ8B,KAAc5B,OAAO6B,QAAQ,CAAE/B,KAAM,kBAChC,GAAoB,uBAAX,MAALF,OAAA,EAAAA,EAAOE,MACJ,MAAZ8B,KAAc5B,OAAO6B,QAAQ,CAAE/B,KAAM,kBAChC,GAAoB,kBAAX,MAALF,OAAA,EAAAA,EAAOE,MACJ,MAAZ8B,KAAc5B,OAAO6B,QAAQ,CAAE/B,KAAM,kBAChC,GAAoB,eAAX,MAALF,OAAA,EAAAA,EAAOE,MACJ,MAAZ8B,KAAc5B,OAAO6B,QAAQ,CAAE/B,KAAM,kBAChC,GAAoB,cAAX,MAALF,OAAA,EAAAA,EAAOE,MACJ,MAAZ8B,KAAc5B,OAAO6B,QAAQ,CAAE/B,KAAM,kBAChC,GAAI8B,EACT,GAAIjC,EAAeC,EAAO,UACxBgC,EAAa5B,OAAO,GAAK,CACvBF,KAAM,OACNC,MAAO,CAAEC,OAAQ,CAAC,CAAEF,KAAM,kBAEvB,GAAIH,EAAeC,EAAO,aAC/BgC,EAAa5B,OAAO,GAAK,CACvBF,KAAM,OACNC,MAAO,CAAEC,OAAQ,CAAC,CAAEF,KAAM,kBAEvB,GAAIH,EAAeC,EAAO,kBAC/BgC,EAAa5B,OAAO,GAAK,CACvBF,KAAM,OACNC,MAAO,CAAEC,OAAQ,CAAC,CAAEF,KAAM,0BAEvB,GAAIH,EAAeC,EAAO,qBAC/BgC,EAAa5B,OAAO,GAAK,CACvBF,KAAM,WACNC,MAAO,CAAEC,OAAQ,CAAC,CAAEF,KAAM,uBAEvB,CAAC,IAAD,EACD,SAAAF,EAAMY,OAAN,EAAYsB,SAAS,aAA8B,aAAflC,EAAME,KAC5C8B,EAAa5B,OAAO,GAAK,CAAEF,KAAM,YAEjC8B,EAAa5B,OAAO,GAAK,CAAEF,KAAM,QAIvC,OAAO8B,ICpHI,EACD,UADC,EAEF,UAFE,EAGI,UAHJ,EAII,sBAJJ,EAKH,UALG,EAMC,UAND,EAON,UAPM,EAQG,UARH,EASU,wBATV,EAUoB,wBAVpB,EAWF,U,yFCXPG,EAASC,IAAWC,OAAO,CAC/BC,UAAW,CACTC,KAAM,EACNC,eAAgB,SAChBC,SAAU,WACVC,KAAM,EACNC,MAAO,EACPC,IAAK,EACLC,OAAQ,EACRC,gBAAiB,2BACjBC,OAAQ,GAEVC,WAAY,CACVC,cAAe,MACfT,eAAgB,eAChBU,QAAS,MAQAC,EAA4C,SAACC,GAExD,OADsBA,EAAdC,UAGN,kBAACC,EAAA,EAAD,CAAMC,MAAO,CAACpB,EAAOG,UAAWH,EAAOa,aACrC,kBAACQ,EAAA,EAAD,CAAmBC,KAAK,WAHL,MC5BzBC,OAAOjD,OAASiD,OAAOjD,QAAU,GAE1B,IAAMkD,EAAYD,OAAOjD,OAAOmD,QAApB,IAgBNC,EAAW,GAAMH,OAAOjD,OAAOqD,YAE/BC,EAAWL,OAAOK,SAElBC,GAAUN,OAAOM,QAQjBC,GACX,ucAEFP,OAAOQ,IAAM,CACXP,SACAE,e,wBC1BWM,GAAsC,CACjDd,WAAW,EACXe,MAAO,EACPC,SAAU,I,qkBCTL,IAAMC,GAAiB,SAC5BnE,EACAoE,GAEA,OAAQA,EAAOC,MACb,IAAK,wBACH,OAAO,GAAP,MACKrE,GADL,IAEEiE,MAAOG,EAAOE,QAAQC,MACtBL,SAAS,GAAD,YAAMlE,EAAMkE,UAAZ,KAAyBE,EAAOE,QAAQE,aAEpD,IAAK,sBACH,OAAO,GAAP,MACKxE,GADL,IAEEyE,MAAOL,EAAOK,QAElB,IAAK,2BACH,OAAO,GAAP,MACKT,IADL,IAEEC,MAAOG,EAAOE,QAAQC,MACtBL,SAAS,KAAKE,EAAOE,QAAQE,YAEjC,IAAK,yBACH,OAAO,GAAP,MACKxE,GADL,IAEEyE,MAAOL,EAAOK,QAElB,IAAK,uBACH,OAAO,GAAP,MAAYzE,GAAZ,IAAmBkD,UAAWkB,EAAOE,UACvC,IAAK,uBACH,OAAO,GAAP,GAAYN,IACd,QACE,OAAOhE,ICzBA0E,GAAuC,CAClDxB,WAAW,EACXe,MAAO,EACPU,SAAU,I,qkBCVL,IAAMC,GAAkB,SAC7B5E,EACAoE,GAEA,OAAQA,EAAOC,MACb,IAAK,wBACH,OAAO,SACFrE,GADL,IAEEiE,MAAOG,EAAOE,QAAQC,MACtBI,SAAS,GAAD,YAAM3E,EAAM2E,UAAZ,KAAyBP,EAAOE,QAAQO,aAEpD,IAAK,sBACH,OAAO,SACF7E,GADL,IAEEyE,MAAOL,EAAOK,QAElB,IAAK,2BACH,OAAO,SACFC,IADL,IAEET,MAAOG,EAAOE,QAAQC,MACtBI,SAAS,KAAKP,EAAOE,QAAQO,YAEjC,IAAK,yBACH,OAAO,SACF7E,GADL,IAEEyE,MAAOL,EAAOK,QAElB,IAAK,qBACH,OAAO,SACFzE,GADL,IAEEyE,MAAOL,EAAOE,UAGlB,IAAK,uBACH,OAAO,SAAKtE,GAAZ,IAAmBkD,UAAWkB,EAAOE,UACvC,IAAK,uBACH,OAAO,MAAKI,IACd,QACE,OAAO1E,ICjCA8E,GAAwC,CACnD5B,WAAW,EACX6B,UAAW,I,qkBCPN,IAAMC,GAAmB,SAC9BhF,EACAoE,GAEA,OAAQA,EAAOC,MACb,IAAK,yBACH,OAAO,SACFrE,GADL,IAEE+E,UAAWX,EAAOE,UAEtB,IAAK,uBACH,OAAO,SACFtE,GADL,IAEEyE,MAAOL,EAAOK,QAElB,IAAK,wBACH,OAAO,SAAKzE,GAAZ,IAAmBkD,UAAWkB,EAAOE,UACvC,IAAK,wBACH,OAAO,MAAKQ,IACd,QACE,OAAO9E,I,qkBCpBN,IAAMiF,GAAa,SACxBjF,EACAoE,GAEA,OAAQA,EAAOC,MACb,IAAK,oBACH,OAAO,SACFrE,GADL,IAEEkF,KAAMd,EAAOE,UAEjB,IAAK,mBACH,OAAO,SAAKtE,GAAZ,IAAmBkD,UAAWkB,EAAOE,UACvC,QACE,OAAOtE,ICTAmF,GAA+B,CAC1CjC,WAAW,EACXgC,KAAM,I,qkBCLD,IAAME,GAAc,SACzBpF,EACAoE,GAEA,OAAQA,EAAOC,MACb,IAAK,uBACH,OAAO,SACFrE,GADL,IAEEqF,KAAMjB,EAAOE,UAEjB,IAAK,mBACH,OAAO,SACFtE,GADL,IAEEqF,KAAK,SACArF,EAAMqF,MADP,IAEFC,eAAgBlB,EAAOE,YAG7B,IAAK,4BACH,OAAO,SACFtE,GADL,IAEEqF,KAAK,SACArF,EAAMqF,MADP,IAEFE,mBAAoBnB,EAAOE,YAGjC,IAAK,wBACH,OAAO,SACFtE,GADL,IAEEqF,KAAK,SACArF,EAAMqF,MADP,IAEFG,cAAepB,EAAOE,YAG5B,IAAK,4BACH,OAAO,SACFtE,GADL,IAEEqF,KAAK,SACArF,EAAMqF,MADP,IAEF7D,kBAAmB4C,EAAOE,YAGhC,IAAK,qBACH,OAAO,MACFtE,GAEP,IAAK,yBACH,OAAO,SACFA,GADL,IAEEqF,KAAK,SACArF,EAAMqF,MADP,IAEFI,eAAgBrB,EAAOE,YAG7B,IAAK,YACH,OAAKF,EAAOE,SAOZoB,aAAaC,QT9DU,aS8DavB,EAAOE,SACpC,SACFtE,GADL,IAEE4F,MAAOxB,EAAOE,YATdoB,aAAaG,WTxDQ,cSyDd,SACF7F,GADL,IAEE4F,WAAOE,KASb,IAAK,oBACH,OAAK1B,EAAOE,SAOZoB,aAAaC,QT1Ea,gBS0EavB,EAAOE,SACvC,SACFtE,GADL,IAEE+F,aAAc3B,EAAOE,YATrBoB,aAAaG,WTpEW,iBSqEjB,SACF7F,GADL,IAEE+F,kBAAcD,KASpB,IAAK,YACH,OAAO,SACF9F,GADL,IAEEyE,MAAOL,EAAOE,UAGlB,IAAK,sBACH,OAAO,SAAKtE,GAAZ,IAAmBkD,UAAWkB,EAAOE,UACvC,IAAK,uCAKL,IAAK,sBACH,OAAO,SACFtE,GADL,IAEEgG,mBAAoB5B,EAAOE,UAE/B,IAAK,uBACH,OAAO,SACFtE,GADL,IAEEgG,mBAAoB,CAClBC,eAAgB,GAChBC,oBAAqB,EACrBC,eAAgB,GAChBC,oBAAqB,KAG3B,QACE,OAAOpG,ICvGAqG,GAA+B,CAC1ChB,KAAM,CACJiB,GAAI,GACJC,KAAM,GACNC,MAAO,GACPC,MAAO,GACPjB,cAAe,GACfhE,kBAAmB,UACnBkF,UAAU,EACVC,WAAY,GACZrB,eAAgB,GAChBC,mBAAoB,GACpBE,gBAAgB,GAElBO,mBAAoB,CAClBI,oBAAqB,EACrBF,oBAAqB,EACrBC,eAAgB,GAChBF,eAAgB,IAElB/C,WAAW,EACX0C,MAAOF,aAAakB,QV7BO,eU6BmB,GAC9Cb,aAAcL,aAAakB,QV5BG,kBU4B0B,I,yQC7BnD,IAAMC,GAASC,KAAM5E,OAAO,CACjC6E,QAASvD,EACTwD,QAAS,CACP,8BAA+B,IAC/B,eAAgB,mBAChB,gBAAiB,cAGrBH,GAAOI,aAAaC,QAAQC,KAAI,SAAC7G,GAC/B,IAAMsF,EAAQF,aAAakB,QXVA,cWiB3B,OANAtG,EAAO0G,Q,mWAAP,IACK1G,EAAO0G,SAERpB,IACFtF,EAAO0G,QAAQI,cAAgBxB,EAAK,UAAaA,EAAU,IAEtDtF,KAGTuG,GAAOI,aAAaI,SAASF,KAC3B,SAAOE,GAAP,SAAAC,EAAAC,OAAA,yEAAoBF,GAApB,+DACA,SAAO5C,GAAP,uBAAA6C,EAAAC,OAAA,mDACQC,EAAS/C,EAAM4C,SAAW5C,EAAM4C,SAASG,OAAS,KAClD5B,EAAQF,aAAakB,QXtBC,iBWuBtBtG,EAASmE,EAAMnE,OAEN,MAAXkH,EALN,yCAMWC,QAAQC,OAAOjD,IAN1B,UASEiB,aAAaG,WX/BY,cWgCzBH,aAAaG,WX9Be,iBWgCvBD,GAAUtF,EAZjB,wBAaIiD,OAAOoE,SAASC,KAAO,IACvBrE,OAAOoE,SAASE,SAdpB,kBAeWJ,QAAQC,OAAOjD,IAf1B,2BAAA6C,EAAA,MAkBuBvB,GAAaH,IAlBpC,YAkBQkC,EAlBR,QAoBcC,cAAiBD,EAAOE,cApBtC,wBAqBIzE,OAAOoE,SAASC,KAAO,IACvBrE,OAAOoE,SAASE,SAtBpB,kBAuBWJ,QAAQC,OAAOjD,IAvB1B,eA0BEiB,aAAaC,QXhDY,aWgDWmC,EAAOC,cAC3CrC,aAAaC,QX/Ce,gBW+CWmC,EAAOE,eAC9CzE,OAAOoE,SAASE,SA5BlB,YAAAP,EAAA,MA6ByBT,GAAOK,QAAQ5G,IA7BxC,eA6BQ+G,EA7BR,yBA8BSA,GA9BT,gEAkCyB,IAAIY,KAAiBpB,GAAQ,CAAEqB,cAAe,ICrD7DC,QAAQC,c,ICPRC,G,6BAAAA,K,gBAAAA,E,kBAAAA,E,gBAAAA,E,cAAAA,E,YAAAA,E,mBAAAA,Q,SAqDG,OA7Bb,aAAe,aACb,IAAMC,EAAYC,UAAUD,UAAUE,cAClCF,EAAUG,MAAM,0BAClBC,KAAKC,QAAUN,GAAYO,OAClBN,EAAUG,MAAM,kBACzBC,KAAKC,QAAUN,GAAYQ,QAClBP,EAAUG,MAAM,WACzBC,KAAKC,QAAUN,GAAYS,OAClBR,EAAUG,MAAM,UACzBC,KAAKC,QAAUN,GAAYU,MAClBT,EAAUG,MAAM,QACzBC,KAAKC,QAAUN,GAAYW,KAE3BN,KAAKC,QAAUN,GAAYY,QAE7BP,KAAKQ,aAAe3F,OAAO4F,WAAW,8BAA8BC,QACpEV,KAAKW,SAAW,SAASC,KAAKhB,GAC9BI,KAAKa,aAAe,OAAOD,KAAKhB,GAAa,aAAY,WACzDI,KAAKc,MACH,mBAAmBF,KAAKhB,IACvBC,UAAUD,UAAUvG,SAAS,QAAU,eAAgB0H,SAC1Df,KAAKgB,kBACHhB,KAAKC,UAAYN,GAAYS,QAAUJ,KAAKc,QAAUd,KAAKQ,aAC7DR,KAAKiB,oBACHpG,OAAOqG,eAAe,8BACrBlB,KAAKgB,mBAAqBhB,KAAKC,UAAYN,GAAYO,S,oBC9CjDiB,GAAc,WAA2C,IAA1CC,EAAyC,uDAA9B,KAAMC,EAAwB,uDAAT,IAC1D,EAA0BC,mBAASF,GAAnC,WAAO9J,EAAP,KAAciK,EAAd,KAEMC,EAAoB,SAACC,GACzBC,EAASD,IAGLC,EAAWC,sBACfC,KAAEF,UAAS,SAACG,GACVN,EAASM,KACRR,GACH,IAGF,MAAO,CAAC/J,EAAOkK,I,qkBCTV,SAASM,GAAsCC,GACpD,OAAOC,OAAOC,KAAKF,GAAOG,QAAO,SAACC,EAAQC,GACxC,OANG,SAA2BL,GAChC,YAAiB3E,IAAV2E,GAAiC,OAAVA,EAKxBM,CAAkBN,EAAMK,IAAcD,EACnC,SAAKA,GAAZ,UAAqBC,EAAML,EAAMK,OAChC,IAGE,IAAMrK,GAAO,SACbuK,GAAgD,IAA1BC,EAAyB,uDAAL,IACvCC,EAAQ,IAAIC,OAAJ,KAAgBF,EAAhB,KACRG,EAAM,IAAID,OAAJ,IAAeF,EAAf,MACZ,OAAOD,EACJK,KAAI,SAACC,GAAD,OAAWA,GAAQ,IAAIC,QAAQL,EAAO,IAAIK,QAAQH,EAAK,OAC3DI,KAAKP,IAICQ,GAAM,WAA8B,IAA7BC,EAA4B,uDAArB,IAAIC,KACvBC,EAAgD,IAA3BF,EAAKG,oBAChC,OAAO,IAAIF,KAAKD,EAAKI,UAAYF,I,qkBCd5B,SAAeG,KAAf,mBAAAzE,EAAAC,OAAA,gEAEGyE,EAAWtG,aAAakB,QhBPN,agBQlBqF,EAAavG,aAAakB,QhBNN,egBGvB,WAAAU,EAAA,MAIoBT,GAAOqF,IAAgB,eAAgB,CAC5DC,OAAQ3B,GAAU,CAChBwB,WACAC,kBAPD,cAIG5E,EAJH,kCAYEA,EAAS+E,MAZX,IAaDJ,WACAC,aACAzG,eAAgB6B,EAAS+E,KAAK5G,eAAiB,IAAI6G,QAAO,SAACC,GAAD,QAASA,KACnEhH,gBAAiB+B,EAAS+E,KAAK9G,gBAAkB,IAAI+G,QAAO,SAACC,GAAD,QAASA,KACrE/G,oBAAqB8B,EAAS+E,KAAK7G,oBAAsB,IAAI8G,QAC3D,SAACC,GAAD,QAASA,QAlBV,gCAsBHC,QAAQ9H,MAAR,MAtBG,gEA0BA,SAAe+H,KAAf,eAAAlF,EAAAC,OAAA,2EAAAD,EAAA,MAEoBT,GAAOqF,IAC5B,iCAHC,cAEG7E,EAFH,kCAMEA,EAAS+E,MANX,IAODhG,oBAAqBiB,EAAS+E,KAAKhG,qBAAuB,EAC1DF,oBAAqBmB,EAAS+E,KAAKlG,qBAAuB,EAC1DC,eAAgBkB,EAAS+E,KAAKjG,gBAAkB,GAChDF,eAAgBoB,EAAS+E,KAAKnG,gBAAkB,MAV/C,gCAaHsG,QAAQ9H,MAAR,MAbG,gEAiBA,SAAegI,GACpBC,EACAP,GAFK,SAAA7E,EAAAC,OAAA,2EAAAD,EAAA,MAKGT,GAAO8F,IAA8B,6BAArC,SACDR,GADC,IAEJO,iBAPC,sDAUHH,QAAQ9H,MAAR,MAVG,+DAcA,SAAemI,KAAf,mBAAAtF,EAAAC,OAAA,kEAAAD,EAAA,MACkBT,GAAOgG,MAC5B,+BAFG,UACCxF,EADD,gBAIDA,EAAS+E,QAAT,EAAeU,MAJd,sBAI2B,IAAIA,MAAMzF,EAAS+E,KAAKU,OAJnD,mBAKDzF,EAAS+E,QAAT,EAAe3H,MALd,sBAK2B,IAAIqI,MAAMzF,EAAS+E,KAAK3H,OALnD,gCAME4C,EAAS+E,MANX,4DAcA,SAAeW,GAAMZ,GAArB,uBAAA7E,EAAAC,OAAA,uDACCyE,EAAWtG,aAAakB,QhB7EJ,agB8EpBqF,EAAavG,aAAakB,QhB5EJ,egB0EvB,WAAAU,EAAA,MAGkBT,GAAOmG,KAAqB,aAAc,CAC/DC,SAAUd,EAAO3F,MACjB0G,SAAUf,EAAOgB,eACjB3D,MAAM,GAAI4D,GAAQ5D,MAClByC,aACAD,cARG,UAGC3E,EAHD,gBAUDA,EAAS+E,QAAT,EAAeU,MAVd,sBAU2B,IAAIA,MAAMzF,EAAS+E,KAAKU,OAVnD,mBAWDzF,EAAS+E,QAAT,EAAe3H,MAXd,sBAW2B,IAAIqI,MAAMzF,EAAS+E,KAAK3H,OAXnD,gCAYE4C,EAAS+E,MAZX,6DAeA,SAAerG,GAAasH,GAA5B,eAAA/F,EAAAC,OAAA,kEAAAD,EAAA,MACkBT,GAAOmG,KAAqB,oBAAqB,CACtEK,kBAFG,cACChG,EADD,yBAIEA,EAAS+E,MAJX,4DAOA,SAAekB,KAAf,qBAAAhG,EAAAC,OAAA,uDACCyE,EAAWtG,aAAakB,QhBnGJ,agBkGrB,WAAAU,EAAA,MAEkBT,GAAOmG,KAAsB,cAAe,CACjEhB,cAHG,UAEC3E,EAFD,gBAKDA,EAAS+E,QAAT,EAAeU,MALd,sBAK2B,IAAIA,MAAMzF,EAAS+E,KAAKU,OALnD,mBAMDzF,EAAS+E,QAAT,EAAe3H,MANd,sBAM2B,IAAIqI,MAAMzF,EAAS+E,KAAK3H,OANnD,gCAOE4C,EAAS+E,MAPX,4DAiBA,SAAemB,GAAcpB,GAA7B,iBAAA7E,EAAAC,OAAA,uDACCyE,EAAWtG,aAAakB,QhBpHJ,agBqHpBqF,EAAavG,aAAakB,QhBnHJ,egBiHvB,kBAGEC,GAAO8F,IAAoB,eAA3B,SACFR,GADE,IAELH,WACAC,iBANG,4DAcA,SAAeuB,GAAarB,GAA5B,SAAA7E,EAAAC,OAAA,2EAAAD,EAAA,MAEGT,GAAO8F,IAAoB,cAAeR,IAF7C,sDAIHI,QAAQ9H,MAAR,MAJG,+DAYA,SAAegJ,GAAkBtB,GAAjC,SAAA7E,EAAAC,OAAA,2EAAAD,EAAA,MAEGT,GAAOmG,KAAqB,mBAAoBb,IAFnD,sDAIHI,QAAQ9H,MAAR,MAJG,+DCpIA,IAAMiJ,GAAkB,SAACC,GAC9B,OAAO,0BAAArG,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAF9C,WAAAgD,EAAA,MAGmByE,MAHnB,UAGGzH,EAHH,6BAIiBwI,MAAM,gCAJvB,OAKHa,EAAS,CAAEtJ,KAAM,uBAAwBC,YAEzCqJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAP9C,kDASHiI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAV9C,mEAeIsJ,GAAgC,SAC3CD,GAEA,OAAO,4BAAArG,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAF9C,WAAAgD,EAAA,MAGmBkF,MAHnB,UAGGlI,EAHH,OAIGuJ,EAAkC,CACtCzH,qBAA4B,MAAP9B,OAAA,EAAAA,EAAS8B,sBAAuB,EACrDF,qBAA4B,MAAP5B,OAAA,EAAAA,EAAS4B,sBAAuB,EACrDC,gBAAuB,MAAP7B,OAAA,EAAAA,EAAS6B,eAAekF,KAAI,SAAC/D,GAAD,OAAOA,EAAEwG,gBAAe,GACpE7H,gBAAuB,MAAP3B,OAAA,EAAAA,EAAS2B,eAAeoF,KAAI,SAAC/D,GAAD,OAAOA,EAAEwG,gBAAe,IAEjExJ,EAVF,sBAUiBwI,MAAM,gDAVvB,OAWHa,EAAS,CACPtJ,KAAM,uCACNC,QAASuJ,IAEXF,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAf9C,kDAiBHiI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAlB9C,mEAgFIyJ,GAAY,SAACJ,GACxB,OAAO,oBAAArG,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IACjDqJ,EAAS,CAAEtJ,KAAM,YAAaC,QAAS,KAHpC,WAAAgD,EAAA,MAImBgG,MAJnB,uCAKiBR,MAAM,wBALvB,OAMHa,EAAS,CAAEtJ,KAAM,cACjBsJ,EAAS,CAAEtJ,KAAM,sBACjBsJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAR9C,kDAUHiI,QAAQ9H,MAAR,MACAuJ,IAAMC,KAAK,CACT5J,KAAM,QACN6J,MAAO,iCAETP,EAAS,CAAEtJ,KAAM,YAAaC,QAAS,KAAM6J,UAC7CR,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAhB9C,mE,qkBC9EF,IAAM8J,GAAcC,IAAMC,cAAN,SACtBjI,IADsB,IAEzB0G,MAAO,oBAAAzF,EAAAC,OAAA,sGACP+F,OAAQ,oBAAAhG,EAAAC,OAAA,sGACRwE,aAAc,oBAAAzE,EAAAC,OAAA,sGACdgH,iBAAkB,oBAAAjH,EAAAC,OAAA,sGAClBiH,qBAAsB,oBAAAlH,EAAAC,OAAA,sGACtBkH,cAAe,oBAAAnH,EAAAC,OAAA,sGACfmH,kBAAmB,oBAAApH,EAAAC,OAAA,sGACnBoH,aAAc,oBAAArH,EAAAC,OAAA,sGACdiF,2BAA4B,oBAAAlF,EAAAC,OAAA,sGAC5BqH,gBAAiB,oBAAAtH,EAAAC,OAAA,sGACjBsH,eAAgB,oBAAAvH,EAAAC,OAAA,yGAOLuH,GAAe,SAAC7L,GAC3B,MAAyB8L,qBAAW3J,GAAaiB,IAAjD,WAAO+F,EAAP,KAAauB,EAAb,KACM5B,EAAe2B,GAAgBC,GAC/BnB,EAA6BoB,GAA8BD,GAC3DiB,EDH0B,SAACjB,GACjC,OAAO,SAAOjB,EAAsBP,GAA7B,SAAA7E,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAF9C,WAAAgD,EAAA,MAGGmF,GAAmBC,EAAYP,IAHlC,OAMHwB,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAN9C,gDAQHiI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAT9C,iECEiB0K,CAAmBrB,GACrCkB,EDWyB,SAAClB,GAChC,OAAO,oBAAArG,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IACjDqJ,EAAS,CAAEtJ,KAAM,yBAHd,WAAAiD,EAAA,MAIGsF,MAJH,yBAAAtF,EAAA,MAKGsG,GAA8BD,EAA9BC,IALH,OAMHD,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAN9C,kDAQHiI,QAAQ9H,MAAR,MACAuJ,IAAMC,KAAK,CACT5J,KAAM,QACN6J,MAAO,wEAETP,EAAS,CAAEtJ,KAAM,YAAaC,QAAS,KAAe6J,UACtDR,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAd9C,kECZgB2K,CAAkBtB,GACnCZ,ED8BgB,SAACY,GACvB,OAAO,SAAOxB,GAAP,eAAA7E,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IACjDqJ,EAAS,CAAEtJ,KAAM,YAAaC,QAAS,KAHpC,WAAAgD,EAAA,MAImByF,GAAMZ,IAJzB,UAIG7H,EAJH,6BAKiBwI,MAAM,wBALvB,cAMHa,EAAS,CAAEtJ,KAAM,YAAaC,QAASA,EAAQyD,eAC/C4F,EAAS,CAAEtJ,KAAM,oBAAqBC,QAASA,EAAQ0D,gBAPpD,YAAAV,EAAA,MAQGoG,GAAgBC,EAAhBD,IARH,2BAAApG,EAAA,MASGsG,GAA8BD,EAA9BC,IATH,QAUHD,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAV9C,kDAYHiI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,cACjBsJ,EAAS,CAAEtJ,KAAM,sBACjBsJ,EAAS,CAAEtJ,KAAM,YAAaC,QAAS,KAAM6J,UAC7CR,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAhB9C,kEC/BO4K,CAASvB,GACjBL,EAASS,GAAUJ,GACnBY,EDwE2B,SAACZ,GAClC,OAAO,SAAOnI,GAAP,SAAA8B,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAF9C,WAAAgD,EAAA,MAGGiG,GAAc,CAAE/H,mBAHnB,yBAAA8B,EAAA,MAIGoG,GAAgBC,EAAhBD,IAJH,OAKHC,EAAS,CAAEtJ,KAAM,wBAAyBC,QAASkB,IACnDmI,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAN9C,kDAQHiI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAT9C,kECzEkB6K,CAAoBxB,GACvCa,EDsF+B,SAACb,GACtC,OAAO,SAAOnM,GAAP,SAAA8F,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IACjDqJ,EAAS,CACPtJ,KAAM,4BACNC,QAAS9C,IALR,WAAA8F,EAAA,MAOGiG,GAAc,CAAE/L,uBAPnB,yBAAA8F,EAAA,MAQGoG,GAAgBC,EAAhBD,IARH,OASHC,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAT9C,kDAWHiI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAZ9C,kECvFsB8K,CAAwBzB,GAC/Cc,EDuGwB,SAACd,GAC/B,OAAO,SAAOhH,GAAP,SAAAW,EAAAC,OAAA,2EAAAD,EAAA,MAEGkG,GAAa,CAAE7G,gBAFlB,OAGHgH,EAAS,CACPtJ,KAAM,qBACNC,QAASqC,IALR,+CAQH4F,QAAQ9H,MAAR,MARG,gECxGe4K,CAAiB1B,GACjCe,EDoH4B,SAACf,GACnC,OAAO,SAAOlI,GAAP,SAAA6B,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IACjDqJ,EAAS,CACPtJ,KAAM,yBACNC,QAASmB,IALR,WAAA6B,EAAA,MAOGmG,GAAkB,CAAEhI,oBAPvB,WAQCA,EARD,kCAAA6B,EAAA,MAQuByG,GAAUJ,EAAVI,IARvB,OASHJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAT9C,kDAWHiI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAZ9C,kECrHmBgL,CAAqB3B,GACzCgB,EDqIuB,SAAChB,GAC9B,OAAO,SACLrI,EACAC,GAFK,SAAA+B,EAAAC,OAAA,gEAKHoG,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IACjDqJ,EAAS,CAAEtJ,KAAM,mBAAoBC,QAASgB,IAC9CqI,EAAS,CACPtJ,KAAM,4BACNC,QAASiB,IATR,WAAA+B,EAAA,MAWGiG,GAAc,CAAEjI,iBAAgBC,wBAXnC,yBAAA+B,EAAA,MAYGoG,GAAgBC,EAAhBD,IAZH,OAaHC,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAb9C,kDAeHiI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,sBAAuBC,SAAS,IAhB9C,kECtIciL,CAAgB5B,GAQrC,OANA6B,qBAAU,WACH9J,aAAakB,QlBrEO,gBkBsEzBmF,IACAS,OACC,IAGD,kBAAC4B,GAAYqB,SAAb,CACEhF,MAAK,SACA2B,GADA,IAEHW,QACAO,SACAvB,eACAwC,mBACAC,uBACAC,gBACAC,oBACAC,eACAnC,6BACAoC,kBACAC,oBAGD5L,EAAMyM,WAKAC,GAAevB,GAAYwB,SC5FjC,SAAeC,GAAU1D,GAAzB,iBAAA7E,EAAAC,OAAA,uDACGuI,EAAY3D,EAAZ2D,QADH,WAAAxI,EAAA,MAEkBT,GAAOqF,IAAgB,YAAa,CACzDC,OAAQ3B,GAAU,CAAEsF,eAHjB,cAECzI,EAFD,yBAKEA,EAAS+E,MALX,4D,00BCJA,IAAM2D,GAAe,SAACpC,GAC3B,OAAO,SAAOxB,GAAP,yBAAA7E,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,mBAAoBC,SAAS,IACxC0L,EAAS,IAAIC,IAHhB,WAAA3I,EAAA,MAIoBuI,GAAU1D,IAJ9B,UAIG9E,EAJH,6BAKkByF,MAAM,6BALxB,OAMH,SAAgBzF,KAAhB,cAAS6I,EAAiB,SAChBC,OACNH,EAAOI,IAAIF,EAAIC,OAGb7L,EAAU,KAAI0L,EAAOK,UAAUhF,KACnC,SAACZ,GAAD,OAAWpD,EAASiJ,MAAK,SAACJ,GAAD,OAASA,EAAIC,QAAU1F,QAElDkD,EAAS,CAAEtJ,KAAM,oBAAqBC,YACtCqJ,EAAS,CAAEtJ,KAAM,mBAAoBC,SAAS,IAf3C,kDAiBHiI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,mBAAoBC,SAAS,IAlB3C,mECDIiM,GACXlC,IAAMC,cAA0BnJ,IAOrBqL,GAAsB,SAACvN,GAClC,IAAQ2C,EAAU3C,EAAV2C,MACR,EAAyBmJ,qBAAW9J,GAAYE,IAAhD,WAAOiH,EAAP,KAAauB,EAAb,KACMkC,EAAYE,GAAapC,GAM/B,OALA6B,qBAAU,WACH5J,GACLiK,EAAU,CAAEC,QAAS,cACpB,CAAClK,IAGF,kBAAC2K,GAAmBd,SAApB,CAA6BhF,MAAO2B,GACjCnJ,EAAMyM,WAKAe,GAAsBF,GAAmBX,SCtBhDc,GAAoBrC,IAAMC,cAA2B,IAO9CqC,GAAqB,SAAC1N,GACjC,IAAQ2C,EAAU3C,EAAV2C,MACR,EAAyBmJ,qBAAW9J,GAAYE,IAAhD,WAAOiH,EAAP,KAAauB,EAAb,KACMkC,EAAYE,GAAapC,GACvBtI,EAASuL,qBAAWxC,IAApB/I,KAOR,OALAmK,qBAAU,WACH5J,GACLiK,EAAU,CAAEC,QAAS,aACpB,CAAClK,EAAOP,EAAKG,cAAcgG,KAAK,OAGjC,kBAACkF,GAAkBjB,SAAnB,CAA4BhF,MAAO2B,EAAKlH,MACrCjC,EAAMyM,WAKAmB,GAAqBH,GAAkBd,SC1B9CkB,GAAuBzC,IAAMC,cAA2B,IAOjDyC,GAAwB,SAAC9N,GACpC,IAAQ2C,EAAU3C,EAAV2C,MACR,EAAyBmJ,qBAAW9J,GAAYE,IAAhD,WAAOiH,EAAP,KAAauB,EAAb,KACMkC,EAAYE,GAAapC,GAM/B,OALA6B,qBAAU,WACH5J,GACLiK,EAAU,CAAEC,QAAS,gBACpB,CAAClK,IAGF,kBAACkL,GAAqBrB,SAAtB,CAA+BhF,MAAO2B,EAAKlH,MACxCjC,EAAMyM,WAKwBoB,GAAqBlB,SCZnD,SAAeoB,GAAc7E,GAA7B,iCAAA7E,EAAAC,OAAA,uDAEH0J,EAOE9E,EAPF8E,OACAC,EAME/E,EANF+E,MACAC,EAKEhF,EALFgF,WACAC,EAIEjF,EAJFiF,UACAC,EAGElF,EAHFkF,WACAC,EAEEnF,EAFFmF,cACAC,EACEpF,EADFoF,WARG,SAWGvF,EAAWtG,aAAakB,QxBnBN,awBoBlBqF,EAAavG,aAAakB,QxBlBN,ewBMvB,WAAAU,EAAA,MAaoBT,GAAOqF,IAAmB,gBAAiB,CAChEC,OAAQ3B,GAAU,CAChByG,SACAC,QACAC,aACAC,YACAC,aACAC,gBACAC,aACAvF,WACAC,kBAvBD,cAaG5E,EAbH,yBA0BIA,EAAS+E,MA1Bb,kCA4BHG,QAAQ9H,MAAR,MA5BG,iEAyCA,SAAe+M,GAAiBrF,GAAhC,eAAA7E,EAAAC,OAAA,kEAAAD,EAAA,MACkBT,GAAOqF,IAG5B,kCAAmC,CACnCC,OAAQ3B,GAAU2B,MALf,cACC9E,EADD,yBAOEA,EAAS+E,MAPX,4D,qkBCxCP,IAAMqF,GAAY,SACbzN,IADa,IAEhB0N,QAAS,aACTC,SAAU,aACVC,iBAAkB,eAGPC,GACXxD,IAAMC,cAAoCmD,IAU/BK,GAA+C,SAAC7O,GAC3D,IACQoC,EAASuL,qBAAWxC,IAApB/I,KACR,EAA4B2E,mBAAS,GAArC,WAAOiH,EAAP,KAAec,EAAf,KACA,EAA0C/H,oBAAS,GAAnD,WAAOgI,EAAP,KAAsBJ,EAAtB,KACQR,EAAiEnO,EAAjEmO,UAAWD,EAAsDlO,EAAtDkO,WAAYE,EAA0CpO,EAA1CoO,WAAYE,EAA8BtO,EAA9BsO,WAAYD,EAAkBrO,EAAlBqO,cACvD,EAAyBvC,qBAAW5K,GAAgBH,IAApD,WAAOoI,EAAP,KAAauB,EAAb,KACMqD,ECnCwB,SAACrD,GAC/B,OAAO,SAAOxB,GAAP,eAAA7E,EAAAC,OAAA,uDACLoG,EAAS,CAAEtJ,KAAM,uBAAwBC,SAAS,IAD7C,oBAAAgD,EAAA,MAGmB0J,GAAc7E,IAHjC,UAGG7H,EAHH,6BAIiBwI,MAAM,iCAJvB,OAKHa,EAAS,CAAEtJ,KAAM,wBAAyBC,YALvC,kDAOHqJ,EAAS,CAAEtJ,KAAM,sBAAuBI,MAAM,EAAD,KAP1C,QASLkJ,EAAS,CAAEtJ,KAAM,uBAAwBC,SAAS,IAT7C,kEDkCe2N,CAAiBtE,GACjCuE,ECtB0B,SAACvE,GACjC,OAAO,SAAOxB,GAAP,eAAA7E,EAAAC,OAAA,uDACLoG,EAAS,CAAEtJ,KAAM,uBAAwBC,SAAS,IAD7C,oBAAAgD,EAAA,MAGmB0J,GAAc7E,IAHjC,UAGG7H,EAHH,6BAIiBwI,MAAM,iCAJvB,OAKHa,EAAS,CAAEtJ,KAAM,2BAA4BC,YAL1C,kDAOHqJ,EAAS,CAAEtJ,KAAM,yBAA0BI,MAAM,EAAD,KAP7C,QASLkJ,EAAS,CAAEtJ,KAAM,uBAAwBC,SAAS,IAT7C,kEDqBiB6N,CAAmBxE,GACrCgE,EAAW,SAACS,GAChBL,EAAUK,IAENV,EAAU,oBAAApK,EAAAC,OAAA,mDACT+J,EADS,oDAETU,EAFS,wDAGdL,EAAS,GAHK,WAAArK,EAAA,MAIR4K,EAAgB,CACpBjB,OAAQ,EACRC,MAjBU,GAkBVE,YACAD,aACAE,aACAC,gBACAC,gBAXY,6DAiDhB,OArBA/B,qBAAU,WACO,IAAXyB,GACJD,EAAc,CACZC,SACAC,MA3CU,GA4CVE,YACAD,aACAE,aACAC,gBACAC,iBAED,CAACN,EAlDU,KAoDdzB,qBAAU,WACRkC,MACC,CAACN,EAAWC,EAAYE,EAAYD,IAEvC9B,qBAAU,WA/BO,EAAAlI,EAAAC,OAAA,mDACV+J,EADU,wDAEfK,EAAS,GAFM,WAAArK,EAAA,MAGT4K,EAAgB,CACpBjB,OAAQ,EACRC,MA9BU,GA+BVE,YACAD,aACAE,aACAC,gBACAC,gBAVa,8DAiCd,CAAClM,EAAK7D,oBAGP,kBAACqQ,GAAgBpC,SAAjB,CACEhF,MAAK,SAAO2B,GAAP,IAAasF,UAASC,WAAUC,sBAEpC3O,EAAMyM,WAKmBmC,GAAgBjC,SE3FzC,SAAeyC,GAAclG,GAA7B,2BAAA7E,EAAAC,OAAA,uDACG0J,EACN9E,EADM8E,OAAQC,EACd/E,EADc+E,MAAOC,EACrBhF,EADqBgF,WAAYE,EACjClF,EADiCkF,WAAYC,EAC7CnF,EAD6CmF,cAAegB,EAC5DnG,EAD4DmG,YADzD,oBAAAhL,EAAA,MAIoBT,GAAOqF,IAAoB,gBAAiB,CACjEC,OAAQ3B,GAAU,CAChByG,SACAC,QACAC,aACAE,aACAC,gBACAgB,mBAXD,cAIGjL,EAJH,yBAcIA,EAAS+E,MAdb,gCAgBHG,QAAQ9H,MAAR,MAhBG,gEAyBA,SAAe0J,GAAQhC,GAAvB,mBAAA7E,EAAAC,OAAA,kEAAAD,EAAA,MACkBT,GAAOmG,KAC5B,oBACA,CACEuF,WAAYpG,EAAOoG,WACnBC,QAASrG,EAAOqG,WALf,UACCnL,EADD,gBAQDA,EAAS+E,QAAT,EAAeU,MARd,sBAQ2B,IAAIA,MAAMzF,EAAS+E,KAAKU,OARnD,mBASDzF,EAAS+E,QAAT,EAAe3H,MATd,sBAS2B,IAAIqI,MAAMzF,EAAS+E,KAAK3H,OATnD,gCAWE4C,EAAS+E,MAXX,4D,qkBCnBP,IAAMqF,GAAY,SACb/M,IADa,IAEhBgN,QAAS,aACTC,SAAU,aACVC,iBAAkB,aAClBzD,QAAS,oBAAA7G,EAAAC,OAAA,wGAGLkL,GAAkBpE,IAAMC,cAAoCmD,IASrDiB,GAA+C,SAACzP,GAC3D,IACA,EAA4B+G,mBAAS,GAArC,WAAOiH,EAAP,KAAec,EAAf,KACA,EAA0C/H,oBAAS,GAAnD,WAAOgI,EAAP,KAAsBJ,EAAtB,KACQT,EAAuDlO,EAAvDkO,WAAYE,EAA2CpO,EAA3CoO,WAAYiB,EAA+BrP,EAA/BqP,YAAahB,EAAkBrO,EAAlBqO,cAC7C,EAAyBvC,qBAAWnK,GAAiBF,IAArD,WAAO0H,EAAP,KAAauB,EAAb,KACM0E,ECjCwB,SAAC1E,GAC/B,OAAO,SAAOxB,GAAP,eAAA7E,EAAAC,OAAA,uDACLoG,EAAS,CAAEtJ,KAAM,uBAAwBC,SAAS,IAD7C,oBAAAgD,EAAA,MAGmB+K,GAAclG,IAHjC,UAGG7H,EAHH,6BAIiBwI,MAAM,iCAJvB,OAKHa,EAAS,CAAEtJ,KAAM,wBAAyBC,YALvC,kDAOHqJ,EAAS,CAAEtJ,KAAM,sBAAuBI,MAAM,EAAD,KAP1C,QASLkJ,EAAS,CAAEtJ,KAAM,uBAAwBC,SAAS,IAT7C,kEDgCeqO,CAAiBhF,GACjCiF,ECpB0B,SAACjF,GACjC,OAAO,SAAOxB,GAAP,eAAA7E,EAAAC,OAAA,uDACLoG,EAAS,CAAEtJ,KAAM,uBAAwBC,SAAS,IAD7C,oBAAAgD,EAAA,MAGmB+K,GAAclG,IAHjC,UAGG7H,EAHH,6BAIiBwI,MAAM,iCAJvB,OAKHa,EAAS,CAAEtJ,KAAM,2BAA4BC,YAL1C,kDAOHqJ,EAAS,CAAEtJ,KAAM,yBAA0BI,MAAM,EAAD,KAP7C,QASLkJ,EAAS,CAAEtJ,KAAM,uBAAwBC,SAAS,IAT7C,kEDmBiBuO,CAAmBlF,GACrCQ,ECPkB,SAACR,GACzB,OAAO,SAAOxB,GAAP,SAAA7E,EAAAC,OAAA,gEAEHoG,EAAS,CAAEtJ,KAAM,qBAAsBC,QAASwI,MAAM,MAFnD,WAAAxF,EAAA,MAGG6G,GAAQhC,IAHX,uDAKHI,QAAQ9H,MAAR,MACAkJ,EAAS,CAAEtJ,KAAM,qBAAsBC,QAAS,KAAM6J,UANnD,iEDMS2E,CAAWnF,GACrBgE,EAAW,SAACS,GAChBL,EAAUK,IAENV,EAAU,oBAAApK,EAAAC,OAAA,mDACT+J,EADS,oDAETU,EAFS,wDAGdL,EAAS,GAHK,WAAArK,EAAA,MAIRsL,EAAgB,CACpB3B,OAAQ,EACRC,MAjBU,GAkBVC,aACAE,aACAC,gBACAgB,iBAVY,6DA8BhB,OAhBA9C,qBAAU,WACO,IAAXyB,GACJoB,EAAc,CACZpB,SACAC,MA7BU,GA8BVC,aACAE,aACAC,gBACAgB,kBAED,CAACrB,EAnCU,KAqCdzB,qBAAU,WACRkC,MACC,CAACL,EAAYiB,EAAahB,IAG3B,kBAACmB,GAAgBhD,SAAjB,CACEhF,MAAK,SAAO2B,GAAP,IAAasF,UAASC,WAAUC,mBAAkBzD,aAEtDlL,EAAMyM,WAKAqD,GAAmBN,GAAgB7C,SEtF1CoD,GAAiB3E,IAAMC,cAAwB,IAWxC2E,GAAqC,SAAChQ,GACjD,IAAQmO,EAA0BnO,EAA1BmO,UAAWD,EAAelO,EAAfkO,WACnB,OACE,kBAAC6B,GAAevD,SAAhB,CAAyBhF,MAAO,CAAE2G,YAAWD,eAC1ClO,EAAMyM,WAKAwD,GAAkBF,GAAepD,S,omBCF9C,IAAMuD,GAASvP,E,QAAWwP,EAAgBC,KAE7BC,GAAiD,WAC5D,IAAMC,EAAmBC,sBACzB,EAAkCxJ,mBAAS,CACzCxD,MAAO,GACP2G,eAAgB,GAChB1I,MAAO,KAHT,WAAOgP,EAAP,KAAkBC,EAAlB,KAKA,EAAwC1J,oBAAS,GAAjD,WAAO2J,EAAP,KAAqBC,EAArB,KACA,EAA0D5J,oBAAS,GAAnE,WAAO6J,EAAP,KAA8BC,EAA9B,KAEA,OACE,kBAACnE,GAAD,MACG,gBAAG5C,EAAH,EAAGA,MAAOtI,EAAV,EAAUA,MAAOvB,EAAjB,EAAiBA,UAAjB,OACC,oCACE,kBAAC,EAAD,CAASA,UAAWA,IACpB,kBAACC,EAAA,EAAD,CAAMC,MAAOpB,GAAO+R,UAClB,kBAACC,EAAA,EAAD,CACEC,0BAA0B,UAC1BC,sBAAuB,CACrB9R,KAAM,EACNC,eAAgB,SAChB8R,aAAc,WAGhB,kBAAChR,EAAA,EAAD,KACE,kBAACiR,EAAA,EAAD,CAAsBC,SAAO,GAC3B,kBAAClR,EAAA,EAAD,CAAMC,MAAOpB,GAAOsS,cAClB,kBAACC,EAAA,EAAD,CACEC,OAAQ,CAAEC,IAAKtB,IACf/P,MAAOpB,GAAO0S,SAGlB,kBAACvR,EAAA,EAAD,CAAMC,MAAOpB,GAAO2S,cAClB,kBAACC,EAAA,EAAD,CACExR,MAAO,CACLpB,GAAO6S,WACPlB,EAAe3R,GAAO8S,QAAU9S,GAAO+S,QAEzCC,aAAc,SAACxO,GAAD,OACZkN,EAAa,SACRD,GADO,IAEVjN,YAGJyO,YAAY,eACZC,qBAAsBC,EAAoB,GAC1CC,eAAe,OACfC,gBAAgB,eAChBC,aAAa,gBACbC,cAAc,OACdC,sBAAsB,cACtBC,gBAAiB,kBACflC,EAAiBmC,SACjBnC,EAAiBmC,QAAQC,SAE3BC,cAAc,EACdd,QAAS,WACPlB,GAAgB,IAElBmB,OAAQ,WACNnB,GAAgB,OAItB,kBAACzQ,EAAA,EAAD,CAAMC,MAAOpB,GAAO2S,cAClB,kBAACC,EAAA,EAAD,CACExR,MAAO,CACLpB,GAAO6S,WACPhB,EAAwB7R,GAAO8S,QAAU9S,GAAO+S,QAElDC,aAAc,SAAC7H,GAAD,OACZuG,EAAa,SACRD,GADO,IAEVtG,qBAGJ8H,YAAY,0BACZC,qBAAsBC,EAAoB,GAC1CG,aAAa,UACbO,IAAKtC,EACLkC,gBAAiBK,IAASC,QAC1BjB,QAAS,WACPhB,GAAyB,IAE3BiB,OAAQ,WACNjB,GAAyB,IAE3B8B,cAAc,EACdI,iBAAiB,EACjBR,sBAAsB,cACtBD,cAAc,WAIhB9B,EAAUhP,OAASA,IACnB,kBAACwR,EAAA,EAAD,CAAM7S,MAAOpB,GAAOkU,gBACjBzC,EAAUhP,OAASA,GAIxB,kBAAC0R,EAAA,EAAD,CACE/S,MAAOpB,GAAOoU,YACdC,cAAe,GACfC,QAAS,WACP,IAAQ9P,EAA0BiN,EAA1BjN,MAAO2G,EAAmBsG,EAAnBtG,eACfJ,EAAM,CAAEvG,QAAO2G,qBAGjB,kBAAC8I,EAAA,EAAD,CAAM7S,MAAOpB,GAAOuU,iBAApB,6BAYdvU,GAASC,IAAWC,OAAO,CAC/B6R,SAAU,CACR3R,KAAM,EACNC,eAAgB,SAChB8R,aAAc,SACdxR,gBAAiBwS,GAEnBR,aAAc,CACZ7R,cAAe,MACf0T,UAAW,SACXC,MAAO,OACPC,OAAQ,IAEVN,YAAa,CACXK,MAAO,IACPD,UAAW,SACX7T,gBAAiBwS,EACjBwB,OAAQ,GACRC,WAAY,SACZC,aAAc,GACdC,UAAW,GACXC,aAAc,IAEhBR,gBAAiB,CACfS,MAAO7B,EACP8B,WAAY,mBACZC,gBAAiB,GACjBC,SAAU,IAEZtC,WAAY,CACVzS,KAAM,EACNuU,OAAQ,GACRK,MAAO7B,EACPiC,YAAa,GACbC,aAAc,GACdR,aAAc,IACdS,aAAc,QAEhBC,kBAAmB,CACjBP,MAAO,UACPQ,UAAW,SACXC,WAAY,OACZN,SAAU,GACVX,UAAW,SACXzT,QAAS,IAEXmT,eAAgB,CACdc,MAAO,MACPQ,UAAW,SACXL,SAAU,GACVV,MAAO,OACPD,UAAW,SACXkB,iBAAkB,IAEpB5C,QAAS,CAAE6C,YAAa,EAAGC,YAAazC,GACxCJ,OAAQ,CAAE4C,YAAa,EAAGC,YAAazC,GACvCb,aAAc,CAAEkC,UAAW,SAAUO,aAAc,IACnDrC,MAAO,CACLiC,OAAQ,OACRF,MAAO,U,sCCxLLzU,GAASC,IAAWC,OAAO,CAC/B2V,KAAM,CACJpB,MAAO,cACPD,UAAW,SACXlU,SAAU,WACV6U,SAAU,GACVW,YAAa,QACbC,eAAgB,IAElBC,UAAW,CAAE3V,eAAgB,UAC7B4V,OAAQ,CACNtB,OAAQ,EACRuB,UAAW,EACXvV,gBAAiBwS,GAEnBgD,MAAO,CACLxB,OAAQ,GACRuB,UAAW,GACXvV,gBAAiBwS,KAIRiD,GAET,SAACnV,GACH,IAAQjD,EAAmCiD,EAAnCjD,MAAOqY,EAA4BpV,EAA5BoV,YAAaC,EAAerV,EAAfqV,WACtBC,EAAaC,iBAAmB,MAChCC,EAAgBD,iBAAY,MAC5BE,EAAeF,iBAAY,MACjC,EAAsCxO,mBAAS,GAA/C,WAAO2O,EAAP,KAAoBC,EAApB,KACA,EAAkC5O,mBAAS,GAA3C,WAAO6O,EAAP,KAAkBC,EAAlB,KACIC,EAAiB,EAoBrB,OAlBAvJ,qBAAU,WAAO,IAAD,EACd,SAAA+I,EAAW7C,UAAX,EAAoBsD,SAAS,CAAEC,EAAGN,MACjC,CAACA,IAEJnJ,qBAAU,WACR,GAAI+I,EAAW7C,SAAWmD,IAAc7Y,EAAME,MAAO,CACnD,IAAMgZ,EAAUX,EAAW7C,QAAgByD,WAAW,GAChDC,EAAQF,EAAOxJ,SAAS1P,EAAME,OAC9BmZ,EAAaH,EAAOI,wBACpBC,EAAYH,EAAME,wBAClBE,EAAcC,KAAWvN,IAAI,UAAUuK,MACvCkC,EACJY,EAAUhX,KAAO8W,EAAW9W,KAAOiX,EAAc,EAAID,EAAU9C,MAAQ,EACzEmC,EAAeD,GACfG,EAAa9Y,EAAME,UAEpB,CAACF,EAAME,QAGR,kBAACiD,EAAA,EAAD,CAAMC,MAAOpD,EAAMC,OAAOyZ,QAAU,EAAI1X,GAAOiW,OAASjW,GAAOmW,OAC7D,kBAACnE,EAAA,EAAD,CACE6B,IAAK0C,EACL1V,YAAU,EACV8W,gCAAgC,EAChCC,iBAAkB,EAClBC,SAAU,SAACC,GACTf,EAAiBe,EAAMC,YAAYC,cAAcf,GAEnDgB,oBAAqB,EACrBC,uBAAqB,GAEpBla,EAAMC,OAAOoL,KACZ,SAACxL,EAA4CK,GAAgB,IAAD,IAClDia,EAAY9B,EAAYxY,EAAMiL,KAA9BqP,QACFC,OACoBtU,IAAxBqU,EAAQE,YACJF,EAAQE,iBACUvU,IAAlBqU,EAAQG,MACRH,EAAQG,MACRza,EAAME,KAEN8Y,EAAY7Y,EAAME,QAAUA,EAoBlC,OACE,kBAACqa,GAAA,EAAD,CACEC,kBAAkB,SAClBC,mBAAoB5B,EAAY,CAAE6B,UAAU,GAAS,GACrDC,mBAAoBR,EAAQS,yBAC5BC,OAAQV,EAAQW,aAChBxE,QAxBY,SAACwD,GACf,IAAMiB,EAAkBzC,EAAW0C,KAAK,CACtC3W,KAAM,WACN4W,OAAQpb,EAAMiL,IACdoQ,mBAAmB,IAErB,EAAqBpB,EAAMmB,OAAO3B,wBAA1BL,EAAR,EAAQA,EAAGxC,EAAX,EAAWA,MACL+C,EAAcC,KAAWvN,IAAI,UAAUuK,MAE7CmC,EACEG,GAAkBS,EAAc,GAAKP,EAAIxC,EAAQ,KAEnDqC,EAAa5Y,GACR2Y,GAAckC,EAAgBI,kBACjC7C,EAAW8C,SAAS,CAAErb,KAAMF,EAAME,KAAMsb,OAAO,KAW/CjY,MAAO,CACLpB,GAAOgW,UACP,CACEsD,WACY,IAAVpb,EACIuZ,KAAWvN,IAAI,UAAUuK,MAAQ,GACjC,SAAAgC,EAAc/C,cAAd,IAAuB6F,aAAc,EACrC,GACNC,YACEtb,IAAUF,EAAMC,OAAOyZ,OAAS,EAC5BD,KAAWvN,IAAI,UAAUuK,MAAQ,GACjC,SAAAiC,EAAahD,cAAb,IAAsB6F,aAAc,EACpC,KAGVzQ,IAAKjL,EAAMiL,KAEX,kBAACmL,EAAA,EAAD,CACEJ,IACY,IAAV3V,EACIuY,EACAvY,IAAUF,EAAMC,OAAOyZ,OAAS,EAChChB,EACA,KAENtV,MAAO,CACLpB,GAAO6V,KACP,CACEb,MAAO6B,EACH1D,EACAA,EACJ8B,WAAY4B,EACR,mBACA,qBAIPuB,EAAMqB,sBCvJZC,GAAuBrN,IAAMC,cAA2B,IAMxDqN,GAAiD,SAAC1Y,GAC7D,OACE,kBAAC0M,GAAD,MACG,gBAAGtK,EAAH,EAAGA,KAAH,OACC,kBAACoL,GAAD,MACG,gBAAGvL,EAAH,EAAGA,KAAH,OACC,kBAACwW,GAAqBjM,SAAtB,CACEhF,MAAOvF,EAAKmH,QAAO,SAAC6D,GAAD,OACjB7K,EAAKG,cAAczD,SAASmO,EAAIC,WAGjClN,EAAMyM,iBASRkM,GAAwBF,GAAqB9L,SCpB7CiM,GACXvN,wBALmB,CACnBwN,aAAa,IAUFC,GAAqD,SAAC,GAG5D,IAFLD,EAEI,EAFJA,YACApM,EACI,EADJA,SAEA,OACE,kBAACmM,GAAmBpM,SAApB,CAA6BhF,MAAO,CAAEqR,gBACnCpM,IAKMsM,GAAsBH,GAAmBjM,SClBhDqM,GAASC,eAEFC,GAET,SAAC,GAAyB,IAAvBtc,EAAsB,EAAtBA,MAAO6P,EAAe,EAAfA,SACZ,EAAmC7P,EAAMsM,OAAjCiF,EAAR,EAAQA,UAAW0K,EAAnB,EAAmBA,YAEnB,OACE,kBAAC,GAAD,CAAqBA,YAAaA,GAChC,kBAAC,GAAD,CAAiB1K,UAAWA,GAC1B,kBAACwK,GAAD,MACG,SAAC1W,GACA,IAAMkX,EAAelX,EAAKmH,QAAO,SAAC6D,GAAD,OAASA,EAAImM,eAC9C,OACE,kBAACJ,GAAOK,UAAR,CACEC,OAAQ,SACNtZ,GADM,OAEH,kBAAC,GAAwBA,IAC9BuZ,cAAe,CACbC,sBAAuBtH,EACvBuH,qBAAqB,IAGvB,kBAACT,GAAOU,OAAR,CACE5c,KAAK,cACL6c,cAAe,CAAExL,aACjB+I,QAAS,CACPG,MAAO,oBAGR,kBACC,kBAAC,GAAD,CAAiBlJ,UAAWA,GACzB1B,MAIN0M,EAAa/Q,KAAI,SAAC6E,GAAD,OAChB,kBAAC+L,GAAOU,OAAR,CACE7R,IAAKoF,EAAIC,MACTpQ,KAASmQ,EAAIC,MAAT,OACJgK,QAAS,CACPG,MAAOpK,EAAI2M,SAGZ,kBACC,kBAAC,GAAD,CACEzL,UAAWA,EACXD,WAAYjB,EAAIC,OAEfT,gB,mqCC3BlB,IAAMoN,GAAb,qLA2CEC,UAAY,SAACC,GAAD,OAAkBC,KAAKC,IAAI,IAAKD,KAAKE,IAAI,EAAGH,KA3C1D,+CAIE,SACEI,EACAC,EACAC,EACAC,GAEA,IAAIC,GAAmBD,EAAiB,IAAMN,KAAKQ,GAAM,IACzD,MAAO,CACLxE,EAAGmE,EAAUE,EAASL,KAAKS,IAAIF,GAC/BG,EAAGN,EAAUC,EAASL,KAAKW,IAAIJ,MAbrC,wBAiBE,SACEvE,EACA0E,EACAL,EACAO,EACAC,GAEA,IAAI5S,EAAQxC,KAAKqV,iBAAiB9E,EAAG0E,EAAGL,EAAmB,MAAXQ,GAC5C1S,EAAM1C,KAAKqV,iBAAiB9E,EAAG0E,EAAGL,EAAQO,GAC1CG,EAAeF,EAAWD,GAAc,IAAM,IAAM,IAcxD,MAbQ,CACN,IACA3S,EAAM+N,EACN/N,EAAMyS,EACN,IACAL,EACAA,EACA,EACAU,EACA,EACA5S,EAAI6N,EACJ7N,EAAIuS,GAEGnS,KAAK,OAxClB,oBA6CE,WACE,MAmBI9C,KAAKzF,MAlBPK,EADF,EACEA,KACAmT,EAFF,EAEEA,MACAwH,EAHF,EAGEA,gBAHF,IAIEC,iBAJF,MAIc,QAJd,MAKEC,wBALF,SAMExb,EANF,EAMEA,gBACAS,EAPF,EAOEA,MAPF,IAQEgb,gBARF,MAQa,GARb,MASEC,eATF,MASY,OATZ,MAUEC,mBAVF,MAUgBD,EAVhB,MAWEE,qBAXF,MAWkB,IAXlB,EAYEvB,EAZF,EAYEA,KACAtN,EAbF,EAaEA,SACA8O,EAdF,EAcEA,uBAdF,IAeEzb,eAfF,MAeY,EAfZ,OAgBE0b,UAhBF,EAiBEC,yBAjBF,MAiBqB,CAAEjI,MAAO,EAAGkI,IAAK,GAjBtC,MAkBEC,kBAlBF,MAkBe,CAAEnI,MAAO,EAAGkI,IAAK,GAlBhC,EAqBME,EAAiBZ,EACnBhB,KAAKE,IAAI1G,EAAOwH,GAChBxH,EACEqI,EAAmBxb,EAAkB,EAAIP,EAAU,EACnDua,EAAUha,EAAkB,EAAIub,EAAiB,EAAI9b,EAAU,EAE/Dgc,EAAoBR,EAAgB7V,KAAKqU,UAAUC,GAAS,IAC5DgC,EAAiBtW,KAAKuW,WAC1BH,EACAA,EACAxB,EACAa,EAAmB,EAAIY,EACvBR,GAEIU,EAAavW,KAAKuW,WACtBH,EACAA,EACAxB,EACA,EACAyB,GAEIG,EAAaxW,KAAKqV,iBACtBe,EACAA,EACAxB,EACAyB,GAEII,EAAMzW,KAAKzF,MAAMwb,UACnB/V,KAAKzF,MAAMwb,UAAU,CAAEW,OAAQF,IAC/B,KAEEG,EAAU/b,EAAmC,EAAjBub,EAE5BS,EAA2B,SAC5B,CACDhd,SAAU,WACVC,KAAMsc,EAAiB9b,EAAU,EACjCN,IAAKoc,EAAiB9b,EAAU,EAChC0T,MAAO4I,EACP1I,OAAQ0I,EACRxI,aAAcwI,EAAS,EACvBzI,WAAY,SACZvU,eAAgB,SAChBkd,SAAU,WAETf,GAGCgB,EACJZ,EAAWD,IAAM,EACbjU,OAAO2F,OAAOuO,GAAYvT,KAAI,SAACZ,GAAD,OAAWgV,SAAShV,MAClD,KAEAiV,EACJhB,EAAiBC,IAAM,EACnBjU,OAAO2F,OAAOqO,GAAkBrT,KAAI,SAACZ,GAAD,OAAWgV,SAAShV,MACxD,KAEN,OACE,kBAACtH,EAAA,EAAD,CAAMC,MAAOA,GACX,kBAAC,OAAD,CAAKqT,MAAQnT,EAAkBP,EAAS4T,OAAQrT,EAAOP,GACrD,kBAAC,KAAD,CACEqb,SAAUA,EACVuB,SAAUrc,EAAOP,GAAW,EAC5B6c,SAAUtc,EAAOP,GAAW,GAE3BJ,GACC,kBAAC,QAAD,CACEkd,EAAGb,EACHc,OAAQnd,EACRod,YAAa9B,GAAmBxH,EAChCuJ,cAAe3B,EACf4B,gBAAiBP,EACjB1C,KAAK,gBAGRA,EAAO,GACN,kBAAC,QAAD,CACE6C,EAAGZ,EACHa,OAAQ5B,EACR6B,YAAatJ,EACbuJ,cAAe1B,EACf2B,gBAAiBT,EACjBxC,KAAK,gBAGRmC,IAGJzP,GACC,kBAACvM,EAAA,EAAD,CAAMC,MAAOkc,GACT5P,EAAiBsN,SA9J/B,GAA+C3O,IAAM6R,e,ycCxBrD,IAAMC,GAAmBC,KAASC,wBAChCvD,IAqBWwD,GAAb,kCAKE,WAAYrd,GAAa,IAAD,eACtB,cAAMA,GACN,MAAwBA,EAAhBsd,eAAR,MAAkB,EAAlB,EAFsB,OAGtB,EAAKvgB,MAAQ,CACXwgB,cAAe,IAAIJ,KAASjQ,MAAMoQ,IAEhCtd,EAAMwd,cACR,EAAKzgB,MAAMwgB,cAAcE,aAAY,gBAAGjW,EAAH,EAAGA,MAAH,OACnCxH,EAAMwd,aAAahW,MARD,EAL1B,8CAkBE,WACE/B,KAAKiY,YAnBT,gCAsBE,SAAmBC,GACbA,EAAU5D,OAAStU,KAAKzF,MAAM+Z,MAChCtU,KAAKiY,YAxBX,uBA4BE,SACEJ,EACAM,EACAC,EACAC,GACC,IAAD,OACArY,KAAKuB,SACH,CACEuW,cAAe,IAAIJ,KAASjQ,MAAMoQ,KAEpC,kBAAM,EAAKI,QAAQE,EAAOC,EAAKC,QAtCrC,qBA0CE,WAIG,IAHDF,EAGA,uDAHgBnY,KAAKzF,MAAM+Z,KAC3B8D,EAEA,uCADAC,EACA,uCACMC,EAAUH,GAAS,EAAIA,EAAQnY,KAAKzF,MAAM+Z,KAC1CiE,EAAWH,GAAOpY,KAAKzF,MAAMge,SAC7BC,EAASH,GAAQrY,KAAKzF,MAAMie,QAAUC,KAAOC,IAAID,KAAOJ,MACxDM,EAAkB3Y,KAAKzF,MAAMoe,kBAAmB,EAChDC,EAAQ5Y,KAAKzF,MAAMqe,MAEnBC,EAAOnB,KAASoB,OAAO9Y,KAAK1I,MAAMwgB,cAAe,CACrDa,kBACAL,UACAE,SACAD,WACAK,UAIF,OAFAC,EAAKrW,MAAMxC,KAAKzF,MAAMwe,qBAEfF,IA9DX,0BAiEE,WACE,MAAoD7Y,KAAKzF,MAAzD,IAAQib,iBAAR,MAAoB,QAApB,EAA6BwD,EAA7B,EAA6BA,mBAC7B,OAAKA,EAIiBhZ,KAAK1I,MAAMwgB,cAAcmB,YAAY,CACzDC,WAAY,CAAC,EAAG,KAChBC,YAAa,CAAC3D,EAAWwD,KALlBxD,IApEb,oBA+EE,WACE,MAAoCxV,KAAKzF,MAAf6e,GAA1B,EAAQ9E,KAAR,EAAcuD,QAAd,YAEA,OACE,kBAACJ,GAAD,QACM2B,EADN,CAEExe,KAAMoF,KAAKzF,MAAMK,KACjBmT,MAAO/N,KAAKzF,MAAMwT,MAClBuG,KAAMtU,KAAK1I,MAAMwgB,cACjBtC,UAAWxV,KAAKqZ,sBAxFxB,GAAuD1T,IAAM6R,e,mbCJtD,IAAM8B,GAA2C,SAAC,GAYlD,IAXLC,EAWI,EAXJA,WACA/D,EAUI,EAVJA,UACAgE,EASI,EATJA,OACA9e,EAQI,EARJA,MACA+e,EAOI,EAPJA,mBACAzS,EAMI,EANJA,SACApM,EAKI,EALJA,KACAgX,EAII,EAJJA,MACA8H,EAGI,EAHJA,WACAC,EAEI,EAFJA,UACAhO,EACI,EADJA,QAEMiO,EAAe9J,iBAAO6J,GAC5B7S,qBAAU,WACR8S,EAAa5M,QAAU2M,IACtB,CAACA,IACJ,IAAME,EAAa/J,iBAAOnE,GAC1B7E,qBAAU,WACR+S,EAAW7M,QAAUrB,IACpB,CAACA,IAEJ,IAAMmO,EAAehK,mBACfiK,EAAsBjK,iBAAO,GAC7BkK,EAAyBlK,iBAAO,IAAI4H,KAASjQ,MAAM,IACnDwS,EAAsBnK,iBAAO,IAAI4H,KAASjQ,MAAM,IAEtDX,qBAAU,WACR4Q,KAASoB,OAAOmB,EAAoBjN,QAAS,CAC3CsL,QAASiB,EAAa,IAAM,EAC5BhB,SAAU,IACVI,iBAAiB,IAChBnW,QACC+W,IACFQ,EAAoB/M,QAAU,EAC9BgN,EAAuBhN,QAAQkN,SAAS,MAEzC,CAACX,IAEJ,IAAMY,EAAuBxY,uBAAY,WACnCoY,EAAoB/M,SAAW4M,EAAa5M,SAC9C4M,EAAa5M,UAEV+M,EAAoB/M,SACvB0K,KAASoB,OAAOmB,EAAoBjN,QAAS,CAC3CsL,QAAS,EACTC,SAAU,IACVI,iBAAiB,IAChBnW,UAEJ,IAEG4X,EAAetK,iBACnBuK,KAAa7gB,OAAO,CAClB8gB,6BAA8B,kBAAM,GACpCC,oCAAqC,kBAAM,GAC3CC,4BAA6B,WAC3B,IAAKV,EAAa9M,QAAS,OAAO,EAClC,IAAMyN,EAAeC,aAAeZ,EAAa9M,SACjD,QAAKyN,GACyC,IAAvCA,EAAazT,SAAS,GAAG2T,WAElCC,mCAAoC,kBAAM,GAC1CC,mBAAoB,SAACjZ,EAAGkZ,GACtB,QAA2B1d,IAAvByc,EAAW7M,SAA0B6M,EAAW7M,QAApD,CAEA,IAAM+N,EACJD,EAAaE,IAAM,EACf,EACmB,IAAlBF,EAAaE,IAAaF,EAAaE,GAAK,KACnDf,EAAoBjN,QAAQkN,SAASa,GACrC,IAAME,EAAW1G,KAAKC,IAAIuG,EAAY,KAAO,IACzCE,IAAalB,EAAoB/M,UACnC+M,EAAoB/M,QAAUuH,KAAK2G,MAAMD,GACzCvD,KAASoB,OAAOkB,EAAuBhN,QAAS,CAC9CsL,QAAS2C,EACT1C,SAAU,GACVI,iBAAiB,IAChBnW,WAGP2Y,iCAAkC,kBAAM,GACxCC,sBAAuBjB,EACvBkB,wBAAyBlB,KAIvBmB,EAAwBC,mBAC5B,kBAAO/F,IAAwBgE,GAAUA,EAAOxI,OAASwI,EAAO,GAAK,QACrE,CAACA,EAAQhE,IAELlB,EAAOiH,mBACX,kBACEvB,EAAuBhN,QAAQiM,YAAY,CACzCC,WAAY,CAAC,EAAG,GAChBC,YAAa,CAAC,EAAG,SAErB,IAGIqC,EAAiBD,mBACrB,iBAAM,CACJ7gB,EACA,CACE+gB,UAAW,SACX5E,SAAU,SACV6E,WAAYjC,MAGhB,CAACA,EAAoB/e,IAEjBihB,EAA0BJ,mBAC9B,iBAAO,CACLzN,UAAW,SACXM,WAAY,GACZH,OAAQ,GACR2N,UAAW,CAAC,CAAEC,WAAY5B,EAAoBjN,aAEhD,IAII8O,EAA2BP,mBAC/B,kBA+DJ,SAAsBQ,GACpB,IAAMC,EACJD,EAAiBC,aAAeD,EAAiB1kB,MAAQ,YAErD4kB,EAJqC,8HAOzC,WACE,OAAO,kBAACF,EAAqB/b,KAAKzF,WARK,GAIhBoL,IAAMuW,WAQjC,OARMD,EACGD,YALkC,gBAKJA,EALI,IAYpCtE,KAASC,wBAAwBsE,GA1EpCE,EAAa,SAACC,GAAD,OACX,kBAACpV,EAASzM,MAAMyM,SAASrL,KAASygB,QAEtC,IAEIC,EAA2Bd,mBAC/B,iBAAM,CACJvU,EAASzM,MAAMyM,SAASzM,MAAMG,MAC9B,CAAEkhB,UAAW,CAAC,CAAEC,WAAY5B,EAAoBjN,cAElD,CAAChG,EAASzM,MAAMyM,SAASzM,MAAMG,QAE3B4hB,EAAc3W,IAAM4W,aACxBvV,OACA5J,EACA,oCACE,kBAACsa,GAAA,EAASjd,KAAV,CAAeC,MAAOihB,GACnBpC,EACC,oCACE,kBAAC5e,EAAA,EAAD,CACE2T,MAAOgN,QAAyBle,EAChCxC,KAAMA,QAAQwC,EACd1C,MAAO,CAAE2U,eAAgB,MAE1BuC,GACC,kBAACrE,EAAA,EAAD,CACE7S,MAAO,CAAE4T,MAAOoL,EAAY5K,UAAW,SAAUV,UAAW,IAE3DwD,IAKP,kBAAC8F,GAAA,EAASjd,KAAV,KACE,kBAAC,GAAD,CACEG,KAAM,GACNmT,MAAO,EACPuG,KAAMA,EACNkB,UAAW8F,EACXrhB,gBAAgB,gBAKxB,kBAAC6hB,EAAD,QACM9U,EAASzM,MAAMyM,SAASzM,MAD9B,CAEEG,MAAO2hB,OAKb,OACE,kBAAC5hB,EAAA,EAAD,MACE0S,IAAK2M,EACLpf,MAAO8gB,GACHpB,EAAapN,QAAQwP,aAExBF,I,ICrMFG,G,6BAAAA,K,UAAAA,E,kBAAAA,E,aAAAA,Q,KAML,IAAMnjB,GAASC,IAAWC,OAAO,CAC/BkjB,OAAQ,CACN/iB,eAAgB,SAChBqV,iBAAkB,EAClBlB,UAAW,UAEb6O,IAAK,CACH1iB,gBAAiB,OAEnB2iB,QAAS,CACP3iB,gBAAiBwS,GAEnBoQ,KAAM,CACJ5iB,gBAAiB,SAEnB6iB,OAAQ,CAAE/O,MAAO,EAAGE,OAAQ,EAAGE,aAAc,GAC7C4O,SAAU,CACRhP,MAAO,EACPE,OAAQ,EACRhU,gBAAiBwS,EACjB0B,aAAc,KAIL6O,GAAwD,SAAC,GAE/D,IADLC,EACI,EADJA,aAEA,OACE,gBAACxiB,EAAA,EAAD,CACEC,MAAO,CACLN,cAAe,MACfT,eAAgB,SAChB0V,eAAgB,IAGlB,gBAAC5U,EAAA,EAAD,CACEC,MAAO,CACLpB,GAAOojB,OACPD,GAAUQ,EAAaxV,SAAwBgV,GAAUE,IACrD,CAACrjB,GAAOqjB,IAAKrjB,GAAOwjB,QACpBxjB,GAAOyjB,YAGf,gBAACtiB,EAAA,EAAD,CACEC,MAAO,CACLpB,GAAOojB,OACPD,GAAUQ,EAAaxV,SAAwBgV,GAAUG,QACrD,CAACtjB,GAAOsjB,QAAStjB,GAAOwjB,QACxBxjB,GAAOyjB,YAGf,gBAACtiB,EAAA,EAAD,CACEC,MAAO,CACLpB,GAAOojB,OACPD,GAAUQ,EAAaxV,SAAwBgV,GAAUI,KACrD,CAACvjB,GAAOujB,KAAMvjB,GAAOwjB,QACrBxjB,GAAOyjB,cCxERG,GAAgB,SAACC,GAC5B,IAAMC,EAAwB,IAAIna,KAChCka,EAAaE,UAAU,EAAG,GACxB,IACAF,EAAaE,UAAU,EAAG,IAC1B,IACAF,EAAaE,UAAU,EAAG,GAC1B,IACAF,EAAaE,UAAU,GAAI,IAC3B,IACAF,EAAaE,UAAU,GAAI,IAC3B,IACAF,EAAaE,UAAU,GAAI,KAEzBra,GAAQC,KAAKF,MAAQqa,EAAsBha,WAAa,IAC9D,OAAOJ,GAAQ,GACXuR,KAAK+I,MAAMta,GAAQ,SACnBA,EAAO,IAAM,GACbuR,KAAK+I,MAAMta,EAAO,IAAM,eACxBA,EAAO,KAAO,EACduR,KAAK+I,MAAMta,EAAO,MAAQ,SAC1Bma,EAAaE,UAAU,EAAG,GAC1B,IACAF,EAAaE,UAAU,EAAG,GAC1B,IACAF,EAAaE,UAAU,EAAG,KCUnBE,GAA4D,SACvEhjB,GAEA,IAAQijB,EAAyBjjB,EAAzBijB,QACFC,EAxBU,SAACC,EAA2BF,GAC5C,OAAQE,GACN,KAAKC,GAAaC,MAChB,OAAIJ,EAAQK,SAASxkB,SAAS,eAAuB,UAC9C,QACT,KAAKskB,GAAaG,SAChB,MAAO,WACT,KAAKH,GAAaI,SAChB,MAAO,WACT,KAAKJ,GAAaK,QAChB,MAAO,UACT,KAAKL,GAAaM,UAChB,MAAO,YACT,KAAKN,GAAaO,OAChB,MAAO,SACT,QACE,MAAO,IAQMC,CADgB5jB,EAAhBmjB,YACuBF,GACxC,OACE,kBAACjQ,EAAA,EAAD,CAAM7S,MAAOpB,GAAO8kB,qBACjBX,IACe,UAAbA,EACC,kBAAC,UAAD,CACEpmB,KAAM,WACNuD,KAAM,GACNF,MAAOpB,GAAO+kB,KACd/P,MAAO7B,IAGT,kBAACZ,EAAA,EAAD,CACEC,OAAQwS,OAAQ,KAA6Bb,EAA9B,QACf/iB,MAAO,CAACpB,GAAO+kB,KAAM/kB,GAAOilB,uBAOlCjlB,GAASC,IAAWC,OAAO,CAC/BglB,SAAU,CACR9kB,KAAM,EACNyU,aAAc,EACd2E,YAAa,EACblZ,SAAU,WACVG,IAAK,EACLF,KAAM,EACNK,QAAS,EACTukB,WAAY,GAEdL,oBAAqB,CACnBM,QAAS,OACTxQ,WAAY,SACZY,UAAW,UAEbuP,KAAM,CACJvL,YAAa,OAEfyL,iBAAkB,CAAExQ,MAAO,OAAQE,OAAQ,UC7EtC,SAAe0Q,KAAf,eAAA/f,EAAAC,OAAA,2EAAAD,EAAA,MAEoBT,GAAOqF,IAAI,mBAF/B,cAEG7E,EAFH,yBAGIA,EAAS+E,MAHb,gCAKHG,QAAQ9H,MAAR,MALG,gE,qkBCEA,IAAM6iB,GAAmBhZ,wBAAcxJ,IAOjCyiB,GAAyC,SAACtkB,GACrD,IAAQ2C,EAAoB3C,EAApB2C,MAAO8J,EAAazM,EAAbyM,SACf,EAAyBX,qBAAW/J,GAAkBF,IAAtD,WAAOsH,EAAP,KACMib,ECVyB,SAAC1Z,GAChC,OAAO,0BAAArG,EAAAC,OAAA,uDACLoG,EAAS,CAAEtJ,KAAM,wBAAyBC,SAAS,IAD9C,oBAAAgD,EAAA,MAGmB+f,MAHnB,UAGG/iB,EAHH,6BAIiBwI,MAAM,kCAJvB,OAKHa,EAAS,CAAEtJ,KAAM,yBAA0BC,YALxC,kDAOHqJ,EAAS,CAAEtJ,KAAM,uBAAwBI,MAAM,EAAD,KAP3C,QASLkJ,EAAS,CAAEtJ,KAAM,wBAAyBC,SAAS,IAT9C,kEDSgBkjB,CADvB,MAOA,OALAhY,qBAAU,WACH5J,GACLyhB,MACC,CAACzhB,IAGF,kBAAC0hB,GAAiB7X,SAAlB,CAA2BhF,MAAK,MAAO2B,IACpCsD,I,IAK0B4X,GAAiB1X,S,QEnBrC6X,GAA6B,CACxClhB,KAAM,UACNmhB,KAAM,GACNC,K,QAAMC,G,mEC2FFC,GAA0BC,KAAUC,eAAiB,EAwgB3D,SAASC,GAAT,GAOI,IANFC,EAMC,EANDA,WACGhlB,EAKF,WACD,OAAIglB,EAAmB,kBAACjU,EAAA,EAAe/Q,GAChC,kBAACE,EAAA,EAASF,GAGJilB,OA/gBb7Z,IAAM8Z,YAAW,SAACllB,EAAOmlB,GACvB,IACEC,EA0CEplB,EA1CFolB,QACAC,EAyCErlB,EAzCFqlB,WACAC,EAwCEtlB,EAxCFslB,eACA1N,EAuCE5X,EAvCF4X,OACA2N,EAsCEvlB,EAtCFulB,gBACAC,EAqCExlB,EArCFwlB,SANF,EA2CIxlB,EApCFG,aAPF,MAOU,GAPV,EAQE8gB,EAmCEjhB,EAnCFihB,eACAwE,EAkCEzlB,EAlCFylB,iBACAC,EAiCE1lB,EAjCF0lB,kBACAC,EAgCE3lB,EAhCF2lB,mBACAC,EA+BE5lB,EA/BF4lB,cAZF,EA2CI5lB,EA9BF6lB,yBAbF,MAasB,GAbtB,IA2CI7lB,EA7BFmJ,YAdF,MAcS,GAdT,EAeE2c,EA4BE9lB,EA5BF8lB,WACAC,EA2BE/lB,EA3BF+lB,WACAve,EA0BExH,EA1BFwH,MAjBF,EA2CIxH,EAzBFgmB,mBAlBF,MAkBgB,UAlBhB,EAmBEhS,EAwBEhU,EAxBFgU,WAnBF,EA2CIhU,EAvBFgS,mBApBF,MAoBgB,cApBhB,IA2CIhS,EAtBFiV,iBArBF,MAqBc,IArBd,IA2CIjV,EArBFimB,iBAtBF,MAsBc,EAtBd,IA2CIjmB,EApBFkmB,eAvBF,WA2CIlmB,EAnBFmmB,wBAxBF,WA2CInmB,EAlBFomB,gBAzBF,SA0BEC,EAiBErmB,EAjBFqmB,eA1BF,EA2CIrmB,EAhBFsmB,uBA3BF,MA2BoB,kBAAM,MA3B1B,EA4BEC,EAeEvmB,EAfFumB,WACA1U,EAcE7R,EAdF6R,QACAC,EAaE9R,EAbF8R,OA9BF,EA2CI9R,EAZFwmB,kBA/BF,WA2CIxmB,EAXFymB,oCAhCF,YA2CIzmB,EAVF0mB,yBAjCF,OAiCqB,OAjCrB,GAkCEC,GASE3mB,EATF2mB,cACAjnB,GAQEM,EARFN,gBACAqS,GAOE/R,EAPF+R,aACA6U,GAME5mB,EANF4mB,kBACAC,GAKE7mB,EALF6mB,oBACAnP,GAIE1X,EAJF0X,mBACAoP,GAGE9mB,EAHF8mB,4BAxCF,GA2CI9mB,EAFF+mB,aAzCF,OAyCS,UAzCT,GA0CE/B,GACEhlB,EADFglB,WAGIpS,GAAM2C,iBAAa,MACnByR,GAAUzR,iBAAiB,MACjC,GAAwCxO,mBAAc,MAAtD,aAAOkgB,GAAP,MAAqBC,GAArB,MACA,GAAgCngB,mBAAgBoC,GAAhD,aAAOge,GAAP,MAAiBC,GAAjB,MACA,GAAgCrgB,qBAAhC,aAAO1H,GAAP,MAAiBgoB,GAAjB,MACA,GAA4CtgB,mBAAiB,GAA7D,aAAOugB,GAAP,MAAuBC,GAAvB,MACA,GAAgC/Q,KAAWvN,IAAI,UAAhCue,GAAf,GAAQhU,MAAkBiU,GAA1B,GAAkB/T,OAEZgU,GAAoC1G,mBAAQ,WAChD,MAAO,CACLthB,gBAAiB,kBACjBiU,WAAY,YAEb,IACGgU,GAA6B3G,mBAAQ,WACzC,MAAO,CACLxN,MAAO,OACPD,UAAW,YAEZ,CAACiU,KACJI,8BAAoBzC,GAAY,WAC9B,MAAO,CAAE0C,KAAMC,GAAWC,MAAOC,OAEnCzb,qBAAU,WACR,IAAM0b,ECjLL,SAAqB9e,EAAWmc,GAGrC,IAAM4C,EAAiB/e,EAAKgf,WAC1B,SAACC,GAAD,MACgB,KAAdA,EAAK3D,MAA6B,YAAd2D,EAAK9kB,QAI7B,GAAI4kB,GAAkB,EAAG,CACvB,MAA4B/e,EAAKkf,OAAOH,EAAgB,GAAjDI,EAAP,YACAnf,EAAKkf,OAAO,EAAG,EAAGC,GAIpB,GAAIhD,EAAgB,CAElB,IAAMiD,EAAgBpf,EAAKgf,WACzB,SAACC,GAAD,OAA4BA,EAAK3D,OAASa,KAK5C,GAAIiD,GAAiB,EAAG,CACtB,MAAuBpf,EAAKkf,OAAOE,EAAe,GAA3CC,EAAP,YACArf,EAAKkf,OAAO,EAAG,EAAGG,IAKtB,OAAOrf,EDmJmBsf,CAAYtf,EAAMmc,GACxC8B,GAAYa,KAEX,CAAC9e,EAAMmc,IAEV,IAAMwC,GAAY,WACX5B,IACHb,GAAW,GACPxT,GACFA,IAGF6W,OAIEV,GAAa5gB,uBAAY,WACxB8e,IACHb,GAAW,GACPvT,GACFA,OAGH,CAACoU,EAASpU,IAEP6W,GAAOvhB,uBAAY,WACvB,OAAI4M,EACK,CACLA,WAAYA,GAGP,KAER,CAACA,IAEE4U,GAAWxhB,uBAAY,WACvBwL,IAAG,MAAIA,OAAKH,SACdG,GAAIH,QAAQoW,iBAAgB,SAACC,EAAOC,EAAOvV,EAAOE,GAChD,IAAMsV,EAAkB,UAATjC,GACTvnB,EAAMwpB,EAAS,GAAKtV,EAASqV,EAAQ,EACrCtpB,EAASgoB,GAAIjoB,EAAMkU,EACnBpU,EAAO2pB,KAAYC,MAAQ1B,GAAIhU,EAAQsV,EAAQA,EAErDzB,GAAY,CACV2B,SACAxV,MAAOwG,KAAK2G,MAAMnN,GAClBhU,IAAKwa,KAAK2G,MAAMnhB,EAAMolB,IACtBnlB,OAAQua,KAAK2G,MAAMlhB,EAASmlB,IAC5BtlB,KAAM0a,KAAK2G,MAAMrhB,GACjBoU,OAAQsG,KAAK2G,MAAMjN,UAIxB,CAAC+T,GAAGD,GAAGT,KAEJoC,GAAoB/hB,uBACxB,SAACgiB,GACCR,KACArB,GAAkB6B,EAAEC,eAAe3V,UAErC,CAACkV,KAGGU,GAAoBliB,uBAAY,WACpCmgB,GAAkB,GAClBqB,OACC,CAACA,KAEJrc,qBAAU,WACR,IAAMgd,EAA8B1W,IAAS4K,YAC3C,kBACA0L,IAEIK,EAA8B3W,IAAS4K,YAC3C,kBACA6L,IAGF,OAAO,WAC8C,oBAA/C,MAAOC,OAAP,EAAOA,EAA6BE,SACtCF,EAA4BE,SAGqB,oBAA/C,MAAOD,OAAP,EAAOA,EAA6BC,SACtCD,EAA4BC,YAG/B,CAACH,GAAmBH,KAEvB,IAAMO,GAAWtiB,uBAAY,WAC3B,IAAMuiB,EACa,kBAAVniB,EAAqBH,KAAE4B,IAAIzB,EAAOue,GAAcve,EAEnD7D,EAAUwF,EAAKC,QAAO,SAACggB,GAAD,OAC1B/hB,KAAEuiB,QAAQD,EAActiB,KAAE4B,IAAImgB,EAAGrD,OAE/BpiB,EAAQ8S,OAAS,EACnByQ,GAAgBvjB,EAAQ,IAExBujB,GAAgB,QAEjB,CAAC/d,EAAM3B,EAAOue,IAEjBxZ,qBAAU,WACRmd,OACC,CAACliB,EAAO2B,EAAMugB,KAEjB,IAAMhB,GAActhB,uBAAY,WAC1Bof,GAAcrd,EAAKsN,OAAS,GAAK0Q,GAAS1Q,SAAWtN,EAAKsN,QAC5DoT,YAAW,WACT,GAAI7C,IAAO,MAAIA,OAASvU,QAAS,CAC/B,IAMgD,EAN1CkX,EACa,kBAAVniB,EAAqBH,KAAE4B,IAAIzB,EAAOue,GAAcve,EAEnDvK,EAAQoK,KAAE8gB,UAAUhB,IAAU,SAACiC,GAAD,OAClC/hB,KAAEuiB,QAAQD,EAActiB,KAAE4B,IAAImgB,EAAGrD,OAEnC,GAAI9oB,GAAS,GAAKA,GAASkqB,GAAS1Q,OAAS,EACpC,MAAPuQ,IAAA,SAAAA,GAASvU,UAAT,EAAkBqX,cAAc,CAC9B7sB,MAAOA,EACP8sB,UAAU,OAIf,OAEJ,CAACvD,EAAYrd,EAAKsN,OAAQ0Q,GAAU3f,EAAOue,IAExCiE,GAAc5iB,uBAAY,WAC9B,IAAK8e,EAAS,CACZ,GAAIoB,GAAiB,GAAKlC,EACxB,OAAOvS,IAASC,UAGlB8V,KACAvD,GAAYD,GACZgC,GAAYje,GAEPic,EAKCtT,GACFA,IALED,GACFA,IAOJ6W,QAGD,CACDxC,EACAoB,GACAlC,EACAwD,GACAzf,EACAuf,GACA7W,EACAC,IAGImY,GAAW7iB,uBACf,SAACghB,GACC,GAAIxB,IAAqBC,GACvB,OAAOA,GAAoBuB,GAGzBrW,IACFA,GAAa,IAEfmV,GAAgBkB,GAChB5C,EAAS4C,GACTJ,OAEF,CACEpB,GACAoB,GACAxC,EACAzT,GACA8U,KAiCEqD,GAAc9iB,uBAClB,YAAoD,IAAD,EAAhDghB,EAAgD,EAAhDA,KAAMnrB,EAA0C,EAA1CA,MACDktB,EAAalD,IAAgB5f,KAAE4B,IAAIge,GAAclB,GACjDtO,EAAWpQ,KAAEuiB,QAAQviB,KAAE4B,IAAImf,EAAMrC,GAAaoE,GACpD9iB,KAAE+iB,OAAOhC,EAAM,CAAEiC,OAAQptB,IAEzB,IAAMqtB,EACJ/D,IAAU,SACVA,EACE6B,EACA+B,SAHQ,EACV,EAGGnqB,MAAMyM,SAAS,GAAGzM,MAAMuR,OAAOC,IAAI1S,SACpC,0BAGJ,OACE,kBAACyrB,GAAA,EAAD,CACE1iB,IAAK5K,EAAM4N,WACX+M,OAAQvQ,KAAE4B,IAAImf,EAAM7C,GAAmBO,GACvC0E,aAAc9S,GACdA,mBAAoBrQ,KAAE4B,IACpBmf,EACAtB,IAA+BhB,GAEjC2E,cAAezE,EAEf0E,SAAUpF,GAA2B,GAATroB,EAC5BoW,QAAS,kBAAM4W,GAAS7B,KAExB,kBAACloB,EAAA,EAAD,CACEC,MAAOnB,IAAW2rB,QAAQ,CACxBhF,EACA2E,GAA4B,CAC1BM,kBAAmB,UACnBC,kBAAmB,OAErBpT,GAAY,CACV/X,gBAAiBsmB,MAIpBO,EACCA,EAAW6B,EAAM3Q,GAEjB,kBAACvX,EAAA,EAAD,CAAMC,MAAOpB,GAAOqpB,MAClB,kBAACpV,EAAA,EAAD,CACE7S,MAAOnB,IAAW2rB,QAAQ,CACxB5rB,GAAO+rB,SACPlF,EACA+C,QAGDthB,KAAE4B,IAAImf,EAAMtC,SAQ3B,CACEpO,GACAsO,EACAiB,GACA0B,GACA7B,GACAnB,EACAJ,EACAK,EACAE,EACAmE,GACA1D,EACAR,IAIEgF,GAAc3jB,uBAClB,SAAC4jB,GACC,IAAMC,IAAc7E,GAAmB4E,EAEjCE,EAAoB,WACxB,OACE,kBAACC,GAAA,EAAD,MACEvT,OAAQA,EAAS,YACjBF,mBAAoBA,GAAqB,aACrCiP,GAHN,CAIE3V,0BAA0B,UAC1B4B,IAAKoU,GACLoE,sBAAuB1C,GACvBvf,KAAMge,GACNf,WAAU4E,GAAgB5E,EAC1BG,WAAY2D,GACZmB,aAAc,SAACC,EAAOruB,GAAR,OAAkBA,EAAM4N,YACtC4b,6BAA8BA,MAKpC,OACE,kBAAC8E,GAAA,EAAD,KACE,kBAACrrB,EAAA,EAAD,CAAMC,MAAOpB,GAAOysB,YACjBP,GAAcC,KACbD,GAAcC,QAKxB,CACEhB,GACAxS,GACAiP,GACAQ,GACAf,EACAsC,GACAjC,EACA7O,IAIE6T,GAAerkB,uBAAY,WAC/B,GAAIge,GAAW/lB,GAAU,CACvB,IAAQ2pB,EAA6C3pB,GAA7C2pB,OAAQxV,EAAqCnU,GAArCmU,MAAOE,EAA8BrU,GAA9BqU,OAAQlU,EAAsBH,GAAtBG,IAAKC,EAAiBJ,GAAjBI,OAAQH,EAASD,GAATC,KAU5C,GAAIkU,GAAShU,GAAOC,EAAQ,CAC1B,IAAMisB,EAA2B,CAC/BpsB,KAAMA,EACN2V,UAAWA,EACXgR,UAAWA,GAEP+E,EACiB,SAArBtE,GAdEY,GAAiB,EACZ7nB,EAAS6nB,GAAiB5T,EAG5BjU,EAAS,IAYW,QAArBinB,GAIFiF,EAAgBX,EAAsBvrB,EAAND,EAUpC,OARE2mB,GACAmB,GAAiB,GACjB0D,GACqB,SAArBtE,KAEAiF,EAAerE,IAIf,kBAACsE,GAAA,EAAD,CACEC,aAAW,EACXC,sBAAoB,EACpB1G,QAASA,EACT2G,sBAAuB,CAAC,YAAa,YACrCC,eAAgBhC,IAEhB,kBAACuB,GAAA,EAAD,CAA0BlY,QAAS2W,IACjC,kBAAC9pB,EAAA,EAAD,CACEC,MAAOnB,IAAW2rB,QAAQ,CACxB5rB,GAAOktB,MACPjD,GAAUtB,GACVhoB,IAAmB,CAAEA,gBAAiBA,IAzBjB,MA6BvB,kBAACQ,EAAA,EAAD,CACEC,MAAOnB,IAAW2rB,QAAQ,CACxB5rB,GAAOktB,MACP,CACEzY,SAEDwX,EAEG,CACE5rB,eAAgB,WAChB8sB,cAAeP,GAHjB,CAAExK,WAAYwK,GAKlB3C,GAAUjqB,GAAOotB,cAGnB,kBAACpH,GAAD,CACEC,aAAcA,GACd7kB,MAAOnB,IAAW2rB,QAAQ,CACxB5rB,GAAOG,UACP8pB,EAASrB,GAAkB+D,EAC3BzK,KAGD8J,GAAYC,QAQ3B,OAAO,KAET,OAAO,OACN,CACD5F,EACA/lB,GACAioB,GACArS,EACAgR,EACAS,GACAP,EACA6D,GACAtC,GACAhoB,GACAuhB,EACA0G,GACAoD,KAGF,OACE,kBAAC7qB,EAAA,EAAD,CACEC,MAAOnB,IAAW2rB,QAAQ,CAAC5rB,GAAOqtB,SAAUjsB,IAC5CyS,IAAKA,GACLyZ,SAAUzD,IA9PU,WACtB,IAAMuB,EAAalD,IAAgB5f,KAAE4B,IAAIge,GAAclB,GACvD,OACE,kBAACwF,GAAA,EAAD,CACE3T,OAAQA,EACR4S,aAAc9S,GACdA,mBAAoBA,GACpBrE,QAAS2W,IAET,kBAAC9pB,EAAA,EAAD,CAAMC,MAAOpB,GAAOutB,UAApB,MACGjG,OADH,EACGA,EAAiBjB,GAClB,kBAACpS,EAAA,EAAD,MACE7S,MAAO,CACLpB,GAAO+rB,SACQ,OAAfX,EAAsBzE,EAAoBD,EAC1CkD,OAEE9C,GAEY,OAAfsE,EACG9iB,KAAE4B,IAAIge,GAAcnB,GACpB9T,GAELsU,EAAgBlB,KAyOpBmH,GACAd,SAmBI1sB,GAASC,IAAWC,OAAO,CACtCmtB,SAAU,CACRhtB,eAAgB,UAElBF,UAAW,CACTssB,WAAY,EACZ9W,YAAa,GACbC,YAAa,UACbjV,gBAAiB,QACjB8sB,YAAa,OACbC,aAAc,CACZjZ,MAAO,EACPE,OAAQ,GAEVgZ,cAAe,GACfC,aAAc,KACdzI,UAAW,GAEb+H,MAAO,CACL9sB,KAAM,GAERqsB,WAAY,CACVA,WAAY,GAEdoB,QAAS,CACPxtB,eAAgB,YAElBktB,SAAU,CACRzsB,cAAeopB,KAAYC,MAAQ,cAAgB,MACnD9pB,eAAgB,gBAChBuU,WAAY,SACZD,OAAQ,IAEV2D,MAAO,CACLvC,eAAgB,EAChBZ,SAAU,GACV2Y,iBAAkB5D,KAAYC,MAAQ,MAAQ,OAEhDd,KAAM,CACJtoB,QAAS,GACTD,cAAeopB,KAAYC,MAAQ,cAAgB,MACnD9pB,eAAgB,gBAChBuU,WAAY,UAEdmX,SAAU,CACR3rB,KAAM,EACN+U,SAAU,GACV2Y,iBAAkB5D,KAAYC,MAAQ,MAAQ,OAEhDpF,KAAM,CACJtQ,MAAO,GACPE,OAAQ,IAEVoZ,MAAO,CACLpY,YAAa,GACbC,YAAa,UACboY,kBAAmB,EACnBjZ,aAAc,EACdL,OAAQ,EACRC,OAAQ,IAEVyY,WAAY,CACVxY,WAAY,SACZvU,eAAgB,YExqBP4tB,GAAc,SAACxb,GAE1B,OADAA,EAAMA,GAAO,IACLyb,WAAW,eACZpsB,GAAWwF,KAAKmL,GADkBA,EACLhU,GAAU,CAAC+C,EAAQiR,KA2D5C0b,GAET,SAAC,GAAgD,IAA9C5H,EAA6C,EAA7CA,eAAgBqE,EAA6B,EAA7BA,aAAcnE,EAAe,EAAfA,SAE3B1jB,EAAc6L,qBAAW0W,IAAzBviB,UAGFqrB,EACJrrB,EAAUuL,MAAK,SAAC+f,GAAD,OAAcA,EAAS3I,OAASkF,MAC/CnF,GAGF,EAA0Bzd,mBAAoBomB,GAA9C,WAAO3lB,EAAP,KAAcmY,EAAd,KACA,EAA8B5Y,oBAAkB,GAAhD,WAAOqe,EAAP,KAAgBC,EAAhB,KAGMzS,EAAM2C,iBAAkB/N,GAExByN,EAAY+E,KAAKC,IAnFL,MAoFL,MAATnY,OAAA,EAAAA,EAAW2U,SAAU,GAAK,GAC5B4W,KAEIC,EAAUlmB,uBAAY,WAC1B,GAAII,IAAUgd,GAAiB,CAC7B,IAAM+I,EAAiBzrB,EAAUuL,MAC/B,SAAC+f,GAAD,OAAcA,EAAS3I,OAASkF,KAElC,OAAqB,MAAd4D,OAAA,EAAAA,EAAgB7I,OAAQF,GAAgBE,KAEjD,OAAOld,EAAMkd,OACZ,CAACld,EAAOgd,GAAiBmF,EAAc7nB,IAW1C,OATAyK,qBAAU,WACR,IAAMihB,EAAO5a,EAAIH,QACXgb,EAAOjmB,EACboL,EAAIH,QAAUjL,EACTgmB,GAAQA,IAASC,GAEtBjI,EAAShe,KACR,CAACA,IAEC1F,EAAU2U,OAEb,kBAACvW,EAAA,EAAD,CAAMC,MAAOpB,GAAO2uB,eAClB,kBAAC,GAAD,CACEtI,QAASA,EACTC,WAAYA,EACZC,eAAgBA,EAChBnc,KAAI,CAAGqb,IAAH,YAAuB1iB,IAC3BilB,KAAK,UACLL,iBAAiB,SACjB1U,YAAY,WACZ8T,WAAW,OACXC,WAAW,OACXve,MAAOA,EACP0e,SAAUpkB,EAAU2U,OACpB+O,SAAU,SAAChe,GAAD,OAAWmY,EAASnY,IAC9B8e,gBAAiB,kBA3GD,SAAClB,GAMvB,OALoBA,EAClB,kBAAC,KAAD,CAAMtoB,KAAM,cAAeuD,KAAM,GAAIF,MAAO,CAAEoY,YAAa,SAE3D,kBAAC,KAAD,CAAMzb,KAAM,cAAeuD,KAAM,GAAIF,MAAO,CAAEoY,YAAa,SAuGhC+N,CAAgBlB,IACvCiB,eAAgB,kBAnGJ7U,EAmGqB8b,IAjGrC,kBAACptB,EAAA,EAAD,CAAMC,MAAOpB,GAAO4uB,2BAClB,kBAACrc,EAAA,EAAD,CACEC,OAAQ,CAAEC,IAAKA,IAAQgT,GAAgBE,KAAOlT,EAAMwb,GAAYxb,IAChEoc,WAAY,QACZztB,MAAOpB,GAAO+kB,QANH,IAACtS,GAoGZ+U,WAAY,SAAC6B,GAAD,OAzFG,SAAC5W,EAAaqc,EAAcvI,GACjD,IAAMwI,EAAmBD,IAASvI,EAClC,OACE,kBAACplB,EAAA,EAAD,CAAMC,MAAOpB,GAAO4uB,2BAClB,kBAACrc,EAAA,EAAD,CACEC,OAAQ,CACNC,IAAKA,IAAQgT,GAAgBE,KAAOlT,EAAMwb,GAAYxb,IAExDoc,WAAY,QACZztB,MAAO,CAACpB,GAAO+kB,KAAM,CAAEvL,YAAa,UAEnCsV,EACD,kBAAC7a,EAAA,EAAD,CAEE7S,MAAO,CACLuU,YAAaoZ,GAAoB,MACjCnZ,YAAamZ,GAAoB,QACjChuB,QAAS,MACTiU,MAAO,QACPQ,UAAW,SACXwZ,cAAe,cAGhBF,GAED,MAiEAG,CAAe5F,EAAK1D,KAAM0D,EAAK3D,KAAMa,IAEvCnlB,MAAOpB,GAAOutB,SACdrX,UAAWA,EACXgR,UAjIY,GAkIZQ,8BAA8B,EAC9BzS,WAAW,oBACXyR,iBAAkB1mB,GAAOiT,YACzB0T,kBAAmB3mB,GAAOiT,YAC1B6T,kBAAmB,CAAEoI,cAAe,GACpChN,eAAgBliB,GAAOmvB,kBACvBlJ,YAAY,EACZwB,YAAY,KA/BY,MAqC1BznB,GAASC,IAAWC,OAAO,CAC/BqtB,SAAU,CACR9Y,MAAO,GACP+E,YAAa,IAEfvG,YAAa,CACXmS,QAAS,QAEXuJ,cAAe,CACbla,MAAO,GACPmB,YAAazC,EACbwC,YAAa,EACbd,aAAc,EACdyE,WAAY,IAEd6V,kBAAmB,CACjB1a,MAAO,GACPmB,YAAazC,EACbwC,YAAa,EACbd,aAAc,GAEhBua,wBAAyB,CACvB3a,MAAO,GACPmB,YAAazC,EACbwC,YAAa,EACbd,aAAc,EACd0I,SAAU,SACV8R,wBAAyB,SAE3BT,0BAA2B,CACzBxuB,KAAM,EACNU,cAAe,MACf6T,OAAQ,GACRC,WAAY,SACZF,OAAQ,GAEV4a,sBAAuB,CACrBta,MAAO,MACPG,SAAU,IAEZ4P,KAAM,CACJvL,YAAa,MACb/E,MAAO,OACPE,OAAQ,UC3LC4a,GAAyC,SAAC,GAGhD,IAFLrL,EAEI,EAFJA,QACkBsL,EACd,EADJC,iBAEA,EAA0BznB,mBAASkc,EAAQrJ,OAA3C,WAAOvC,EAAP,KAAcoX,EAAd,KACQrsB,EAASuL,qBAAWxC,IAApB/I,KACAN,EAAc6L,qBAAW0W,IAAzBviB,UAwBR,OAJAyK,qBAAU,WACRkiB,EAASxL,EAAQrJ,SAChB,CAACxX,EAAK7D,kBAAmB0kB,IAG1B,kBAAC/iB,EAAA,EAAD,CAAMC,MAAOpB,GAAO2vB,wBAClB,kBAAC1b,EAAA,EAAD,CAAM7S,MAAOpB,GAAO4vB,UAAWV,cAAe,GAC3C5W,GAEH,kBAACnX,EAAA,EAAD,CACEC,MAAO,CACLpB,GAAO6vB,YACN9sB,EAAU2U,OAA+B,GAAtB,CAAEtC,YAAa,MAGrC,kBAAC,GAAD,CACEmR,eAAgBrC,EAAQ4L,eACxBlF,aAAc1G,EAAQ6L,eACtBtJ,SAAU,SAAC4H,GAAD,OArCO,SAAOA,GAAP,iBAAA/oB,EAAAC,OAAA,mDACvBiqB,EAAqBnB,GACjBA,EAAS3I,OAASxB,EAAQ6L,gBAAoC,KAAlB1B,EAAS3I,KAFlC,uBAGrBgK,EAASxL,EAAQrJ,OAHI,qDAAAvV,EAAA,MAQGkK,GAAiB,CACvCwgB,UAAW9L,EAAQ+L,UACnBC,aAAc7B,EAAS3I,QAVJ,gBAQb7K,EARa,EAQbA,MAIR6U,EAAS7U,GAZY,kDAcrBtQ,QAAQ9H,MAAR,MACAitB,EAASxL,EAAQrJ,OAfI,iEAqCO4U,CAAiBpB,SAO7CruB,GAASC,IAAWC,OAAO,CAC/ByvB,uBAAwB,CACtBvvB,KAAM,EACNU,cAAe,MACfT,eAAgB,iBAElBuvB,UAAW,CACT3a,WAAY,mBACZD,MAAO7B,EACPgC,SAAU,GACVJ,aAAc,GACdob,WAAY,KACZhD,cAAe,GAEjB0C,YAAa,CACXzK,QAAS,OACTxQ,WAAY,aACZ9T,cAAe,MACfT,eAAgB,YAElBmS,OAAQ,CACNwC,MAAO7B,EACP8B,WAAY,kBACZE,SAAU,GACVT,OAAQ,EACR0Q,QAAS,OACTxQ,WAAY,YC/EHwb,GAAoB/jB,IAAMC,cAA2B,CAChEmI,MAAOlT,OAAO8uB,WACd1b,OAAQpT,OAAO+uB,cAMJC,GAA2C,SAACtvB,GACvD,MAA0B+G,mBAAiBzG,OAAO8uB,YAAlD,WAAO5b,EAAP,KAAc+b,EAAd,KACA,EAA4BxoB,mBAAiBzG,OAAO+uB,aAApD,WAAO3b,EAAP,KAAe8b,EAAf,KACMC,EAAiB,WACrBF,EAASjvB,OAAO8uB,YAChBI,EAAUlvB,OAAO+uB,cAQnB,OALAK,2BAAgB,WAEd,OADApvB,OAAOqvB,iBAAiB,SAAUF,GAC3B,kBAAMnvB,OAAOsvB,oBAAoB,SAAUH,MACjD,IAGD,kBAACN,GAAkB3iB,SAAnB,CAA4BhF,MAAO,CAAEgM,QAAOE,WACzC1T,EAAMyM,WAKAojB,GAAqBV,GAAkBxiB,S,qkBCf7C,IAAMqgB,GAAc,SAACxb,GAE1B,OADAA,EAAMA,GAAO,GACN3Q,GAAWwF,KAAKmL,GAAOA,EAAMhU,GAAU,CAAC+C,EAAQiR,KAGnDse,GAAmB,SAACC,EAAa3H,EAAgB4H,GACrD,IAAMC,EAAc,0DAA6DF,EAA7D,eAA+EC,EACnG,OAAQE,GAAe9H,IACrB,KAAKhF,GAAaG,SAChB,IAAM4M,EAAoB,OAAZH,EAAmB,KAAOA,EAAQxX,cAChD,OAAUuX,EAAV,WAAwBC,EAAxB,IAAmCG,EAErC,KAAK/M,GAAaM,UAChB,IAAMyM,EAAoB,OAAZH,EAAmB,KAAOA,EAAQxX,cAChD,OAAUuX,EAAV,WAAwBC,EAAxB,IAAmCG,EAErC,KAAK/M,GAAaK,QAElB,KAAKL,GAAaO,OAChB,OAAUoM,EAAV,SAAsBC,EACxB,KAAK5M,GAAaC,MAChB,OAAI0M,EAAIjxB,SAAS,wBACAixB,EAAIznB,QAAQ,WAAY,UACvC,QAAwB0nB,EAAxB,iBAAgDA,EAAhD,oBAEKC,EAET,QACE,OAAOA,IAsCAG,GAAsC,SAACpwB,GAClD,IAAQijB,EAAmCjjB,EAAnCijB,QAASE,EAA0BnjB,EAA1BmjB,YAAakN,EAAarwB,EAAbqwB,SACxBC,EAAWrN,EAAQ9U,UAAUyL,OAAS,UAC5C,EAAsC7S,qBAAtC,WAAOwpB,EAAP,KAAoBC,EAApB,KACQhd,EAAU7F,qBAAWwhB,IAArB3b,MACR,EAA+B7F,qBAAWxC,IAAlC/I,EAAR,EAAQA,KAAMsJ,EAAd,EAAcA,aACRzO,EAAQmF,EAAKC,eAAeouB,QAAQxN,EAAQ+L,WAC5C0B,EAAezzB,GAAS,EAE9B,OACE,kBAACqa,GAAA,EAAD,CACEjE,QAAS,kBA5CC,SAAO4P,EAAmB+M,GAA1B,iBAAA3rB,EAAAC,OAAA,uDAORqsB,IACuB,aAA1BX,GAAW,YACZ/M,EAAQ4L,iBAAmBmB,GAC3BE,GAAejN,KAAaG,GAAaI,UAGvCuM,EACF9M,EAAQK,UACRL,EAAQ2N,oBACR3N,EAAQ4N,oBACR5N,EAAQ6N,mBACR7N,EAAQ8N,qBACR9N,EAAQ+N,kBACR/N,EAAQgO,IAENN,IACFZ,EAAMD,GAAiBC,EAAK9M,EAAS+M,IAvBzB,oBAAA3rB,EAAA,MA2BCjH,KAAQ8zB,QAAQnB,IA3BjB,iGA6BLzmB,QAAQ9H,MAAM,oBAAd,OA7BK,gEA4CK6R,CAAQ4P,EAASsN,GAAenuB,EAAK7D,oBACpD4B,MAAO,uBACLgxB,QADK,EAAGC,QACW,GAAM,EACzBjyB,KAAM,EACNqU,QACA6d,SAAU,MACLlnB,GAAQ/D,WACV+D,GAAQ5D,OAAS,CAChBwmB,kBAAmB,OAIzB,kBAAC,KAAD,CACE9L,eAAgB,CACdliB,GAAOuyB,cADO,MAGRjB,GAAY,CACd1b,YAAazC,EACbwC,YAAa,EACb6c,oBAAqB,GACrBC,qBAAsB,OAK5B,kBAACtxB,EAAA,EAAD,CAAMC,MAAOpB,GAAO0yB,gBAClB,kBAACvxB,EAAA,EAAD,CACEC,MAAO,CACLpB,GAAO6vB,YACP,CACElvB,gBAAmBujB,EAAQyO,aACvBxf,EAAoB,GACpB,iBAIL+Q,EAAQyO,aACT,kBAAC,GAAD,CAAehP,aAAcO,EAAQyO,eACnC,MAEN,kBAACxxB,EAAA,EAAD,CAAMC,MAAOpB,GAAO6vB,aAClB,kBAACtX,GAAA,EAAD,CACEjE,QAAS,WACP,IAAe,IAAXpW,EACFyO,EAAa,GAAD,YACNtJ,EAAKC,gBADC,CACe4gB,EAAQ+L,YACjC5sB,EAAKE,wBAEF,CACL,IAAML,EAAI,KAAOG,EAAKC,gBACtBJ,EAAKomB,OAAOprB,EAAO,GACnByO,EAAazJ,EAAMG,EAAKE,uBAI5B,kBAAC,UAAD,CACExF,KAAM4zB,EAAe,WAAa,kBAClCrwB,KAAM,GACNF,MAAOpB,GAAO4yB,kBAKtB,kBAAC,KAAKrgB,MAAN,CACEnR,MAAOpB,GAAO0S,MACdwP,eAAgBliB,GAAO6yB,eACvBnM,iBAAkB1mB,GAAO8yB,iBACzBtgB,OAAQ,CAAEC,IAAKwb,GAAY/J,EAAQ6O,YACnClE,WAAY,UAEbzK,IAAgBC,GAAaC,OAC5B,kBAACnjB,EAAA,EAAD,CAAMC,MAAOpB,GAAOgzB,aAClB,kBAAC7xB,EAAA,EAAD,CAAMC,MAAOpB,GAAOizB,cAClB,kBAAC,UAAD,CACEl1B,KAAK,aACLiX,MAAO7B,EACP/R,MAAOpB,GAAOkzB,SACd5xB,KAAM,OAKd,kBAACH,EAAA,EAAD,CAAMC,MAAOpB,GAAOmzB,iBAClB,kBAAC,GAAD,CACEjP,QAASA,EACTuL,iBAAkB,SAACpB,GAAD,OAAcoD,EAAepD,EAAS3I,SAE1D,kBAACvkB,EAAA,EAAD,CAAMC,MAAOpB,GAAOozB,0BAClB,kBAACnf,EAAA,EAAD,CAAM7S,MAAOpB,GAAOwS,OAAQ0c,cAAe,GACzC,kBAAC,GAAD,CACE9K,YAAaA,EACbF,QAASA,IAEX,kBAACjQ,EAAA,EAAD,KACGsd,EADH,MACgBrN,EAAQmP,QAAanP,EAAQmP,OAA7B,MACbzP,GAAcM,EAAQva,aAUjC3J,GAASC,IAAWC,OAAO,CAC/BqyB,cAAe,CACbxxB,QAAS,EACT8T,aAAc,GACdH,OAAQ,GACR8d,oBAAqB,GACrBC,qBAAsB,IAExBI,eAAgB,CACdpe,MAAO,OACPE,OAAQ,OACRhU,gBAAiB,UACjB8xB,qBAAsB,GACtBD,oBAAqB,IAEvBM,iBAAkB,CAChBnyB,gBAAiB,cACjB8xB,qBAAsB,GACtBD,oBAAqB,IAEvB9f,MAAO,CACL+B,MAAO,OACPE,OAAQ,OACR6d,oBAAqB,GACrBC,qBAAsB,IAExBO,YAAa,CACXve,MAAO,OACPE,OAAQ,OACRhU,gBAAiBwS,EAAwB,GACzC7S,SAAU,WACVD,eAAgB,SAChBoyB,qBAAsB,GACtBD,oBAAqB,IAEvBE,eAAgB,CACdje,MAAO,OACPnU,SAAU,WACVM,OAAQ,EACRwkB,QAAS,OACTtkB,cAAe,MACfT,eAAgB,gBAChBuU,WAAY,cAEdqe,aAAc,CACZze,UAAW,SACXG,OAAQ,GACRF,MAAO,GACPI,aAAc,IACdlU,gBAAiBwS,EAAoB,GACrC9S,eAAgB,UAElB6yB,SAAU,CACR1e,UAAW,UAEb2e,gBAAiB,CACfze,OAAQ,GAEV0e,yBAA0B,CACxBhzB,KAAM,EACNU,cAAe,MACfoV,UAAW,GACXkP,QAAS,OACT/kB,eAAgB,iBAElBizB,SAAU,CACRxe,UAAW,IAEbye,OAAQ,CACNxe,aAAc,GAEhB8a,YAAa,CACXlvB,gBAAiBwS,EAAoB,GACrC0B,aAAc,EACd9T,QAAS,EACT2T,OAAQ,IAEVlC,OAAQ,CACNwC,MAAO7B,EACP8B,WAAY,kBACZE,SAAU,GACVT,OAAQ,EACR0Q,QAAS,OACTxQ,WAAY,UAEdge,aAAc,CACZ5d,MAAO7B,KCxRLqgB,GAAmC,CACvCrvB,eAAgB,GAChBF,eAAgB,IAGLwvB,GAAgBpnB,IAAMC,cAAuB,CACxDonB,YAAaF,GACbG,eAAgB,aAChBjkB,QAAS,oBAAApK,EAAAC,OAAA,wGAaEquB,GAAiD,SAAC3yB,GAC7D,MACE2N,qBAAWxC,IADLpI,EAAR,EAAQA,mBAAoBwG,EAA5B,EAA4BA,2BAA4BoC,EAAxD,EAAwDA,gBAGxD,EACE5E,mBAAwBhE,GAD1B,WAAO0vB,EAAP,KAAoBC,EAApB,KAEA,EAAoC3rB,mBAAwB0rB,GAA5D,WAAOG,EAAP,KAAmBC,EAAnB,KACA,EAAkC9rB,mBAAwBwrB,IAA1D,WAAOO,EAAP,KAAkBC,EAAlB,KAEMC,EAAa5rB,uBAAY,0BAAA/C,EAAAC,OAAA,uDACvB2uB,EAAW,GACbH,EAAU5vB,eAAeuT,QAC3Bwc,EAASC,KACPvnB,EAAgBmnB,EAAU5vB,eAAgB,CAAEiwB,YAAa,aAEzDL,EAAU9vB,eAAeyT,QAC3Bwc,EAASC,KACPvnB,EAAgBmnB,EAAU9vB,eAAgB,CAAEmwB,YAAa,cARhC,WAAA9uB,EAAA,MAWvBG,QAAQ4uB,IAAIH,IAXW,OAY7BF,EAAaR,IAZgB,8DAa5B,CAACO,EAAWnnB,EAAiBonB,IAE1BtkB,EAAUrH,uBAAY,oBAAA/C,EAAAC,OAAA,kEAAAD,EAAA,MACpB2uB,KADoB,yBAAA3uB,EAAA,MAEpBkF,KAFoB,8DAGzB,CAACA,IAEJgD,qBAAU,WACR,IAAQrJ,EAAmCH,EAAnCG,eAAgBF,EAAmBD,EAAnBC,eACxB0vB,EAAe,CAAExvB,iBAAgBF,qBAChC,CAACD,IAEJwJ,qBAAU,WACR,IAAM8mB,EAAeC,sBACnBV,EAAW1vB,eACXuvB,EAAYvvB,gBAERqwB,EAAeD,sBACnBV,EAAW5vB,eACXyvB,EAAYzvB,iBAEVqwB,EAAa5c,QAAU8c,EAAa9c,SACtCsc,EAAa,CACX7vB,eAAe,GAAD,YAAM4vB,EAAU5vB,gBAAhB,KAAmCmwB,IACjDrwB,eAAe,GAAD,YAAM8vB,EAAU9vB,gBAAhB,KAAmCuwB,MAGrDV,EAAcJ,KACb,CAACA,IAEJlmB,qBAAU,WACR,IAAMinB,EAAQ3J,YAAW,oBAAAxlB,EAAAC,OAAA,kEAAAD,EAAA,MACjB2uB,KADiB,8DAEtB,KAEH,OAAO,kBAAMS,aAAaD,MACzB,CAACf,EAAa9mB,EAAiBqnB,IAElC,IAAMj2B,EAAQikB,mBACZ,iBAAO,CACLyR,cACAC,iBACAjkB,aAEF,CAACgkB,EAAaC,EAAgB/mB,EAAiBpC,IAGjD,OACE,kBAACipB,GAAchmB,SAAf,CAAwBhF,MAAOzK,GAC5BiD,EAAMyM,WAKAinB,GAAiBlB,GAAc7lB,S,4EC7FrC,SAASqG,GAAKhT,GACnB,IAAQG,EAAgDH,EAAhDG,MAAiCwzB,GAAe3zB,EAAzC4zB,WAAyC5zB,EAA7B6zB,UAA3B,KAAwD7zB,EAAxD,KACM+T,EAAQ7B,EAGd,OAAO,gBAAC,IAAD,MAAa/R,MAAO,CAAC,CAAE4T,QAAOC,WAFlB,UAEgC7T,IAAYwzB,IAG1D,SAASzzB,GAAKF,GACnB,IAAQG,EAAgDH,EAAhDG,MAAiCwzB,GAAe3zB,EAAzC4zB,WAAyC5zB,EAA7B6zB,UAA3B,KAAwD7zB,EAAxD,KACMN,EAAkBwS,EAExB,OAAO,gBAAC,IAAD,MAAa/R,MAAO,CAAC,CAAET,mBAAmBS,IAAYwzB,I,qkBCK/D,IAuBYvQ,GAvBNrkB,GAASC,IAAWC,OAAO,CAC/B60B,cAAe,CACbp0B,gBAAiBwS,GAEnB6hB,SAAU,CACRr0B,gBAAiBwS,EACjByB,WAAY,SACZvU,eAAgB,UAElB40B,MAAO,CAAExf,WAAY,OAAQM,eAAgB,GAAIf,MAAO,W,SAc9CqP,O,iBAAAA,I,uBAAAA,I,uBAAAA,I,qBAAAA,I,yBAAAA,I,mBAAAA,I,cAAAA,Q,KAUL,IAAM8M,GAAiB,SAAC9H,GAC7B,OAAIA,EAAK9E,SACAF,GAAaC,MACX+E,EAAKwI,mBACPxN,GAAaG,SACX6E,EAAKyI,mBACPzN,GAAaI,SACX4E,EAAK0I,kBACP1N,GAAaK,QACX2E,EAAK2I,oBACP3N,GAAaM,UACX0E,EAAK4I,iBACP5N,GAAaO,OAEfP,GAAa6Q,KAGTrd,GACX,SACEsd,EACAC,EACAC,EACAC,GAJF,OAMA,SAACxd,GACKud,EAEAA,IACCF,GACqC,IAAtCrd,EAAMC,YAAYC,cAAc2D,GAChC2Z,GAEAA,GAAiB,GAGuB,IAAtCxd,EAAMC,YAAYC,cAAc2D,GAAWwZ,EAC7CC,GAAc,GACLtd,EAAMC,YAAYC,cAAc2D,EAAI,IAAMwZ,GACnDC,GAAc,KAKTG,GAA+C,SAAC,GAKtD,IAJLpmB,EAII,EAJJA,WACAC,EAGI,EAHJA,UACAC,EAEI,EAFJA,WACAE,EACI,EADJA,WAEMrM,EAAO0L,qBAAW8K,IAClB8b,EAAe5mB,qBAAWiL,IAChC,EAAwCjL,qBAAW6kB,IAA9BE,GAArB,EAAQD,YAAR,EAAqBC,gBACrB,EAA0C3rB,qBAA1C,WAAOsH,EAAP,KAAsBmmB,EAAtB,KACA,EAAoCztB,oBAAkB,GAAtD,WAAOmtB,EAAP,KAAmBC,EAAnB,KACA,EAA0CptB,oBAAkB,GAA5D,WAAOqtB,EAAP,KAAsBC,EAAtB,KACMI,EAAclf,iBAAiB,MAiCjCmf,EAAiCnf,iBAAO,CAC1C,CAAEof,kBAjCsB,CACxBC,4BAA6B,IAgCRC,uBA7BQ,SAACC,GAI9BT,GAAiB,SAACU,GAoBhB,OAnBKA,GACHrC,GAAe,SAACE,GACd,GAAIA,EAAW1vB,eAAeuT,OAAQ,CACpC,IAAMue,EAAUF,EAAKE,QAClB5rB,QAAO,YAA0B,IAAvBvB,EAAsB,EAAtBA,IAAKotB,EAAiB,EAAjBA,WACd,OACEptB,GAAOotB,GAAcrC,EAAW1vB,eAAepE,SAAS+I,MAG3DO,KAAI,qBAAGP,OACV,OAAO,SACF+qB,GADL,IAEE1vB,eAAgB0vB,EAAW1vB,eAAekG,QACxC,SAACvB,GAAD,OAAUmtB,EAAQl2B,SAAS+I,QAIjC,OAAO+qB,KAEJmC,SAQLG,EAAc3f,iBAAetT,GA4BnC,OA1BAsK,qBAAU,WACR,IAAM4oB,EAAa,SAACloB,GAAD,OAAeA,EAAI2M,OAChCwb,EAAQC,wBAAapzB,EAAMizB,EAAYziB,QAAS0iB,GAChDG,EAAQD,wBAAaH,EAAYziB,QAASxQ,EAAMkzB,IACjDC,EAAM3e,QAAW6e,EAAM7e,UAE5Bye,EAAYziB,QAAUxQ,KACrB,CAACA,IAEJsK,qBAAU,WACRioB,EAAiBhsB,KAAM+sB,iBACtB,CAACL,EAAYziB,UAEhBlG,qBAAU,WAAO,IAAD,IAMZ,EAJAgoB,EAAa1b,aAAb,SACA4b,EAAYhiB,UADZ,SACA,EAAqBzS,MAAMmJ,OAA3B,EAAiCsN,QACjCyd,IACCE,IAEDC,GAAiB,GACjBF,GAAc,GACd,SAAAM,EAAYhiB,UAAZ,EAAqBqX,cAAc,CAAE7sB,MAAO,OAE7C,CAACs3B,IAGF,kBAAC,GAAD,CACErmB,WAAYA,EACZC,UAAWA,EACXC,WAAYA,EACZE,WAAYA,EACZD,cAAeA,GAEf,kBAACmnB,GAAD,CACE5e,SAAUA,GACRsd,EACAC,EACAC,EACAC,GAEFH,WAAYA,EACZO,YAAaA,EACbC,+BAAgCA,EAChCF,iBAAkBA,MAc1B,SAASgB,GAAT,GAM8B,IAL5BtB,EAK2B,EAL3BA,WACAO,EAI2B,EAJ3BA,YACAC,EAG2B,EAH3BA,+BACA9d,EAE2B,EAF3BA,SACA4d,EAC2B,EAD3BA,iBAEA,EACE7mB,qBAAWiB,IADL3N,EAAR,EAAQA,SAAUhB,EAAlB,EAAkBA,UAAWe,EAA7B,EAA6BA,MAAO0N,EAApC,EAAoCA,SAAUC,EAA9C,EAA8CA,iBAEtC+E,EAAW/F,qBAAWwhB,IAAtBzb,OACR,EAAsC3M,oBAAkB,GAAxD,WAAO0uB,EAAP,KAAqBC,EAArB,KACA,EAAiC/nB,qBAAW6kB,IAApCC,EAAR,EAAQA,YAAahkB,EAArB,EAAqBA,QAUrB,OARAlC,qBAAU,WACRoC,GAAkBulB,KACjB,CAACA,IAEJ3nB,qBAAU,WACJkpB,GAAchnB,MACjB,CAACgnB,IAGF,kBAACtK,GAAA,EAAD,CACEvY,IAAK6hB,EACLxjB,sBAAuBlS,GAAOg1B,SAC9B5zB,MAAO,CAACpB,GAAO+0B,cAAe,CAAEpgB,WAChCvK,KAAMlI,EACNoqB,aAAc,SAACpI,GAAD,SAAgBA,EAAQ+L,WACtC2G,aAAc,YACP10B,EAASwV,QAAUzV,GAASC,EAASwV,QAE1C/H,EAASzN,EAASwV,SAEpBmf,sBAAuB,GACvBhf,SAAUA,EACV8d,+BAAgCA,EAA+BjiB,QAC/DojB,eACE,kBAAC,GAAD,CACE7W,YAAayW,GAAgBx1B,KAAei0B,EAC5C7zB,KAAK,QACL4a,UAAW/I,EACXkN,UAAW,WACTsW,GAAc,GACd7L,YAAW,WACT2K,EAAiBhsB,KAAM+sB,eACvBG,GAAc,KtD7OI,SsDkP1BnP,WAAY,YAAe,IAAZ6B,EAAW,EAAXA,KACb,OACE,oCACE,kBAAC,GAAD,CACEnF,QAASmF,EACTjF,YAAa+M,GAAe9H,GAC5BiI,SAAUoC,EAAYvvB,eAAepE,SAASspB,EAAK4G,aAGpD/tB,EAASwV,SAAWxV,EAASwvB,QAAQrI,GAAQ,GAC5C,kBAAC,GAAD,CACEjoB,MAAO,CACLT,gBAAiBwS,EACjB4B,aAAc,QAO1BgiB,mBACE71B,EAAY,KACV,kBAAC+S,EAAA,EAAD,CAAM7S,MAAOpB,GAAOi1B,OAApB,8DCxRV,IAAMj1B,GAASC,IAAWC,OAAO,CAC/B82B,KAAM,CACJ52B,KAAM,EACNO,gBAAiBwS,GAEnBR,aAAc,CACZ7R,cAAe,MACf6T,OAAQ,GACRD,OAAQ,GACRG,aAAc,GACde,YAAazC,EACbwC,YAAa,EACbtV,eAAgB,SAChBuU,WAAY,UAEd/B,WAAY,CACVzS,KAAM,EACN4U,MAAO7B,EACP6a,kBAAmB,GACnB1Y,aAAc,QAEhByP,KAAM,CACJ3P,YAAa,EACbC,aAAc,KAGL4hB,GAAwD,SAAC,GAE/D,IADL3gB,EACI,EADJA,WAEA,EAAoCzO,GAAY,GAAI,KAApD,WAAOwH,EAAP,KAAmB6nB,EAAnB,KACMC,EAAc3gB,mBAEpB,OACE,kBAACrV,EAAA,EAAD,CAAMC,MAAOpB,GAAOg3B,MAClB,kBAAC71B,EAAA,EAAD,CAAMC,MAAOpB,GAAO2S,cAClB,kBAAC,UAAD,CACE5U,KAAK,SACLuD,KAAM,GACN0T,MAAO7B,EACP/R,MAAOpB,GAAO+kB,OAEhB,kBAACnS,EAAA,EAAD,CACExR,MAAOpB,GAAO6S,WACdgB,IAAKsjB,EACLnkB,aAAc,SAAC6C,GAAD,OAAUqhB,EAAcrhB,IACtC5C,YAAY,aACZC,qBAAsBC,EAAoB,GAC1CC,eAAe,OACfE,aAAa,UACbC,cAAc,OACdK,cAAc,MAEbvE,GACD,kBAAC,IAAD,CACEjO,MAAO,CAAC,IACRkT,QAAS,WACP6iB,EAAYzjB,QAAQ0jB,QACpBF,EAAc,MAGhB,kBAAC,UAAD,CACEn5B,KAAK,SACLuD,KAAM,GACN0T,MAAO7B,EACP/R,MAAOpB,GAAO+kB,SAKtB,kBAAC7T,GAAD,MACG,YAAgC,IAA7B9B,EAA4B,EAA5BA,UAAWD,EAAiB,EAAjBA,WACb,OACE,kBAAC,GAAD,CACEmH,WAAYA,EACZlH,UAAWA,EACXD,WAAYA,EACZE,WAAYA,SC7EpBrP,GAASC,IAAWC,OAAO,CAC/B82B,KAAM,CACJ52B,KAAM,EACNO,gBAAiBwS,KAGRkkB,GAAiE,SAAC,GAExE,IADL/gB,EACI,EADJA,WAEA,EAA4B1H,qBAAWxC,IAA/B/I,EAAR,EAAQA,KAAMnC,EAAd,EAAcA,UACd,EAAoC8G,mBAClC3E,EAAKC,gBADP,WAAOiM,EAAP,KAAmB+nB,EAAnB,KAGMzgB,EAAY0gB,cAMlB,OALA/pB,qBAAU,WACHqJ,IACDxT,EAAKC,eAAeoU,OAAQ4f,EAAcj0B,EAAKC,gBAC9Cg0B,EAAc,CAAC,QACnB,CAACzgB,IAEF,kBAAC1V,EAAA,EAAD,CAAMC,MAAOpB,GAAOg3B,MAClB,kBAAC,EAAD,CAAS91B,UAAWA,IAEpB,kBAAC,GAAD,CAAeoV,WAAYA,EAAY/G,WAAYA,MCvBnDvP,GAASC,IAAWC,OAAO,CAC/Bs3B,oBAAqB,CACnB12B,cAAe,MACfiU,aAAc,GACdhU,QAAS,EACT4T,OAAQ,GACRF,MAAO,IACPD,UAAW,SACX7T,gBAAiBwS,EACjB0B,aAAc,IACdD,WAAY,SACZvU,eAAgB,SAChBC,SAAU,WACVI,OAAQ,GAEVqkB,KAAM,CACJhkB,QAAS,EACT+qB,kBAAmB,GAErB2L,SAAU,CACR/hB,iBAAkB,MAIhBgiB,GAA+B,SAACrO,GAAD,MAC1B,SAATA,GACS,WAATA,GACS,cAATA,GACS,iBAATA,GACS,mBAATA,GACS,sBAATA,GAEWsO,GAET,SAAC12B,GACH,IAAQjD,EAAmCiD,EAAnCjD,MAAOqY,EAA4BpV,EAA5BoV,YAAaC,EAAerV,EAAfqV,WAC5B,OAAOohB,GAA6B15B,EAAMC,OAAOD,EAAME,OAAOH,MAC5D,kBAACoD,EAAA,EAAD,CAAMC,MAAOpB,GAAOw3B,qBACjBx5B,EAAMC,OAAOoL,KAAI,SAACxL,EAAYK,GAC7B,IAAQia,EAAY9B,EAAYxY,EAAMiL,KAA9BqP,QACFtB,EAAY7Y,EAAME,QAAUA,EAqBlC,OACEw5B,GAA6B75B,EAAME,OACjC,kBAACwa,GAAA,EAAD,CACEC,kBAAkB,SAClBC,mBAAoB5B,EAAY,CAAE6B,UAAU,GAAS,GACrDC,mBAAoBR,EAAQS,yBAC5BC,OAAQV,EAAQW,aAChBxE,QA1BU,WACd,IAAMwD,EAAQxB,EAAW0C,KAAK,CAC5B3W,KAAM,WACN4W,OAAQpb,EAAMiL,IACdoQ,mBAAmB,IAGhBrC,GAAciB,EAAMqB,kBAGvBtC,GACgB,SAAfhZ,EAAME,MAAkC,iBAAfF,EAAME,MAEhCuY,EAAWshB,UAAU,CACnB9d,aAAa,IANfxD,EAAW8C,SAAS,CAAErb,KAAMF,EAAME,KAAMsb,OAAO,KAmB7CjY,MAAOpB,GAAOy3B,SACd3uB,IAAKjL,EAAMiL,KAEX,kBAAC3H,EAAA,EAAD,CACEC,MAAO,CACLpB,GAAO+kB,KACP,CACE8G,kBAAmBhV,EACf1D,EACA,eAIR,kBAAC,UAAD,CACEpV,KACiB,SAAfF,EAAME,MAAkC,iBAAfF,EAAME,KAC3B,UACe,WAAfF,EAAME,MACS,mBAAfF,EAAME,KACN,SACA,kBAENuD,KAAM,GACN0T,MAAO7B,UASrB,sCCxGEnT,GAASC,IAAWC,OAAO,CAC/B82B,KAAM,CACJ52B,KAAM,EACNO,gBAAiBwS,KAGR0kB,GAA4D,SAAC,GAEnE,IADLvhB,EACI,EADJA,WAEA,OACE,gBAACnV,EAAA,EAAD,CAAMC,MAAOpB,GAAOg3B,MAClB,gBAAC9lB,GAAD,MACG,YAAgC,IAA7B9B,EAA4B,EAA5BA,UAAWD,EAAiB,EAAjBA,WACb,OACE,gBAAC,GAAD,CACEmH,WAAYA,EACZlH,UAAWA,EACXD,WAAYA,SCfpBnP,GAASC,IAAWC,OAAO,CAC/BC,UAAW,CACTC,KAAM,EACNC,eAAgB,aAChBuU,WAAY,YAIHkjB,GAAY,SAACrlB,GAExB,OADAA,EAAMA,GAAO,GACN3Q,GAAWwF,KAAKmL,GAAOA,EAAMhU,GAAU,CAAC+C,EAAQiR,KAG5CslB,GAAyD,SACpE92B,GAEA,MAAsC+G,oBAAS,GAA/C,WAAOgwB,EAAP,KAAqBC,EAArB,KACMzlB,EAASvR,EAAMpD,MAAMsM,OACrB+tB,EAASJ,GAAUtlB,EAAO2lB,KAC1BC,EAAc52B,EAAN,2BAAuC02B,EACrD,OACE,kBAAC/2B,EAAA,EAAD,CAAMC,MAAOpB,GAAOG,WAClB,kBAAC,EAAD,CAASe,UAAW82B,IACpB,4BACEvjB,MAAO,OACPE,OAAQ,OACR0jB,IAAKD,EACLE,OAAQ,WACNL,GAAc,Q,kBC4DlBpS,GAA0BC,KAAUC,eAAiB,EAwf3D,SAASC,GAAT,GAOI,IANFC,EAMC,EANDA,WACGhlB,EAKF,WACD,OAAIglB,EAAmB,kBAACjU,EAAA,EAAe/Q,GAChC,kBAACE,EAAA,EAASF,GAGJs3B,OA/fblsB,IAAM8Z,YAAW,SAACllB,EAAOmlB,GACvB,IACEvN,EAuCE5X,EAvCF4X,OACA2N,EAsCEvlB,EAtCFulB,gBACAC,EAqCExlB,EArCFwlB,SAHF,EAwCIxlB,EApCFG,aAJF,MAIU,GAJV,EAKE8gB,EAmCEjhB,EAnCFihB,eACAwE,EAkCEzlB,EAlCFylB,iBACAC,EAiCE1lB,EAjCF0lB,kBACAC,EAgCE3lB,EAhCF2lB,mBACAC,EA+BE5lB,EA/BF4lB,cATF,EAwCI5lB,EA9BF6lB,yBAVF,MAUsB,GAVtB,IAwCI7lB,EA7BFmJ,YAXF,MAWS,GAXT,EAYE2c,EA4BE9lB,EA5BF8lB,WACAC,EA2BE/lB,EA3BF+lB,WACAve,EA0BExH,EA1BFwH,MAdF,EAwCIxH,EAzBFgmB,mBAfF,MAegB,UAfhB,EAgBEhS,EAwBEhU,EAxBFgU,WAhBF,EAwCIhU,EAvBFgS,mBAjBF,MAiBgB,cAjBhB,IAwCIhS,EAtBFiV,iBAlBF,MAkBc,IAlBd,IAwCIjV,EArBFimB,iBAnBF,MAmBc,EAnBd,IAwCIjmB,EApBFkmB,eApBF,WAwCIlmB,EAnBFmmB,wBArBF,WAwCInmB,EAlBFomB,gBAtBF,SAuBEC,EAiBErmB,EAjBFqmB,eAvBF,EAwCIrmB,EAhBFsmB,uBAxBF,MAwBoB,kBAAM,MAxB1B,EAyBEC,EAeEvmB,EAfFumB,WACA1U,EAcE7R,EAdF6R,QACAC,EAaE9R,EAbF8R,OA3BF,EAwCI9R,EAZFwmB,kBA5BF,WAwCIxmB,EAXFymB,oCA7BF,WAwCIzmB,EAVF0mB,wBA9BF,MA8BqB,OA9BrB,EA+BEC,EASE3mB,EATF2mB,cACAjnB,GAQEM,EARFN,gBACAqS,GAOE/R,EAPF+R,aACA6U,GAME5mB,EANF4mB,kBACAC,GAKE7mB,EALF6mB,oBACAnP,GAIE1X,EAJF0X,mBACAoP,GAGE9mB,EAHF8mB,4BArCF,GAwCI9mB,EAFF+mB,aAtCF,OAsCS,UAtCT,GAuCE/B,GACEhlB,EADFglB,WAGIpS,GAAM2C,iBAAa,MACnByR,GAAUzR,iBAAiB,MACjC,GAA8BxO,oBAAkB,GAAhD,aAAOqe,GAAP,MAAgBC,GAAhB,MACA,GAAwCte,mBAAc,MAAtD,aAAOkgB,GAAP,MAAqBC,GAArB,MACA,GAAgCngB,mBAAgBoC,GAAhD,aAAOge,GAAP,MAAiBC,GAAjB,MACA,GAAgCrgB,qBAAhC,aAAO1H,GAAP,MAAiBgoB,GAAjB,MACA,GAA4CtgB,mBAAiB,GAA7D,aAAOugB,GAAP,MAAuBC,GAAvB,MAEA,GAAgC/Q,KAAWvN,IAAI,UAAhCue,GAAf,GAAQhU,MAAkBiU,GAA1B,GAAkB/T,OACZgU,GAAoC1G,mBAAQ,WAChD,MAAO,CACLthB,gBAAiB,kBACjBiU,WAAY,YAEb,IACGgU,GAA6B3G,mBAAQ,WACzC,MAAO,CACLxN,MAAO,OACPD,UAAW,YAEZ,CAACiU,KAEJI,8BAAoBzC,GAAY,WAC9B,MAAO,CAAE0C,KAAMC,GAAWC,MAAOC,OAGnCzb,qBAAU,WACR6a,GAAY,KAAIje,MAEf,CAACA,IAEJ,IAAM2e,GAAY,WACX5B,IACHb,IAAW,GACPxT,GACFA,IAGF6W,OAIEV,GAAa5gB,uBAAY,WACxB8e,IACHb,IAAW,GACPvT,GACFA,OAGH,CAACoU,EAASpU,IAEP6W,GAAOvhB,uBAAY,WACvB,OAAI4M,EACK,CACLA,WAAYA,GAGP,KAER,CAACA,IAEE4U,GAAWxhB,uBAAY,WACvBwL,IAAG,MAAIA,OAAKH,SACdG,GAAIH,QAAQoW,iBAAgB,SAACC,EAAOC,EAAOvV,EAAOE,GAChD,IAAMsV,EAAkB,UAATjC,GACTvnB,EAAMwpB,EAAS,GAAKtV,EAASqV,EAAQ,EACrCtpB,EAASgoB,GAAIjoB,EAAMkU,EACnBpU,EAAO2pB,KAAYC,MAAQ1B,GAAIhU,EAAQsV,EAAQA,EAErDzB,GAAY,CACV2B,SACAxV,MAAOwG,KAAK2G,MAAMnN,GAClBhU,IAAKwa,KAAK2G,MAAMnhB,EAAMolB,IACtBnlB,OAAQua,KAAK2G,MAAMlhB,EAASmlB,IAC5BtlB,KAAM0a,KAAK2G,MAAMrhB,GACjBoU,OAAQsG,KAAK2G,MAAMjN,UAIxB,CAAC+T,GAAGD,GAAGT,KAEJoC,GAAoB/hB,uBACxB,SAACgiB,GACCR,KACArB,GAAkB6B,EAAEC,eAAe3V,UAErC,CAACkV,KAGGU,GAAoBliB,uBAAY,WACpCmgB,GAAkB,GAClBqB,OACC,CAACA,KAEJrc,qBAAU,WACR,IAAMgd,EAA8B1W,IAAS4K,YAC3C,kBACA0L,IAEIK,EAA8B3W,IAAS4K,YAC3C,kBACA6L,IAGF,OAAO,WAC8C,oBAA/C,MAAOC,OAAP,EAAOA,EAA6BE,SACtCF,EAA4BE,SAGqB,oBAA/C,MAAOD,OAAP,EAAOA,EAA6BC,SACtCD,EAA4BC,YAG/B,CAACH,GAAmBH,KAEvB,IAAMO,GAAWtiB,uBAAY,WAC3B,IAAMuiB,EACa,kBAAVniB,EAAqBH,KAAE4B,IAAIzB,EAAOue,GAAcve,EAEnD7D,EAAUwF,EAAKC,QAAO,SAACggB,GAAD,OAC1B/hB,KAAEuiB,QAAQD,EAActiB,KAAE4B,IAAImgB,EAAGrD,OAG/BpiB,EAAQ8S,OAAS,EACnByQ,GAAgBvjB,EAAQ,IAExBujB,GAAgB,QAEjB,CAAC/d,EAAM3B,EAAOue,IAEjBxZ,qBAAU,WACRmd,OACC,CAACliB,EAAO2B,EAAMugB,KAEjB,IAAMhB,GAActhB,uBAAY,WAC1Bof,GAAcrd,EAAKsN,OAAS,GAAK0Q,GAAS1Q,SAAWtN,EAAKsN,QAC5DoT,YAAW,WACT,GAAI7C,IAAO,MAAIA,OAASvU,QAAS,CAC/B,IAMgD,EAN1CkX,EACa,kBAAVniB,EAAqBH,KAAE4B,IAAIzB,EAAOue,GAAcve,EAEnDvK,EAAQoK,KAAE8gB,UAAUhB,IAAU,SAACiC,GAAD,OAClC/hB,KAAEuiB,QAAQD,EAActiB,KAAE4B,IAAImgB,EAAGrD,OAEnC,GAAI9oB,GAAS,GAAKA,GAASkqB,GAAS1Q,OAAS,EACpC,MAAPuQ,IAAA,SAAAA,GAASvU,UAAT,EAAkBqX,cAAc,CAC9B7sB,MAAOA,EACP8sB,UAAU,OAIf,OAEJ,CAACvD,EAAYrd,EAAKsN,OAAQ0Q,GAAU3f,EAAOue,IAExCiE,GAAc5iB,uBAAY,WAC9B,IAAK8e,EAAS,CACZ,GAAIoB,GAAiB,GAAKlC,GACxB,OAAOvS,IAASC,UAGlB8V,KACAvD,IAAYD,IACZgC,GAAYje,GAEPic,GAKCtT,GACFA,IALED,GACFA,IAOJ6W,QAGD,CACDxC,EACAoB,GACAlC,GACAwD,GACAzf,EACAuf,GACA7W,EACAC,IAGImY,GAAW7iB,uBACf,SAACghB,GACC,GAAIxB,IAAqBC,GACvB,OAAOA,GAAoBuB,GAGzBrW,IACFA,GAAa,IAEfmV,GAAgBkB,GAChB5C,EAAS4C,GACTJ,OAEF,CACEpB,GACAoB,GACAxC,EACAzT,GACA8U,KAiCEqD,GAAc9iB,uBAClB,YAAoD,IAAjDghB,EAAgD,EAAhDA,KAAMnrB,EAA0C,EAA1CA,MACDktB,EAAalD,IAAgB5f,KAAE4B,IAAIge,GAAclB,GACjDtO,EAAWpQ,KAAEuiB,QAAQviB,KAAE4B,IAAImf,EAAMrC,GAAaoE,GAEpD,OADA9iB,KAAE+iB,OAAOhC,EAAM,CAAEiC,OAAQptB,IAEvB,kBAACstB,GAAA,EAAD,CACE1iB,IAAK5K,EAAM4N,WACX+M,OAAQvQ,KAAE4B,IAAImf,EAAM7C,GAAmBO,GACvC0E,aAAc9S,GACdA,mBAAoBrQ,KAAE4B,IACpBmf,EACAtB,IAA+BhB,GAEjC2E,cAAezE,EACf3S,QAAS,kBAAM4W,GAAS7B,KAExB,kBAACloB,EAAA,EAAD,CACEC,MAAOnB,IAAW2rB,QAAQ,CACxBhF,EACAlO,GAAY,CACV/X,gBAAiBsmB,MAIpBO,EACCA,EAAW6B,EAAM3Q,GAEjB,kBAACvX,EAAA,EAAD,CAAMC,MAAOpB,GAAOqpB,MAClB,kBAACpV,EAAA,EAAD,CACE7S,MAAOnB,IAAW2rB,QAAQ,CACxB5rB,GAAO+rB,SACPlF,EACA+C,QAGDthB,KAAE4B,IAAImf,EAAMtC,SAQ3B,CACEpO,GACAsO,EACAiB,GACA0B,GACA7B,GACAnB,EACAJ,EACAK,EACAE,EACAmE,GACA1D,EACAR,IAIEgF,GAAc3jB,uBAClB,SAAC4jB,GACC,IAAMC,IAAc7E,GAAmB4E,EAEjCE,EAAoB,WACxB,OACE,kBAACC,GAAA,EAAD,MACEvT,OAAQA,EAAS,YACjBF,mBAAoBA,GAAqB,aACrCiP,EAHN,CAIE3V,0BAA0B,UAC1B4B,IAAKoU,GACLoE,sBAAuB1C,GACvBvf,KAAMge,GACNf,WAAU4E,GAAgB5E,EAC1BG,WAAY2D,GACZmB,aAAc,SAACC,EAAOruB,GAAR,OAAkBA,EAAM4N,YACtC4b,6BAA8BA,MAKpC,OACE,kBAAC8E,GAAA,EAAD,KACE,kBAACrrB,EAAA,EAAD,CAAMC,MAAOpB,GAAOysB,YACjBP,GAAcC,KACbD,GAAcC,QAKxB,CACEhB,GACAxS,GACAiP,EACAQ,GACAf,EACAsC,GACAjC,EACA7O,IAIE6T,GAAerkB,uBAAY,WAC/B,GAAIge,IAAW/lB,GAAU,CACvB,IAAQ2pB,EAA6C3pB,GAA7C2pB,OAAQxV,EAAqCnU,GAArCmU,MAAOE,EAA8BrU,GAA9BqU,OAAQlU,EAAsBH,GAAtBG,IAAKC,EAAiBJ,GAAjBI,OAAQH,EAASD,GAATC,KAU5C,GAAIkU,GAAShU,GAAOC,EAAQ,CAC1B,IAAMisB,EAA2B,CAC/BpsB,KAAMA,EACN2V,UAAWA,EACXgR,UAAWA,GAEP+E,EACiB,SAArBtE,EAdEY,GAAiB,EACZ7nB,EAAS6nB,GAAiB5T,EAG5BjU,EAAS,IAYW,QAArBinB,EAIFiF,EAAgBX,EAAsBvrB,EAAND,EAUpC,OARE2mB,GACAmB,GAAiB,GACjB0D,GACqB,SAArBtE,IAEAiF,EAAerE,IAIf,kBAACsE,GAAA,EAAD,CACEC,aAAW,EACXC,sBAAoB,EACpB1G,QAASA,GACT2G,sBAAuB,CAAC,YAAa,YACrCC,eAAgBhC,IAEhB,kBAACuB,GAAA,EAAD,CAA0BlY,QAAS2W,IACjC,kBAAC9pB,EAAA,EAAD,CACEC,MAAOnB,IAAW2rB,QAAQ,CACxB5rB,GAAOktB,MACPjD,GAAUtB,GACVhoB,IAAmB,CAAEA,gBAAiBA,IAzBjB,MA6BvB,kBAACQ,EAAA,EAAD,CACEC,MAAOnB,IAAW2rB,QAAQ,CACxB5rB,GAAOktB,MACP,CACEzY,SAEDwX,EAEG,CACE5rB,eAAgB,WAChB8sB,cAAeP,GAHjB,CAAExK,WAAYwK,GAKlB3C,GAAUjqB,GAAOotB,cAGnB,kBAAC,GAAD,CACEnH,aAAcA,GACd7kB,MAAOnB,IAAW2rB,QAAQ,CACxB5rB,GAAOG,UACP8pB,EAASrB,GAAkB+D,EAC3BzK,KAGD8J,GAAYC,QAQ3B,OAAO,KAET,OAAO,OACN,CACD5F,GACA/lB,GACAioB,GACArS,EACAgR,EACAS,EACAP,EACA6D,GACAtC,GACAhoB,GACAuhB,EACA0G,GACAoD,KAGF,OACE,kBAAC7qB,EAAA,EAAD,CACEC,MAAOnB,IAAW2rB,QAAQ,CAAC5rB,GAAOqtB,SAAUjsB,IAC5CyS,IAAKA,GACLyZ,SAAUzD,IA9OU,WACtB,IAAMuB,EAAalD,IAAgB5f,KAAE4B,IAAIge,GAAclB,GACvD,OACE,kBAACwF,GAAA,EAAD,CACE3T,OAAQA,EACR4S,aAAc9S,GACdA,mBAAoBA,GACpBrE,QAAS2W,IAET,kBAAC9pB,EAAA,EAAD,CAAMC,MAAOpB,GAAOutB,UAApB,MACGjG,OADH,EACGA,EAAiBjB,IAClB,kBAACpS,EAAA,EAAD,MACE7S,MAAO,CACLpB,GAAO+rB,SACQ,OAAfX,EAAsBzE,EAAoBD,EAC1CkD,OAEE9C,GAEY,OAAfsE,EACG9iB,KAAE4B,IAAIge,GAAcnB,GACpB9T,GAELsU,EAAgBlB,MAyNpBmH,GACAd,SAmBI1sB,GAASC,IAAWC,OAAO,CACtCmtB,SAAU,CACRhtB,eAAgB,UAElBF,UAAW,CACTssB,WAAY,EACZ9W,YAAa,GACbC,YAAa,UACbjV,gBAAiB,QACjB8sB,YAAa,OACbC,aAAc,CACZjZ,MAAO,EACPE,OAAQ,GAEVgZ,cAAe,GACfC,aAAc,KACdzI,UAAW,GAEb+H,MAAO,CACL9sB,KAAM,GAERqsB,WAAY,CACVA,WAAY,GAEdoB,QAAS,CACPxtB,eAAgB,YAElBktB,SAAU,CACRzsB,cAAeopB,KAAYC,MAAQ,cAAgB,MACnD9pB,eAAgB,gBAChBuU,WAAY,SACZD,OAAQ,IAEV2D,MAAO,CACLvC,eAAgB,EAChBZ,SAAU,GACV2Y,iBAAkB5D,KAAYC,MAAQ,MAAQ,OAEhDd,KAAM,CACJtoB,QAAS,GACTD,cAAeopB,KAAYC,MAAQ,cAAgB,MACnD9pB,eAAgB,gBAChBuU,WAAY,UAEdmX,SAAU,CACR3rB,KAAM,EACN+U,SAAU,GACV2Y,iBAAkB5D,KAAYC,MAAQ,MAAQ,OAEhDpF,KAAM,CACJtQ,MAAO,GACPE,OAAQ,IAEVoZ,MAAO,CACLpY,YAAa,GACbC,YAAa,UACboY,kBAAmB,EACnBjZ,aAAc,EACdL,OAAQ,EACRC,OAAQ,IAEVyY,WAAY,CACVxY,WAAY,SACZvU,eAAgB,YCjpBdL,GAASC,IAAWC,OAAO,CAC/BqtB,SAAU,CACR5Y,OAAQ,GACRF,MAAO,IACP+E,YAAa,IAEfvG,YAAa,CACX+B,MAAO7B,EACPgC,SAAU,GACVmE,WAAY,EACZE,YAAa,GAEf2V,kBAAmB,CACjB3a,UAAW,aACXC,MAAO,IACPmB,YAAazC,EACbqlB,wBAAyB,GACzBC,sBAAuB,IAEzB7J,0BAA2B,CACzBxuB,KAAM,EACNU,cAAe,MACf6T,OAAQ,GACRD,OAAQ,GAEV4a,sBAAuB,CACrBta,MAAO7B,EACPgC,SAAU,IAEZuD,SAAU,CACRzD,WAAY,oBACZR,MAAO,OAETikB,WAAY,CACVzjB,WAAY,qBAIV0jB,GAAuB,CAC3BC,KAAM,SACNzqB,MAAO,GACP0M,MAAO,mBACPR,aAAa,EACbwe,aAAa,GAGTtR,GAAkB,kBACtB,kBAAC,UAAD,CAAMxpB,KAAM,cAAeuD,KAAM,GAAI0T,MAAO7B,KAGjC2lB,GAAsD,SAAC,GAE7D,IADLxiB,EACI,EADJA,WAGA,EAAgCtO,mBAAiB,IAAjD,WAAO0Q,EAAP,KAAiBqgB,EAAjB,KAEAvrB,qBAAU,WACR8I,EAAWshB,UAAU,CAAExoB,UAAWsJ,MACjC,CAACA,IAEJ,IAAM8O,EAAa,SAAC6B,GAClB,IAAM+B,EAAa1S,IAAa2Q,EAAKlb,MACrC,OACE,kBAAChN,EAAA,EAAD,CAAMC,MAAOpB,GAAO4uB,2BAClB,kBAAC3a,EAAA,EAAD,CACEib,cAAe,EACf9tB,MAAO,CACLpB,GAAOsvB,sBACPlE,EAAaprB,GAAO0Y,SAAW1Y,GAAO04B,aAGvCrP,EAAKxO,OAEPuQ,GAAc,kBAAC,UAAD,CAAMrtB,KAAK,QAAQuD,KAAM,OAKxCmlB,EAAW,SAAC4C,GAChB0P,EAAYrgB,IAAa2Q,EAAKlb,MAAQ,GAAKkb,EAAKlb,QAGlD,OACE,kBAACU,GAAD,MACG,SAACmqB,GAAD,OACC,kBAAC73B,EAAA,EAAD,KACE,kBAAC,GAAD,CACEiJ,KAAI,CAAGuuB,IAAH,YAAsBK,IAC1B/lB,YA5FQ,mBA6FR8T,WAAW,QACXC,WAAW,QACXve,MAAOiQ,EACP+N,SAAUA,EACVc,gBAAiBA,GACjBC,WAAYA,EACZpmB,MAAOpB,GAAOutB,SACdtH,YAAY,EACZ/P,UApGQ,GAqGN+E,KAAKC,MAAe,MAAV8d,OAAA,EAAAA,EAAYthB,SAAU,GAAK,EApGjC,IAsGNgQ,8BAA8B,EAC9BzS,WAAW,oBACXyR,iBAAkB1mB,GAAOiT,YACzB0T,kBAAmB3mB,GAAOiT,YAC1B6T,kBAAmB,CAAEoI,cAAe,GACpChN,eAAgBliB,GAAOmvB,kBACvBlI,YAAa9T,EAAwB,GACrCsU,YAAY,S,qkBCjHjB,IAAMwR,GAA6D,CACxE14B,KAAM,CACJ,CACExC,KAAM,UACNm7B,UAAW,QAEb,CACEn7B,KAAM,cACNm7B,UAAW,aAGf14B,MAAO,CACL,CACEzC,KAAM,WACNm7B,UAAW,cAKXl5B,GAASC,IAAWC,OAAO,CAC/B2vB,YAAa,CACX/uB,cAAe,MACf8T,WAAY,UAEdrU,KAAM,CAAEF,eAAgB,aAAciZ,WAAY,GAClD9Y,MAAO,CAAEH,eAAgB,WAAYmZ,YAAa,KAGvC2f,GAA8D,SACzEl4B,GAEA,IAAQqV,EAA6BrV,EAA7BqV,WAAYkN,EAAiBviB,EAAjBuiB,OAAQ4V,EAASn4B,EAATm4B,KAC5B,OACE,kBAACzE,GAAD,MACG,YAAsB,IAAnBjB,EAAkB,EAAlBA,YACF,OACE,kBAACvyB,EAAA,EAAD,CAAMC,MAAO,CAACpB,GAAO6vB,YAAa7vB,GAAOo5B,KACtCH,GAAYG,GAAM/vB,KAAI,SAAC0b,EAAMsU,GAC5B,IAAIC,EAAqB,EACrBrd,EAAkB,GAClB5G,EAAe,EAWnB,MAVa,SAAT+jB,IACFE,EACqB,SAAnBvU,EAAKmU,UACDxF,EAAYvvB,eAAeuT,OAC3Bgc,EAAYzvB,eAAeyT,QACR,IACvBuE,EAAkBqd,EAAqB,IAAM,GAAK,GAClDjkB,EAAeikB,EAAqB,IAAM,IAAM,GAIlD,kBAAC/gB,GAAA,EAAD,CACEzP,IAAKuwB,EACL/kB,QAAS,kBAAMgC,EAAW8C,SAAS2L,EAAKmU,YACxC93B,MAAO,CAAEiU,iBAERikB,EAAqB,GACpB,kBAACn4B,EAAA,EAAD,CACEC,MAAO,CACLX,IAAK,EACLD,MAAO,EACPF,SAAU,WACVK,gBAAiBwS,EACjBsB,MAAOwH,EACPtH,OAAQ,GACRE,aAAc,EACdxU,eAAgB,SAChBS,cAAe,QAGjB,kBAACmT,EAAA,EAAD,CACE7S,MAAO,CACL4T,MAAO7B,EACPgC,SAAU,GACVgb,WAAY,GACZlb,WAAY,qBAGbqkB,EAAqB,GAAK,GAAKA,GAElC,kBAACrlB,EAAA,EAAD,CACE7S,MAAK,IACH4T,MAAO7B,EACPgC,SAAU,EACVgb,WAAY,GACZlb,WAAY,oBACRqkB,EAAqB,KAAO,CAAElU,QAAS,UAN/C,MAaJ,0BACEmU,UAAU,iBACVn4B,MAAO,CACL4T,MACEwO,IAAWuB,EAAKmU,UACZ/lB,EACAA,EACNgC,SAAU,OACVT,OAAQ,IAGTqQ,EAAKhnB,eCpGpBy7B,GAAiC,CACrC76B,KAAM,GACNG,UAAW,YACXD,OAAQ,GACRG,aAAc,eACdE,eAAgB,aAChBC,kBAAmB,YACnBE,SAAU,wBAyDNo6B,GAAiB,SACrBnjB,EAGAkN,EACA4V,GALqB,OAOrB,kBAACj4B,EAAA,EAAD,CAAMC,MAAOpB,GAAO05B,UAClB,kBAAC,GAAD,CAAkBpjB,WAAYA,EAAYkN,OAAQA,EAAQ4V,KAAMA,MA8CvDO,GAET,SAAC14B,GAAW,IAAD,EACLqV,EAA+BrV,EAA/BqV,WAAYzY,EAAmBoD,EAAnBpD,MAAOsa,EAAYlX,EAAZkX,QAC3B,IAAK7B,EAAWsjB,UAAW,OAAO,KAClC,IAAMC,EAAU,MAAIh8B,GAAJ,SAAIA,EAAOsM,aAAX,EAAG,EAAkC0vB,WACrD,EAA4B7xB,mBAAS,IAArC,WAAOwb,EAAP,KAAesW,EAAf,KACA,EAAsC9xB,oBAAS,GAA/C,WAAO+xB,EAAP,KAAoBC,EAApB,KACA,EAAsChyB,oBAAS,GAA/C,WAAOiyB,EAAP,KAAoBC,EAApB,KACA,EAAkDlyB,oBAAS,GAA3D,WAAOmyB,EAAP,KAA0BC,EAA1B,KASA,OAPA5sB,qBAAU,YAvHW,SACrB1P,EACAg8B,GAOEA,EAJc,iBAAdh8B,GACc,mBAAdA,GACc,sBAAdA,EAEU,WAEI,SAAdA,GACc,WAAdA,GACc,cAAdA,EAEU,OAEAA,GAuGVu8B,CAAex8B,EAAME,KAAM+7B,GAnGH,SAC1Bh8B,EACAo8B,GAGEA,EADgB,cAAdp8B,GAgGFw8B,CAAoBz8B,EAAME,KAAMm8B,GAzFF,SAChCp8B,EACAs8B,GAGEA,EADgB,SAAdt8B,GAAsC,WAAdA,GAsF1By8B,CAA0B18B,EAAME,KAAMq8B,GA/Ed,SAC1Bt8B,EACAk8B,GAGEA,IADEl8B,KAAa07B,KA4EfgB,CAAoB38B,EAAME,KAAMi8B,KAC/B,CAACn8B,IAGF,kBAACsD,EAAA,EAAD,CAAMC,MAAOpB,GAAOy6B,qBACjBV,EA9DyB,SAC9BzjB,GAD8B,OAK9B,kBAACiC,GAAA,EAAD,CACEjE,QAAS,WACPgC,EAAWokB,UAEbt5B,MAAOpB,GAAO26B,YAEd,kBAAC,UAAD,CACE58B,KAAM,iBACNuD,KAAM,GACN0T,MAAO7B,EACP/R,MAAOpB,GAAO+kB,QAgDV6V,CAAwBtkB,GACxBmjB,GAAenjB,EAAYkN,EAAQ,QACvC,kBAACriB,EAAA,EAAD,CAAMC,MAAOpB,GAAOg3B,MAClB,kBAAC,KAAD,CAAM51B,MAAOpB,GAAO66B,0BACjBV,EACC,kBAAC,GAAD,CAAc7jB,WAAYA,IAE1BkjB,GAAO37B,EAAME,OAAS87B,GAAc1hB,EAAQ2iB,aAAe,KAIhEf,EAtD0B,SAC/Bl8B,EACAo8B,GAF+B,OAI/BA,EACE,kBAAC1hB,GAAA,EAAD,CACEjE,QAAS,WACPjW,KAAQ8zB,QAAQ2F,IAAU,MAACj6B,OAAD,EAACA,EAAOsM,QAA2BguB,OAE/D/2B,MAAOpB,GAAO26B,YAEd,kBAAC,UAAD,CACE58B,KAAM,OACNuD,KAAM,GACN0T,MAAO7B,EACP/R,MAAOpB,GAAO+kB,QAIlB,kBAAC5jB,EAAA,EAAD,CAAMC,MAAOpB,GAAO26B,aAoCdI,CAAyBl9B,EAAOo8B,GAChCR,GAAenjB,EAAYkN,EAAQ,WAKvCxjB,GAASC,IAAWC,OAAO,CAC/Bu6B,oBAAqB,CACnB9lB,OAAQ,GACRuS,UAAW,GACXhR,UAAW,GACXvV,gBAAiBwS,EACjByB,WAAY,SACZ9T,cAAe,OAEjB+5B,yBAA0B,CACxB7lB,MAAO7B,EACP8B,WAAY,mBACZE,SAAU,GACVK,UAAW,UAEbwhB,KAAM,CAAE52B,KAAM,GACd2kB,KAAM,CACJzL,WAAY,GACZE,YAAa,GAEfmhB,WAAY,CAAEK,SAAU,IACxBtB,SAAU,CAAEsB,SAAU,MCzLlBC,GAAYC,eAELC,GAAwD,WACnE,OACE,kBAACF,GAAU3gB,UAAX,CACEC,OAAQ,SAACtZ,GAAD,OAAW,kBAAC,GAAwBA,IAC5CuZ,cAAe,CACb4gB,OAAQ,SAACn6B,GAAD,OAAW,kBAAC,GAAoBA,MAG1C,kBAACg6B,GAAUtgB,OAAX,CACE5c,KAAK,OACL6c,cAAe,GACfzC,QAAS,CAAEkjB,eAAe,KAEzB,SAACp6B,GAAD,OACC,kBAAC,GAAD,CACEqV,WAAYrV,EAAMqV,WAClBzY,MAAOoD,EAAMpD,OAEb,kBAAC,GAAD,CACEyY,WAAYrV,EAAMqV,WAClBzY,MAAOoD,EAAMpD,YAKrB,kBAACo9B,GAAUtgB,OAAX,CAAkB5c,KAAK,SAAS6c,cAAe,KAC5C,SAAC3Z,GAAD,OACC,kBAAC,GAAD,CACEqV,WAAYrV,EAAMqV,WAClBzY,MAAOoD,EAAMpD,OAEb,kBAAC,GAAD,CACEyY,WAAYrV,EAAMqV,WAClBzY,MAAOoD,EAAMpD,YAKrB,kBAACo9B,GAAUtgB,OAAX,CAAkB5c,KAAK,YAAYu9B,UAAWjE,OCtC9Cr3B,GAASC,IAAWC,OAAO,CAC/Bq7B,aAAc,CACZn7B,KAAM,EACNC,eAAgB,SAChBuU,WAAY,UAEd4mB,UAAW,CACTz6B,QAAS,GACTJ,gBAAiB,QACjBkU,aAAc,GACd4Y,YAAa,OACbC,aAAc,CACZjZ,MAAO,EACPE,OAAQ,GAEVgZ,cAAe,IACfC,aAAc,EACdzI,UAAW,GAEbsW,UAAW,CACT1mB,aAAc,GACdS,UAAW,UAEbK,KAAM,CACJ1D,aAAc,SACd6C,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,GACVJ,aAAc,IAEhB2mB,WAAY,CACV56B,cAAe,MACfT,eAAgB,YAElBs7B,iBAAkB,CAChB3mB,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZymB,mBAAoB,CAClB5mB,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZ0mB,aAAc,CACZviB,WAAY,EACZvY,QAAS,GACT0T,MAAO,cACPG,WAAY,UAEdknB,eAAgB,CACdxiB,WAAY,GACZvY,QAAS,EACTitB,kBAAmB,GACnBvZ,MAAO,cACPG,WAAY,SACZvU,eAAgB,SAChBM,gBAAiBwS,EACjB0B,aAAc,KAIH,SAASknB,GAAT,GAGU,IAFvBC,EAEsB,EAFtBA,aACAC,EACsB,EADtBA,gBAEA,EAAoCrtB,qBAAWxC,IAAvCM,EAAR,EAAQA,kBAAmBrJ,EAA3B,EAA2BA,KAC3B,EAA0B2E,mBAA8B,CACtDk0B,SAAU,GACVC,SAAU,aACVC,WAAW,IAHb,WAAOp+B,EAAP,KAAciK,EAAd,KAKAuF,qBAAU,WACHnK,EAAKI,eAORwE,EAAS,CACPi0B,SACE,wHACFC,SAAU,aACVC,WAAW,IAVbn0B,EAAS,CACPi0B,SAAU,iEACVC,SAAU,kBAAMzvB,GAAkB,IAClC0vB,WAAW,MAUd,CAAC/4B,EAAKI,iBAIT,OACE,kBAACtC,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAAC1O,GAAA,EAAD,CACEwP,cAAc,OACdvP,aAAa,EACbzG,QAAS2V,EACT/O,eAAgB,WACdgP,GAAiBD,KAGnB,kBAAC76B,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAACp6B,EAAA,EAAD,CAAMC,MAAOpB,GAAOw7B,WAClB,kBAACvnB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAAO7X,EAAMk+B,UACjC,kBAAC/6B,EAAA,EAAD,CAAMC,MAAOpB,GAAO07B,YAClB,kBAACnjB,GAAA,EAAD,CACEnX,MAAOpB,GAAO67B,aACdvnB,QAAS,kBAAM2nB,GAAgB,KAE/B,kBAAChoB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO27B,kBArBb,aAuBR39B,EAAMo+B,WACL,kBAAC7jB,GAAA,EAAD,CACEnX,MAAOpB,GAAO87B,eACdxnB,QAAS,WACPtW,EAAMm+B,WACNF,GAAgB,KAGlB,kBAAChoB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO47B,oBA9Bb,mB,cC5FnB57B,GAASC,IAAWC,OAAO,CAC/Bq7B,aAAc,CACZvN,kBAAmB,GACnB5tB,KAAM,EACNC,eAAgB,SAChBuU,WAAY,UAEd4mB,UAAW,CACTz6B,QAAS,GACTJ,gBAAiB,QACjBkU,aAAc,GACd4Y,YAAa,OACbC,aAAc,CACZjZ,MAAO,EACPE,OAAQ,GAEVgZ,cAAe,IACfC,aAAc,EACdzI,UAAW,GAEbsW,UAAW,CACT1mB,aAAc,GACdS,UAAW,UAEbK,KAAM,CACJ1D,aAAc,SACd6C,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,GACVJ,aAAc,IAEhB2mB,WAAY,CACV56B,cAAe,MACfT,eAAgB,YAElBs7B,iBAAkB,CAChB3mB,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZymB,mBAAoB,CAClB5mB,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZ0mB,aAAc,CACZviB,WAAY,EACZvY,QAAS,GACT0T,MAAO,cACPG,WAAY,UAEdknB,eAAgB,CACdxiB,WAAY,GACZvY,QAAS,EACTitB,kBAAmB,GACnBvZ,MAAO,cACPG,WAAY,SACZvU,eAAgB,SAChBM,gBAAiBwS,EACjB0B,aAAc,KAIH,SAASynB,GAAT,GAOc,IAN3BC,EAM0B,EAN1BA,UACAjW,EAK0B,EAL1BA,WACA6V,EAI0B,EAJ1BA,SACAtmB,EAG0B,EAH1BA,KAG0B,IAF1B2mB,kBAE0B,MAFb,WAEa,MAD1BC,kBAC0B,MADb,YACa,EAC1B,OACE,kBAACt7B,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAAC1O,GAAA,EAAD,CACEwP,cAAc,OACdvP,aAAa,EACbzG,QAASkW,EACTtP,eAAgB,WACd3G,GAAYiW,KAGd,kBAACp7B,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAACp6B,EAAA,EAAD,CAAMC,MAAOpB,GAAOw7B,WAClB,kBAACvnB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAAOA,GAC3B,kBAAC1U,EAAA,EAAD,CAAMC,MAAOpB,GAAO07B,YAClB,kBAACnjB,GAAA,EAAD,CACEnX,MAAOpB,GAAO67B,aACdvnB,QAAS,kBAAMgS,GAAW,KAE1B,kBAACrS,EAAA,EAAD,CAAM7S,MAAOpB,GAAO27B,kBAAmBa,IAEzC,kBAACjkB,GAAA,EAAD,CACEnX,MAAOpB,GAAO87B,eACdxnB,QAAS,WACPgS,GAAW,GACX6V,MAGF,kBAACloB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO47B,oBAAqBa,S,qkBCnGzD,IA2CWC,GA3CL18B,GAASC,IAAWC,OAAO,CAC/B60B,cAAe,CACbp0B,gBAAiBwS,GAEnBwpB,WAAY,CACVhoB,OAAQ,GACRhU,gBAAiBwS,EACjByB,WAAY,aACZvU,eAAgB,UAElBu8B,WAAY,CACV5nB,MAAO7B,EACP8B,WAAY,mBACZE,SAAU,GACVO,iBAAkB,IAEpBshB,KAAM,CACJriB,OAAQ,GACRC,WAAY,SACZvU,eAAgB,gBAChBS,cAAe,OAEjB+7B,UAAW,CACT/Q,kBAAmB,EACnBD,kBAAmB1Y,GAErB0C,KAAM,CACJb,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,GACVO,iBAAkB,IAEpBqP,KAAM,CACJrP,iBAAkB,IAEpBqgB,KAAM,CACJrgB,iBAAkB,GAClBP,SAAU,GACVF,WAAY,kBACZD,MAAO7B,M,SAIAupB,O,6BAAAA,I,oBAAAA,Q,KAKJ,IAAMI,GAAuD,SAAC77B,GAAW,IAAD,EACrEqV,EAAerV,EAAfqV,WACR,EACE1H,qBAAWxC,IADL/I,EAAR,EAAQA,KAAMnC,EAAd,EAAcA,UAAWoK,EAAzB,EAAyBA,OAAQuB,EAAjC,EAAiCA,eAAgB7I,EAAjD,EAAiDA,mBAEjD,EACEgE,oBAAS,GADX,WAAO+0B,EAAP,KAAmCC,EAAnC,KAEA,EAA0Dh1B,mBACxD00B,GAAsBO,QADxB,WAAOC,EAAP,KAA8BC,EAA9B,KAGMC,GAAsB,WACzBV,GAAsBW,YAAc,CACnClB,SAAU,kBAAMtvB,KAChBgJ,KAAM,2DACN4mB,WAAY,SAJY,MAMzBC,GAAsBO,OAAS,CAC9Bd,SAAU,kBAAM7wB,KAChBuK,KAAM,wCACN4mB,WAAY,cATY,GAY5B,EAAoDz0B,oBAAS,GAA7D,WAAOs1B,EAAP,KAA2BC,EAA3B,KACA,EAAwDv1B,oBAAS,GAAjE,WAAOw1B,EAAP,KAA6BC,EAA7B,KAUA,OARAjwB,qBAAU,WACR,IAAMkwB,GACH15B,EAAmBE,sBACnBF,EAAmBI,oBACCq5B,IAAnBC,KAEH,CAAC15B,IAGF,kBAAC8sB,GAAD,MACG,gBAAGnc,EAAH,EAAGA,OAAH,OACC,kBAACxT,EAAA,EAAD,CAAMC,MAAO,CAACpB,GAAO+0B,cAAe,CAAEpgB,OAAQA,EAAS,MACrD,kBAAC,EAAD,CAASzT,UAAWA,IACpB,kBAACqX,GAAA,EAAD,CACEnX,MAAO,CAACpB,GAAOg3B,KAAMh3B,GAAO68B,WAC5BvoB,QAAS,kBAAMgC,EAAW8C,SAAS,gBAEnC,kBAACnF,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,oBACA,kBAAC,UAAD,CACE9X,KAAM,oBACNuD,KAAM,GACN0T,MAAO7B,EACPmB,QAAS,kBAAMgC,EAAW8C,SAAS,eACnChY,MAAOpB,GAAO+kB,QAGlB,kBAACxM,GAAA,EAAD,CACEnX,MAAO,CAACpB,GAAOg3B,KAAMh3B,GAAO68B,WAC5BvoB,QAAS,kBAAMgC,EAAW8C,SAAS,uBAEnC,kBAACnF,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,iCACA,kBAAC,UAAD,CACE9X,KAAM,oBACNuD,KAAM,GACN0T,MAAO7B,EACPmB,QAAS,kBAAMgC,EAAW8C,SAAS,sBACnChY,MAAOpB,GAAO+kB,QAGlB,kBAACxM,GAAA,EAAD,CACEnX,MAAO,CAACpB,GAAOg3B,KAAMh3B,GAAO68B,WAC5BvoB,QAAS,kBAAMgC,EAAW8C,SAAS,kBAEnC,kBAACnF,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,wBACA,kBAAC,UAAD,CACE9X,KAAM,oBACNuD,KAAM,GACN0T,MAAO7B,EACPmB,QAAS,kBAAMgC,EAAW8C,SAAS,iBACnChY,MAAOpB,GAAO+kB,QAGlB,kBAACxM,GAAA,EAAD,CACEnX,MAAO,CAACpB,GAAOg3B,KAAMh3B,GAAO68B,WAC5BvoB,QAAS,WACP6oB,EAAyBT,GAAsBW,aAC/CL,GAA8B,IAEhCrR,SAAU6R,GAEV,kBAACvpB,EAAA,EAAD,CACE7S,MAAO,CACLpB,GAAO6V,KADF,MAGC2nB,GAAwB,CAC1BxoB,MAAO7B,MALf,yCAYA,kBAAC,UAAD,CACEpV,KAAM,WACNuD,KAAM,GACN0T,MACEwoB,EACIrqB,EACAA,EAEN/R,MAAOpB,GAAO+kB,QAGlB,kBAAC5jB,EAAA,EAAD,CAAMC,MAAO,CAACpB,GAAOg3B,KAAMh3B,GAAO68B,YAChC,kBAAC5oB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,aACA,kBAAC5B,EAAA,EAAD,CAAM7S,MAAOpB,GAAO+1B,MAApB,IAA4B4H,GAAKC,UAEnC,kBAACz8B,EAAA,EAAD,CAAMC,MAAO,CAACpB,GAAOg3B,KAAMh3B,GAAO68B,YAChC,kBAAC5oB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,UACA,kBAAC5B,EAAA,EAAD,CAAM7S,MAAOpB,GAAO+1B,MAApB,MAA2B1yB,OAA3B,EAA2BA,EAAMmB,QAEnC,kBAAC+T,GAAA,EAAD,CACEnX,MAAO,CAACpB,GAAOg3B,KAAMh3B,GAAO68B,WAC5BvoB,QAAS,WACPipB,GAAsB,KAGxB,kBAACtpB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,oCACA,kBAAC,UAAD,CACE9X,KAAK,SACLuD,KAAM,GACN0T,MAAO7B,EACP/R,MAAOpB,GAAO+kB,QAGlB,kBAACxM,GAAA,EAAD,CACEnX,MAAO,CAACpB,GAAOg3B,MACf1iB,QAAS,WACP6oB,EAAyBT,GAAsBO,QAC/CD,GAA8B,KAGhC,kBAAC/oB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,oBACA,kBAAC,UAAD,CACE9X,KAAK,SACLuD,KAAM,GACN0T,MAAO7B,EACP/R,MAAOpB,GAAO+kB,QAGlB,kBAACgX,GAAD,CACEC,aAAcsB,EACdrB,gBAAiBsB,IAEnB,kBAACjB,GAAD,CACEC,UAAWQ,EACXzW,WAAY0W,EACZb,SAAUiB,EAAuBF,GAAuBf,SACxDtmB,KAAMunB,EAAuBF,GAAuBrnB,KACpD4mB,WACEW,EAAuBF,GAAuBT,kBCjN/CoB,GAA+C,WAC1D,OACE,kBAAC18B,EAAA,EAAD,CACEC,MAAO,CACLhB,KAAM,EACNC,eAAgB,SAChBuU,WAAY,WAGd,kBAAC,KAAD,iDCROkpB,GAAuD,SAAC,GAE9D,IADLxnB,EACI,EADJA,WAEA,OACE,kBAAC,GAAD,CAAMlV,MAAOpB,GAAOG,WAClB,kBAAC,GAAD,CAAMiB,MAAOpB,GAAOsY,OAApB,8BACA,kBAACnE,EAAA,EAAD,CACEG,QAAS,kBAAMgC,EAAW/M,QAAQ,SAClCnI,MAAOpB,GAAO+9B,MAEd,kBAAC,GAAD,CAAM38B,MAAOpB,GAAOg+B,UAApB,yBAMFh+B,GAASC,IAAWC,OAAO,CAC/BC,UAAW,CACTC,KAAM,EACNwU,WAAY,SACZvU,eAAgB,SAChBU,QAAS,IAEXuX,MAAO,CACLnD,SAAU,GACVM,WAAY,QAEdsoB,KAAM,CACJjpB,UAAW,GACXI,gBAAiB,IAEnB8oB,SAAU,CACR7oB,SAAU,GACVH,MAAO,a,UC7BLhV,GAASC,IAAWC,OAAO,CAC/B60B,cAAe,CACbp0B,gBAAiBwS,GAEnB6jB,KAAM,CACJriB,OAAQ,GACRC,WAAY,SACZvU,eAAgB,gBAChBS,cAAe,OAEjB+7B,UAAW,CACT/Q,kBAAmB,EACnBD,kBAAmB1Y,GAErB0C,KAAM,CACJb,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,GACVO,iBAAkB,IAEpBuoB,OAAQ,CACNvoB,iBAAkB,MAIhBpB,GAAU,SACd4pB,EACA3xB,EACA4xB,EACA3zB,GAJc,iBAAAlF,EAAAC,OAAA,oDAOC,KADTrH,EAAQggC,EAAcxM,QAAQyM,EAAYhwB,QANlC,kCAAA7I,EAAA,MAQNiH,EAAiB,GAAD,YAAK2xB,GAAL,CAAoBC,EAAYhwB,UAR1C,qCAUNjL,EAVM,KAUKg7B,IACZ5U,OAAOprB,EAAO,GAXP,YAAAoH,EAAA,MAYNiH,EAAiBrJ,IAZX,QAcdsH,IAdc,8DAiBH4zB,GAA2D,WACtE,OACE,kBAACtN,GAAD,MACG,gBAAGnc,EAAH,EAAGA,OAAH,OACC,kBAAChH,GAAD,MACG,gBACCtK,EADD,EACCA,KACAkJ,EAFD,EAECA,iBACA/B,EAHD,EAGCA,2BACAtJ,EAJD,EAICA,UAJD,OAMC,kBAAC0Y,GAAD,MACG,SAAC1W,GACA,OACE,kBAACuL,GAAD,MACG,YAAgD,IAAvC4vB,EAAsC,EAA5Cn7B,KAA0Bo7B,EAAkB,EAA7Bp9B,UACjB,OACE,kBAACC,EAAA,EAAD,CACEC,MAAO,CACLpB,GAAO+0B,cACP,CAAEpgB,OAAQA,EAAS,MAGrB,kBAAC,EAAD,CACEzT,UAAWA,GAAao9B,IAP5B,MASGD,OATH,EASGA,EAASh1B,KAAI,SAAC80B,EAAajgC,GAC1B,IAAMuK,EAAQvF,EACXmG,KAAI,SAAC6E,GAAD,OAASA,EAAIC,SACjBpO,SAASo+B,EAAYhwB,OACxB,OACE,kBAACoK,GAAA,EAAD,CACEnX,MAAO,CACLpB,GAAOg3B,KACP94B,EAAQmgC,EAAQ3mB,OAAS,GACvB1X,GAAO68B,WAEX/zB,IAAKq1B,EAAYhwB,MACjBmG,QAAS,kBACPA,GACEjR,EAAKG,cACL+I,EACA4xB,EACA3zB,KAIJ,kBAACyJ,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MACjBsoB,EAAYtjB,OAEf,kBAAC,KAAD,CACE0jB,cAAe,kBACbjqB,GACEjR,EAAKG,cACL+I,EACA4xB,EACA3zB,IAGJ/B,MAAOA,EACP+1B,iBAAkBrrB,EAAmB,GACrCsrB,mBAAoBtrB,EAAoB,GACxCurB,WAAW,GACXC,aAAa,GACbzc,eAAgB,CACdxM,iBAAkB,IAEpBkpB,WAAY,GACZC,UAAW,GACXC,kBAAmB3rB,EACnB4rB,oBAAqB5rB,EACrB6rB,kBAAmB,EACnBC,sBAAuB,IACvBC,aAAc,EACdC,cAAe,sB,UC/G3Cn/B,GAASC,IAAWC,OAAO,CAC/B60B,cAAe,CACbp0B,gBAAiBwS,GAEnB6jB,KAAM,CACJriB,OAAQ,GACRC,WAAY,SACZvU,eAAgB,gBAChBS,cAAe,MACfiU,aAAc,OAEhB8nB,UAAW,CACT/Q,kBAAmB,EACnBD,kBAAmB1Y,GAErB0C,KAAM,CACJb,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,GACVO,iBAAkB,IAEpB0pB,MAAO,CACL1pB,iBAAkB,MAIhBpB,GAAU,SACd7L,EACA+D,GAEAA,EAAqB/D,IAGV42B,GAET,WACF,IAAQ1qB,EAAW/F,qBAAWwhB,IAAtBzb,OACR,EACE/F,qBAAW0W,IADMga,EAAnB,EAAQp+B,UAAkC6B,EAA1C,EAA0CA,UAE1C,EAII6L,qBAAWxC,IAHb/I,EADF,EACEA,KACAmJ,EAFF,EAEEA,qBAIItL,EANN,EAGEA,WAGiCo+B,EAC7BC,EAAuD,CAC3D9Z,IAD2D,YAExD1iB,IACHsG,KAAI,SAACglB,GAAD,MAAe,CACnBjW,MAAOiW,EAAS9pB,KAChBkE,MAAO4lB,EAAS3I,SAGlB,OACE,kBAACvkB,EAAA,EAAD,CAAMC,MAAO,CAACpB,GAAO+0B,cAAe,CAAEpgB,OAAQA,EAAS,MACrD,kBAAC,EAAD,CAASzT,UAAWA,IACpB,kBAAC,KAAD,CAAWs+B,gBAAgB,EAAOC,WAAW,EAAMC,QAAS,GACzDH,EAAiBl2B,KAAI,SAACe,EAAMivB,GAAP,OACpB,kBAAC9gB,GAAA,EAAD,CACEnX,MAAO,CAACi4B,EAAIkG,EAAiB7nB,OAAS,GAAK1X,GAAO68B,WAClD/zB,IAAKuwB,EAAI,YACT/kB,QAAS,kBAAMA,GAAQlK,EAAK3B,MAAO+D,KAEnC,kBAAC,KAAD,CACEmzB,iBAAiB,EACjB72B,IAAKuwB,EAAI,QACTj4B,MAAOpB,GAAOg3B,MAEd,kBAAC,KAAD,CACElvB,IAAKsC,EACLlM,MAAOm7B,EACPvwB,IAAKuwB,EAAI,SACTsG,iBAAiB,EACjBrrB,QAAS,SAAC7L,GAAD,OAAW6L,GAAQ7L,EAAO+D,IACnCozB,WAAY5/B,GAAO6V,OAErB,kBAAC,KAAD,CACE/N,IAAKsC,EACLlM,MAAOm7B,EACPvwB,IAAKuwB,EAAI,QACTjO,YACG/nB,EAAK7D,mBAAqBimB,GAAgBC,QAC3Ctb,EAAK3B,MAEP6L,QAAS,SAAC7L,GAAD,OAAW6L,GAAQ7L,EAAO+D,IACnCqzB,iBAAkB1sB,EAClB2sB,iBAAkB3sB,EAClB4sB,WAAY,EACZC,gBAAiB,GACjBC,gBAAiBjgC,GAAOo/B,gB,qBCzFlCc,GAAgB,CACpB,CACE9nB,MAAO,YACP3P,MAAO,KAET,CACE2P,MAAO,gBACP3P,MAAO,MAET,CACE2P,MAAO,gBACP3P,MAAO,OAET,CACE2P,MAAO,UACP3P,MAAO,OAET,CACE2P,MAAO,aACP3P,MAAO,SAII,SAAS03B,GAAT,GAIG,IAHhBl0B,EAGe,EAHfA,KACAm0B,EAEe,EAFfA,QACA3zB,EACe,EADfA,cAGM6H,EAAU,SAAC+rB,GACfD,GAAQ,GACR3zB,EAAc6zB,OAAQlyB,IAAIiyB,EAAsB,aAGlD,OACE,kBAACl/B,EAAA,EAAD,KACE,kBAAC0rB,GAAA,EAAD,CACEwP,cAAc,OACdvP,aAAa,EACbzG,QAASpa,EACTghB,eAAgB,kBAAMmT,GAAQ,KAE9B,kBAACj/B,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAACp6B,EAAA,EAAD,CAAMC,MAAOpB,GAAOw7B,WAClB,kBAACvnB,EAAA,EAAD,CAAM7S,MAAOpB,GAAOugC,YAApB,6CACA,kBAAC,KAAD,CAAWf,gBAAgB,EAAOC,WAAW,EAAMC,QAAS,GACzDQ,GAAc72B,KAAI,SAACe,EAAMlM,GAAP,OACjB,kBAACqa,GAAA,EAAD,CACEzP,IAAK5K,EAAQ,YACboW,QAAS,kBAAMA,EAAQlK,EAAK3B,SAE5B,kBAAC,KAAD,CACEk3B,iBAAiB,EACjB72B,IAAK5K,EAAQ,QACbkD,MAAOpB,GAAOg3B,MAEd,kBAAC,KAAD,CACElvB,IAAKsC,EACLlM,MAAOA,EACP4K,IAAK5K,EAAQ,SACbyhC,iBAAiB,EACjBrrB,QAAS,SAAC7L,GAAD,OAAW6L,EAAQ7L,IAC5Bm3B,WAAY5/B,GAAO6V,OAErB,kBAAC,KAAD,CACE/N,IAAKsC,EACLlM,MAAOA,EACP4K,IAAK5K,EAAQ,QACboW,QAAS,SAAC7L,GAAD,OAAW6L,EAAQ7L,IAC5Bo3B,iBAAkB1sB,EAClB2sB,iBAAkB3sB,EAClB4sB,WAAY,EACZC,gBAAiB,GACjBC,gBAAiBjgC,GAAOo/B,cAMlC,kBAACj+B,EAAA,EAAD,CAAMC,MAAOpB,GAAO07B,YAClB,kBAACnjB,GAAA,EAAD,CACEnX,MAAOpB,GAAO67B,aACdvnB,QAAS,WACP8rB,GAAQ,GACR3zB,EAAc,QAGhB,kBAACwH,EAAA,EAAD,CAAM7S,MAAOpB,GAAO27B,kBA3Db,kBAqEvB,IAAM37B,GAASC,IAAWC,OAAO,CAC/BqgC,WAAY,CACVvrB,MAAO7B,EACPgC,SAAU,GACVJ,aAAc,IAEhBwmB,aAAc,CACZj7B,SAAU,WACVmU,MAAO,OACPE,OAAQ,OACR5T,QAAS,GACTX,KAAM,EACNC,eAAgB,SAChBuU,WAAY,UAEd4mB,UAAW,CACTpZ,WAAY,GACZ4L,kBAAmB,GACnBb,cAAe,GACfxsB,gBAAiB,QACjBkU,aAAc,GACd4Y,YAAa,OACbC,aAAc,CACZjZ,MAAO,EACPE,OAAQ,GAEVgZ,cAAe,IACfC,aAAc,EACdzI,UAAW,GAEbsW,UAAW,CACT1mB,aAAc,GACdS,UAAW,UAEbwhB,KAAM,CACJriB,OAAQ,GACRC,WAAY,SACZvU,eAAgB,gBAChBS,cAAe,MACfiU,aAAc,GAEhB8nB,UAAW,CACT/Q,kBAAmB,EACnBD,kBAAmB1Y,GAErBisB,MAAO,CACL1pB,iBAAkB,IAEpBG,KAAM,CACJb,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZumB,WAAY,CACV56B,cAAe,MACfT,eAAgB,SAChBmgC,eAAgB,EAChBC,eAAgBttB,EAChBiP,WAAY,IAEduZ,iBAAkB,CAChB3mB,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZ0mB,aAAc,CACZnmB,iBAAkB,GAClBR,gBAAiB,GACjBT,MAAO,OACPG,WAAY,Y,sEC/KhB0rB,KAAMI,OAAOC,MACbL,KAAMI,OAAOE,MACbN,KAAMI,OAAOG,MACbP,KAAMQ,OAAO,MAEER,UAAf,ECAaS,GAET,WACF,MAKInyB,qBAAWxC,IAJb/I,EADF,EACEA,KACe29B,EAFjB,EAEEv0B,cACAvL,EAHF,EAGEA,UACA6I,EAJF,EAIEA,aAGF,EAAoC/B,mBAAS,IAA7C,WAAOi5B,EAAP,KAAmBx0B,EAAnB,KACA,EAAgCzE,oBAAS,GAAzC,WAAOk5B,EAAP,KAAkBC,EAAlB,KACA,EAAkCn5B,oBAAS,GAA3C,WAAOo5B,EAAP,KAAkBC,EAAlB,KAEMC,EAAS,SAAC53B,GACdy3B,IAAaz3B,GACb+C,EAAc/C,EAAO42B,GAAM52B,GAAM63B,OAAO,qBAAuB,IAC/D73B,GAAQs3B,EAAiBV,GAAM52B,GAAM63B,OAAO,0BAiB9C,OAdAC,YACEn1B,IAAMhE,aAAY,WAChB,OAAO,WACL0B,OAED,KAGLyD,qBAAU,WACR,IAAItM,EAAJ,CACA,IAAMwI,EAAO42B,GAAMM,IAAIv9B,EAAKsB,YAAYysB,QACxCkQ,EAAO53B,EAAK+3B,UAAY/3B,EAAO,OAC9B,CAACxI,EAAWmC,IAGb,kBAACytB,GAAD,MACG,gBAAGnc,EAAH,EAAGA,OAAH,OACC,kBAACxT,EAAA,EAAD,CAAMC,MAAO,CAACpB,GAAO+0B,cAAe,CAAEpgB,OAAQA,EAAS,MACrD,kBAACwrB,GAAD,CACEl0B,KAAMm1B,EACNhB,QAAS,kBAAMiB,GAAa,IAC5B50B,cAAe60B,IAEjB,kBAAC,EAAD,CAASpgC,UAAWA,IACpB,kBAACC,EAAA,EAAD,CAAMC,MAAO,CAACpB,GAAOg3B,KAAMh3B,GAAO68B,WAAY/zB,IAAK,GACjD,kBAACmL,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,yBACEqrB,EAAY,mBAAkB,gBAEhC,kBAAC,KAAD,CACE3C,cAAe,WACT2C,GACFF,EAAiB,IACjBG,GAAW,GACX10B,EAAc,MAEd40B,GAAa,GACbF,GAAW,KAGf14B,OAAQy4B,EACR1C,iBAAkBrrB,EAAmB,GACrCsrB,mBAAoBtrB,EAAoB,GACxCurB,WAAW,GACXC,aAAa,GACbzc,eAAgB,CAAExM,iBAAkB,IACpCkpB,WAAY,GACZC,UAAW,GACXC,kBAAmB3rB,EACnB4rB,oBAAqB5rB,EACrB6rB,kBAAmB,EACnBC,sBAAuB,IACvBC,aAAc,EACdC,cAAe,KAGlB8B,GACC,kBAAC9/B,EAAA,EAAD,CAAMC,MAAOpB,GAAOg3B,MAClB,kBAAC/iB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,+BACA,kBAAC5B,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAAOorB,SASnCjhC,GAASC,IAAWC,OAAO,CAC/B60B,cAAe,CACbp0B,gBAAiBwS,GAEnB6jB,KAAM,CACJriB,OAAQ,GACRC,WAAY,SACZvU,eAAgB,gBAChBS,cAAe,MACfiU,aAAc,OAEhB8nB,UAAW,CACT/Q,kBAAmB,EACnBD,kBAAmB1Y,GAErB0C,KAAM,CACJb,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,GACVO,iBAAkB,MCrGhB1V,GAASC,IAAWC,OAAO,CAC/B2V,KAAM,CACJpB,MAAO,cACPD,UAAW,SACXlU,SAAU,WACV6U,SAAU,GACVW,YAAa,QACbC,eAAgB,IAElBC,UAAW,CAAE3V,eAAgB,UAC7B4V,OAAQ,CACNtB,OAAQ,EACRuB,UAAW,EACXvV,gBAAiBwS,GAEnBgD,MAAO,CACLxB,OAAQ,GACRuB,UAAW,GACXvV,gBAAiBwS,KAIRuuB,GAET,SAACzgC,GACH,IAAQjD,EAAmCiD,EAAnCjD,MAAOqY,EAA4BpV,EAA5BoV,YAAaC,EAAerV,EAAfqV,WACtBC,EAAaC,iBAAmB,MAChCC,EAAgBD,iBAAY,MAC5BE,EAAeF,iBAAY,MACjC,EAAsCxO,mBAAS,GAA/C,WAAO2O,EAAP,KAAoBC,EAApB,KACA,EAAkC5O,mBAAS,GAA3C,WAAO6O,EAAP,KAAkBC,EAAlB,KACIC,EAAiB,EAoBrB,OAlBAvJ,qBAAU,WAAO,IAAD,EACd,SAAA+I,EAAW7C,UAAX,EAAoBsD,SAAS,CAAEC,EAAGN,MACjC,CAACA,IAEJnJ,qBAAU,WACR,GAAI+I,EAAW7C,SAAWmD,IAAc7Y,EAAME,MAAO,CACnD,IAAMgZ,EAAUX,EAAW7C,QAAgByD,WAAW,GAChDC,EAAQF,EAAOxJ,SAAS1P,EAAME,OAC9BmZ,EAAaH,EAAOI,wBACpBC,EAAYH,EAAME,wBAClBE,EAAcC,KAAWvN,IAAI,UAAUuK,MACvCkC,EACJY,EAAUhX,KAAO8W,EAAW9W,KAAOiX,EAAc,EAAID,EAAU9C,MAAQ,EACzEmC,EAAeD,GACfG,EAAa9Y,EAAME,UAEpB,CAACF,EAAME,QAGR,kBAACiD,EAAA,EAAD,CAAMC,MAAOpD,EAAMC,OAAOyZ,QAAU,EAAI1X,GAAOiW,OAASjW,GAAOmW,OAC7D,kBAACnE,EAAA,EAAD,CACE6B,IAAK0C,EACL1V,YAAU,EACV8W,gCAAgC,EAChCC,iBAAkB,EAClBC,SAAU,SAACC,GACTf,EAAiBe,EAAMC,YAAYC,cAAcf,GAEnDgB,oBAAqB,EACrBC,uBAAqB,GAEpBla,EAAMC,OAAOoL,KACZ,SAACxL,EAA4CK,GAAgB,IAAD,IAClDia,EAAY9B,EAAYxY,EAAMiL,KAA9BqP,QACFC,OACoBtU,IAAxBqU,EAAQE,YACJF,EAAQE,iBACUvU,IAAlBqU,EAAQG,MACRH,EAAQG,MACRza,EAAME,KAEN8Y,EAAY7Y,EAAME,QAAUA,EAoBlC,OACE,kBAACqa,GAAA,EAAD,CACEC,kBAAkB,SAClBC,mBAAoB5B,EAAY,CAAE6B,UAAU,GAAS,GACrDC,mBAAoBR,EAAQS,yBAC5BC,OAAQV,EAAQW,aAChBxE,QAxBY,SAACwD,GACf,IAAMiB,EAAkBzC,EAAW0C,KAAK,CACtC3W,KAAM,WACN4W,OAAQpb,EAAMiL,IACdoQ,mBAAmB,IAErB,EAAqBpB,EAAMmB,OAAO3B,wBAA1BL,EAAR,EAAQA,EAAGxC,EAAX,EAAWA,MACL+C,EAAcC,KAAWvN,IAAI,UAAUuK,MAE7CmC,EACEG,GAAkBS,EAAc,GAAKP,EAAIxC,EAAQ,KAEnDqC,EAAa5Y,GACR2Y,GAAckC,EAAgBI,kBACjC7C,EAAW8C,SAAS,CAAErb,KAAMF,EAAME,KAAMsb,OAAO,KAW/CjY,MAAO,CACLpB,GAAOgW,UACP,CACEsD,WACY,IAAVpb,EACIuZ,KAAWvN,IAAI,UAAUuK,MAAQ,GACjC,SAAAgC,EAAc/C,cAAd,IAAuB6F,aAAc,EACrC,GACNC,YACEtb,IAAUF,EAAMC,OAAOyZ,OAAS,EAC5BD,KAAWvN,IAAI,UAAUuK,MAAQ,GACjC,SAAAiC,EAAahD,cAAb,IAAsB6F,aAAc,EACpC,KAGVzQ,IAAG,WAAajL,EAAMiL,KAEtB,kBAACmL,EAAA,EAAD,CACEJ,IACY,IAAV3V,EACIuY,EACAvY,IAAUF,EAAMC,OAAOyZ,OAAS,EAChChB,EACA,KAENtV,MAAO,CACLpB,GAAO6V,KACP,CACEb,MAAO6B,EACH1D,EACAA,EACJ8B,WAAY4B,EACR,mBACA,qBAIPuB,EAAMqB,sBCjJnBkoB,GAAiBznB,eAEV0nB,GAET,SAAC,GAAyB,IAAvB/jC,EAAsB,EAAtBA,MAAO6P,EAAe,EAAfA,SACJoM,EAAgBjc,EAAMsM,OAAtB2P,YAER,OACE,kBAAC,GAAD,CAAqBA,YAAaA,GAChC,kBAACF,GAAD,MACG,SAAC1W,GACA,IAAMkX,EAAelX,EAAKmH,QAAO,SAAC6D,GAAD,OAASA,EAAI2qB,eAC9C,OACE,kBAAC8I,GAAernB,UAAhB,CACEC,OAAQ,SACNtZ,GADM,OAEH,kBAAC,GAAgCA,IACtCuZ,cAAe,CACbC,sBAAuBtH,EACvBuH,qBAAqB,IAGvB,kBAACinB,GAAehnB,OAAhB,CACE5c,KAAK,eACLoa,QAAS,CACPG,MAAO,oBAGR,kBAAM,kBAAC,GAAD,KAAkB5K,MAE1B0M,EAAa/Q,KAAI,SAAC6E,GAAD,OAChB,kBAACyzB,GAAehnB,OAAhB,CACE7R,IAAG,WAAaoF,EAAIC,MACpBpQ,KAAI,WAAamQ,EAAIC,MAAjB,OACJgK,QAAS,CACPG,MAAOpK,EAAI2M,SAGZ,kBACC,kBAAC,GAAD,CAAiB1L,WAAYjB,EAAIC,OAC9BT,eCzBjB1N,GAASC,IAAWC,OAAO,CAC/Bq7B,aAAc,CACZn7B,KAAM,EACNC,eAAgB,SAChBuU,WAAY,UAEd4mB,UAAW,CACTz6B,QAAS,GACTJ,gBAAiB,QACjBkU,aAAc,GACd4Y,YAAa,OACbC,aAAc,CACZjZ,MAAO,EACPE,OAAQ,GAEVgZ,cAAe,IACfC,aAAc,EACdzI,UAAW,EACX1Q,MAAO,QAEToB,KAAM,CACJb,MAAO7B,EACP8B,WAAY,mBACZE,SAAU,IAEZumB,WAAY,CACV56B,cAAe,MACfT,eAAgB,YAElBu7B,mBAAoB,CAClB5mB,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZ2mB,eAAgB,CACdxiB,WAAY,GACZvY,QAAS,EACTitB,kBAAmB,GACnBvZ,MAAO,cACPG,WAAY,SACZvU,eAAgB,SAChBwU,aAAc,GAEhBkZ,MAAO,CACLpY,YAAa,GACbC,YAAazC,EACb0B,aAAc,GACd9T,QAAS,GACTgV,eAAgB,GAChBf,MAAO7B,GAET0uB,eAAgB,CACdzhC,KAAM,EACNU,cAAe,MACfT,eAAgB,gBAChBuU,WAAY,YAID,SAASktB,GAAT,GAOc,IAN3BvF,EAM0B,EAN1BA,UACAjW,EAK0B,EAL1BA,WACAyb,EAI0B,EAJ1BA,GACAC,EAG0B,EAH1BA,MACA7F,EAE0B,EAF1BA,SAE0B,IAD1BM,kBAC0B,MADb,eACa,EAC1B,EAA6BpwB,IAAMrE,SAAS,IAA5C,WAAO6N,EAAP,KAAa7C,EAAb,KACA,OACE,kBAACrF,GAAD,MACG,cAAGtK,KAAH,OACC,kBAAClC,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAAC1O,GAAA,EAAD,CACEwP,cAAc,OACdvP,aAAa,EACbzG,QAASkW,EACTtP,eAAgB,WACd3G,GAAYiW,KAGd,kBAACp7B,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAACp6B,EAAA,EAAD,CAAMC,MAAOpB,GAAOw7B,WAClB,kBAACr6B,EAAA,EAAD,CAAMC,MAAOpB,GAAO6hC,gBAClB,kBAAC5tB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAAO,wBAC3B,kBAAC0C,GAAA,EAAD,KACE,kBAAC,UAAD,CACExa,KAAM,QACNuD,KAAM,GACNgT,QAAS,WACP0tB,EAAM,IACNhvB,EAAa,IACbsT,GAAW,QAKnB,kBAACnlB,EAAA,EAAD,KACE,kBAACyR,EAAA,EAAD,CACExR,MAAOpB,GAAO+tB,MACd/a,aAAcA,EACdvK,MAAOoN,EACP5C,YAAY,yCACZK,aAAa,gBACb2uB,UAAW,IACXC,WAAS,EACThT,cAAe,KAGnB,kBAAC/tB,EAAA,EAAD,CAAMC,MAAOpB,GAAO07B,YAClB,kBAACnjB,GAAA,EAAD,CACEnX,MAAO,CACLpB,GAAO87B,eACP,CACEn7B,gBAAiBwhC,QAAQtsB,GACrB1C,EACAA,IAGRwY,UAAW9V,EACXvB,QAAS,WACPgS,GAAW,GACX6V,EAAS,CACP5rB,WAAYwxB,EACZvxB,QAASqF,IAERusB,MAAK,WACJp2B,IAAMC,KAAK,CACT5J,KAAM,UACN6J,MAAM,iCACNm2B,eAAgB,MAElBL,EAAM,IACNhvB,EAAa,OAEdsvB,OAAM,SAAC7/B,GACNuJ,IAAMC,KAAK,CACT5J,KAAM,QACN6J,MAAM,qEACNq2B,MAAO9/B,EACP4/B,eAAgB,MAElBL,EAAM,IACNhvB,EAAa,SAInB,kBAACiB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO47B,oBAAqBa,YC9ItD,IAAM+F,GAAsD,SAACvhC,GAClE,IACEwhC,EAMExhC,EANFwhC,SACAnR,EAKErwB,EALFqwB,SACAoR,EAIEzhC,EAJFyhC,0BACAC,EAGE1hC,EAHF0hC,uBACAC,EAEE3hC,EAFF2hC,KACAtsB,EACErV,EADFqV,WAGF,OACE,kBAAC3I,GAAD,MACG,YAA6B,IAA1BtK,EAAyB,EAAzBA,KAAMsJ,EAAmB,EAAnBA,aACFzO,EAAQmF,EAAKE,mBAAmBmuB,QAAQ+Q,EAASlyB,YACjDohB,EAAezzB,GAAS,EACxB2kC,EAAkBvR,EAAWne,EAAmBA,EACtD,OACE,kBAAChS,EAAA,EAAD,CACEC,MAAO,CACLN,cAAe,MACfgrB,kBAAmB,EACnBD,kBAAmB1Y,IAGrB,kBAAChS,EAAA,EAAD,CACEC,MAAO,CACLqT,MAAO,EACP9T,gBAAiBkiC,EACjB9sB,eAAgB,KAGpB,kBAAC,KAAD,CAAU3U,MAAO,CAAEhB,KAAM,IACvB,kBAAC,KAAD,CACEkY,MAAO,GACP9F,OAAQ,CACNC,IAAKwb,GAAYwU,EAAS1P,YAE5BrM,iBAAkB1mB,GAAO8yB,mBAE3B,kBAAC,KAASgQ,QAAV,CAAkB1hC,MAAOpB,GAAO+iC,iBAC9B,kBAAC,KAASloB,MAAV,CAAgBzZ,MAAOpB,GAAOgjC,wBAC5B,kBAAC7hC,EAAA,EAAD,CAAMC,MAAOpB,GAAOgjC,wBAClB,kBAAC/uB,EAAA,EAAD,CAAM7S,MAAOpB,GAAOijC,cAAe/T,cAAe,GAC/CuT,EAAS5nB,OAEZ,kBAACtC,GAAA,EAAD,CACEnX,MAAOpB,GAAOkjC,YACd5uB,QAAS,WACPquB,EAAuBF,EAASlyB,YAChCmyB,GAA0B,KAG5B,kBAAC,UAAD,CACE3kC,KAAM,UACNuD,KAAM,GACNF,MAAOpB,GAAOmjC,iBAKtB,kBAAC,KAASC,SAAV,CAAmBhiC,MAAOpB,GAAOqjC,UAC/B,kBAACliC,EAAA,EAAD,CAAMC,MAAOpB,GAAOsjC,wBAClB,kBAACrvB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO0J,KAAMwlB,cAAe,GACtCtL,GAAc6e,EAAS94B,OAE1B,kBAACxI,EAAA,EAAD,CAAMC,MAAOpB,GAAOujC,oBACfd,EAAS9P,aACV,kBAACxxB,EAAA,EAAD,CAAMC,MAAOpB,GAAOwjC,kBAClB,kBAAC,GAAD,CAAe7f,aAAc8e,EAAS9P,gBAEtC,KACJ,kBAACpa,GAAA,EAAD,CACEnX,MAAOpB,GAAOyjC,oBACdnvB,QAAS,WACP,IAAe,IAAXpW,EACFyO,EAAatJ,EAAKC,eAAN,eACPD,EAAKE,oBADE,CAEVk/B,EAASlyB,kBAEN,CACL,IAAMrN,EAAI,KAAOG,EAAKE,oBACtBL,EAAKomB,OAAOprB,EAAO,GACnByO,EAAatJ,EAAKC,eAAgBJ,MAItC,kBAAC,UAAD,CACEnF,KAAM4zB,EAAe,WAAa,kBAClCrwB,KAAM,GACNF,MAAOpB,GAAO4yB,oBAO1B,kBAAC,KAAS8Q,QAAV,CACEpiC,KAAM,GACN0T,MAAO7B,EACPpV,KAAM,oBACNuW,QAAS,WACPsuB,EAAKH,EAASlyB,YACd+F,EAAW8C,SAAS,YAAaqpB,EAASkB,iBAWtD3jC,GAASC,IAAWC,OAAO,CAC/B6iC,gBAAiB,CACfa,iBAAkBzwB,EAClB0wB,iBAAkB,EAClBxuB,aAAc,IAEhB2tB,uBAAwB,CACtBvuB,MAAO,OACPrU,KAAM,EACNU,cAAe,MACfgjC,SAAU,QAEZb,cAAe,CACb7d,QAAS,OACT3Q,MAAO,MACPQ,WAAY,mBACZE,SAAU,GACVH,MAAO7B,EACPga,cAAe,GAEjBkW,SAAU,CACR5uB,MAAO,OACPE,OAAQ,OACRxC,aAAc,UAEhBmxB,uBAAwB,CACtBljC,KAAM,EACNU,cAAe,MACf2T,MAAO,OACPE,OAAQ,OACRG,UAAW,GACXoB,UAAW,GACXtB,WAAY,UAEdlL,KAAM,CACJ0b,QAAS,OACTpQ,MAAO7B,EACP8B,WAAY,kBACZE,SAAU,GACVV,MAAO,MACPC,OAAQ,GAEV6uB,mBAAoB,CAClBnjC,KAAM,EACNU,cAAe,MACf2T,MAAO,MACPpU,eAAgB,WAChBsU,OAAQ,OACRC,WAAY,UAEd4uB,iBAAkB,CAAE9tB,iBAAkB,IACtC+tB,oBAAqB,CAAEtxB,aAAc,UACrC+wB,YAAa,CACXtuB,WAAY,WACZH,MAAO,MACPE,OAAQ,IAEVwuB,YAAa,CACXnuB,MAAO7B,EACPqB,UAAW,YAEboe,aAAc,CACZ5d,MAAO7B,EACPqB,UAAW,UAEbse,iBAAkB,CAChBnyB,gBAAiB,iB,qkBClLd,IAAMojC,GAA+D,SAAC,GAKtE,IAJL50B,EAII,EAJJA,WACAE,EAGI,EAHJA,WACAiB,EAEI,EAFJA,YACAgG,EACI,EADJA,WAEMpT,EAAO0L,qBAAW8K,IACxB,EAAiD9K,qBAAW6kB,IAApDC,EAAR,EAAQA,YAAaC,EAArB,EAAqBA,eAAgBjkB,EAArC,EAAqCA,QACrC,EAA0C1H,mBACxCyB,KAAM+sB,eADR,WAAOlnB,EAAP,KAAsBmmB,EAAtB,KAGA,EAAsCztB,oBAAkB,GAAxD,WAAO0uB,EAAP,KAAqBC,EAArB,KACA,EACE3uB,oBAAkB,GADpB,WAAOg8B,EAAP,KAAiCtB,EAAjC,KAEA,EAAsD16B,mBAAiB,IAAvE,WAAOi8B,EAAP,KAA4BtB,EAA5B,KACA,EAAoC36B,oBAAkB,GAAtD,WAAOmtB,EAAP,KAAmBC,EAAnB,KACMM,EAAclf,iBAAiB,MAUrC,OARAhJ,qBAAU,WACRioB,EAAiBhsB,KAAM+sB,iBACtB,CAACtzB,IAEJsK,qBAAU,WACJkpB,GAAchnB,MACjB,CAACgnB,IAGF,kBAAC1c,GAAD,MACG,YAAsB,IAAD,IACwC,EADxC,EAAlBF,aACa,SAAI4b,EAAYhiB,UAAhB,SAAI,EAAqBzS,MAAMmJ,OAA3B,EAAiCsN,SAClD,SAAAge,EAAYhiB,UAAZ,EAAqBqX,cAAc,CAAE7sB,MAAO,KAE9C,OACE,kBAAC4yB,GAAD,MACG,gBAAGrc,EAAH,EAAGA,MAAOE,EAAV,EAAUA,OAAV,OACC,kBAAC,GAAD,CACExF,WAAYA,EACZG,cAAeA,EACfgB,YAAaA,EACbjB,WAAYA,GAEZ,kBAAC0B,GAAD,MACG,YAOM,IANLpO,EAMI,EANJA,SACAzB,EAKI,EALJA,UACAe,EAII,EAJJA,MACA0N,EAGI,EAHJA,SACAC,EAEI,EAFJA,iBACAzD,EACI,EADJA,QAGA,OADAyD,GAAkBulB,GAEhB,oCACE,kBAAC/I,GAAA,EAAD,CACEvY,IAAK6hB,EACLxjB,sBAAuBlS,GAAOg1B,SAC9B5zB,MAAO,CACLpB,GAAO+0B,cACP,CAAEpgB,OAAQA,EAAS,KAErBvK,KAAMzH,EACN2pB,aAAc,SAACmW,GAAD,SAAiBA,EAASlyB,YACxCqmB,aAAc,YACPj0B,EAAS+U,QAAUzV,GAASU,EAAS+U,QAG1C/H,EAAShN,EAAS+U,SAEpBmf,sBAAuB,GACvBhf,SAAUA,GAASsd,EAAYC,GAC/B0B,eACE,kBAAC,GAAD,CACE7W,YACGyW,GAAgBx1B,KAAei0B,EAElC7zB,KAAK,QACL4a,UAAW/I,EACXkN,UAAW,WACTsW,GAAc,GACd7L,YAAW,WACT2K,EAAiBhsB,KAAM+sB,eACvBG,GAAc,K/EnFhB,S+EwFNnP,WAAY,YAAe,IAAZ6B,EAAW,EAAXA,KACPiI,EACJoC,EAAYzvB,eAAelE,SACzBspB,EAAK9Y,YAET,OACE,oCACE,kBAACgI,GAAA,EAAD,CACEjE,QAAS,WACHgd,GACFqC,EAAe,SACVD,GADS,IAEZzvB,eACEyvB,EAAYzvB,eAAeoG,QACzB,SAAC03B,GAAD,OAAQA,IAAO1Y,EAAK9Y,iBAI5B+F,EAAW8C,SACT,YACAiQ,EAAKsa,SAGTviC,MAAO,uBACLgxB,QADK,EAAGC,QACW,GAAM,EACzBjyB,KAAM,EACNqU,UACKrJ,GAAQ/D,WACV+D,GAAQ5D,OAAS,CAChBwmB,kBAAmB,OAIzB,kBAAC,GAAD,CACEyU,SAAUpZ,EACViI,SAAUA,EACVsR,KAAM,SAAC95B,GAAD,OACJ6qB,EAAe,SACVD,GADS,IAEZzvB,eACEyvB,EAAYzvB,eAAeoG,QACzB,SAAC03B,GAAD,OAAQA,IAAOj5B,SAIvB45B,0BACEA,EAEFC,uBACEA,EAEFrsB,WAAYA,KAGfrU,IAAUU,EAAS+uB,QAAQrI,GAAQ,GAClC,kBAACloB,EAAA,EAAD,CACEC,MAAO,CACLT,gBAAiBwS,EACjB4B,aAAc,QAO1BgiB,mBACE71B,EAAY,KACV,kBAAC+S,EAAA,EAAD,CAAM7S,MAAOpB,GAAOi1B,OAApB,oEAMN,kBAAC6M,GAAD,CACEvF,UAAWyH,EACX1d,WAAYoc,EACZX,GAAIkC,EACJjC,MAAOW,EACPxG,SAAUhwB,gBAe9BnM,GAASC,IAAWC,OAAO,CAC/B60B,cAAe,CACbp0B,gBAAiBwS,GAEnB6hB,SAAU,CACRr0B,gBAAiBwS,EACjByB,WAAY,SACZvU,eAAgB,UAElB40B,MAAO,CACLxf,WAAY,OACZM,eAAgB,GAChBf,MAAO,UCnNLhV,GAASC,IAAWC,OAAO,CAC/B82B,KAAM,CACJ52B,KAAM,EACNO,gBAAiBwS,KAGR+wB,GAET,SAAC,GAAoB,IAAlB5tB,EAAiB,EAAjBA,WACL,EAA4B1H,qBAAWxC,IAA/B/I,EAAR,EAAQA,KAAMnC,EAAd,EAAcA,UACRijC,EAAiC9gC,EAAKE,mBAAmBmU,OAC3DrU,EAAKE,mBACL,CAAC,IACL,EAAsCyE,mBACpCm8B,GADF,WAAO7zB,EAAP,KAAoB8zB,EAApB,KAGMvtB,EAAY0gB,cAMlB,OALA/pB,qBAAU,WACHqJ,IACDxT,EAAKE,mBAAmBmU,OAAQ0sB,EAAe/gC,EAAKE,oBACnD6gC,EAAe,CAAC,QACpB,CAACvtB,IAEF,kBAAC1V,EAAA,EAAD,CAAMC,MAAOpB,GAAOg3B,MAClB,kBAAC,EAAD,CAAS91B,UAAWA,IAEpB,kBAAC,GAAD,CACEoV,WAAYA,EACZhG,YAAaA,MC/BftQ,GAASC,IAAWC,OAAO,CAC/B82B,KAAM,CACJ52B,KAAM,EACNO,gBAAiBwS,KAIRkxB,GAET,SAAC,GAAoB,IAAlB/tB,EAAiB,EAAjBA,WACL,OACE,gBAACnV,EAAA,EAAD,CAAMC,MAAOpB,GAAOg3B,MAClB,gBAAC9lB,GAAD,MACG,YAAqB,IAAlB/B,EAAiB,EAAjBA,WACF,OACE,gBAAC,GAAD,CACEmH,WAAYA,EACZnH,WAAYA,SCZpBnP,GAASC,IAAWC,OAAO,CAC/B82B,KAAM,CACJ52B,KAAM,EACNO,gBAAiBwS,GAEnBR,aAAc,CACZ7R,cAAe,MACf6T,OAAQ,GACRD,OAAQ,GACRG,aAAc,GACde,YAAazC,EACbwC,YAAa,EACbtV,eAAgB,SAChBuU,WAAY,UAEd/B,WAAY,CACVzS,KAAM,EACN4U,MAAO7B,EACP6a,kBAAmB,GACnB1Y,aAAc,QAEhByP,KAAM,CACJ3P,YAAa,EACbC,aAAc,KAGLivB,GAET,SAAC,GAAoB,IAAlBhuB,EAAiB,EAAjBA,WACL,EAAoCzO,GAAY,GAAI,KAApD,WAAOwH,EAAP,KAAmB6nB,EAAnB,KACMqN,EAAsB/tB,mBAE5B,OACE,kBAACrV,EAAA,EAAD,CAAMC,MAAOpB,GAAOg3B,MAClB,kBAAC71B,EAAA,EAAD,CAAMC,MAAOpB,GAAO2S,cAClB,kBAAC,UAAD,CACE5U,KAAK,SACLuD,KAAM,GACN0T,MAAO7B,EACP/R,MAAOpB,GAAO+kB,OAEhB,kBAACnS,EAAA,EAAD,CACExR,MAAOpB,GAAO6S,WACdgB,IAAK0wB,EACLvxB,aAAc,SAAC6C,GAAD,OAAUqhB,EAAcrhB,IACtC5C,YAAY,aACZC,qBAAsBC,EAAoB,GAC1CC,eAAe,OACfE,aAAa,UACbC,cAAc,OACdK,cAAc,MAEbvE,GACD,kBAAC,IAAD,CACEjO,MAAO,CAAC,IACRkT,QAAS,WACPiwB,EAAoB7wB,QAAQ0jB,QAC5BF,EAAc,MAGhB,kBAAC,UAAD,CACEn5B,KAAK,SACLuD,KAAM,GACN0T,MAAO7B,EACP/R,MAAOpB,GAAO+kB,SAKtB,kBAAC7T,GAAD,MACG,YAAqB,IAAlB/B,EAAiB,EAAjBA,WACF,OACE,kBAAC,GAAD,CACEmH,WAAYA,EACZnH,WAAYA,EACZE,WAAYA,SCzEpB4rB,GAAYC,eAELsJ,GAET,WACF,OACE,kBAAC,GAAUlqB,UAAX,CACEC,OAAQ,SAACtZ,GAAD,OAAW,kBAAC,GAAwBA,IAC5CuZ,cAAe,CACb4gB,OAAQ,SAACn6B,GAAD,OAAW,kBAAC,GAAoBA,MAG1C,kBAAC,GAAU0Z,OAAX,CACE5c,KAAK,eACL6c,cAAe,GACfzC,QAAS,CAAEkjB,eAAe,KAEzB,SAACp6B,GAAD,OACC,kBAAC,GAAD,CACEqV,WAAYrV,EAAMqV,WAClBzY,MAAOoD,EAAMpD,OAEb,kBAAC,GAAD,CACEyY,WAAYrV,EAAMqV,WAClBzY,MAAOoD,EAAMpD,YAKrB,kBAAC,GAAU8c,OAAX,CACE5c,KAAK,iBACL6c,cAAe,GACfzC,QAAS,CAAEkjB,eAAe,KAEzB,SAACp6B,GAAD,OACC,kBAAC,GAAD,CACEqV,WAAYrV,EAAMqV,WAClBzY,MAAOoD,EAAMpD,OAEb,kBAAC,GAAD,CACEyY,WAAYrV,EAAMqV,WAClBzY,MAAOoD,EAAMpD,YAKrB,kBAAC,GAAU8c,OAAX,CACE5c,KAAK,oBACLu9B,UAAW4I,OCtCbO,GAAgB,SAAC/wB,EAAiB+a,GACtC,OAAO/a,EAAQrJ,QAAO,SAACq6B,GACrB,OAAQjW,EAAKngB,MAAK,SAACq2B,GAAD,OAAaA,EAAQx2B,QAAUu2B,EAAWv2B,aAmBnDy2B,GAAuB,kBAClCjH,KAAKkH,MAAMnhC,aAAakB,QpFlCC,iBoFkCuB,SAAW,IAEhDkgC,GAAqB,SAACC,GAAD,OAChCrhC,aAAaC,QpFrCY,eoFqCSg6B,KAAKqH,UAAUD,KAapC,SAASE,GAAT,GAKc,IAJ3B1I,EAI0B,EAJ1BA,UACAjW,EAG0B,EAH1BA,WACA4e,EAE0B,EAF1BA,eACAC,EAC0B,EAD1BA,mBAEM7sB,EACsB,IAA1B4sB,EAAextB,OAAe,8BAAqB,mCAC/C0tB,EACsB,IAA1BF,EAAextB,OAAe,yBAAkB,uBAClD,OACE,kBAACvW,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAAC1O,GAAA,EAAD,CACEwP,cAAc,OACdvP,aAAa,EACbzG,QAASkW,EACTtP,eAAgB,WACd3G,GAAW,KAGb,kBAAC3Y,GAAD,MACG,gBAAGpB,EAAH,EAAGA,iBAAH,OACC,kBAACqN,GAAD,MACG,SAAC1W,GAAD,OACC,kBAAC/B,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAACp6B,EAAA,EAAD,CAAMC,MAAOpB,GAAOw7B,WAClB,kBAACvnB,EAAA,EAAD,CACE7S,MAAO,CAACpB,GAAO6V,KAAM7V,GAAOqlC,YAD9B,SAEQ/sB,EAFR,QAGA,kBAACnX,EAAA,EAAD,CAAMC,MAAOpB,GAAOslC,aAClB,kBAAClZ,GAAA,EAAD,CACEhiB,KAAM86B,EACN5Y,aAAc,SAACpe,GAAD,OAASA,EAAIC,OAC3Bo3B,qBAAmB,EACnB/d,WAAY,gBAAG6B,EAAH,EAAGA,KAAH,OACV,kBAACpV,EAAA,EAAD,CACE7S,MAAOpB,GAAOwlC,UADhB,UAEYnc,EAAKxO,WAIvB,kBAAC5G,EAAA,EAAD,CAAM7S,MAAOpB,GAAO6V,MAApB,MACSuvB,EADT,eACuC,IACrC,kBAACnxB,EAAA,EAAD,CAAM7S,MAAOpB,GAAOqlC,WAApB,mBAAgD,IAFlD,WAKA,kBAAClkC,EAAA,EAAD,CAAMC,MAAOpB,GAAO07B,YAClB,kBAACnjB,GAAA,EAAD,CACEnX,MAAOpB,GAAO67B,aACdvnB,QAAS,WACPwwB,GAAmBK,GACnB7e,GAAW,KAGb,kBAACrS,EAAA,EAAD,CAAM7S,MAAOpB,GAAO27B,kBAApB,aAEF,kBAACpjB,GAAA,EAAD,CACEnX,MAAOpB,GAAO87B,eACdnQ,UAAW8Z,GAA6BC,UACxCpxB,QAAS,WChE1B,IACLvW,EACAoM,GDRsC,SACtCjH,EACAgiC,EACA34B,GAEA,IAAMo5B,EAAYziC,EAAKmG,KAAI,SAAC6E,GAAD,OAASA,EAAIC,SAClCy3B,EAAsBV,EAAe77B,KAAI,SAAC6E,GAAD,OAASA,EAAIC,SAE5D5B,EADsBs5B,kBAAOF,EAAWC,IAgEhBE,CACE5iC,EACAgiC,EACA34B,GAEFu4B,GAAmBK,GACnB7e,GAAW,GCtEnCvoB,EDuEgD,aCpE5CgoC,GAAcL,WAChBK,GAAc3sB,SAASrb,EAAMoM,KDsET,kBAAC8J,EAAA,EAAD,CAAM7S,MAAOpB,GAAO47B,oBAApB,+BAcxB,IAAM57B,GAASC,IAAWC,OAAO,CAC/Bq7B,aAAc,CACZn7B,KAAM,EACNC,eAAgB,SAChBuU,WAAY,SACZtU,SAAU,WACVqU,OAAQ,OACRF,MAAO,OACP9T,gBAAiBwS,GAEnBqoB,UAAW,CACTz6B,QAAS,GACTJ,gBAAiB,QACjBkU,aAAc,GACde,YAAazC,EACbwC,YAAa,EACb8X,YAAa,OACbC,aAAc,CACZjZ,MAAO,EACPE,OAAQ,GAEVgZ,cAAe,IACfC,aAAc,EACdzI,UAAW,EACXmN,SAAU,QAEZmJ,UAAW,CACT1mB,aAAc,GACdS,UAAW,UAEbK,KAAM,CACJ1D,aAAc,SACd6C,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,GACVJ,aAAc,IAEhBswB,UAAW,CACTpwB,WAAY,oBAEduwB,SAAU,CACRrzB,aAAc,SACd6C,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,GACVJ,aAAc,GAEhBuwB,YAAa,CACXvwB,aAAc,GACduE,WAAY,GACZpD,UAAW,IAEbwlB,WAAY,CACV56B,cAAe,MACfT,eAAgB,YAElBs7B,iBAAkB,CAChB3mB,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZymB,mBAAoB,CAClB5mB,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZ0mB,aAAc,CACZviB,WAAY,EACZvY,QAAS,GACT0T,MAAO,cACPG,WAAY,SACZU,aAAc,QAEhBwmB,eAAgB,CACdxiB,WAAY,GACZvY,QAAS,EACTitB,kBAAmB,GACnBvZ,MAAO,cACPG,WAAY,SACZvU,eAAgB,SAChBM,gBAAiBwS,EACjB0B,aAAc,EACdS,aAAc,U,oFE1NZnE,GAASvP,EAAWokC,KAAY30B,KAEvB,SAAS40B,GAAT,GAAsC,QACnD,MAAkCj+B,oBAAS,GAA3C,WAAOu0B,EAAP,KAAkB2J,EAAlB,KAOA,OALA14B,qBAAU,WACO9J,aAAakB,QtFFQ,2BsFGvBshC,GAAa,KACzB,IAGD,kBAACrZ,GAAA,EAAD,CACEwP,cAAc,OACdvP,aAAa,EACbzG,QAASkW,EACTtP,eAAgB,WACdiZ,GAAa,GACbxiC,aAAaC,QtFbmB,yBsFae,YAGjD,kBAACxC,EAAA,EAAD,CAAMC,MAAOpB,GAAOu7B,cAClB,kBAACp6B,EAAA,EAAD,CAAMC,MAAOpB,GAAOw7B,WAClB,kBAACr6B,EAAA,EAAD,CAAMC,MAAOpB,GAAOmmC,MAClB,kBAAC,KAAD,CACEzf,iBAAkB1mB,GAAO8yB,iBACzB5Q,eAAgBliB,GAAO6yB,eACvBzxB,MAAOpB,GAAO0S,MACdmc,WAAY,QACZrc,OAAQ,CAAEC,IAAKtB,MAEjB,kBAAChQ,EAAA,EAAD,CAAMC,MAAOpB,GAAOomC,UAClB,kBAACnyB,EAAA,EAAD,CAAM7S,MAAOpB,GAAOsY,OAApB,mDAKJ,kBAACnX,EAAA,EAAD,CAAMC,MAAOpB,GAAOqmC,MAClB,kBAAC,KAAD,CACEjlC,MAAOpB,GAAOsmC,OACdpkB,eAAgBliB,GAAOumC,gBACvB7f,iBAAkB1mB,GAAOwmC,kBACzBh0B,OAAQ,CAAEC,IAAKg0B,MACf5X,WAAY,YAEd,kBAAC5a,EAAA,EAAD,CAAM7S,MAAOpB,GAAO0mC,UAApB,wDAGA,kBAACzyB,EAAA,EAAD,CAAM7S,MAAOpB,GAAO0mC,UAApB,yDAKF,kBAACvyB,EAAA,EAAD,CACE/S,MAAOpB,GAAO2mC,OACdtyB,cAAe,GACfC,QAAS,WACP4xB,GAAa,GACbxiC,aAAaC,QtFrDa,yBsFqDqB,YAGjD,kBAACsQ,EAAA,EAAD,CAAM7S,MAAOpB,GAAO4mC,WAApB,sBAQZ,IAAM5mC,GAASC,IAAWC,OAAO,CAC/BC,UAAW,CACTQ,gBAAiB,OACjB8T,MAAO,OACPE,OAAQ,QAEV4mB,aAAc,CACZn7B,KAAM,EACNC,eAAgB,SAChBuU,WAAY,SACZtU,SAAU,WACVqU,OAAQ,OACRF,MAAO,OACP9T,gBAAiBwS,EACjBoK,SAAU,UAEZie,UAAW,CACTz6B,QAAS,GACTJ,gBAAiB,QACjBkU,aAAc,GACdc,YAAa,EACb8X,YAAa,OACbC,aAAc,CACZjZ,MAAO,EACPE,OAAQ,GAEVgZ,cAAe,IACfC,aAAc,EACdzI,UAAW,EACXmN,SAAU,QAEZzc,KAAM,CACJ1D,aAAc,SACd6C,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,GACVJ,aAAc,IAEhBswB,UAAW,CACTpwB,WAAY,oBAEdymB,WAAY,CACV56B,cAAe,MACfT,eAAgB,YAElBu7B,mBAAoB,CAClB5mB,MAAO7B,EACP8B,WAAY,oBACZE,SAAU,IAEZ2mB,eAAgB,CACdxiB,WAAY,GACZvY,QAAS,EACTitB,kBAAmB,GACnBvZ,MAAO,cACPG,WAAY,SACZvU,eAAgB,SAChBM,gBAAiBwS,EACjB0B,aAAc,EACdS,aAAc,QAEhBqxB,OAAQ,CACNhmC,gBAAiBwS,EACjB0B,aAAc,GACd9T,QAAS,GACTokB,UAAW,GAEbyhB,UAAW,CACT5xB,MAAO,QACPS,WAAY,OACZD,UAAW,UAEb2wB,KAAM,CACJrxB,UAAW,EACXC,aAAc,GACdN,MAAO,OACP3T,cAAe,SACf8T,WAAY,UAEdke,iBAAkB,CAAEnyB,gBAAiB,eACrCkyB,eAAgB,CACdlyB,gBAAiB,OACjBkU,aAAc,IAEhBnC,MAAO,CAAE+B,MAAO,GAAIE,OAAQ,IAC5B4xB,gBAAiB,CACf9xB,MAAO,OACPE,OAAQ,SACRhU,gBAAiB,UACjB8xB,qBAAsB,GACtBD,oBAAqB,IAEvBgU,kBAAmB,CACjB7lC,gBAAiB,cACjB8xB,qBAAsB,GACtBD,oBAAqB,IAEvB8T,OAAQ,CACN7xB,MAAO,OACPE,OAAQ,OACR6d,oBAAqB,GACrBC,qBAAsB,IAExB2T,SAAU,CACR9sB,WAAY,GACZlZ,KAAM,EACNoV,UAAW,SACXN,gBAAiB,GACjBC,SAAU,IAEZmD,MAAO,CAAE7C,WAAY,OAAQN,SAAU,IACvCkuB,SAAU,CAAEruB,MAAO,OAAQG,SAAU,IACrCkxB,KAAM,CACJtxB,aAAc,GACdqN,WAAY,IAEdskB,SAAU,CACRxxB,gBAAiB,GACjBM,UAAW,SACXL,SAAU,MDzJR0xB,GAAQC,cAIR9mC,GAASC,IAAWC,OAAO,CAC/B6mC,SAAU,CACR3mC,KAAM,EACNO,gBAAiBwS,KAIR4yB,GAAgBiB,cAWtB,I,GEhEQC,GFgEwD,WACrE,MACEj/B,oBAAS,GADX,WAAOk/B,EAAP,KAAqCC,EAArC,KAEA,EAA0Dn/B,mBAAiB,IAA3E,WAAOo/B,EAAP,KAA8BC,EAA9B,KAEA,OACE,kBAAC15B,GAAD,MACG,gBAAG/J,EAAH,EAAGA,MAAH,OACC,kBAAC,GAAD,CAAmBA,MAAOA,GACxB,kBAAC,GAAD,CAAoBA,MAAOA,GACzB,kBAAC,GAAD,CAAuBA,MAAOA,GAC5B,kBAAC,GAAD,CAAqBA,MAAOA,GAC1B,kBAAC,GAAD,KACE,kBAACktB,GAAD,MACG,gBAAGnc,EAAH,EAAGA,OAAH,OACC,kBAAC2yB,EAAA,EAAD,CACElmC,MAAO,CACLpB,GAAO+mC,SACP,CACE7wB,UAAWvB,KAIf,oCACE,kBAAClG,GAAD,MACG,YAA0B,IAAvBvN,EAAsB,EAAtBA,UAAWgC,EAAW,EAAXA,KACb,IACGhC,GACDgC,EAAKwU,SACJwvB,EACD,CACA,IAAMK,EDnEA,SAACxC,GACrC,IAAMyC,EAAiB5C,KACjBwC,EAAwB3C,GAC5BM,EACAyC,GAQF,OALGJ,EAAsB1vB,QACvB+sB,GAAc+C,EAAgBzC,GAAoBrtB,QAElDotB,GAAmBC,GAEdqC,ECwDyBK,CAAuBvkC,GACrBqkC,EAA6B7vB,SAC/B2vB,EACEE,GAEFJ,GAAgC,IAGpC,OACE,kBAAClC,GAAD,CACE1I,UAAW2K,EACX5gB,WAAY6gB,EACZjC,eAAgBkC,EAChBjC,mBAAoBjiC,OAM3BU,EAAQ,kBAACqiC,GAAD,MAA8B,KACvC,kBAACyB,EAAA,EAAD,CACEvpC,QAASwpC,EACTC,MAAOC,IACPh0B,IAAKkyB,IAEL,kBAACc,GAAMvsB,UAAP,CACEE,cAAe,CACb4gB,OAAQ,SAACn6B,GAAD,OACN,kBAAC,GAAoBA,MAIvB2C,EAOA,oCACE,kBAACijC,GAAMlsB,OAAP,CACE5c,KAAK,OACLu9B,UAAWH,GACXhjB,QAAS,CAAE2vB,aAAa,KAE1B,kBAACjB,GAAMlsB,OAAP,CACE5c,KAAK,WACLu9B,UAAWkJ,GACXrsB,QAAS,CAAE2vB,aAAa,KAE1B,kBAACjB,GAAMlsB,OAAP,CACE5c,KAAK,YACLu9B,UAAWvD,GACX5f,QAAS,CAAE2iB,YAAa,gBAE1B,kBAAC+L,GAAMlsB,OAAP,CACE5c,KAAK,WACLu9B,UAAWwB,GACX3kB,QAAS,CACP2iB,YAAa,0BAGjB,kBAAC+L,GAAMlsB,OAAP,CACE5c,KAAK,aACLu9B,UAAW8C,GACXjmB,QAAS,CACP2iB,YAAa,sBAGjB,kBAAC+L,GAAMlsB,OAAP,CACE5c,KAAK,oBACLu9B,UAAW+D,GACXlnB,QAAS,CACP2iB,YAAa,mCAGjB,kBAAC+L,GAAMlsB,OAAP,CACE5c,KAAK,eACLu9B,UAAWyF,GACX5oB,QAAS,CACP2iB,YAAa,0BAGjB,kBAAC+L,GAAMlsB,OAAP,CACE5c,KAAK,OACLu9B,UAAWuC,GACX1lB,QAAS,CAAE2iB,YAAa,oBAE1B,kBAAC+L,GAAMlsB,OAAP,CACE5c,KAAK,WACLoa,QAAS,CAAE2vB,aAAa,GACxBxM,UAAWwC,MA1Df,kBAAC+I,GAAMlsB,OAAP,CACE5c,KAAK,QACLu9B,UAAWhqB,GACX6G,QAAS,CAAE2vB,aAAa,qBG1HpDC,GAAc5F,QACW,cAA7B5gC,OAAOoE,SAASqiC,UAEe,UAA7BzmC,OAAOoE,SAASqiC,UAEhBzmC,OAAOoE,SAASqiC,SAASvhC,MACvB,2DAIAwhC,IAAa,UAA0B1mC,OAAOjD,aAAjC,EAA0B,GAAe4pC,aAAc,GAmC1E,SAASC,GAAgBC,EAAO9pC,GAC9BiI,UAAU8hC,cACPC,SAASF,GACThG,MAAK,SAACmG,GACLA,EAAaC,cAAgB,WAC3B,IAAMC,EAAmBF,EAAaG,WACd,MAApBD,IAGJA,EAAiBE,cAAgB,WACA,cAA3BF,EAAiBzqC,QACfuI,UAAU8hC,cAAcO,YAI1Br+B,QAAQs+B,IACN,+GAKEvqC,GAAUA,EAAOwqC,UACnBxqC,EAAOwqC,SAASP,KAMlBh+B,QAAQs+B,IAAI,sCAGRvqC,GAAUA,EAAOyqC,WACnBzqC,EAAOyqC,UAAUR,WAO5BjG,OAAM,SAAC7/B,GACN8H,QAAQ9H,MAAM,4CAA6CA,M,sgCCtFjE,IAAM0O,GAASvP,EAAWokC,KAAY30B,KAQzB23B,GAAb,kCAkEE,WAAY/nC,GAAY,IAAD,uBACrB,cAAMA,IAlEQjD,MAAQ,CACtBirC,iBAAiB,EACjBC,WAAW,EACXC,eAAe,GA8DM,EAzDhBnpC,OAASC,IAAWC,OAAO,CAChCq7B,aAAc,CACZn7B,KAAM,EACNC,eAAgB,SAChBuU,WAAY,SACZjU,gBAAiB,mBAEnB66B,UAAW,CACT9mB,OAAQ,GACR/T,gBAAiB,QACjBkU,aAAc,GACd9T,QAAS,GACT0sB,YAAa,OACbC,aAAc,CACZjZ,MAAO,EACPE,OAAQ,GAEVgZ,cAAe,IACfC,aAAc,EACdzI,UAAW,GAEbwhB,OAAQ,CACNhmC,gBAAiBwS,EACjB0B,aAAc,GACd9T,QAAS,GACTokB,UAAW,GAEbyhB,UAAW,CACT5xB,MAAO,QACPS,WAAY,OACZD,UAAW,UAEb2wB,KAAM,CACJrxB,UAAW,EACXC,aAAc,GACdN,MAAO,OACP3T,cAAe,MACf8T,WAAY,UAEdke,iBAAkB,CAAEnyB,gBAAiB,eACrCkyB,eAAgB,CACdlyB,gBAAiB,OACjBkU,aAAc,IAEhBnC,MAAO,CAAE+B,MAAO,GAAIE,OAAQ,IAC5ByxB,SAAU,CAAE9sB,WAAY,GAAIlZ,KAAM,GAClCkY,MAAO,CAAE7C,WAAY,OAAQN,SAAU,IACvCkuB,SAAU,CAAEruB,MAAO,OAAQG,SAAU,IACrCkxB,KAAM,CACJtxB,aAAc,GACdqN,WAAY,GACZoe,eAAgB,EAChBC,eAAgB,QAElB2I,aAAc,CAAE3zB,WAAY,OAAQN,SAAU,GAAIJ,aAAc,MAMhExT,OAAOqvB,iBAAiB,uBAAuB,SAAC9Y,GAC9CA,EAAMuxB,iBACN,EAAKC,eAAiBxxB,EACtB,EAAK7P,SAAL,SAAmB,EAAKjK,OAAxB,IAA+BkrC,WAAW,QAG5C3nC,OAAOqvB,iBAAiB,gBAAgB,SAAC2Y,GACvC,EAAKthC,SAAL,SAAmB,EAAKjK,OAAxB,IAA+BmrC,eAAe,QAV3B,EAlEzB,oCAgFE,gFACEziC,KAAKuB,SAAL,SAAmBvB,KAAK1I,OAAxB,IAA+BirC,iBAAiB,KAChDvlC,aAAaG,WzFjGY,eyFkGrB6C,KAAK4iC,eAHX,wBAII5iC,KAAK4iC,eAAeE,SAJxB,mBAM+B9iC,KAAK4iC,eAAeG,YANnD,UAQiC,aARjC,OAQqBC,QARrB,wBASMn/B,QAAQs+B,IAAI,+BATlB,mBAUa,GAVb,QAYMt+B,QAAQs+B,IAAI,sCAZlB,eAgBEniC,KAAKuB,SAAL,SAAmBvB,KAAK1I,OAAxB,IAA+BirC,iBAAiB,KAhBlD,mBAiBS,GAjBT,+DAhFF,qCAoGE,WACE,OAAOviC,KAAK1I,MAAMkrC,YAAcxiC,KAAK1I,MAAMmrC,gBArG/C,oBAwGE,WAA4B,IAAD,OACzB,OAAKziC,KAAKijC,2BAA8Bv+B,GAAQzD,oBAI9C,kBAACklB,GAAA,EAAD,CAAOwP,cAAc,OAAOvP,aAAa,EAAMzG,SAAS,GACtD,kBAACllB,EAAA,EAAD,CAAMC,MAAOsF,KAAK1G,OAAOu7B,cACvB,kBAACp6B,EAAA,EAAD,CAAMC,MAAOsF,KAAK1G,OAAOw7B,WACvB,kBAACr6B,EAAA,EAAD,CAAMC,MAAOsF,KAAK1G,OAAOmmC,MACvB,kBAAC,KAAD,CACEzf,iBAAkBhgB,KAAK1G,OAAO8yB,iBAC9B5Q,eAAgBxb,KAAK1G,OAAO6yB,eAC5BzxB,MAAOsF,KAAK1G,OAAO0S,MACnBmc,WAAY,QACZrc,OAAQ,CAAEC,IAAKtB,MAEjB,kBAAChQ,EAAA,EAAD,CAAMC,MAAOsF,KAAK1G,OAAOomC,UACvB,kBAAC,KAAD,CAAMhlC,MAAOsF,KAAK1G,OAAOsY,OACtBsxB,GAAS7rC,KAAK8rC,WAAW,QAAShoC,KAErC,kBAAC,KAAD,CAAMT,MAAOsF,KAAK1G,OAAOqjC,UAAzB,IAAwC1F,GAAKC,WAGjD,kBAACz8B,EAAA,EAAD,CAAMC,MAAOsF,KAAK1G,OAAOqmC,MACvB,kBAAC,KAAD,CAAMjlC,MAAOsF,KAAK1G,OAAOopC,cAAzB,gBACA,kBAAC,KAAD,KAAOQ,GAASE,YAAYD,WAAW,QAAShoC,MAGlD,kBAACsS,EAAA,EAAD,CACE/S,MAAOsF,KAAK1G,OAAO2mC,OACnBtyB,cAAe,GACfC,QAAS,kBAAM,EAAKy1B,WACpBpe,SAAUjlB,KAAK1I,MAAMirC,iBAErB,kBAAC,KAAD,CAAM7nC,MAAOsF,KAAK1G,OAAO4mC,WAAzB,uBAhCD,SA1Gb,GAAmChkB,aCVtBonB,GAAkB,WAC7B,OACE,kBAAC,KAAD,CAAM9nB,eAAgBliB,GAAOiqC,MAC3B,kBAAC,KAAKpvB,MAAN,CAAYzZ,MAAOpB,GAAOsY,OACxB,kBAAC,UAAD,CACEva,KAAK,uBACLuD,KAAM,GACNF,MAAOpB,GAAOkqC,cAEhB,kBAAC,GAAD,kCAEF,kBAAC,KAAKC,QAAN,MACA,kBAAC,GAAD,KACE,kBAAC,GAAD,CAAM/oC,MAAOpB,GAAO6V,MAApB,mHAIA,kBAAC,GAAD,CAAMzU,MAAOpB,GAAO6V,MAApB,sGASKu0B,GAAkB,WAC7B,OACE,kBAAC,KAAD,CAAMloB,eAAgBliB,GAAOiqC,MAC3B,kBAAC,KAAKpvB,MAAN,CAAYzZ,MAAOpB,GAAOmmC,MACxB,kBAAC,UAAD,CAAMpoC,KAAK,gBAAgBuD,KAAM,GAAIF,MAAOpB,GAAOqqC,cACnD,kBAAC,GAAD,CAAMjpC,MAAOpB,GAAOsY,OAApB,gCAEF,kBAAC,KAAK6xB,QAAN,MACA,kBAAC,GAAD,KACE,kBAAC,GAAD,CAAM/oC,MAAOpB,GAAO6V,MAApB,4HAIA,kBAAC,GAAD,CAAMzU,MAAOpB,GAAOsqC,MAClB,kBAAC,GAAD,CACElpC,MAAOpB,GAAOuqC,UADhB,0EAGA,kBAAC,GAAD,CACEnpC,MAAOpB,GAAOuqC,UADhB,kFAGA,kBAAC,GAAD,CACEnpC,MAAOpB,GAAOuqC,UADhB,wFAIF,kBAAC,GAAD,CAAMnpC,MAAOpB,GAAO6V,MAApB,sGAGA,kBAAC,GAAD,CAAMzU,MAAOpB,GAAO6V,MAApB,sGASK20B,GAAe,WAC1B,OACE,kBAAC,KAAD,CAAMtoB,eAAgBliB,GAAOiqC,MAC3B,kBAAC,KAAKpvB,MAAN,CAAYzZ,MAAOpB,GAAOsY,OACxB,kBAACjX,EAAA,EAAD,CACE2T,MAAO7B,EACP/R,MAAOpB,GAAOyqC,cAEhB,kBAAC,GAAD,mCAEF,kBAAC,KAAKN,QAAN,MACA,kBAAC,GAAD,KACE,kBAAC,GAAD,CAAM/oC,MAAOpB,GAAO6V,MAApB,sFAGA,kBAAC,GAAD,CAAMzU,MAAOpB,GAAO6V,MAApB,2HAIA,kBAAC,GAAD,CAAMzU,MAAOpB,GAAO6V,MAApB,sGASK60B,GAAsB,WACjC,OACE,kBAAC,KAAD,CAAMxoB,eAAgBliB,GAAOiqC,MAC3B,kBAAC,KAAKpvB,MAAN,CAAYzZ,MAAOpB,GAAOsY,OACxB,kBAAC,GAAD,CAAMlX,MAAOpB,GAAOmmC,MAClB,kBAAC,UAAD,CAAMpoC,KAAK,UAAUuD,KAAM,GAAIF,MAAOpB,GAAOyqC,cAC7C,kBAAC,GAAD,CAAMrpC,MAAOpB,GAAOomC,UAClB,kBAAC,GAAD,CAAMhlC,MAAOpB,GAAOsY,OAApB,kBACA,kBAAC,GAAD,CAAMlX,MAAOpB,GAAOqjC,UAApB,IAAmC1F,GAAKC,YAI9C,kBAAC,KAAKuM,QAAN,MACA,kBAAC,GAAD,KACE,kBAAC,GAAD,CAAM/oC,MAAOpB,GAAO6V,MAApB,8IAIA,kBAAC,GAAD,CAAMzU,MAAOpB,GAAOsqC,MAClB,kBAAC,GAAD,CAAMlpC,MAAOpB,GAAOuqC,UAApB,qCAEE,kBAAC,KAAD,CACE7jB,iBAAkB1mB,GAAO8yB,iBACzB5Q,eAAgBliB,GAAO6yB,eACvBzxB,MAAOpB,GAAO0S,MACdmc,WAAY,UACZrc,OAAQ,CACNC,IAAI,4nBARV,uCAW+BrH,GAAQ7D,cAEvC,kBAAC,GAAD,CAAMnG,MAAOpB,GAAOuqC,UAApB,uHAEE,kBAAC,KAAD,CACE7jB,iBAAkB1mB,GAAO8yB,iBACzB5Q,eAAgBliB,GAAO6yB,eACvBzxB,MAAOpB,GAAO0S,MACdmc,WAAY,UACZrc,OAAQ,CACNC,IAAI,giBARV,YAcF,kBAAC,GAAD,CAAMrR,MAAOpB,GAAO6V,MAApB,sGASO,SAAS80B,KACtB,MAAsC3iC,oBAAS,GAA/C,WAAO4iC,EAAP,KAAoBC,EAApB,KAIA,OAHAtpC,OAAOqvB,iBAAiB,gBAAgB,WACtCia,GAAe,MAGf,kBAAC,GAAD,CAAMzpC,MAAOpB,GAAOG,WAEZyqC,EACK,kBAAC,GAAD,MACEx/B,GAAQ1D,kBACV,kBAAC,GAAD,MACG0D,GAAQzD,oBAGX,kBAAC,GAAD,MAFA,kBAAC,GAAD,OASjB,IAAM3H,GAASC,IAAWC,OAAO,CAC/BC,UAAW,CACTC,KAAM,EACNwU,WAAY,SACZvU,eAAgB,SAChBU,QAAS,GACTJ,gBAAiB,QAEnBmqC,SAAU,CAAE1qC,KAAM,EAAGC,eAAgB,SAAUuU,WAAY,UAC3Dq1B,KAAM,CACJx1B,MAAO,MACPI,aAAc,IAEhByD,MAAO,CACLnD,SAAU,GACVM,WAAY,OACZpV,eAAgB,SAChB+kB,QAAS,OACTxQ,WAAY,UAEdiB,KAAM,CACJV,SAAU,GACVH,MAAO,OACPD,aAAc,GAEhBu1B,KAAM,CACJv0B,eAAgB,IAElBw0B,SAAU,CACRx1B,aAAc,EACduE,WAAY,GACZnE,SAAU,GACVH,MAAO,QAETk1B,YAAa,CACXl1B,MAAO,UACPwE,YAAa,GAEf6wB,YAAa,CACXr1B,MAAO,UACPwE,YAAa,GAEfixB,YAAa,CACXz1B,MAAO7B,EACPqG,YAAa,GAEfsZ,iBAAkB,CAAEnyB,gBAAiB,eACrCkyB,eAAgB,GAChBngB,MAAO,CAAEiC,OAAQ,GAAIF,MAAO,IAE5B0xB,KAAM,CACJrxB,UAAW,EACXL,MAAO,OACP2Q,QAAS,OACTtkB,cAAe,MACf8T,WAAY,UAEdwxB,SAAU,CAAE9sB,WAAY,GAAI8L,QAAS,OAAQxQ,WAAY,cACzDyuB,SAAU,CACR/pB,WAAY,EACZtE,MAAO,OACPG,SAAU,GACVM,WAAY,Y,UC3OHs1B,GAAb,WAIE,aAAe,aACbC,KAAQC,WAAWvpC,GALvB,kCAQE,WAAsB,IAAD,OACnBspC,KAAQE,SAAS3pC,OAAOoE,SAASwlC,UACjCzkC,KAAK+tB,MAAQ3J,YAAW,kBAAM,EAAK5hB,UAAS6hC,EAAcK,YAV9D,kBAaE,WACO1kC,KAAK+tB,QACVC,aAAahuB,KAAK+tB,cACX/tB,KAAK+tB,WAhBhB,KCwBe,SAAS4W,KACtB,IAAMC,ECvBO,WACb,MAAgDj/B,YAAe,GAA/D,WAAOi/B,EAAP,KAA0BC,EAA1B,KAwCA,OArCAl/B,aAAgB,WACd,EAAA/G,EAAAC,OAAA,gEAEIimC,MAFJ,WAAAlmC,EAAA,MAKUmmC,IAAe,CACnBC,OAAQ,CACNj5B,IAAKuS,EAAQ,KACbI,QAASqmB,IAAiBE,OAE5BC,gBAAiB,CACfn5B,IAAKuS,EAAQ,KACbI,QAASqmB,IAAiBE,OAE5BE,kBAAmB,CACjBp5B,IAAKuS,EAAQ,KACbI,QAASqmB,IAAiBE,OAE5BG,iBAAkB,CAChBr5B,IAAKuS,EAAQ,KACbI,QAASqmB,IAAiBE,UApBlC,yBAAArmC,EAAA,MAuBUymC,UAAKC,YAvBf,uDA0BIzhC,QAAQ0hC,KAAR,MA1BJ,yBA4BIV,GAAmB,GACnBC,MA7BJ,qFAkCC,IAEIF,EDlBmBY,GAC1B,EAAsClkC,oBAAS,GAA/C,WAAO4iC,EAAP,KAAoBC,EAApB,KAuCA,OAtCAr9B,qBAAU,WACR,IAAM2+B,EAAazoC,aAAakB,Q5FLT,e4FMjBwnC,EAAazO,GAAKC,QACnBgN,GAAeuB,IAAeC,IACnC1oC,aAAaC,Q5FRU,c4FQWyoC,GAClCpgC,IAAMC,KAAK,CACT5J,KAAM,OACN6J,MAAM,sBAAiBkgC,EAAlB,IACL7J,MAAO,0DACPF,eAAgB,SAEjB,CAACuI,IAEJp9B,qBAAU,YACP,WAAC,YAAAlI,EAAAC,OAAA,kEAAAD,EAAA,M7EZG/D,OAAO8qC,cAAcjK,MAAK,SAACkK,GAAD,OAAQA,EAAGpiC,SAAOk4B,MAAK,SAACt8B,GAGvD,OADkBA,EAAOymC,c6EUvB,OACMviC,EADN,OAEM+3B,EAAKr+B,aAAakB,Q5FtCF,c4FsC2BoF,EAC3CjM,EAAO2F,aAAakB,Q5FrCF,gB4FqC6B2B,UAAUD,UAC/D5C,aAAaC,Q5FxCS,Y4FwCao+B,GACnCr+B,aAAaC,Q5FvCW,c4FuCa5F,GALrC,4DAAD,GAQD,IAAMyuC,EAAQjrC,OAAO4F,WAAW,8BAE1BslC,EAAiB,kBACrBD,EAAMplC,SACLgE,GAAQzE,UAAYN,GAAYQ,SAAWuE,GAAQ/D,WACpD,GACIqlC,EAAW,kBAAM7B,EAAe4B,MAGtC,OAFA5B,EAAe4B,KACfD,EAAM5b,iBAAiB,SAAU8b,GAC1B,kBAAMF,EAAM3b,oBAAoB,SAAU6b,MAChD,IAEHl/B,qBAAU,YACQ,IAAIu9B,IACZ7hC,UACP,IAED,oCAESoiC,EAID,kBAAC,GAAD,KACE,kBAAC,GAAD,KACE,kBAAC,IAAD,KACE,kBAAC,GAAD,KACE,kBAAC,GAAD,MACCV,EAAc,kBAAC,GAAD,MAAiB,kBAACD,GAAD,MAChC,kBAAC7kB,EAAA,EAAD,UATH,kBAAC,IAAD,MAiBX,kBAAC,IAAD,ODtFOilB,GACIK,SAAW,IHoBrB,SAAkB9sC,GACvB,GAA6C,kBAAmBiI,UAAW,CAGzE,GADkB,IAAI2uB,IAAI+S,GAAY1mC,OAAOoE,SAASC,MACxC+mC,SAAWprC,OAAOoE,SAASgnC,OAIvC,OAGFprC,OAAOqvB,iBAAiB,QAAQ,WAC9B,IAAMwX,EAAWH,GAAN,qBACPF,KAgEV,SAAiCK,EAAO9pC,GAEtCsuC,MAAMxE,EAAO,CACXpjC,QAAS,CAAE,iBAAkB,YAE5Bo9B,MAAK,SAAC/8B,GAEL,IAAMwnC,EAAcxnC,EAASL,QAAQkF,IAAI,gBAEnB,MAApB7E,EAASG,QACO,MAAfqnC,IAA8D,IAAvCA,EAAYnb,QAAQ,cAG5CnrB,UAAU8hC,cAAcyE,MAAM1K,MAAK,SAACmG,GAClCA,EAAawE,aAAa3K,MAAK,WAC7B7gC,OAAOoE,SAASE,eAKpBsiC,GAAgBC,EAAO9pC,MAG1BgkC,OAAM,WACL/3B,QAAQs+B,IACN,oEAvFAmE,CAAwB5E,EAAO9pC,GAI/BiI,UAAU8hC,cAAcyE,MAAM1K,MAAK,WACjC73B,QAAQs+B,IACN,+GAMJV,GAAgBC,EAAO9pC,OI1B/BgqC,I,0DEzBA5qC,EAAOC,QAAU,IAA0B,4B,oBCA3CD,EAAOC,QAAU,IAA0B,6B,wCCA3C,IAAI0L,EAAM,CACT,iBAAkB,IAClB,kBAAmB,IACnB,iBAAkB,IAClB,eAAgB,IAChB,gBAAiB,IACjB,gBAAiB,KAIlB,SAAS4jC,EAAeC,GACvB,IAAInL,EAAKoL,EAAsBD,GAC/B,OAAOE,EAAoBrL,GAE5B,SAASoL,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAEhkC,EAAK6jC,GAAM,CACpC,IAAI7iB,EAAI,IAAIvf,MAAM,uBAAyBoiC,EAAM,KAEjD,MADA7iB,EAAEyE,KAAO,mBACHzE,EAEP,OAAOhhB,EAAI6jC,GAEZD,EAAetkC,KAAO,WACrB,OAAOD,OAAOC,KAAKU,IAEpB4jC,EAAeK,QAAUH,EACzBzvC,EAAOC,QAAUsvC,EACjBA,EAAelL,GAAK,K,kBC3BpBrkC,EAAOC,QAAU,07B,oBCAjBD,EAAOC,QAAU,IAA0B,uC,kBCA3CD,EAAOC,QAAU,0pC,oBCAjBD,EAAOC,QAAU,IAA0B,oC,oBCA3CD,EAAOC,QAAU,IAA0B,qC,kBCA3CD,EAAOC,QAAU,2jC","file":"static/js/app.9872bb6b.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/icon.ffc83e09.png\";","module.exports = __webpack_public_path__ + \"static/media/icon.9ebcbd80.png\";","module.exports = __webpack_public_path__ + \"./fonts/Roboto-Regular.ttf\";","module.exports = __webpack_public_path__ + \"static/media/logo.5291eff6.png\";","module.exports = __webpack_public_path__ + \"static/media/logo.662613c0.png\";","module.exports = __webpack_public_path__ + \"static/media/google_translate_logo_gray.49cd47d4.svg\";","module.exports = __webpack_public_path__ + \"static/media/language_feature.48b2d9f5.png\";","/**\n * Learn more about deep linking with React Navigation\n * https://reactnavigation.org/docs/deep-linking\n * https://reactnavigation.org/docs/configuring-links\n */\n\nimport { LinkingOptions, getStateFromPath } from '@react-navigation/native'\nimport * as Linking from 'expo-linking'\n\nimport { RootStackParamList } from '../types'\n\ninterface IRoute {\n name?: string\n state?: {\n index?: number\n routes: Array\n }\n}\nconst hasNestedRoute = (route: IRoute, routeName: string): boolean => {\n if (route.name === routeName) return true\n if (!route.state) return false\n const { routes, index = 0 } = route.state\n return hasNestedRoute(routes[index], routeName)\n}\n\nconst linking: LinkingOptions = {\n prefixes: [Linking.makeUrl('/')],\n config: {\n screens: {\n Home: {\n path: '',\n initialRouteName: 'Root',\n screens: {\n Root: {\n initialRouteName: 'ArticleList',\n screens: {\n ArticleList: 'articles',\n },\n },\n Search: {\n initialRouteName: 'ArticleList',\n screens: {\n ArticleList: 'search',\n },\n },\n Favorites: 'favorites',\n },\n },\n Analysis: {\n path: 'analysis',\n initialRouteName: 'AnalysisRoot',\n screens: {\n AnalysisRoot: {\n initialRouteName: 'AnalysisList',\n screens: {\n AnalysisList: '',\n },\n },\n AnalysisSearch: {\n initialRouteName: 'AnalysisList',\n screens: {\n AnalysisList: 'search',\n },\n },\n AnalysisFavorites: 'favorites',\n },\n },\n Login: 'login',\n Settings: 'settings',\n PDFReader: 'pdfReader',\n Categories: 'categories',\n PreferredLanguage: 'preferredLanguage',\n Notification: 'notification',\n Help: 'help',\n NotFound: '*',\n },\n },\n getStateFromPath(path, config) {\n const defaultState = getStateFromPath(path, config)\n const [route] = defaultState?.routes || []\n if (route?.name === 'Categories') {\n defaultState?.routes.unshift({ name: 'Settings' })\n } else if (route?.name === 'PreferredLanguage') {\n defaultState?.routes.unshift({ name: 'Settings' })\n } else if (route?.name === 'Notification') {\n defaultState?.routes.unshift({ name: 'Settings' })\n } else if (route?.name === 'PDFReader') {\n defaultState?.routes.unshift({ name: 'Analysis' })\n } else if (route?.name === 'Settings') {\n defaultState?.routes.unshift({ name: 'Settings' })\n } else if (defaultState) {\n if (hasNestedRoute(route, 'Search')) {\n defaultState.routes[0] = {\n name: 'Home',\n state: { routes: [{ name: 'Search' }] },\n }\n } else if (hasNestedRoute(route, 'Favorites')) {\n defaultState.routes[0] = {\n name: 'Home',\n state: { routes: [{ name: 'Search' }] },\n }\n } else if (hasNestedRoute(route, 'AnalysisSearch')) {\n defaultState.routes[0] = {\n name: 'Home',\n state: { routes: [{ name: 'AnalysisSearch' }] },\n }\n } else if (hasNestedRoute(route, 'AnalysisFavorites')) {\n defaultState.routes[0] = {\n name: 'Analysis',\n state: { routes: [{ name: 'AnalysisRoot' }] },\n }\n } else {\n if (route.path?.includes('analysis') || route.name === 'Analysis') {\n defaultState.routes[0] = { name: 'Analysis' }\n } else {\n defaultState.routes[0] = { name: 'Home' }\n }\n }\n }\n return defaultState\n },\n}\n\nexport default linking\n","const tintColorLight = '#2f95dc'\nconst tintColorDark = '#fff'\n\nexport default {\n oxfordBlue: '#14213D',\n orangeWeb: '#FCA311',\n notificationRed: '#C4203B',\n listBottomBlack: 'rgba(0, 0, 0, 0.12)',\n platinum: '#E5E5E5',\n darkPlatinum: '#CECECE',\n white: '#FFFFFF',\n unselectedBlue: '#7582A3',\n transparentOxfordBlue: 'rgba(20, 33, 61, 0.8)',\n transparentBackgroundOxfordBlue: 'rgba(20, 33, 61, 0.4)',\n listWhite: '#FBFBF8',\n}\n","import React, { FunctionComponent } from 'react'\nimport { ActivityIndicator, StyleSheet, View } from 'react-native'\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\n zIndex: 1,\n },\n horizontal: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n padding: 10,\n },\n})\n\nexport interface ISpinnerProps {\n isLoading: boolean\n}\n\nexport const Spinner: FunctionComponent = (props) => {\n const { isLoading } = props\n if (!isLoading) return null\n return (\n \n \n \n )\n}\n","window.config = window.config || {}\n\nexport const apiUrl = `${window.config.API_URL}/`\n\nexport const authTokenPath = 'AUTH_TOKEN'\n\nexport const refreshTokenPath = 'REFRESH_TOKEN'\n\nexport const deviceIdPath = 'DEVICE_ID'\n\nexport const deviceNamePath = 'DEVICE_NAME'\n\nexport const contentTags = 'CONTENT_TAGS'\n\nexport const languageFeatureModalPath = 'LANGUAGE_FEATURE_MODAL'\n\nexport const isProduction = process.env.NODE_ENV === 'production'\n\nexport const googleAppId = `${window.config.TRACKING_ID}`\n\nexport const isMirror = window.isMirror\n\nexport const appName = window.appName\n\nexport const dbKey = 'APP_DB'\n\nexport const versionPath = 'APP_VERSION'\n\nexport const refreshDelayTime = 1500\n\nexport const httpRegexp =\n /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i\n\nwindow.env = {\n apiUrl,\n googleAppId,\n}\n","import { IArticle } from '../../api/articles'\n\nexport interface IArticlesState {\n isLoading: boolean\n total: number\n articles: Array\n error?: Error\n}\n\nexport const initialArticleState: IArticlesState = {\n isLoading: false,\n total: 0,\n articles: [],\n}\n","import { ArticleActions } from './articles.actions'\nimport { IArticlesState, initialArticleState } from './articles.state'\n\nexport const articleReducer = (\n state: IArticlesState,\n action: ArticleActions\n): IArticlesState => {\n switch (action.type) {\n case 'ARTICLES_LOAD_SUCCESS':\n return {\n ...state,\n total: action.payload.Total,\n articles: [...state.articles, ...action.payload.Articles],\n }\n case 'ARTICLES_LOAD_ERROR':\n return {\n ...state,\n error: action.error,\n }\n case 'ARTICLES_REFRESH_SUCCESS':\n return {\n ...initialArticleState,\n total: action.payload.Total,\n articles: [...action.payload.Articles],\n }\n case 'ARTICLES_REFRESH_ERROR':\n return {\n ...state,\n error: action.error,\n }\n case 'ARTICLES_SET_LOADING':\n return { ...state, isLoading: action.payload }\n case 'ARTICLES_RESET_STATE':\n return { ...initialArticleState }\n default:\n return state\n }\n}\n","import { IAnalysis } from '../../api/analyses'\nimport { ITag } from '../../api/tags'\n\nexport interface IAnalysesState {\n isLoading: boolean\n total: number\n analyses: Array\n error?: Error\n}\n\nexport const initialAnalysesState: IAnalysesState = {\n isLoading: false,\n total: 0,\n analyses: [],\n}\n","import { AnalysesActions } from './analyses.actions'\nimport { IAnalysesState, initialAnalysesState } from './analyses.state'\n\nexport const analysesReducer = (\n state: IAnalysesState,\n action: AnalysesActions\n): IAnalysesState => {\n switch (action.type) {\n case 'ANALYSES_LOAD_SUCCESS':\n return {\n ...state,\n total: action.payload.Total,\n analyses: [...state.analyses, ...action.payload.Analyses],\n }\n case 'ANALYSES_LOAD_ERROR':\n return {\n ...state,\n error: action.error,\n }\n case 'ANALYSES_REFRESH_SUCCESS':\n return {\n ...initialAnalysesState,\n total: action.payload.Total,\n analyses: [...action.payload.Analyses],\n }\n case 'ANALYSES_REFRESH_ERROR':\n return {\n ...state,\n error: action.error,\n }\n case 'ANALYSES_SET_ERROR': {\n return {\n ...state,\n error: action.payload,\n }\n }\n case 'ANALYSES_SET_LOADING':\n return { ...state, isLoading: action.payload }\n case 'ANALYSES_RESET_STATE':\n return { ...initialAnalysesState }\n default:\n return state\n }\n}\n","import { ILanguage } from '../../api/languages'\n\nexport interface ILanguagesState {\n isLoading: boolean\n languages: Array\n error?: Error\n}\n\nexport const initialLanguageState: ILanguagesState = {\n isLoading: false,\n languages: [],\n}\n","import { LanguageActions } from './languages.actions'\nimport { ILanguagesState, initialLanguageState } from './languages.state'\n\nexport const languagesReducer = (\n state: ILanguagesState,\n action: LanguageActions\n): ILanguagesState => {\n switch (action.type) {\n case 'LANGUAGES_LOAD_SUCCESS':\n return {\n ...state,\n languages: action.payload,\n }\n case 'LANGUAGES_LOAD_ERROR':\n return {\n ...state,\n error: action.error,\n }\n case 'LANGUAGES_SET_LOADING':\n return { ...state, isLoading: action.payload }\n case 'LANGUAGES_RESET_STATE':\n return { ...initialLanguageState }\n default:\n return state\n }\n}\n","import { TagsActions } from './tags.actions'\nimport { ITagsState } from './tags.state'\n\nexport const tagReducer = (\n state: ITagsState,\n action: TagsActions\n): ITagsState => {\n switch (action.type) {\n case 'TAGS_LOAD_SUCCESS':\n return {\n ...state,\n tags: action.payload,\n }\n case 'TAGS_SET_LOADING':\n return { ...state, isLoading: action.payload }\n default:\n return state\n }\n}\n","import { ITag } from '../../api/tags'\n\nexport interface ITagsState {\n isLoading: boolean\n tags: Array\n}\n\nexport const initialTagsState: ITagsState = {\n isLoading: false,\n tags: [],\n}\n","import { authTokenPath, refreshTokenPath } from '../../constants/Config'\nimport { UserActions } from './user.actions'\nimport { IUserState } from './user.state'\n\nexport const userReducer = (\n state: IUserState,\n action: UserActions\n): IUserState => {\n switch (action.type) {\n case 'PROFILE_LOAD_SUCCESS':\n return {\n ...state,\n user: action.payload,\n }\n case 'UPDATE_BOOKMARKS':\n return {\n ...state,\n user: {\n ...state.user,\n BookmarkedNews: action.payload,\n },\n }\n case 'UPDATE_ANALYSES_BOOKMARKS':\n return {\n ...state,\n user: {\n ...state.user,\n BookmarkedAnalyses: action.payload,\n },\n }\n case 'UPDATE_PREFERRED_TAGS':\n return {\n ...state,\n user: {\n ...state.user,\n PreferredTags: action.payload,\n },\n }\n case 'UPDATE_PREFERRED_LANGUAGE':\n return {\n ...state,\n user: {\n ...state.user,\n PreferredLanguage: action.payload,\n },\n }\n case 'UPDATE_SNOOZE_TIME':\n return {\n ...state,\n }\n case 'UPDATE_DID_UNSUBSCRIBE':\n return {\n ...state,\n user: {\n ...state.user,\n DidUnsubscribe: action.payload,\n },\n }\n case 'SET_TOKEN': {\n if (!action.payload) {\n localStorage.removeItem(authTokenPath)\n return {\n ...state,\n token: undefined,\n }\n }\n localStorage.setItem(authTokenPath, action.payload)\n return {\n ...state,\n token: action.payload,\n }\n }\n case 'SET_REFRESH_TOKEN': {\n if (!action.payload) {\n localStorage.removeItem(refreshTokenPath)\n return {\n ...state,\n refreshToken: undefined,\n }\n }\n localStorage.setItem(refreshTokenPath, action.payload)\n return {\n ...state,\n refreshToken: action.payload,\n }\n }\n case 'SET_ERROR': {\n return {\n ...state,\n error: action.payload,\n }\n }\n case 'PROFILE_SET_LOADING':\n return { ...state, isLoading: action.payload }\n case 'PROFILE_UNREAD_MESSAGES_LOAD_SUCCESS':\n return {\n ...state,\n userUnreadMessages: action.payload,\n }\n case 'UPDATE_READ_MESSAGE':\n return {\n ...state,\n userUnreadMessages: action.payload,\n }\n case 'UPDATE_MARK_ALL_READ':\n return {\n ...state,\n userUnreadMessages: {\n unreadAnalyses: [],\n unreadAnalysesCount: 0,\n unreadArticles: [],\n unreadArticlesCount: 0,\n },\n }\n default:\n return state\n }\n}\n","import { IUser, IUserUnreadMessages } from '../../api/user'\nimport { authTokenPath, refreshTokenPath } from '../../constants/Config'\n\nexport interface IUserState {\n isLoading: boolean\n user: IUser\n userUnreadMessages: IUserUnreadMessages\n token?: string\n refreshToken?: string\n error?: string\n}\n\nexport const initialUserState: IUserState = {\n user: {\n Id: '',\n Name: '',\n Email: '',\n Phone: '',\n PreferredTags: [],\n PreferredLanguage: 'default',\n IsSnooze: false,\n SnoozeTime: '',\n BookmarkedNews: [],\n BookmarkedAnalyses: [],\n DidUnsubscribe: false,\n },\n userUnreadMessages: {\n unreadArticlesCount: 0,\n unreadAnalysesCount: 0,\n unreadArticles: [],\n unreadAnalyses: [],\n },\n isLoading: false,\n token: localStorage.getItem(authTokenPath) || '',\n refreshToken: localStorage.getItem(refreshTokenPath) || '',\n}\n","import axios from 'axios'\nimport AxiosMockAdapter from 'axios-mock-adapter'\nimport { apiUrl, authTokenPath, refreshTokenPath } from '../constants/Config'\nimport { refreshToken } from './user/user.query'\n\nexport const client = axios.create({\n baseURL: apiUrl,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache',\n },\n})\nclient.interceptors.request.use((config) => {\n const token = localStorage.getItem(authTokenPath)\n config.headers = {\n ...config.headers,\n }\n if (token) {\n config.headers.Authorization = token ? `Bearer ${token}` : ''\n }\n return config\n})\n\nclient.interceptors.response.use(\n async (response) => response,\n async (error) => {\n const status = error.response ? error.response.status : null\n const token = localStorage.getItem(refreshTokenPath)\n const config = error.config\n\n if (status !== 401) {\n return Promise.reject(error)\n }\n\n localStorage.removeItem(authTokenPath)\n localStorage.removeItem(refreshTokenPath)\n\n if (!token || !config) {\n window.location.href = '/'\n window.location.reload()\n return Promise.reject(error)\n }\n\n const result = await refreshToken(token)\n\n if (!result.access_token || !result.refresh_token) {\n window.location.href = '/'\n window.location.reload()\n return Promise.reject(error)\n }\n\n localStorage.setItem(authTokenPath, result.access_token)\n localStorage.setItem(refreshTokenPath, result.refresh_token)\n window.location.reload()\n const response = await client.request(config)\n return response\n }\n)\n\nexport const mockAdapter = new AxiosMockAdapter(client, { delayResponse: 0 })\n","// import './articles/articles.mock'\n// import './tags/tags.mock'\n// import './user/user.mock'\n// import './analyses/analyses.mock'\n// import './languages/languages.mock'\nimport { mockAdapter, client } from './client'\n\nmockAdapter.onAny().passThrough()\n\nexport { client }\n","export enum BrowserType {\n Chrome = 'Chrome',\n Firefox = 'Firefox',\n Safari = 'Safari',\n Opera = 'Opera',\n Edge = 'Edge',\n Unknown = 'Unknown',\n}\n\nclass Browser {\n public readonly isStandalone: boolean\n\n public readonly browser: BrowserType\n\n public readonly isIOS: boolean\n\n public readonly isMobile: boolean\n\n public readonly whereIsShare: string\n\n public readonly showIOSSafariHow2: boolean\n\n public readonly isSupportingBrowser: boolean\n\n constructor() {\n const userAgent = navigator.userAgent.toLowerCase()\n if (userAgent.match(/chrome|chromium|crios/i)) {\n this.browser = BrowserType.Chrome\n } else if (userAgent.match(/firefox|fxios/i)) {\n this.browser = BrowserType.Firefox\n } else if (userAgent.match(/safari/i)) {\n this.browser = BrowserType.Safari\n } else if (userAgent.match(/opr\\//i)) {\n this.browser = BrowserType.Opera\n } else if (userAgent.match(/edg/i)) {\n this.browser = BrowserType.Edge\n } else {\n this.browser = BrowserType.Unknown\n }\n this.isStandalone = window.matchMedia('(display-mode: standalone)').matches\n this.isMobile = /mobile/.test(userAgent)\n this.whereIsShare = /ipad/.test(userAgent) ? 'tetején' : 'alján'\n this.isIOS =\n /ipad|iphone|ipod/.test(userAgent) ||\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document)\n this.showIOSSafariHow2 =\n this.browser === BrowserType.Safari && this.isIOS && !this.isStandalone\n this.isSupportingBrowser =\n window.hasOwnProperty('BeforeInstallPromptEvent') &&\n (this.showIOSSafariHow2 || this.browser === BrowserType.Chrome)\n }\n}\n\nexport default new Browser()\n","import { useCallback, useState } from 'react'\nimport _ from 'lodash'\n\nexport const useDebounce = (obj: any = null, wait: number = 1000) => {\n const [state, setState] = useState(obj)\n\n const setDebouncedState = (_val: any) => {\n debounce(_val)\n }\n\n const debounce = useCallback(\n _.debounce((_prop: string) => {\n setState(_prop)\n }, wait),\n []\n )\n\n return [state, setDebouncedState]\n}\n","export function capitalize(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase()\n}\n\nexport function isUndefiendOrNull(value: any): boolean {\n return value === undefined || value === null\n}\n\nexport function omitEmpty>(value: T): Partial {\n return Object.keys(value).reduce((object, key) => {\n if (isUndefiendOrNull(value[key])) return object\n return { ...object, [key]: value[key] }\n }, {})\n}\n\nexport const path = {\n join(parts: Array, separator: string = '/') {\n const start = new RegExp(`^(${separator})`)\n const end = new RegExp(`(${separator}$)`)\n return parts\n .map((part) => (part || '').replace(start, '').replace(end, ''))\n .join(separator)\n },\n}\n\nexport const now = (date = new Date()): Date => {\n const userTimezoneOffset = date.getTimezoneOffset() * 60000\n return new Date(date.getTime() - userTimezoneOffset)\n}\n\nexport function getDeviceId(): Promise {\n // Get the visitor identifier when you need it.\n return window.FingerprintJS.then((fp) => fp.get()).then((result) => {\n // This is the visitor identifier:\n const visitorId = result.visitorId\n return visitorId\n })\n}\n\nexport function isValidDate(d: any) {\n return !isNaN(d) && d instanceof Date\n}\n\nexport * from './debounce'\n","import {\n IUserQuery,\n ILoginMutation,\n ILogoutMutation,\n IUserUnreadMessagesQuery,\n IMarkAllReadMutation,\n IUserReadMessage,\n} from './user.types'\nimport { client } from '..'\nimport Browser from '../../constants/Browser'\nimport { deviceIdPath, deviceNamePath } from '../../constants/Config'\nimport { omitEmpty } from '../../utils'\n\nexport async function fetchProfile() {\n try {\n const deviceId = localStorage.getItem(deviceIdPath)\n const deviceName = localStorage.getItem(deviceNamePath)\n const response = await client.get('/api/profile', {\n params: omitEmpty({\n deviceId,\n deviceName,\n }),\n })\n\n return {\n ...response.data,\n deviceId,\n deviceName,\n PreferredTags: (response.data.PreferredTags || []).filter((t) => !!t),\n BookmarkedNews: (response.data.BookmarkedNews || []).filter((t) => !!t),\n BookmarkedAnalyses: (response.data.BookmarkedAnalyses || []).filter(\n (t) => !!t\n ),\n }\n } catch (error) {\n console.error(error)\n }\n}\n\nexport async function fetchProfileUnreadMessages() {\n try {\n const response = await client.get(\n '/api/profile/unread-messages'\n )\n return {\n ...response.data,\n unreadArticlesCount: response.data.unreadArticlesCount || 0,\n unreadAnalysesCount: response.data.unreadAnalysesCount || 0,\n unreadArticles: response.data.unreadArticles || [],\n unreadAnalyses: response.data.unreadAnalyses || [],\n }\n } catch (error) {\n console.error(error)\n }\n}\n\nexport async function updateReadMessages(\n contentIds: string[],\n params: IUserReadMessage\n) {\n try {\n await client.put('/api/profile/read-messages', {\n ...params,\n contentIds,\n })\n } catch (error) {\n console.error(error)\n }\n}\n\nexport async function markAllRead() {\n const response = await client.patch(\n '/api/profile/mark-all-read'\n )\n if (response.data?.Error) throw new Error(response.data.Error)\n if (response.data?.error) throw new Error(response.data.error)\n return response.data\n}\n\nexport interface ILoginParams {\n Email: string\n ActivationCode: string\n}\n\nexport async function login(params: ILoginParams) {\n const deviceId = localStorage.getItem(deviceIdPath)\n const deviceName = localStorage.getItem(deviceNamePath)\n const response = await client.post('/api/login', {\n username: params.Email,\n password: params.ActivationCode,\n isIOS: `${Browser.isIOS}`,\n deviceName,\n deviceId,\n })\n if (response.data?.Error) throw new Error(response.data.Error)\n if (response.data?.error) throw new Error(response.data.error)\n return response.data\n}\n\nexport async function refreshToken(refreshtoken: string) {\n const response = await client.post('/api/refreshtoken', {\n refreshtoken,\n })\n return response.data\n}\n\nexport async function logout() {\n const deviceId = localStorage.getItem(deviceIdPath)\n const response = await client.post('/api/logout', {\n deviceId,\n })\n if (response.data?.Error) throw new Error(response.data.Error)\n if (response.data?.error) throw new Error(response.data.error)\n return response.data\n}\n\nexport interface IUpdateProfileParams {\n PreferredTags?: Array\n PreferredLanguage?: string\n BookmarkedNews?: Array\n BookmarkedAnalyses?: Array\n}\n\nexport async function updateProfile(params: IUpdateProfileParams) {\n const deviceId = localStorage.getItem(deviceIdPath)\n const deviceName = localStorage.getItem(deviceNamePath)\n return client.put('/api/profile', {\n ...params,\n deviceId,\n deviceName,\n })\n}\n\nexport interface IUpdateSnoozeParams {\n SnoozeTime?: string\n}\n\nexport async function updateSnooze(params: IUpdateSnoozeParams) {\n try {\n await client.put('/api/snooze', params)\n } catch (error) {\n console.error(error)\n }\n}\n\nexport interface IUpdateUnsubscribeParams {\n DidUnsubscribe?: boolean\n}\n\nexport async function updateUnsubscribe(params: IUpdateUnsubscribeParams) {\n try {\n await client.post('/api/unsubscribe', params)\n } catch (error) {\n console.error(error)\n }\n}\n","import { Dispatch } from 'react'\nimport Toast from 'react-native-toast-message'\nimport { UserActions } from '.'\nimport { IUserReadMessage, IUserUnreadMessages } from '../../api/user'\nimport {\n fetchProfile,\n fetchProfileUnreadMessages,\n ILoginParams,\n login,\n logout,\n markAllRead,\n updateProfile,\n updateReadMessages,\n updateSnooze,\n updateUnsubscribe,\n} from '../../api/user/user.query'\n\nexport const useFetchProfile = (dispatch: Dispatch) => {\n return async () => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n const payload = await fetchProfile()\n if (!payload) throw Error('No payload for fetch profile')\n dispatch({ type: 'PROFILE_LOAD_SUCCESS', payload })\n\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error) {\n console.error(error)\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n\nexport const useFetchProfileUnreadMessages = (\n dispatch: Dispatch\n) => {\n return async () => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n const payload = await fetchProfileUnreadMessages()\n const newPayload: IUserUnreadMessages = {\n unreadArticlesCount: payload?.unreadArticlesCount || 0,\n unreadAnalysesCount: payload?.unreadAnalysesCount || 0,\n unreadArticles: payload?.unreadArticles.map((a) => a.toString()) || [],\n unreadAnalyses: payload?.unreadAnalyses.map((a) => a.toString()) || [],\n }\n if (!payload) throw Error('No payload for fetch profile unread messages')\n dispatch({\n type: 'PROFILE_UNREAD_MESSAGES_LOAD_SUCCESS',\n payload: newPayload,\n })\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error) {\n console.error(error)\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n\nexport const useSetReadMessages = (dispatch: Dispatch) => {\n return async (contentIds: string[], params: IUserReadMessage) => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n await updateReadMessages(contentIds, params)\n // if (!payload) throw Error(`No payload for put ${contentId} read message`)\n // dispatch({ type: 'UPDATE_READ_MESSAGE', payload })\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error) {\n console.error(error)\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n\nexport const useSetMarkAllRead = (dispatch: Dispatch) => {\n return async () => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n dispatch({ type: 'UPDATE_MARK_ALL_READ' })\n await markAllRead()\n await useFetchProfileUnreadMessages(dispatch)()\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error) {\n console.error(error)\n Toast.show({\n type: 'error',\n text1: 'Az értesítések olvasottnak jelölése sikertelen volt!',\n })\n dispatch({ type: 'SET_ERROR', payload: (error as any).message })\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n\nexport const useLogin = (dispatch: Dispatch) => {\n return async (params: ILoginParams) => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n dispatch({ type: 'SET_ERROR', payload: '' })\n const payload = await login(params)\n if (!payload) throw Error('No payload for login')\n dispatch({ type: 'SET_TOKEN', payload: payload.access_token })\n dispatch({ type: 'SET_REFRESH_TOKEN', payload: payload.refresh_token })\n await useFetchProfile(dispatch)()\n await useFetchProfileUnreadMessages(dispatch)()\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error: any) {\n console.error(error)\n dispatch({ type: 'SET_TOKEN' })\n dispatch({ type: 'SET_REFRESH_TOKEN' })\n dispatch({ type: 'SET_ERROR', payload: error.message })\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n\nexport const useLogout = (dispatch: Dispatch) => {\n return async () => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n dispatch({ type: 'SET_ERROR', payload: '' })\n const payload = await logout()\n if (!payload) throw Error('No payload for login')\n dispatch({ type: 'SET_TOKEN' })\n dispatch({ type: 'SET_REFRESH_TOKEN' })\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error: any) {\n console.error(error)\n Toast.show({\n type: 'error',\n text1: 'Sikertelen kijelentkezés!',\n })\n dispatch({ type: 'SET_ERROR', payload: error.message })\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n\nexport const useSetPreferredTags = (dispatch: Dispatch) => {\n return async (PreferredTags: Array) => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n await updateProfile({ PreferredTags })\n await useFetchProfile(dispatch)()\n dispatch({ type: 'UPDATE_PREFERRED_TAGS', payload: PreferredTags })\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error) {\n console.error(error)\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n\nexport const useSetPreferredLanguage = (dispatch: Dispatch) => {\n return async (PreferredLanguage: string) => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n dispatch({\n type: 'UPDATE_PREFERRED_LANGUAGE',\n payload: PreferredLanguage,\n })\n await updateProfile({ PreferredLanguage })\n await useFetchProfile(dispatch)()\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error) {\n console.error(error)\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n\nexport const useSetSnoozeTime = (dispatch: Dispatch) => {\n return async (SnoozeTime: string) => {\n try {\n await updateSnooze({ SnoozeTime })\n dispatch({\n type: 'UPDATE_SNOOZE_TIME',\n payload: SnoozeTime,\n })\n } catch (error) {\n console.error(error)\n }\n }\n}\n\nexport const useSetDidUnsubscribe = (dispatch: Dispatch) => {\n return async (DidUnsubscribe: boolean) => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n dispatch({\n type: 'UPDATE_DID_UNSUBSCRIBE',\n payload: DidUnsubscribe,\n })\n await updateUnsubscribe({ DidUnsubscribe })\n if (DidUnsubscribe) await useLogout(dispatch)()\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error) {\n console.error(error)\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n\nexport const useSetBookmarks = (dispatch: Dispatch) => {\n return async (\n BookmarkedNews: Array,\n BookmarkedAnalyses: Array\n ) => {\n try {\n dispatch({ type: 'PROFILE_SET_LOADING', payload: true })\n dispatch({ type: 'UPDATE_BOOKMARKS', payload: BookmarkedNews })\n dispatch({\n type: 'UPDATE_ANALYSES_BOOKMARKS',\n payload: BookmarkedAnalyses,\n })\n await updateProfile({ BookmarkedNews, BookmarkedAnalyses })\n await useFetchProfile(dispatch)()\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n } catch (error) {\n console.error(error)\n dispatch({ type: 'PROFILE_SET_LOADING', payload: false })\n }\n }\n}\n","import React, { useEffect, useReducer } from 'react'\nimport { IUserReadMessage } from '../api/user'\nimport { ILoginParams } from '../api/user/user.query'\nimport { authTokenPath } from '../constants/Config'\nimport { initialUserState, IUserState, userReducer } from '../state'\nimport {\n useLogin,\n useLogout,\n useSetPreferredTags,\n useSetBookmarks,\n useFetchProfile,\n useSetPreferredLanguage,\n useSetSnoozeTime,\n useSetDidUnsubscribe,\n useFetchProfileUnreadMessages,\n useSetReadMessages,\n useSetMarkAllRead,\n} from '../state/user/user.creators'\n\nexport interface IUserContext extends IUserState {\n login: (params: ILoginParams) => Promise\n logout: () => Promise\n fetchProfile: () => Promise\n setPreferredTags: (tags: Array) => Promise\n setPreferredLanguage: (prefLanguage: string) => Promise\n setSnoozeTime: (snoozeTime: string) => Promise\n setDidUnsubscribe: (didUnsubscribe: boolean) => Promise\n setBookmarks: (\n articleIDs: Array,\n analysesIDs: Array\n ) => Promise\n fetchProfileUnreadMessages: () => Promise\n setReadMessages: (\n contentIds: string[],\n params: IUserReadMessage\n ) => Promise\n setMarkAllRead: () => Promise\n}\n\nexport const UserContext = React.createContext({\n ...initialUserState,\n login: async () => {},\n logout: async () => {},\n fetchProfile: async () => {},\n setPreferredTags: async () => {},\n setPreferredLanguage: async () => {},\n setSnoozeTime: async () => {},\n setDidUnsubscribe: async () => {},\n setBookmarks: async () => {},\n fetchProfileUnreadMessages: async () => {},\n setReadMessages: async () => {},\n setMarkAllRead: async () => {},\n})\n\nexport interface IUserProviderProps {\n children?: JSX.Element\n}\n\nexport const UserProvider = (props: IUserProviderProps) => {\n const [data, dispatch] = useReducer(userReducer, initialUserState)\n const fetchProfile = useFetchProfile(dispatch)\n const fetchProfileUnreadMessages = useFetchProfileUnreadMessages(dispatch)\n const setReadMessages = useSetReadMessages(dispatch)\n const setMarkAllRead = useSetMarkAllRead(dispatch)\n const login = useLogin(dispatch)\n const logout = useLogout(dispatch)\n const setPreferredTags = useSetPreferredTags(dispatch)\n const setPreferredLanguage = useSetPreferredLanguage(dispatch)\n const setSnoozeTime = useSetSnoozeTime(dispatch)\n const setDidUnsubscribe = useSetDidUnsubscribe(dispatch)\n const setBookmarks = useSetBookmarks(dispatch)\n\n useEffect(() => {\n if (!localStorage.getItem(authTokenPath)) return\n fetchProfile()\n fetchProfileUnreadMessages()\n }, [])\n\n return (\n \n {props.children}\n \n )\n}\n\nexport const UserConsumer = UserContext.Consumer\n","import { omitEmpty } from '../../utils'\nimport { ITagsQuery } from './tags.types'\nimport { client } from '..'\n\nexport interface IFetchTagsParams {\n TagType: 'sentiment' | 'content' | 'source'\n}\n\nexport async function fetchTags(params: IFetchTagsParams) {\n const { TagType } = params\n const response = await client.get('/api/tags', {\n params: omitEmpty({ TagType }),\n })\n return response.data\n}\n","import { Dispatch } from 'react'\nimport { TagsActions } from '.'\nimport { ITag } from '../../api/tags'\nimport { fetchTags, IFetchTagsParams } from '../../api/tags/tags.query'\nexport const useFetchTags = (dispatch: Dispatch) => {\n return async (params: IFetchTagsParams) => {\n try {\n dispatch({ type: 'TAGS_SET_LOADING', payload: true })\n const tagSet = new Set()\n const response = await fetchTags(params)\n if (!response) throw Error('No payload for fetch tags')\n for (let tag of response) {\n if (tag.Value) {\n tagSet.add(tag.Value)\n }\n }\n const payload = [...tagSet.values()].map(\n (value) => response.find((tag) => tag.Value === value) as ITag\n )\n dispatch({ type: 'TAGS_LOAD_SUCCESS', payload })\n dispatch({ type: 'TAGS_SET_LOADING', payload: false })\n } catch (error) {\n console.error(error)\n dispatch({ type: 'TAGS_SET_LOADING', payload: false })\n }\n }\n}\n","import React, { useEffect, useReducer } from 'react'\nimport { initialTagsState, ITagsState, tagReducer } from '../state'\nimport { useFetchTags } from '../state/tags/tags.creators'\n\nexport const ContentTagsContext =\n React.createContext(initialTagsState)\n\nexport interface IContentTagsProps {\n children?: JSX.Element\n token?: string\n}\n\nexport const ContentTagsProvider = (props: IContentTagsProps) => {\n const { token } = props\n const [data, dispatch] = useReducer(tagReducer, initialTagsState)\n const fetchTags = useFetchTags(dispatch)\n useEffect(() => {\n if (!token) return\n fetchTags({ TagType: 'content' })\n }, [token])\n\n return (\n \n {props.children}\n \n )\n}\n\nexport const ContentTagsConsumer = ContentTagsContext.Consumer\n","import React, { useContext, useEffect, useReducer } from 'react'\nimport { initialTagsState, tagReducer } from '../state'\nimport { ITag } from '../api/tags'\nimport { useFetchTags } from '../state/tags/tags.creators'\nimport { UserContext } from './user.context'\n\nconst SourceTagsContext = React.createContext>([])\n\nexport interface ISourceTagsProps {\n children?: JSX.Element\n token?: string\n}\n\nexport const SourceTagsProvider = (props: ISourceTagsProps) => {\n const { token } = props\n const [data, dispatch] = useReducer(tagReducer, initialTagsState)\n const fetchTags = useFetchTags(dispatch)\n const { user } = useContext(UserContext)\n\n useEffect(() => {\n if (!token) return\n fetchTags({ TagType: 'source' })\n }, [token, user.PreferredTags.join(',')])\n\n return (\n \n {props.children}\n \n )\n}\n\nexport const SourceTagsConsumer = SourceTagsContext.Consumer\n","import React, { useEffect, useReducer } from 'react'\nimport { initialTagsState, tagReducer } from '../state'\nimport { ITag } from '../api/tags'\nimport { useFetchTags } from '../state/tags/tags.creators'\n\nconst SentimentTagsContext = React.createContext>([])\n\nexport interface ISentimentTagsProps {\n children?: JSX.Element\n token?: string\n}\n\nexport const SentimentTagsProvider = (props: ISentimentTagsProps) => {\n const { token } = props\n const [data, dispatch] = useReducer(tagReducer, initialTagsState)\n const fetchTags = useFetchTags(dispatch)\n useEffect(() => {\n if (!token) return\n fetchTags({ TagType: 'sentiment' })\n }, [token])\n\n return (\n \n {props.children}\n \n )\n}\n\nexport const SentimentTagsConsumer = SentimentTagsContext.Consumer\n","import { omitEmpty } from '../../utils'\nimport { IArticleQuery } from './articles.types'\nimport { deviceIdPath, deviceNamePath } from '../../constants/Config'\nimport { client } from '..'\nimport { AxiosResponse } from 'axios'\n\nexport interface IFetchArticlesParams {\n Offset: number\n Limit: number\n ContentTag?: string\n SourceTag?: string\n SearchText?: string\n CreatedBefore?: string\n ArticleIds?: Array\n}\n\nexport async function fetchArticles(params: IFetchArticlesParams) {\n const {\n Offset,\n Limit,\n ContentTag,\n SourceTag,\n SearchText,\n CreatedBefore,\n ArticleIds,\n } = params\n try {\n const deviceId = localStorage.getItem(deviceIdPath)\n const deviceName = localStorage.getItem(deviceNamePath)\n const response = await client.get('/api/articles', {\n params: omitEmpty({\n Offset,\n Limit,\n ContentTag,\n SourceTag,\n SearchText,\n CreatedBefore,\n ArticleIds,\n deviceId,\n deviceName,\n }),\n })\n return response.data\n } catch (error) {\n console.error(error)\n }\n}\n\nexport interface IFetchTranslationParams {\n LanguageCode: string\n ContentId: string\n}\n\nexport interface IFetchArticlesResponse {\n Title: string\n}\n\nexport async function fetchTranslation(params: IFetchTranslationParams) {\n const response = await client.get<\n IFetchArticlesParams,\n AxiosResponse\n >('/api/articles/translated-titles', {\n params: omitEmpty(params),\n })\n return response.data\n}\n","import React, { FC, useContext, useEffect, useReducer, useState } from 'react'\nimport {\n initialArticleState,\n IArticlesState,\n articleReducer,\n} from '../state/articles'\nimport {\n useFetchArticles,\n useRefreshArticles,\n} from '../state/articles/articles.creators'\nimport { UserContext } from './user.context'\n\ninterface ArticlesContextProps extends IArticlesState {\n refresh: () => void\n setCount: (count: number) => void\n setIsRefreshable: (isRefreshable: boolean) => void\n}\nconst initialState = {\n ...initialArticleState,\n refresh: () => {},\n setCount: () => {},\n setIsRefreshable: () => {},\n}\n\nexport const ArticlesContext =\n React.createContext(initialState)\n\nexport interface IArticlesProviderProps {\n ContentTag?: string\n SourceTag?: string\n SearchText?: string\n CreatedBefore?: string\n ArticleIds?: Array\n}\n\nexport const ArticlesProvider: FC = (props) => {\n const Limit = 10\n const { user } = useContext(UserContext)\n const [Offset, setOffset] = useState(0)\n const [isRefreshable, setIsRefreshable] = useState(true)\n const { SourceTag, ContentTag, SearchText, ArticleIds, CreatedBefore } = props\n const [data, dispatch] = useReducer(articleReducer, initialArticleState)\n const fetchArticles = useFetchArticles(dispatch)\n const refreshArticles = useRefreshArticles(dispatch)\n const setCount = (count: number) => {\n setOffset(count)\n }\n const refresh = async () => {\n if (!CreatedBefore) return\n if (!isRefreshable) return\n setCount(0)\n await refreshArticles({\n Offset: 0,\n Limit,\n SourceTag,\n ContentTag,\n SearchText,\n CreatedBefore,\n ArticleIds,\n })\n }\n const refresh2 = async () => {\n if (!CreatedBefore) return\n setCount(0)\n await refreshArticles({\n Offset: 0,\n Limit,\n SourceTag,\n ContentTag,\n SearchText,\n CreatedBefore,\n ArticleIds,\n })\n }\n\n useEffect(() => {\n if (Offset === 0) return\n fetchArticles({\n Offset,\n Limit,\n SourceTag,\n ContentTag,\n SearchText,\n CreatedBefore,\n ArticleIds,\n })\n }, [Offset, Limit])\n\n useEffect(() => {\n refresh()\n }, [SourceTag, SearchText, ArticleIds, CreatedBefore])\n\n useEffect(() => {\n refresh2()\n }, [user.PreferredLanguage])\n\n return (\n \n {props.children}\n \n )\n}\n\nexport const ArticlesConsumer = ArticlesContext.Consumer\n","import { Dispatch } from 'react'\nimport { ArticleActions } from './articles.actions'\nimport {\n fetchArticles,\n IFetchArticlesParams,\n} from '../../api/articles/articles.query'\n\nexport const useFetchArticles = (dispatch: Dispatch) => {\n return async (params: IFetchArticlesParams) => {\n dispatch({ type: 'ARTICLES_SET_LOADING', payload: true })\n try {\n const payload = await fetchArticles(params)\n if (!payload) throw Error('No payload for fetch articles')\n dispatch({ type: 'ARTICLES_LOAD_SUCCESS', payload })\n } catch (error) {\n dispatch({ type: 'ARTICLES_LOAD_ERROR', error: error as Error })\n }\n dispatch({ type: 'ARTICLES_SET_LOADING', payload: false })\n }\n}\n\nexport const useRefreshArticles = (dispatch: Dispatch) => {\n return async (params: IFetchArticlesParams) => {\n dispatch({ type: 'ARTICLES_SET_LOADING', payload: true })\n try {\n const payload = await fetchArticles(params)\n if (!payload) throw Error('No payload for fetch articles')\n dispatch({ type: 'ARTICLES_REFRESH_SUCCESS', payload })\n } catch (error) {\n dispatch({ type: 'ARTICLES_REFRESH_ERROR', error: error as Error })\n }\n dispatch({ type: 'ARTICLES_SET_LOADING', payload: false })\n }\n}\n","import { omitEmpty } from '../../utils'\nimport { IAnalysisMessageMutation, IAnalysesQuery } from './analyses.types'\nimport { client } from '..'\nimport { ITagsQuery } from '../tags/tags.types'\n\nexport interface IFetchAnalysesParams {\n Offset: number\n Limit: number\n ContentTag?: string\n SearchText?: string\n CreatedBefore?: string\n AnalysesIds?: Array\n}\n\nexport async function fetchAnalyses(params: IFetchAnalysesParams) {\n const { Offset, Limit, ContentTag, SearchText, CreatedBefore, AnalysesIds } =\n params\n try {\n const response = await client.get('/api/analyses', {\n params: omitEmpty({\n Offset,\n Limit,\n ContentTag,\n SearchText,\n CreatedBefore,\n AnalysesIds,\n }),\n })\n return response.data\n } catch (error) {\n console.error(error)\n }\n}\n\nexport interface IAnalysisMessageParams {\n AnalysisId: string\n Message: string\n}\n\nexport async function message(params: IAnalysisMessageParams) {\n const response = await client.post(\n '/api/sendquestion',\n {\n AnalysisId: params.AnalysisId,\n Message: params.Message,\n }\n )\n if (response.data?.Error) throw new Error(response.data.Error)\n if (response.data?.error) throw new Error(response.data.error)\n\n return response.data\n}\n","import React, { FC, useEffect, useReducer, useState } from 'react'\nimport { IAnalysisMessageParams } from '../api/analyses/analyses.query'\nimport {\n initialAnalysesState,\n IAnalysesState,\n analysesReducer,\n} from '../state/analyses'\nimport {\n useFetchAnalyses,\n useRefreshAnalyses,\n useMessage,\n} from '../state/analyses/analyses.creators'\n\ninterface AnalysesContextProps extends IAnalysesState {\n refresh: () => void\n setCount: (count: number) => void\n setIsRefreshable: (isRefreshable: boolean) => void\n message: (params: IAnalysisMessageParams) => Promise\n}\n\nconst initialState = {\n ...initialAnalysesState,\n refresh: () => {},\n setCount: () => {},\n setIsRefreshable: () => {},\n message: async () => {},\n}\n\nconst AnalysesContext = React.createContext(initialState)\n\nexport interface IAnalysesProviderProps {\n ContentTag?: string\n SearchText?: string\n CreatedBefore?: string\n AnalysesIds?: Array\n}\n\nexport const AnalysesProvider: FC = (props) => {\n const Limit = 10\n const [Offset, setOffset] = useState(0)\n const [isRefreshable, setIsRefreshable] = useState(true)\n const { ContentTag, SearchText, AnalysesIds, CreatedBefore } = props\n const [data, dispatch] = useReducer(analysesReducer, initialAnalysesState)\n const fetchAnalyses = useFetchAnalyses(dispatch)\n const refreshAnalyses = useRefreshAnalyses(dispatch)\n const message = useMessage(dispatch)\n const setCount = (count: number) => {\n setOffset(count)\n }\n const refresh = async () => {\n if (!CreatedBefore) return\n if (!isRefreshable) return\n setCount(0)\n await refreshAnalyses({\n Offset: 0,\n Limit,\n ContentTag,\n SearchText,\n CreatedBefore,\n AnalysesIds,\n })\n }\n\n useEffect(() => {\n if (Offset === 0) return\n fetchAnalyses({\n Offset,\n Limit,\n ContentTag,\n SearchText,\n CreatedBefore,\n AnalysesIds,\n })\n }, [Offset, Limit])\n\n useEffect(() => {\n refresh()\n }, [SearchText, AnalysesIds, CreatedBefore])\n\n return (\n \n {props.children}\n \n )\n}\n\nexport const AnalysesConsumer = AnalysesContext.Consumer\n","import { Dispatch } from 'react'\nimport { AnalysesActions } from './analyses.actions'\nimport {\n fetchAnalyses,\n IAnalysisMessageParams,\n IFetchAnalysesParams,\n message,\n} from '../../api/analyses/analyses.query'\nimport { ITag } from '../../api/tags'\n\nexport const useFetchAnalyses = (dispatch: Dispatch) => {\n return async (params: IFetchAnalysesParams) => {\n dispatch({ type: 'ANALYSES_SET_LOADING', payload: true })\n try {\n const payload = await fetchAnalyses(params)\n if (!payload) throw Error('No payload for fetch analyses')\n dispatch({ type: 'ANALYSES_LOAD_SUCCESS', payload })\n } catch (error) {\n dispatch({ type: 'ANALYSES_LOAD_ERROR', error: error as Error })\n }\n dispatch({ type: 'ANALYSES_SET_LOADING', payload: false })\n }\n}\n\nexport const useRefreshAnalyses = (dispatch: Dispatch) => {\n return async (params: IFetchAnalysesParams) => {\n dispatch({ type: 'ANALYSES_SET_LOADING', payload: true })\n try {\n const payload = await fetchAnalyses(params)\n if (!payload) throw Error('No payload for fetch analyses')\n dispatch({ type: 'ANALYSES_REFRESH_SUCCESS', payload })\n } catch (error) {\n dispatch({ type: 'ANALYSES_REFRESH_ERROR', error: error as Error })\n }\n dispatch({ type: 'ANALYSES_SET_LOADING', payload: false })\n }\n}\n\nexport const useMessage = (dispatch: Dispatch) => {\n return async (params: IAnalysisMessageParams) => {\n try {\n dispatch({ type: 'ANALYSES_SET_ERROR', payload: Error('') })\n await message(params)\n } catch (error: any) {\n console.error(error)\n dispatch({ type: 'ANALYSES_SET_ERROR', payload: error.message })\n }\n }\n}\n","import React, { FC } from 'react'\n\nconst FiltersContext = React.createContext({})\n\nexport interface IFilters {\n SourceTag?: string\n ContentTag?: string\n}\n\nexport interface IFiltersProps extends IFilters {\n children?: JSX.Element\n}\n\nexport const FiltersProvider: FC = (props) => {\n const { SourceTag, ContentTag } = props\n return (\n \n {props.children}\n \n )\n}\n\nexport const FiltersConsumer = FiltersContext.Consumer\n","import React, { createRef, FC, useState } from 'react'\nimport {\n Image,\n Keyboard,\n KeyboardAvoidingView,\n ScrollView,\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n} from 'react-native'\nimport { Spinner } from '../components/Spinner'\nimport Colors from '../constants/Colors'\nimport { UserConsumer } from '../context'\nimport { RootStackScreenProps } from '../types'\nimport { isMirror } from '../constants/Config'\nimport originalSrc from '../variants/original/logo.png'\nimport mirrorSrcfrom from '../variants/mirror/logo.png'\n\nconst imgSrc = isMirror ? mirrorSrcfrom : originalSrc\n\nexport const LoginScreen: FC> = () => {\n const passwordInputRef = createRef()\n const [formState, setFormState] = useState({\n Email: '',\n ActivationCode: '',\n error: '',\n })\n const [onFocusEmail, setOnFocusEmail] = useState(false)\n const [onFocusActivationCode, setOnFocusActivationCode] = useState(false)\n\n return (\n \n {({ login, error, isLoading }) => (\n <>\n \n \n \n \n \n \n \n \n \n \n setFormState({\n ...formState,\n Email,\n })\n }\n placeholder=\"Email cím\"\n placeholderTextColor={Colors.oxfordBlue + 85}\n autoCapitalize=\"none\"\n textContentType=\"emailAddress\"\n keyboardType=\"email-address\"\n returnKeyType=\"next\"\n underlineColorAndroid=\"transparent\"\n onSubmitEditing={() =>\n passwordInputRef.current &&\n passwordInputRef.current.focus()\n }\n blurOnSubmit={false}\n onFocus={() => {\n setOnFocusEmail(true)\n }}\n onBlur={() => {\n setOnFocusEmail(false)\n }}\n />\n \n \n \n setFormState({\n ...formState,\n ActivationCode,\n })\n }\n placeholder=\"Aktivációs kód\"\n placeholderTextColor={Colors.oxfordBlue + 85}\n keyboardType=\"default\"\n ref={passwordInputRef}\n onSubmitEditing={Keyboard.dismiss}\n onFocus={() => {\n setOnFocusActivationCode(true)\n }}\n onBlur={() => {\n setOnFocusActivationCode(false)\n }}\n blurOnSubmit={false}\n secureTextEntry={false}\n underlineColorAndroid=\"transparent\"\n returnKeyType=\"next\"\n />\n \n\n {(formState.error || error) && (\n \n {formState.error || error}\n \n )}\n\n {\n const { Email, ActivationCode } = formState\n login({ Email, ActivationCode })\n }}\n >\n Aktiválás\n \n \n \n \n \n \n )}\n \n )\n}\n\nconst styles = StyleSheet.create({\n mainBody: {\n flex: 1,\n justifyContent: 'center',\n alignContent: 'center',\n backgroundColor: Colors.white,\n },\n sectionStyle: {\n flexDirection: 'row',\n alignSelf: 'center',\n width: '80vw',\n margin: 13,\n },\n buttonStyle: {\n width: 170,\n alignSelf: 'center',\n backgroundColor: Colors.oxfordBlue,\n height: 40,\n alignItems: 'center',\n borderRadius: 30,\n marginTop: 20,\n marginBottom: 25,\n },\n buttonTextStyle: {\n color: Colors.orangeWeb,\n fontFamily: 'Roboto_500Medium',\n paddingVertical: 10,\n fontSize: 16,\n },\n inputStyle: {\n flex: 1,\n height: 33,\n color: Colors.oxfordBlue,\n paddingLeft: 15,\n paddingRight: 15,\n borderRadius: 100,\n outlineStyle: 'none',\n },\n registerTextStyle: {\n color: '#FFFFFF',\n textAlign: 'center',\n fontWeight: 'bold',\n fontSize: 14,\n alignSelf: 'center',\n padding: 10,\n },\n errorTextStyle: {\n color: 'red',\n textAlign: 'center',\n fontSize: 14,\n width: '80vw',\n alignSelf: 'center',\n marginHorizontal: 13,\n },\n onFocus: { borderWidth: 2, borderColor: Colors.oxfordBlue },\n onBlur: { borderWidth: 1, borderColor: Colors.oxfordBlue },\n imageWrapper: { alignSelf: 'center', marginBottom: 75 },\n image: {\n height: '35vw',\n width: '35vw',\n },\n})\n","import React, { useEffect, useRef, useState, FunctionComponent } from 'react'\nimport {\n Text,\n StyleSheet,\n Pressable,\n ScrollView,\n View,\n Dimensions,\n} from 'react-native'\nimport Colors from '../constants/Colors'\n\nexport interface ITopTabNavigationBarProps {\n state: any\n descriptors: any\n navigation: any\n}\n\nconst styles = StyleSheet.create({\n text: {\n width: 'max-content',\n alignSelf: 'center',\n position: 'relative',\n fontSize: 15,\n fontDisplay: 'block',\n marginVertical: 15,\n },\n pressable: { justifyContent: 'center' },\n hidden: {\n height: 0,\n maxHeight: 0,\n backgroundColor: Colors.white,\n },\n block: {\n height: 50,\n maxHeight: 50,\n backgroundColor: Colors.white,\n },\n})\n\nexport const TopTabNavigationBar: FunctionComponent<\n ITopTabNavigationBarProps\n> = (props) => {\n const { state, descriptors, navigation } = props\n const scrollView = useRef(null)\n const widthRefFirst = useRef(null)\n const widthRefLast = useRef(null)\n const [navPosition, setNavPosition] = useState(0)\n const [isFocused, setIsFocused] = useState(0)\n let scrollPosition = 0\n\n useEffect(() => {\n scrollView.current?.scrollTo({ x: navPosition })\n }, [navPosition])\n\n useEffect(() => {\n if (scrollView.current && isFocused !== state.index) {\n const parent = (scrollView.current as any).childNodes[0]\n const child = parent.children[state.index]\n const parentRect = parent.getBoundingClientRect()\n const childRect = child.getBoundingClientRect()\n const screenWidth = Dimensions.get('window').width\n const navPosition =\n childRect.left - parentRect.left - screenWidth / 2 + childRect.width / 2\n setNavPosition(navPosition)\n setIsFocused(state.index)\n }\n }, [state.index])\n\n return (\n \n {\n scrollPosition = event.nativeEvent.contentOffset.x\n }}\n scrollEventThrottle={0}\n removeClippedSubviews\n >\n {state.routes.map(\n (route: { key: string | number; name: any }, index: any) => {\n const { options } = descriptors[route.key]\n const label =\n options.tabBarLabel !== undefined\n ? options.tabBarLabel\n : options.title !== undefined\n ? options.title\n : route.name\n\n const isFocused = state.index === index\n\n const onPress = (event: any) => {\n const navigationEvent = navigation.emit({\n type: 'tabPress',\n target: route.key,\n canPreventDefault: true,\n })\n const { x, width } = event.target.getBoundingClientRect()\n const screenWidth = Dimensions.get('window').width\n\n setNavPosition(\n scrollPosition - (screenWidth / 2 - (x + width / 2))\n )\n setIsFocused(index)\n if (!isFocused && !navigationEvent.defaultPrevented) {\n navigation.navigate({ name: route.name, merge: true })\n }\n }\n\n return (\n \n \n {label.toUpperCase()}\n \n \n )\n }\n )}\n \n \n )\n}\n","import React, { FC } from 'react'\nimport { ContentTagsConsumer, UserConsumer } from '.'\nimport { ITag } from '../api/tags'\n\nexport const PreferredTagsContext = React.createContext>([])\n\nexport interface IPreferredTagsProps {\n children?: JSX.Element\n}\n\nexport const PreferredTagsProvider: FC = (props) => {\n return (\n \n {({ user }) => (\n \n {({ tags }) => (\n \n user.PreferredTags.includes(tag.Value)\n )}\n >\n {props.children}\n \n )}\n \n )}\n \n )\n}\n\nexport const PreferredTagsConsumer = PreferredTagsContext.Consumer\n","import React, { createContext, FC } from 'react'\n\nexport interface ScrollToTopContextProps {\n ScrollToTop: boolean\n}\n\nconst initialState = {\n ScrollToTop: false,\n}\n\nexport const ScrollToTopContext =\n createContext(initialState)\n\nexport interface IScrollToTopProviderProps {\n ScrollToTop: boolean\n}\n\nexport const ScrollToTopProvider: FC = ({\n ScrollToTop,\n children,\n}) => {\n return (\n \n {children}\n \n )\n}\n\nexport const ScrollToTopConsumer = ScrollToTopContext.Consumer\n","import React, { FunctionComponent, useContext, useEffect } from 'react'\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs'\nimport Colors from '../constants/Colors'\nimport { ArticleTabParamList, ArticleTabParamProps } from '../types'\nimport { FiltersProvider } from '../context'\nimport { TopTabNavigationBar } from '../components/TopTabNavigationBar'\nimport { PreferredTagsConsumer } from '../context/preferred-tags.context'\nimport { MaterialTopTabBarProps } from '@react-navigation/material-top-tabs/lib/typescript/src/types'\nimport { ScrollToTopProvider } from '../context/scroll-to-top.context'\n\nconst TopTab = createMaterialTopTabNavigator()\n\nexport const TopTabNavigator: FunctionComponent<\n ArticleTabParamProps<'ArticleList'>\n> = ({ route, children }) => {\n const { SourceTag, ScrollToTop } = route.params\n\n return (\n \n \n \n {(tags) => {\n const filteredTags = tags.filter((tag) => tag.HasArticles)\n return (\n }\n screenOptions={{\n tabBarActiveTintColor: Colors.oxfordBlue,\n tabBarScrollEnabled: true,\n }}\n >\n \n {() => (\n \n {children as any}\n \n )}\n \n {filteredTags.map((tag) => (\n \n {() => (\n \n {children as any}\n \n )}\n \n ))}\n \n )\n }}\n \n \n \n )\n}\n","import React from 'react'\nimport { StyleProp, View, ViewStyle } from 'react-native'\nimport { Svg, Path, G } from 'react-native-svg'\n\n/**\n * Based on the solution found at\n * https://github.com/bartgryszko/react-native-circular-progress\n */\n\nexport interface ICircularProgressComponentRequiredProps {\n size: number\n fill: number\n width: number\n}\n\nexport interface ICircularProgressComponentOptionalProps {\n style?: StyleProp\n backgroundWidth?: number\n tintColor?: string\n tintTransparency?: boolean\n backgroundColor?: string\n rotation?: number\n lineCap?: string\n fillLineCap?: string\n arcSweepAngle?: number\n childrenContainerStyle?: object\n padding?: number\n renderCap?: (coords: { center: { x: number; y: number } }) => void\n dashedBackground?: { width: number; gap: number }\n dashedTint?: { width: number; gap: number }\n}\n\nexport class CircularProgressComponent extends React.PureComponent<\n ICircularProgressComponentRequiredProps &\n Partial\n> {\n polarToCartesian(\n centerX: number,\n centerY: number,\n radius: number,\n angleInDegrees: number\n ) {\n var angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians),\n }\n }\n\n circlePath(\n x: number,\n y: number,\n radius: number,\n startAngle: number,\n endAngle: number\n ) {\n var start = this.polarToCartesian(x, y, radius, endAngle * 0.9999)\n var end = this.polarToCartesian(x, y, radius, startAngle)\n var largeArcFlag = endAngle - startAngle <= 180 ? '0' : '1'\n var d = [\n 'M',\n start.x,\n start.y,\n 'A',\n radius,\n radius,\n 0,\n largeArcFlag,\n 0,\n end.x,\n end.y,\n ]\n return d.join(' ')\n }\n\n clampFill = (fill: number) => Math.min(100, Math.max(0, fill))\n\n render() {\n const {\n size,\n width,\n backgroundWidth,\n tintColor = 'black',\n tintTransparency = true,\n backgroundColor,\n style,\n rotation = 90,\n lineCap = 'butt',\n fillLineCap = lineCap,\n arcSweepAngle = 360,\n fill,\n children,\n childrenContainerStyle,\n padding = 0,\n renderCap,\n dashedBackground = { width: 0, gap: 0 },\n dashedTint = { width: 0, gap: 0 },\n } = this.props\n\n const maxWidthCircle = backgroundWidth\n ? Math.max(width, backgroundWidth)\n : width\n const sizeWithPadding = (size as number) / 2 + padding / 2\n const radius = (size as number) / 2 - maxWidthCircle / 2 - padding / 2\n\n const currentFillAngle = (arcSweepAngle * this.clampFill(fill)) / 100\n const backgroundPath = this.circlePath(\n sizeWithPadding,\n sizeWithPadding,\n radius,\n tintTransparency ? 0 : currentFillAngle,\n arcSweepAngle\n )\n const circlePath = this.circlePath(\n sizeWithPadding,\n sizeWithPadding,\n radius,\n 0,\n currentFillAngle\n )\n const coordinate = this.polarToCartesian(\n sizeWithPadding,\n sizeWithPadding,\n radius,\n currentFillAngle\n )\n const cap = this.props.renderCap\n ? this.props.renderCap({ center: coordinate })\n : null\n\n const offset = (size as number) - maxWidthCircle * 2\n\n const localChildrenContainerStyle = {\n ...{\n position: 'absolute',\n left: maxWidthCircle + padding / 2,\n top: maxWidthCircle + padding / 2,\n width: offset,\n height: offset,\n borderRadius: offset / 2,\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n ...childrenContainerStyle,\n }\n\n const strokeDasharrayTint =\n dashedTint.gap > 0\n ? Object.values(dashedTint).map((value) => parseInt(value as any))\n : null\n\n const strokeDasharrayBackground =\n dashedBackground.gap > 0\n ? Object.values(dashedBackground).map((value) => parseInt(value as any))\n : null\n\n return (\n \n \n \n {backgroundColor && (\n \n )}\n {fill > 0 && (\n \n )}\n {cap}\n \n \n {children && (\n \n {(children as any)(fill)}\n \n )}\n \n )\n }\n}\n","import React from 'react'\nimport { Animated, Easing } from 'react-native'\nimport {\n CircularProgressComponent,\n ICircularProgressComponentRequiredProps,\n ICircularProgressComponentOptionalProps,\n} from './CircularProgressComponent'\n\nconst AnimatedProgress = Animated.createAnimatedComponent(\n CircularProgressComponent\n)\n\nexport interface IAnimatedCircularProgressComponentRequiredProps\n extends ICircularProgressComponentRequiredProps {}\n\nexport interface IAnimatedCircularProgressComponentOptionalProps\n extends ICircularProgressComponentOptionalProps {\n prefill?: number\n duration?: number\n easing?: (value: number) => number\n onAnimationComplete?: () => void\n useNativeDriver?: boolean\n delay?: number\n tintColorSecondary?: string\n}\n\nexport interface IAnimatedCircularProgressComponentState {\n fillAnimation: Animated.Value\n}\n\nexport class AnimatedCircularProgressComponent extends React.PureComponent<\n Partial &\n IAnimatedCircularProgressComponentRequiredProps,\n IAnimatedCircularProgressComponentState\n> {\n constructor(props: any) {\n super(props)\n const { prefill = 0 } = props\n this.state = {\n fillAnimation: new Animated.Value(prefill),\n }\n if (props.onFillChange) {\n this.state.fillAnimation.addListener(({ value }) =>\n props.onFillChange(value)\n )\n }\n }\n\n componentDidMount() {\n this.animate()\n }\n\n componentDidUpdate(prevProps: any) {\n if (prevProps.fill !== this.props.fill) {\n this.animate()\n }\n }\n\n reAnimate(\n prefill: number,\n toVal: number,\n dur: number,\n ease: (value: number) => number\n ) {\n this.setState(\n {\n fillAnimation: new Animated.Value(prefill),\n },\n () => this.animate(toVal, dur, ease)\n )\n }\n\n animate(\n toVal: number = this.props.fill,\n dur?: number,\n ease?: (value: number) => number\n ) {\n const toValue = toVal >= 0 ? toVal : this.props.fill\n const duration = dur || this.props.duration\n const easing = ease || this.props.easing || Easing.out(Easing.ease)\n const useNativeDriver = this.props.useNativeDriver || false\n const delay = this.props.delay\n\n const anim = Animated.timing(this.state.fillAnimation, {\n useNativeDriver,\n toValue,\n easing,\n duration,\n delay,\n })\n anim.start(this.props.onAnimationComplete)\n\n return anim\n }\n\n animateColor() {\n const { tintColor = 'black', tintColorSecondary } = this.props\n if (!tintColorSecondary) {\n return tintColor\n }\n\n const tintAnimation = this.state.fillAnimation.interpolate({\n inputRange: [0, 100],\n outputRange: [tintColor, tintColorSecondary],\n })\n\n return tintAnimation\n }\n\n render() {\n const { fill, prefill, ...other } = this.props\n\n return (\n \n )\n }\n}\n","import React, { useRef, useEffect, useCallback, useMemo, FC } from 'react'\nimport {\n View,\n Text,\n PanResponder,\n Animated,\n ActivityIndicator,\n findNodeHandle,\n} from 'react-native'\nimport { AnimatedCircularProgressComponent } from './AnimatedCircularProgressComponent'\n\nexport interface IRefreshControlProps {\n colors?: Array\n enabled?: boolean\n onRefresh?: CallableFunction\n progressBackgroundColor?: string\n progressViewOffset?: number\n refreshing: boolean\n size?: 'small' | 'large'\n tintColor?: any\n title?: string\n titleColor?: any\n style?: any\n children?: any\n}\n\nexport const RefreshControl: FC = ({\n refreshing,\n tintColor,\n colors,\n style,\n progressViewOffset,\n children,\n size,\n title,\n titleColor,\n onRefresh,\n enabled,\n}) => {\n const onRefreshRef = useRef(onRefresh)\n useEffect(() => {\n onRefreshRef.current = onRefresh\n }, [onRefresh])\n const enabledRef = useRef(enabled)\n useEffect(() => {\n enabledRef.current = enabled\n }, [enabled])\n\n const containerRef = useRef()\n const pullPosReachedState = useRef(0)\n const pullPosReachedAnimated = useRef(new Animated.Value(0))\n const pullDownSwipeMargin = useRef(new Animated.Value(0))\n\n useEffect(() => {\n Animated.timing(pullDownSwipeMargin.current, {\n toValue: refreshing ? 100 : 0,\n duration: 350,\n useNativeDriver: false,\n }).start()\n if (refreshing) {\n pullPosReachedState.current = 0\n pullPosReachedAnimated.current.setValue(0)\n }\n }, [refreshing])\n\n const onPanResponderFinish = useCallback(() => {\n if (pullPosReachedState.current && onRefreshRef.current) {\n onRefreshRef.current()\n }\n if (!pullPosReachedState.current) {\n Animated.timing(pullDownSwipeMargin.current, {\n toValue: 0,\n duration: 350,\n useNativeDriver: false,\n }).start()\n }\n }, [])\n\n const panResponder = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: () => {\n if (!containerRef.current) return false\n const containerDOM = findNodeHandle(containerRef.current) as any\n if (!containerDOM) return false\n return containerDOM.children[0].scrollTop === 0\n },\n onMoveShouldSetPanResponderCapture: () => false,\n onPanResponderMove: (_, gestureState) => {\n if (enabledRef.current !== undefined && !enabledRef.current) return\n\n const adjustedDy =\n gestureState.dy <= 0\n ? 0\n : (gestureState.dy * 150) / (gestureState.dy + 120) // Diminishing returns function\n pullDownSwipeMargin.current.setValue(adjustedDy)\n const newValue = Math.min(adjustedDy, 100) / 100\n if (newValue !== pullPosReachedState.current) {\n pullPosReachedState.current = Math.floor(newValue)\n Animated.timing(pullPosReachedAnimated.current, {\n toValue: newValue,\n duration: 15,\n useNativeDriver: false,\n }).start()\n }\n },\n onPanResponderTerminationRequest: () => true,\n onPanResponderRelease: onPanResponderFinish,\n onPanResponderTerminate: onPanResponderFinish,\n })\n )\n\n const refreshIndicatorColor = useMemo(\n () => (tintColor ? tintColor : colors && colors.length ? colors[0] : null),\n [colors, tintColor]\n )\n const fill = useMemo(\n () =>\n pullPosReachedAnimated.current.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 100],\n }),\n []\n )\n\n const containerStyle = useMemo(\n () => [\n style,\n {\n overflowY: 'hidden',\n overflow: 'hidden',\n paddingTop: progressViewOffset,\n },\n ],\n [progressViewOffset, style]\n )\n const indicatorTransformStyle = useMemo(\n () => ({\n alignSelf: 'center',\n marginTop: -80,\n height: 80,\n transform: [{ translateY: pullDownSwipeMargin.current }],\n }),\n []\n )\n // This is messing with react-native-web's internal implementation\n // Will probably break if anything changes on their end\n const AnimatedContentContainer = useMemo(\n () =>\n withAnimated((childProps: any) => (\n \n )),\n []\n )\n const newContentContainerStyle = useMemo(\n () => [\n children.props.children.props.style,\n { transform: [{ translateY: pullDownSwipeMargin.current }] },\n ],\n [children.props.children.props.style]\n )\n const newChildren = React.cloneElement(\n children,\n undefined,\n <>\n \n {refreshing ? (\n <>\n \n {title && (\n \n {title}\n \n )}\n \n ) : (\n \n \n \n )}\n \n \n \n )\n\n return (\n \n {newChildren}\n \n )\n}\n\nfunction withAnimated(WrappedComponent: any) {\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component'\n\n class WithAnimated extends React.Component {\n static displayName = `WithAnimated(${displayName})`\n\n render() {\n return \n }\n }\n\n return Animated.createAnimatedComponent(WithAnimated)\n}\n","import * as React from 'react'\nimport { FunctionComponent } from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { ITag } from '../api/tags'\nimport Colors from '../constants/Colors'\n\nexport interface ISentimentIconProps {\n sentimentTag: ITag\n}\n\nenum Sentiment {\n bad = 'bad',\n neutral = 'neutral',\n good = 'good',\n}\n\nconst styles = StyleSheet.create({\n square: {\n justifyContent: 'center',\n marginHorizontal: 1,\n alignSelf: 'center',\n },\n bad: {\n backgroundColor: 'red',\n },\n neutral: {\n backgroundColor: Colors.orangeWeb,\n },\n good: {\n backgroundColor: 'green',\n },\n active: { width: 9, height: 9, borderRadius: 2 },\n inactive: {\n width: 6,\n height: 6,\n backgroundColor: Colors.darkPlatinum,\n borderRadius: 1,\n },\n})\n\nexport const SentimentIcon: FunctionComponent = ({\n sentimentTag,\n}) => {\n return (\n \n \n \n \n \n )\n}\n","export const DateConverter = (creationDate: string) => {\n const convertedCreationDate = new Date(\n creationDate.substring(5, 7) +\n '/' +\n creationDate.substring(8, 10) +\n '/' +\n creationDate.substring(0, 4) +\n ' ' +\n creationDate.substring(11, 13) +\n ':' +\n creationDate.substring(14, 16) +\n ':' +\n creationDate.substring(17, 19)\n )\n const date = (Date.now() - convertedCreationDate.getTime()) / 60000\n return date <= 60\n ? Math.round(date) + ' perce'\n : date / 60 <= 24\n ? Math.round(date / 60) + ' órája'\n : date / 1440 < 7\n ? Math.round(date / 1440) + ' napja'\n : creationDate.substring(0, 4) +\n '/' +\n creationDate.substring(5, 7) +\n '/' +\n creationDate.substring(8, 10)\n}\n","import React from 'react'\nimport { FunctionComponent } from 'react'\nimport { Text, StyleSheet, Image } from 'react-native'\n\nimport Colors from '../constants/Colors'\nimport { IArticle } from '../api/articles'\n\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport { ArticleTypes } from './ListComponent'\n\nexport interface ITileProps {\n article: IArticle\n articleType: ArticleTypes\n}\n\nconst setSource = (articleType: ArticleTypes, article: IArticle): string => {\n switch (articleType) {\n case ArticleTypes.Video:\n if (article.VideoUrl.includes('youtube.com')) return 'youtube'\n return 'video'\n case ArticleTypes.Facebook:\n return 'facebook'\n case ArticleTypes.LinkedIn:\n return 'linkedin'\n case ArticleTypes.Twitter:\n return 'twitter'\n case ArticleTypes.Instagram:\n return 'instagram'\n case ArticleTypes.TikTok:\n return 'tiktok'\n default:\n return ''\n }\n}\n\nexport const ArticleSourceIconComponent: FunctionComponent = (\n props\n) => {\n const { article, articleType } = props\n const fileName = setSource(articleType, article)\n return (\n \n {fileName &&\n (fileName === 'video' ? (\n \n ) : (\n \n ))}\n \n )\n}\n\nconst styles = StyleSheet.create({\n svgStyle: {\n flex: 1,\n borderRadius: 4,\n marginRight: 5,\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: -1,\n elevation: -1,\n },\n iconSourceContainer: {\n display: 'flex',\n alignItems: 'center',\n textAlign: 'center',\n },\n icon: {\n marginRight: '5px',\n },\n socialMediaIcons: { width: '15px', height: '15px' },\n})\n","import { client } from '..'\n\nexport async function fetchLanguages() {\n try {\n const response = await client.get('/api/languages')\n return response.data\n } catch (error) {\n console.error(error)\n }\n}\n","import React, { createContext, FC, useEffect, useReducer } from 'react'\nimport { initialLanguageState, languagesReducer } from '../state/languages'\nimport { useFetchLanguages } from '../state/languages/languages.creators'\n\nexport const LanguagesContext = createContext(initialLanguageState)\n\nexport interface ILanguagesProps {\n children?: JSX.Element\n token?: string\n}\n\nexport const LanguagesProvider: FC = (props) => {\n const { token, children } = props\n const [data, dispatch] = useReducer(languagesReducer, initialLanguageState)\n const fetchLanguages = useFetchLanguages(dispatch)\n useEffect(() => {\n if (!token) return\n fetchLanguages()\n }, [token])\n\n return (\n \n {children}\n \n )\n}\n\nexport const LanguagesConsumer = LanguagesContext.Consumer\n","import { Dispatch } from 'react'\nimport { fetchLanguages } from '../../api/languages/languages.query'\nimport { LanguageActions } from './languages.actions'\n\nexport const useFetchLanguages = (dispatch: Dispatch) => {\n return async () => {\n dispatch({ type: 'LANGUAGES_SET_LOADING', payload: true })\n try {\n const payload = await fetchLanguages()\n if (!payload) throw Error('No payload for fetch languages')\n dispatch({ type: 'LANGUAGES_LOAD_SUCCESS', payload })\n } catch (error) {\n dispatch({ type: 'LANGUAGES_LOAD_ERROR', error: error as Error })\n }\n dispatch({ type: 'LANGUAGES_SET_LOADING', payload: false })\n }\n}\n","import flagSrc from '../../web/google_translate_logo_gray.svg'\n\nexport type ILanguage = {\n Name: string\n Code: string\n Flag: string\n}\n\nexport const defaultLanguage: ILanguage = {\n Name: 'Eredeti',\n Code: '',\n Flag: flagSrc,\n}\n","import _ from 'lodash'\nimport React, {\n JSXElementConstructor,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport type {\n FlatListProps,\n ImageStyle,\n StyleProp,\n TextProps,\n TextStyle,\n} from 'react-native'\nimport {\n Dimensions,\n FlatList,\n I18nManager,\n Keyboard,\n KeyboardEvent,\n Modal,\n ScrollView,\n StatusBar,\n StyleSheet,\n Text,\n TouchableHighlight,\n TouchableWithoutFeedback,\n View,\n ViewStyle,\n} from 'react-native'\nimport { reorderList } from '../utils/languageSelector'\n\nexport type IDropdownRef = {\n open: () => void\n close: () => void\n}\n\nexport interface DropdownProps {\n visible: boolean\n setVisible: React.Dispatch>\n sourceLanguage: string\n ref?:\n | React.RefObject\n | React.MutableRefObject\n | null\n | undefined\n testID?: string\n itemTestIDField?: string\n style?: StyleProp\n containerStyle?: StyleProp\n placeholderStyle?: StyleProp\n selectedTextStyle?: StyleProp\n selectedTextProps?: TextProps\n itemContainerStyle?: StyleProp\n itemTextStyle?: StyleProp\n inputSearchStyle?: StyleProp\n iconStyle?: StyleProp\n maxHeight?: number\n minHeight?: number\n fontFamily?: string\n iconColor?: string\n activeColor?: string\n data: T[]\n value?: T | string | null | undefined\n placeholder?: string\n labelField: keyof T\n valueField: keyof T\n searchField?: keyof T\n search?: boolean\n searchPlaceholder?: string\n disable?: boolean\n autoScroll?: boolean\n showsVerticalScrollIndicator?: boolean\n dropdownPosition?: 'auto' | 'top' | 'bottom'\n flatListProps?: Omit, 'renderItem' | 'data'>\n keyboardAvoiding?: boolean\n backgroundColor?: string\n confirmSelectItem?: boolean\n accessibilityLabel?: string\n itemAccessibilityLabelField?: string\n inverted?: boolean\n mode?: 'default' | 'modal'\n onChange: (item: T) => void\n renderLeftIcon?: (visible?: boolean) => JSX.Element | null | undefined\n renderRightIcon?: (visible?: boolean) => JSX.Element | null | undefined\n renderItem?: (item: T, selected?: boolean) => JSX.Element | null | undefined\n renderInputSearch?: (\n onSearch: (text: string) => void\n ) => JSX.Element | null | undefined\n onFocus?: () => void\n onBlur?: () => void\n searchQuery?: (keyword: string, labelValue: string) => boolean\n onChangeText?: (search: string) => void\n onConfirmSelectItem?: (item: T) => void\n scrollable?: boolean\n}\n\nconst statusBarHeight: number = StatusBar.currentHeight || 0\n\nconst LanguageDropdownComponent: (\n props: DropdownProps\n) => ReactElement> | null =\n React.forwardRef((props, currentRef) => {\n const {\n visible,\n setVisible,\n sourceLanguage,\n testID,\n itemTestIDField,\n onChange,\n style = {},\n containerStyle,\n placeholderStyle,\n selectedTextStyle,\n itemContainerStyle,\n itemTextStyle,\n selectedTextProps = {},\n data = [],\n labelField,\n valueField,\n value,\n activeColor = '#ebebeb',\n fontFamily,\n placeholder = 'Select item',\n maxHeight = 340,\n minHeight = 0,\n disable = false,\n keyboardAvoiding = true,\n inverted = true,\n renderLeftIcon,\n renderRightIcon = () => null,\n renderItem,\n onFocus,\n onBlur,\n autoScroll = true,\n showsVerticalScrollIndicator = true,\n dropdownPosition = 'auto',\n flatListProps,\n backgroundColor,\n onChangeText,\n confirmSelectItem,\n onConfirmSelectItem,\n accessibilityLabel,\n itemAccessibilityLabelField,\n mode = 'default',\n scrollable,\n } = props\n\n const ref = useRef(null)\n const refList = useRef(null)\n const [currentValue, setCurrentValue] = useState(null)\n const [listData, setListData] = useState(data)\n const [position, setPosition] = useState()\n const [keyboardHeight, setKeyboardHeight] = useState(0)\n const { width: W, height: H } = Dimensions.get('window')\n\n const styleContainerVertical: ViewStyle = useMemo(() => {\n return {\n backgroundColor: 'rgba(0,0,0,0.1)',\n alignItems: 'center',\n }\n }, [])\n const styleHorizontal: ViewStyle = useMemo(() => {\n return {\n width: '100%',\n alignSelf: 'center',\n }\n }, [W])\n useImperativeHandle(currentRef, () => {\n return { open: eventOpen, close: eventClose }\n })\n useEffect(() => {\n const reorderedList = reorderList(data, sourceLanguage)\n setListData(reorderedList)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, sourceLanguage])\n\n const eventOpen = () => {\n if (!disable) {\n setVisible(true)\n if (onFocus) {\n onFocus()\n }\n\n scrollIndex()\n }\n }\n\n const eventClose = useCallback(() => {\n if (!disable) {\n setVisible(false)\n if (onBlur) {\n onBlur()\n }\n }\n }, [disable, onBlur])\n\n const font = useCallback(() => {\n if (fontFamily) {\n return {\n fontFamily: fontFamily,\n }\n } else {\n return {}\n }\n }, [fontFamily])\n\n const _measure = useCallback(() => {\n if (ref && ref?.current) {\n ref.current.measureInWindow((pageX, pageY, width, height) => {\n const isFull = mode === 'modal'\n const top = isFull ? 20 : height + pageY + 2\n const bottom = H - top + height\n const left = I18nManager.isRTL ? W - width - pageX : pageX\n\n setPosition({\n isFull,\n width: Math.floor(width),\n top: Math.floor(top + statusBarHeight),\n bottom: Math.floor(bottom - statusBarHeight),\n left: Math.floor(left),\n height: Math.floor(height),\n })\n })\n }\n }, [H, W, mode])\n\n const onKeyboardDidShow = useCallback(\n (e: KeyboardEvent) => {\n _measure()\n setKeyboardHeight(e.endCoordinates.height)\n },\n [_measure]\n )\n\n const onKeyboardDidHide = useCallback(() => {\n setKeyboardHeight(0)\n _measure()\n }, [_measure])\n\n useEffect(() => {\n const susbcriptionKeyboardDidShow = Keyboard.addListener(\n 'keyboardDidShow',\n onKeyboardDidShow\n )\n const susbcriptionKeyboardDidHide = Keyboard.addListener(\n 'keyboardDidHide',\n onKeyboardDidHide\n )\n\n return () => {\n if (typeof susbcriptionKeyboardDidShow?.remove === 'function') {\n susbcriptionKeyboardDidShow.remove()\n }\n\n if (typeof susbcriptionKeyboardDidHide?.remove === 'function') {\n susbcriptionKeyboardDidHide.remove()\n }\n }\n }, [onKeyboardDidHide, onKeyboardDidShow])\n\n const getValue = useCallback(() => {\n const defaultValue =\n typeof value === 'object' ? _.get(value, valueField) : value\n\n const getItem = data.filter((e) =>\n _.isEqual(defaultValue, _.get(e, valueField))\n )\n if (getItem.length > 0) {\n setCurrentValue(getItem[0])\n } else {\n setCurrentValue(null)\n }\n }, [data, value, valueField])\n\n useEffect(() => {\n getValue()\n }, [value, data, getValue])\n\n const scrollIndex = useCallback(() => {\n if (autoScroll && data.length > 0 && listData.length === data.length) {\n setTimeout(() => {\n if (refList && refList?.current) {\n const defaultValue =\n typeof value === 'object' ? _.get(value, valueField) : value\n\n const index = _.findIndex(listData, (e: any) =>\n _.isEqual(defaultValue, _.get(e, valueField))\n )\n if (index > -1 && index <= listData.length - 1) {\n refList?.current?.scrollToIndex({\n index: index,\n animated: false,\n })\n }\n }\n }, 200)\n }\n }, [autoScroll, data.length, listData, value, valueField])\n\n const showOrClose = useCallback(() => {\n if (!disable) {\n if (keyboardHeight > 0 && visible) {\n return Keyboard.dismiss()\n }\n\n _measure()\n setVisible(!visible)\n setListData(data)\n\n if (!visible) {\n if (onFocus) {\n onFocus()\n }\n } else {\n if (onBlur) {\n onBlur()\n }\n }\n scrollIndex()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disable,\n keyboardHeight,\n visible,\n _measure,\n data,\n scrollIndex,\n onFocus,\n onBlur,\n ])\n\n const onSelect = useCallback(\n (item: any) => {\n if (confirmSelectItem && onConfirmSelectItem) {\n return onConfirmSelectItem(item)\n }\n\n if (onChangeText) {\n onChangeText('')\n }\n setCurrentValue(item)\n onChange(item)\n eventClose()\n },\n [\n confirmSelectItem,\n eventClose,\n onChange,\n onChangeText,\n onConfirmSelectItem,\n ]\n )\n\n const _renderDropdown = () => {\n const isSelected = currentValue && _.get(currentValue, valueField)\n return (\n \n \n {renderLeftIcon?.(visible)}\n \n {isSelected !== null\n ? _.get(currentValue, labelField)\n : placeholder}\n \n {renderRightIcon(visible)}\n \n \n )\n }\n\n const _renderItem = useCallback(\n ({ item, index }: { item: any; index: number }) => {\n const isSelected = currentValue && _.get(currentValue, valueField)\n const selected = _.isEqual(_.get(item, valueField), isSelected)\n _.assign(item, { _index: index })\n\n const isGoogleTranslateElement =\n renderItem &&\n renderItem(\n item,\n isSelected\n )?.props.children[0].props.source.uri.includes(\n 'google_translate_logo'\n )\n\n return (\n onSelect(item)}\n >\n \n {renderItem ? (\n renderItem(item, selected)\n ) : (\n \n \n {_.get(item, labelField)}\n \n \n )}\n \n \n )\n },\n [\n accessibilityLabel,\n activeColor,\n currentValue,\n font,\n itemAccessibilityLabelField,\n itemContainerStyle,\n itemTestIDField,\n itemTextStyle,\n labelField,\n onSelect,\n renderItem,\n valueField,\n ]\n )\n\n const _renderList = useCallback(\n (isTopPosition: boolean) => {\n const isInverted = !inverted ? false : isTopPosition\n\n const _renderListHelper = () => {\n return (\n index.toString()}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n />\n )\n }\n\n return (\n \n \n {isInverted && _renderListHelper()}\n {!isInverted && _renderListHelper()}\n \n \n )\n },\n [\n _renderItem,\n accessibilityLabel,\n flatListProps,\n listData,\n inverted,\n scrollIndex,\n showsVerticalScrollIndicator,\n testID,\n ]\n )\n\n const _renderModal = useCallback(() => {\n if (visible && position) {\n const { isFull, width, height, top, bottom, left } = position\n\n const onAutoPosition = () => {\n if (keyboardHeight > 0) {\n return bottom < keyboardHeight + height\n }\n\n return bottom < 100\n }\n\n if (width && top && bottom) {\n const styleVertical: ViewStyle = {\n left: left,\n maxHeight: maxHeight,\n minHeight: minHeight,\n }\n const isTopPosition =\n dropdownPosition === 'auto'\n ? onAutoPosition()\n : dropdownPosition === 'top'\n\n let keyboardStyle: ViewStyle = {}\n\n let extendHeight = !isTopPosition ? top : bottom\n if (\n keyboardAvoiding &&\n keyboardHeight > 0 &&\n isTopPosition &&\n dropdownPosition === 'auto'\n ) {\n extendHeight = keyboardHeight\n }\n\n return (\n \n \n \n \n \n {_renderList(isTopPosition)}\n \n \n \n \n \n )\n }\n return null\n }\n return null\n }, [\n visible,\n position,\n keyboardHeight,\n maxHeight,\n minHeight,\n dropdownPosition,\n keyboardAvoiding,\n showOrClose,\n styleContainerVertical,\n backgroundColor,\n containerStyle,\n styleHorizontal,\n _renderList,\n ])\n\n return (\n \n {_renderDropdown()}\n {_renderModal()}\n \n )\n })\n\nfunction ListWrapper({\n scrollable,\n ...props\n}: {\n scrollable: boolean\n style: StyleProp\n children: ReactNode\n}) {\n if (scrollable) return \n return \n}\n\nexport default LanguageDropdownComponent\n\nexport const styles = StyleSheet.create({\n mainWrap: {\n justifyContent: 'center',\n },\n container: {\n flexShrink: 1,\n borderWidth: 0.5,\n borderColor: '#EEEEEE',\n backgroundColor: 'white',\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.2,\n shadowRadius: 1.41,\n elevation: 2,\n },\n flex1: {\n flex: 1,\n },\n flexShrink: {\n flexShrink: 1,\n },\n wrapTop: {\n justifyContent: 'flex-end',\n },\n dropdown: {\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: 35,\n },\n title: {\n marginVertical: 5,\n fontSize: 16,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n item: {\n padding: 17,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n textItem: {\n flex: 1,\n fontSize: 16,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n icon: {\n width: 20,\n height: 20,\n },\n input: {\n borderWidth: 0.5,\n borderColor: '#DDDDDD',\n paddingHorizontal: 8,\n marginBottom: 8,\n margin: 6,\n height: 45,\n },\n fullScreen: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n","export function reorderList(data: any, sourceLanguage?: string) {\n // First, find the index of the item where the Code is an empty string\n // and the Name is 'Eredeti'\n const emptyCodeIndex = data.findIndex(\n (item: { Code: string; Name: string }) =>\n item.Code === '' && item.Name === 'Eredeti'\n )\n\n // If found, remove the item with an empty Code and insert it at index 0\n if (emptyCodeIndex > -1) {\n const [itemWithEmptyCode] = data.splice(emptyCodeIndex, 1)\n data.splice(0, 0, itemWithEmptyCode)\n }\n\n // If sourceLanguage is provided, perform the additional sorting based on the source language\n if (sourceLanguage) {\n // Find the index of the item where Code matches the sourceLanguage\n const matchingIndex = data.findIndex(\n (item: { Code: string }) => item.Code === sourceLanguage\n )\n\n // If found, remove the matching item and insert it at index 1\n // Index 1 is used assuming the first step might have already inserted an item at index 0\n if (matchingIndex > -1) {\n const [matchingItem] = data.splice(matchingIndex, 1)\n data.splice(1, 0, matchingItem)\n }\n }\n\n // Return the reordered data\n return data\n}\n","import React, {\n FunctionComponent,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport { Image, StyleSheet, Text, View } from 'react-native'\nimport { Icon } from 'react-native-elements'\nimport { ILanguage, defaultLanguage } from '../api/languages'\nimport Colors from '../constants/Colors'\nimport { apiUrl, httpRegexp } from '../constants/Config'\nimport { LanguagesContext } from '../context/languages.context'\nimport { path } from '../utils'\nimport LanguageDropdownComponent from './LanguageDropdownComponent'\nconst LINE_HEIGHT = 33\nconst MAX_ITEM_SIZE = 5\n\nexport const getImageUri = (uri: string): string => {\n uri = uri || ''\n if (uri.startsWith('data:image')) return uri\n return httpRegexp.test(uri) ? uri : path.join([apiUrl, uri])\n}\n\nexport interface ILanguageSelectorProps {\n sourceLanguage: string\n defaultValue: string\n onChange: (value: ILanguage) => void\n}\n\nconst renderRightIcon = (visible: boolean) => {\n const currentFlag = visible ? (\n \n ) : (\n \n )\n return currentFlag\n}\n\nconst renderItem = (uri: string) => {\n return (\n \n \n \n )\n}\nconst renderListItem = (uri: string, code: string, sourceLanguage: string) => {\n const isSourceLanguage = code === sourceLanguage\n return (\n \n \n {!!code ? (\n \n {code}\n \n ) : null}\n \n )\n}\n\nexport const LanguageSelectorComponent: FunctionComponent<\n ILanguageSelectorProps\n> = ({ sourceLanguage, defaultValue, onChange }) => {\n // Contexts\n const { languages } = useContext(LanguagesContext)\n\n // Value State InitValue\n const initialLanguage =\n languages.find((language) => language.Code === defaultValue) ||\n defaultLanguage\n\n // States\n const [value, setValue] = useState(initialLanguage)\n const [visible, setVisible] = useState(false)\n\n // Refs\n const ref = useRef(value)\n\n const maxHeight = Math.min(\n ((languages?.length || 0) + 1) * LINE_HEIGHT,\n MAX_ITEM_SIZE * LINE_HEIGHT\n )\n const getFlag = useCallback(() => {\n if (value === defaultLanguage) {\n const targetLanguage = languages.find(\n (language) => language.Code === defaultValue\n )\n return targetLanguage?.Flag || defaultLanguage.Flag\n }\n return value.Flag\n }, [value, defaultLanguage, defaultValue, languages])\n\n useEffect(() => {\n const prev = ref.current\n const next = value\n ref.current = value\n if (!prev || prev === next) return\n\n onChange(value)\n }, [value])\n\n if (!languages.length) return null\n return (\n \n setValue(value)}\n renderRightIcon={() => renderRightIcon(visible)}\n renderLeftIcon={() => renderItem(getFlag())}\n renderItem={(item) =>\n renderListItem(item.Flag, item.Code, sourceLanguage)\n }\n style={styles.dropdown}\n maxHeight={maxHeight}\n minHeight={LINE_HEIGHT}\n showsVerticalScrollIndicator={true}\n fontFamily=\"Roboto_400Regular\"\n placeholderStyle={styles.placeholder}\n selectedTextStyle={styles.placeholder}\n selectedTextProps={{ numberOfLines: 1 }}\n containerStyle={styles.dropdownContainer}\n scrollable={true}\n autoScroll={true}\n />\n \n )\n}\n\nconst styles = StyleSheet.create({\n dropdown: {\n width: 70,\n marginRight: 13,\n },\n placeholder: {\n display: 'none',\n },\n viewContainer: {\n width: 70,\n borderColor: Colors.darkPlatinum,\n borderWidth: 1,\n borderRadius: 3,\n marginLeft: 13,\n },\n dropdownContainer: {\n width: 80,\n borderColor: Colors.darkPlatinum,\n borderWidth: 1,\n borderRadius: 3,\n },\n dropdownContainerScroll: {\n width: 70,\n borderColor: Colors.darkPlatinum,\n borderWidth: 1,\n borderRadius: 3,\n overflow: 'scroll',\n WebkitOverflowScrolling: 'touch',\n },\n dropdownContainerTextWrap: {\n flex: 1,\n flexDirection: 'row',\n height: 25,\n alignItems: 'center',\n margin: 8,\n },\n dropdownContainerText: {\n color: 'red',\n fontSize: 14,\n },\n icon: {\n marginRight: '8px',\n width: '20px',\n height: '15px',\n },\n})\n","import React, { FC, useContext, useEffect, useState } from 'react'\nimport { StyleSheet, Text, View } from 'react-native'\nimport { IArticle } from '../api/articles'\nimport { fetchTranslation } from '../api/articles/articles.query'\nimport { ILanguage } from '../api/languages'\nimport Colors from '../constants/Colors'\nimport { UserContext } from '../context'\nimport { LanguagesContext } from '../context/languages.context'\nimport { LanguageSelectorComponent } from './LanguageSelectorComponent'\n\nexport interface IArticleHeaderProps {\n article: IArticle\n onLanguageChange: (language: ILanguage) => void\n}\n\nexport const ArticleHeader: FC = ({\n article,\n onLanguageChange: onLanguageChangeProp,\n}) => {\n const [title, setTitle] = useState(article.Title)\n const { user } = useContext(UserContext)\n const { languages } = useContext(LanguagesContext)\n const onLanguageChange = async (language: ILanguage) => {\n onLanguageChangeProp(language)\n if (language.Code === article.TargetLanguage || language.Code === '') {\n setTitle(article.Title)\n return\n }\n\n try {\n const { Title } = await fetchTranslation({\n ContentId: article.ArticleId,\n LanguageCode: language.Code,\n })\n setTitle(Title)\n } catch (error) {\n console.error(error)\n setTitle(article.Title)\n }\n }\n\n useEffect(() => {\n setTitle(article.Title)\n }, [user.PreferredLanguage, article])\n\n return (\n \n \n {title}\n \n \n onLanguageChange(language)}\n />\n \n \n )\n}\n\nconst styles = StyleSheet.create({\n titleFavoriteContainer: {\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n tileTitle: {\n fontFamily: 'Roboto_500Medium',\n color: Colors.oxfordBlue,\n fontSize: 17,\n marginBottom: 17,\n lineHeight: 20.5,\n paddingBottom: 1,\n },\n iconWrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'row',\n justifyContent: 'flex-end',\n },\n source: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_300Light',\n fontSize: 11,\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n },\n})\n","import React, {\n Dispatch,\n FC,\n SetStateAction,\n useLayoutEffect,\n useState,\n} from 'react'\n\nexport interface IScreenSize {\n width: number\n height: number\n}\n\nexport const ScreenSizeContext = React.createContext({\n width: window.innerWidth,\n height: window.innerHeight,\n})\nexport interface IScreenSizeProps {\n children?: JSX.Element\n}\n\nexport const ScreenSizeProvider: FC = (props) => {\n const [width, setWidth] = useState(window.innerWidth)\n const [height, setHeight] = useState(window.innerHeight)\n const resizeListener = () => {\n setWidth(window.innerWidth)\n setHeight(window.innerHeight)\n }\n\n useLayoutEffect(() => {\n window.addEventListener('resize', resizeListener)\n return () => window.removeEventListener('resize', resizeListener)\n }, [])\n\n return (\n \n {props.children}\n \n )\n}\n\nexport const ScreenSizeConsumer = ScreenSizeContext.Consumer\n","import React, { useContext, useState } from 'react'\nimport { FunctionComponent } from 'react'\nimport { Text, View, StyleSheet, Pressable, Linking } from 'react-native'\nimport { Card } from 'react-native-elements'\n\nimport Colors from '../constants/Colors'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport { SentimentIcon } from './SentimentIcon'\nimport { IArticle } from '../api/articles'\nimport { DateConverter } from './DateConverter'\nimport { path } from '../utils'\nimport { apiUrl, httpRegexp } from '../constants/Config'\n\nimport { ArticleTypes, getArticleType } from './ListComponent'\nimport { ArticleSourceIconComponent } from './ArticleSourceIconComponent'\nimport { ArticleHeader } from './ArticleHeader'\nimport Browser from '../constants/Browser'\nimport { ScreenSizeContext } from '../context/screen-size.context'\nimport { UserContext } from '../context'\n\nexport interface ITileProps {\n article: IArticle\n articleType: ArticleTypes\n isUnread: boolean\n}\n\nexport const getImageUri = (uri: string): string => {\n uri = uri || ''\n return httpRegexp.test(uri) ? uri : path.join([apiUrl, uri])\n}\n\nconst getTranslatedURL = (url: string, item: IArticle, lngCode: string) => {\n const gTranslatedURL = `http://translate.google.com/translate?hl=en&ie=UTF-8&u=${url}&sl=auto&tl=${lngCode}`\n switch (getArticleType(item)) {\n case ArticleTypes.Facebook: {\n const local = lngCode === 'en' ? 'US' : lngCode.toUpperCase()\n return `${url}?locale=${lngCode}_${local}`\n }\n case ArticleTypes.Instagram: {\n const local = lngCode === 'en' ? 'US' : lngCode.toUpperCase()\n return `${url}?locale=${lngCode}_${local}`\n }\n case ArticleTypes.Twitter:\n return `${url}?lang=${lngCode}`\n case ArticleTypes.TikTok:\n return `${url}?lang=${lngCode}`\n case ArticleTypes.Video: {\n if (url.includes('youtube.com/watch?v=')) {\n const newURL = url.replace('watch?v=', 'embed/')\n return `${newURL}?&hl=${lngCode}&cc_lang_pref=${lngCode}&cc_load_policy=1`\n }\n return gTranslatedURL\n }\n default: {\n return gTranslatedURL\n }\n }\n}\n\nconst onPress = async (article: IArticle, lngCode: string) => {\n /**\n * user does not need translation,\n * if the preferredLanguage is not set or default,\n * or the source language is the same\n * or the link is a linkedin link\n */\n const needTranslation = !(\n (lngCode || 'default') === 'default' ||\n article.SourceLanguage === lngCode ||\n getArticleType(article) === ArticleTypes.LinkedIn\n )\n\n let url =\n article.VideoUrl ||\n article.FacebookArticleUrl ||\n article.LinkedInArticleUrl ||\n article.TwitterArticleUrl ||\n article.InstagramArticleUrl ||\n article.TikTokArticleUrl ||\n article.Url\n\n if (needTranslation) {\n url = getTranslatedURL(url, article, lngCode)\n }\n\n try {\n return await Linking.openURL(url)\n } catch (err) {\n return console.error('An error occurred', err)\n }\n}\n\nexport const Tile: FunctionComponent = (props) => {\n const { article, articleType, isUnread } = props\n const pageName = article.SourceTag.Title || 'Unknown'\n const [tempLngCode, setTempLngCode] = useState()\n const { width } = useContext(ScreenSizeContext)\n const { user, setBookmarks } = useContext(UserContext)\n const index = user.BookmarkedNews.indexOf(article.ArticleId)\n const isBookmarked = index > -1\n\n return (\n onPress(article, tempLngCode || user.PreferredLanguage)}\n style={({ pressed }) => ({\n opacity: pressed ? 0.5 : 1,\n flex: 1,\n width,\n maxWidth: 512,\n ...(!Browser.isMobile &&\n !Browser.isIOS && {\n paddingHorizontal: 15,\n }),\n })}\n >\n \n \n \n {!!article.SentimentTag ? (\n \n ) : null}\n \n \n {\n if (index === -1) {\n setBookmarks(\n [...user.BookmarkedNews, article.ArticleId],\n user.BookmarkedAnalyses\n )\n } else {\n const tags = [...user.BookmarkedNews]\n tags.splice(index, 1)\n setBookmarks(tags, user.BookmarkedAnalyses)\n }\n }}\n >\n \n \n \n \n \n {articleType === ArticleTypes.Video && (\n \n \n \n \n \n )}\n \n setTempLngCode(language.Code)}\n />\n \n \n \n \n {pageName} - {article.Author && `${article.Author} - `}\n {DateConverter(article.Date)}\n \n \n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n cardContainer: {\n padding: 0,\n borderRadius: 10,\n margin: 13,\n borderTopLeftRadius: 11,\n borderTopRightRadius: 11,\n },\n imageContainer: {\n width: '100%',\n height: '25vh',\n backgroundColor: '#bbbbbb',\n borderTopRightRadius: 10,\n borderTopLeftRadius: 10,\n },\n imagePlaceholder: {\n backgroundColor: 'transparent',\n borderTopRightRadius: 10,\n borderTopLeftRadius: 10,\n },\n image: {\n width: '100%',\n height: '100%',\n borderTopLeftRadius: 10,\n borderTopRightRadius: 10,\n },\n imageShadow: {\n width: '100%',\n height: '25vh',\n backgroundColor: Colors.unselectedBlue + 85,\n position: 'absolute',\n justifyContent: 'center',\n borderTopRightRadius: 10,\n borderTopLeftRadius: 10,\n },\n imageTopShadow: {\n width: '100%',\n position: 'absolute',\n zIndex: 1,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n },\n playIconWrap: {\n alignSelf: 'center',\n height: 50,\n width: 50,\n borderRadius: 200,\n backgroundColor: Colors.oxfordBlue + 90,\n justifyContent: 'center',\n },\n playIcon: {\n alignSelf: 'center',\n },\n cardInfoWrapper: {\n margin: 8,\n },\n sourceSentimentContainer: {\n flex: 1,\n flexDirection: 'row',\n maxHeight: 15,\n display: 'flex',\n justifyContent: 'space-between',\n },\n subTitle: {\n marginTop: 12,\n },\n author: {\n marginBottom: 5,\n },\n iconWrapper: {\n backgroundColor: Colors.oxfordBlue + 90,\n borderRadius: 5,\n padding: 5,\n margin: 10,\n },\n source: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_300Light',\n fontSize: 11,\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n },\n favoriteIcon: {\n color: Colors.darkPlatinum,\n },\n})\n","import { difference, uniq } from 'lodash'\nimport React, {\n Dispatch,\n FC,\n PropsWithChildren,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport { UserContext } from './user.context'\n\nconst emptyMessageCache: IMessageCache = {\n unreadArticles: [],\n unreadAnalyses: [],\n}\n\nexport const UnreadContext = React.createContext({\n unreadItems: emptyMessageCache,\n setUnreadItems: () => {},\n refresh: async () => {},\n})\n\nexport interface IUnread {\n unreadItems: IMessageCache\n setUnreadItems: Dispatch>\n refresh: () => Promise\n}\n\nexport interface IMessageCache {\n unreadArticles: string[]\n unreadAnalyses: string[]\n}\nexport const UnreadProvider: FC> = (props) => {\n const { userUnreadMessages, fetchProfileUnreadMessages, setReadMessages } =\n useContext(UserContext)\n\n const [unreadItems, setUnreadItems] =\n useState(userUnreadMessages)\n const [prevUnread, setPrevUnread] = useState(unreadItems)\n const [readItems, setReadItems] = useState(emptyMessageCache)\n\n const readMarked = useCallback(async () => {\n const promises = []\n if (readItems.unreadArticles.length)\n promises.push(\n setReadMessages(readItems.unreadArticles, { ContentType: 'Article' })\n )\n if (readItems.unreadAnalyses.length)\n promises.push(\n setReadMessages(readItems.unreadAnalyses, { ContentType: 'Analysis' })\n )\n\n await Promise.all(promises)\n setReadItems(emptyMessageCache)\n }, [readItems, setReadMessages, setReadItems])\n\n const refresh = useCallback(async () => {\n await readMarked()\n await fetchProfileUnreadMessages()\n }, [fetchProfileUnreadMessages])\n\n useEffect(() => {\n const { unreadArticles, unreadAnalyses } = userUnreadMessages\n setUnreadItems({ unreadArticles, unreadAnalyses })\n }, [userUnreadMessages])\n\n useEffect(() => {\n const diffArticles = difference(\n prevUnread.unreadArticles,\n unreadItems.unreadArticles\n )\n const diffAnalyses = difference(\n prevUnread.unreadAnalyses,\n unreadItems.unreadAnalyses\n )\n if (diffArticles.length || diffAnalyses.length) {\n setReadItems({\n unreadArticles: [...readItems.unreadArticles, ...diffArticles],\n unreadAnalyses: [...readItems.unreadAnalyses, ...diffAnalyses],\n })\n }\n setPrevUnread(unreadItems)\n }, [unreadItems])\n\n useEffect(() => {\n const timer = setTimeout(async () => {\n await readMarked()\n }, 3000)\n\n return () => clearTimeout(timer)\n }, [unreadItems, setReadMessages, readMarked])\n\n const state = useMemo(\n () => ({\n unreadItems,\n setUnreadItems,\n refresh,\n }),\n [unreadItems, setUnreadItems, setReadMessages, fetchProfileUnreadMessages]\n )\n\n return (\n \n {props.children}\n \n )\n}\n\nexport const UnreadConsumer = UnreadContext.Consumer\n","/**\n * Learn more about Light and Dark modes:\n * https://docs.expo.io/guides/color-schemes/\n */\n\nimport * as React from 'react'\nimport { Text as DefaultText, View as DefaultView } from 'react-native'\n\nimport Colors from '../constants/Colors'\n\ntype ThemeProps = {\n lightColor?: string\n darkColor?: string\n}\n\nexport type TextProps = ThemeProps & DefaultText['props']\nexport type ViewProps = ThemeProps & DefaultView['props']\n\nexport function Text(props: TextProps) {\n const { style, lightColor, darkColor, ...otherProps } = props\n const color = Colors.oxfordBlue\n const fontFamily = 'roboto'\n\n return \n}\n\nexport function View(props: ViewProps) {\n const { style, lightColor, darkColor, ...otherProps } = props\n const backgroundColor = Colors.white\n\n return \n}\n","import { BottomTabNavigationProp } from '@react-navigation/bottom-tabs'\nimport { CompositeNavigationProp } from '@react-navigation/native'\nimport { NativeStackNavigationProp } from '@react-navigation/native-stack'\nimport { differenceBy } from 'lodash'\nimport React, {\n useContext,\n useEffect,\n useState,\n useRef,\n MutableRefObject,\n RefObject,\n} from 'react'\nimport {\n FlatList,\n NativeScrollEvent,\n NativeSyntheticEvent,\n StyleSheet,\n Text,\n ViewToken,\n} from 'react-native'\nimport { IArticle } from '../api/articles'\nimport { ITag } from '../api/tags'\nimport { RefreshControl } from '../components/RefreshControl'\nimport { Tile } from '../components/Tile'\nimport Colors from '../constants/Colors'\nimport { refreshDelayTime } from '../constants/Config'\nimport { ArticlesContext, ArticlesProvider } from '../context'\nimport { PreferredTagsContext } from '../context/preferred-tags.context'\nimport { ScreenSizeContext } from '../context/screen-size.context'\nimport { ScrollToTopContext } from '../context/scroll-to-top.context'\nimport { IMessageCache, UnreadContext } from '../context/unread.context'\nimport { RootStackParamList, ArticleTabParamList } from '../types'\nimport { now } from '../utils'\nimport { View } from './Themed'\n\nconst styles = StyleSheet.create({\n containerView: {\n backgroundColor: Colors.listWhite,\n },\n flatList: {\n backgroundColor: Colors.listWhite,\n alignItems: 'center',\n justifyContent: 'center',\n },\n empty: { fontWeight: 'bold', marginVertical: 20, color: 'gray' },\n})\n\nexport interface IListComponentProps {\n ContentTag?: string\n SourceTag?: string\n SearchText?: string\n ArticleIds?: Array\n navigation: CompositeNavigationProp<\n BottomTabNavigationProp,\n NativeStackNavigationProp\n >\n}\n\nexport enum ArticleTypes {\n Video,\n Facebook,\n LinkedIn,\n Twitter,\n Instagram,\n TikTok,\n URL,\n}\n\nexport const getArticleType = (item: IArticle) => {\n if (item.VideoUrl) {\n return ArticleTypes.Video\n } else if (item.FacebookArticleUrl) {\n return ArticleTypes.Facebook\n } else if (item.LinkedInArticleUrl) {\n return ArticleTypes.LinkedIn\n } else if (item.TwitterArticleUrl) {\n return ArticleTypes.Twitter\n } else if (item.InstagramArticleUrl) {\n return ArticleTypes.Instagram\n } else if (item.TikTokArticleUrl) {\n return ArticleTypes.TikTok\n }\n return ArticleTypes.URL\n}\n\nexport const onScroll =\n (\n isScrolled: boolean,\n setIsScrolled: React.Dispatch>,\n isScrollToTop?: boolean,\n setIsScrollToTop?: React.Dispatch>\n ) =>\n (event: NativeSyntheticEvent) => {\n if (isScrollToTop) {\n if (\n isScrollToTop &&\n !isScrolled &&\n event.nativeEvent.contentOffset.y === 0 &&\n setIsScrollToTop\n ) {\n setIsScrollToTop(false)\n }\n } else {\n if (event.nativeEvent.contentOffset.y === 0 && isScrolled) {\n setIsScrolled(false)\n } else if (event.nativeEvent.contentOffset.y > 0 && !isScrolled) {\n setIsScrolled(true)\n }\n }\n }\n\nexport const ListComponent: React.FC = ({\n ContentTag,\n SourceTag,\n SearchText,\n ArticleIds,\n}) => {\n const tags = useContext(PreferredTagsContext)\n const ScrollToTopC = useContext(ScrollToTopContext)\n const { unreadItems, setUnreadItems } = useContext(UnreadContext)\n const [CreatedBefore, setCreatedBefore] = useState()\n const [isScrolled, setIsScrolled] = useState(false)\n const [isScrollToTop, setIsScrollToTop] = useState(false)\n const flatlistRef = useRef(null)\n const viewabilityConfig = {\n itemVisiblePercentThreshold: 75,\n }\n\n const onViewableItemsChanged = (info: {\n changed: ViewToken[]\n viewableItems: ViewToken[]\n }) => {\n setIsScrollToTop((prevScroll: boolean) => {\n if (!prevScroll)\n setUnreadItems((prevUnread: IMessageCache) => {\n if (prevUnread.unreadArticles.length) {\n const changed = info.changed\n .filter(({ key, isViewable }) => {\n return (\n key && isViewable && prevUnread.unreadArticles.includes(key)\n )\n })\n .map(({ key }) => key)\n return {\n ...prevUnread,\n unreadArticles: prevUnread.unreadArticles.filter(\n (key) => !changed.includes(key)\n ),\n }\n }\n return prevUnread\n })\n return prevScroll\n })\n }\n\n let viewabilityConfigCallbackPairs = useRef([\n { viewabilityConfig, onViewableItemsChanged },\n ])\n\n const prevTagsRef = useRef(tags)\n\n useEffect(() => {\n const comparator = (tag: ITag) => tag.Title\n const diff1 = differenceBy(tags, prevTagsRef.current, comparator)\n const diff2 = differenceBy(prevTagsRef.current, tags, comparator)\n if (!diff1.length && !diff2.length) return\n\n prevTagsRef.current = tags\n }, [tags])\n\n useEffect(() => {\n setCreatedBefore(now().toISOString())\n }, [prevTagsRef.current])\n\n useEffect(() => {\n if (\n ScrollToTopC.ScrollToTop &&\n flatlistRef.current?.props.data?.length &&\n isScrolled &&\n !isScrollToTop\n ) {\n setIsScrollToTop(true)\n setIsScrolled(false)\n flatlistRef.current?.scrollToIndex({ index: 0 })\n }\n }, [ScrollToTopC])\n\n return (\n \n \n \n )\n}\n\ninterface IInnerListComponentProps {\n isScrolled: boolean\n flatlistRef: RefObject>\n viewabilityConfigCallbackPairs: MutableRefObject\n onScroll: (event: NativeSyntheticEvent) => void\n setCreatedBefore: (date: string) => void\n}\n\nfunction InnerListComponent({\n isScrolled,\n flatlistRef,\n viewabilityConfigCallbackPairs,\n onScroll,\n setCreatedBefore,\n}: IInnerListComponentProps) {\n const { articles, isLoading, total, setCount, setIsRefreshable } =\n useContext(ArticlesContext)\n const { height } = useContext(ScreenSizeContext)\n const [isRefreshing, setRefreshing] = useState(false)\n const { unreadItems, refresh } = useContext(UnreadContext)\n\n useEffect(() => {\n setIsRefreshable(!isScrolled)\n }, [isScrolled])\n\n useEffect(() => {\n if (isRefreshing) refresh()\n }, [isRefreshing])\n\n return (\n `${article.ArticleId}`}\n onEndReached={() => {\n if (!articles.length || total <= articles.length) return\n\n setCount(articles.length)\n }}\n onEndReachedThreshold={0.5}\n onScroll={onScroll}\n viewabilityConfigCallbackPairs={viewabilityConfigCallbackPairs.current}\n refreshControl={\n {\n setRefreshing(true)\n setTimeout(() => {\n setCreatedBefore(now().toISOString())\n setRefreshing(false)\n }, refreshDelayTime)\n }}\n />\n }\n renderItem={({ item }) => {\n return (\n <>\n \n {/** This line used to be \"total === articles.indexOf(item) + 1\" */}\n {articles.length === articles.indexOf(item) + 1 && (\n \n )}\n \n )\n }}\n ListEmptyComponent={\n isLoading ? null : (\n \n Nincs a keresési feltételeknek megfelelő cikk\n \n )\n }\n />\n )\n}\n","import React, { FC, useRef } from 'react'\nimport { StyleSheet, TextInput, View } from 'react-native'\n\nimport { ArticleTabParamProps } from '../types'\nimport { FiltersConsumer } from '../context'\nimport { ListComponent } from '../components/ListComponent'\nimport { useDebounce } from '../utils'\nimport Colors from '../constants/Colors'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport { TouchableOpacity } from 'react-native-gesture-handler'\nimport { UnreadProvider } from '../context/unread.context'\n\nconst styles = StyleSheet.create({\n view: {\n flex: 1,\n backgroundColor: Colors.white,\n },\n sectionStyle: {\n flexDirection: 'row',\n height: 33,\n margin: 13,\n borderRadius: 50,\n borderColor: Colors.oxfordBlue,\n borderWidth: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n inputStyle: {\n flex: 1,\n color: Colors.oxfordBlue,\n paddingHorizontal: 10,\n outlineStyle: 'none',\n },\n icon: {\n paddingLeft: 5,\n paddingRight: 5,\n },\n})\nexport const SearchScreen: FC> = ({\n navigation,\n}) => {\n const [SearchText, setSearchText] = useDebounce('', 500)\n const searchInput = useRef()\n\n return (\n \n \n \n setSearchText(text)}\n placeholder=\"Keresés\"\n placeholderTextColor={Colors.oxfordBlue + 95}\n autoCapitalize=\"none\"\n keyboardType=\"default\"\n returnKeyType=\"next\"\n blurOnSubmit={false}\n />\n {!!SearchText && (\n {\n searchInput.current.clear()\n setSearchText('')\n }}\n >\n \n \n )}\n \n \n {({ SourceTag, ContentTag }) => {\n return (\n \n )\n }}\n \n \n )\n}\n","import React, { useContext, useEffect, useState } from 'react'\nimport { View, StyleSheet } from 'react-native'\n\nimport { ArticleTabParamProps } from '../types'\nimport { ListComponent } from '../components/ListComponent'\nimport { UserContext } from '../context'\nimport { useIsFocused } from '@react-navigation/native'\nimport { Spinner } from '../components/Spinner'\nimport Colors from '../constants/Colors'\nimport { UnreadProvider } from '../context/unread.context'\n\nconst styles = StyleSheet.create({\n view: {\n flex: 1,\n backgroundColor: Colors.white,\n },\n})\nexport const FavoritesScreen: React.FC> = ({\n navigation,\n}) => {\n const { user, isLoading } = useContext(UserContext)\n const [ArticleIds, setArticleIds] = useState>(\n user.BookmarkedNews\n )\n const isFocused = useIsFocused()\n useEffect(() => {\n if (!isFocused) return\n if (user.BookmarkedNews.length) setArticleIds(user.BookmarkedNews)\n else setArticleIds([''])\n }, [isFocused])\n return (\n \n \n\n \n \n )\n}\n","import React, { FunctionComponent } from 'react'\nimport { View, StyleSheet, Pressable } from 'react-native'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport Colors from '../constants/Colors'\n\nexport interface IBottomNavigationBarProps {\n state: any\n descriptors: any\n navigation: any\n}\n\nconst styles = StyleSheet.create({\n bottomNavigationBar: {\n flexDirection: 'row',\n marginBottom: 12,\n padding: 5,\n height: 50,\n width: 150,\n alignSelf: 'center',\n backgroundColor: Colors.transparentOxfordBlue,\n borderRadius: 200,\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n bottom: 0,\n },\n icon: {\n padding: 1,\n borderBottomWidth: 2,\n },\n iconWrap: {\n marginHorizontal: 10,\n },\n})\n\nconst checkWithRootSearchFavorites = (item: string) =>\n item === 'Root' ||\n item === 'Search' ||\n item === 'Favorites' ||\n item === 'AnalysisRoot' ||\n item === 'AnalysisSearch' ||\n item === 'AnalysisFavorites'\n\nexport const BottomNavigationBar: FunctionComponent<\n IBottomNavigationBarProps\n> = (props) => {\n const { state, descriptors, navigation } = props\n return checkWithRootSearchFavorites(state.routes[state.index].name) ? (\n \n {state.routes.map((route: any, index: any) => {\n const { options } = descriptors[route.key]\n const isFocused = state.index === index\n\n const onPress = () => {\n const event = navigation.emit({\n type: 'tabPress',\n target: route.key,\n canPreventDefault: true,\n })\n\n if (!isFocused && !event.defaultPrevented) {\n navigation.navigate({ name: route.name, merge: true })\n } else if (\n isFocused &&\n (route.name === 'Root' || route.name === 'AnalysisRoot')\n ) {\n navigation.setParams({\n ScrollToTop: true,\n })\n }\n }\n\n return (\n checkWithRootSearchFavorites(route.name) && (\n \n \n \n \n \n )\n )\n })}\n \n ) : (\n <>\n )\n}\n","import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\n\nimport { ArticleTabParamProps } from '../types'\nimport { FiltersConsumer } from '../context'\nimport { ListComponent } from '../components/ListComponent'\nimport Colors from '../constants/Colors'\n\nconst styles = StyleSheet.create({\n view: {\n flex: 1,\n backgroundColor: Colors.white,\n },\n})\nexport const ListScreen: React.FC> = ({\n navigation,\n}) => {\n return (\n \n \n {({ SourceTag, ContentTag }) => {\n return (\n \n )\n }}\n \n \n )\n}\n","import React, { FC } from 'react'\nimport { useEffect } from 'react'\nimport { useRef } from 'react'\nimport { useState } from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { Spinner } from '../components/Spinner'\nimport { apiUrl, httpRegexp } from '../constants/Config'\nimport { RootStackScreenProps } from '../types'\nimport { path } from '../utils'\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n})\n\nexport const getPDFUri = (uri: string): string => {\n uri = uri || ''\n return httpRegexp.test(uri) ? uri : path.join([apiUrl, uri])\n}\n\nexport const PDFReaderScreen: FC> = (\n props\n) => {\n const [isPDFLoading, setPDFLoading] = useState(true)\n const source = props.route.params\n const PDFuri = getPDFUri(source.Uri)\n const PDFJSuri = `${apiUrl}/pdfjs/viewer.html?file=${PDFuri}`\n return (\n \n \n {\n setPDFLoading(false)\n }}\n >\n \n )\n}\n","import _ from 'lodash'\nimport React, {\n JSXElementConstructor,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n Dimensions,\n FlatList,\n I18nManager,\n Keyboard,\n KeyboardEvent,\n Modal,\n StyleSheet,\n Text,\n TouchableHighlight,\n TouchableWithoutFeedback,\n View,\n ViewStyle,\n StatusBar,\n ScrollView,\n} from 'react-native'\nimport type {\n StyleProp,\n TextStyle,\n TextProps,\n ImageStyle,\n FlatListProps,\n} from 'react-native'\n\nexport type IDropdownRef = {\n open: () => void\n close: () => void\n}\n\nexport interface DropdownProps {\n ref?:\n | React.RefObject\n | React.MutableRefObject\n | null\n | undefined\n testID?: string\n itemTestIDField?: string\n style?: StyleProp\n containerStyle?: StyleProp\n placeholderStyle?: StyleProp\n selectedTextStyle?: StyleProp\n selectedTextProps?: TextProps\n itemContainerStyle?: StyleProp\n itemTextStyle?: StyleProp\n inputSearchStyle?: StyleProp\n iconStyle?: StyleProp\n maxHeight?: number\n minHeight?: number\n fontFamily?: string\n iconColor?: string\n activeColor?: string\n data: T[]\n value?: T | string | null | undefined\n placeholder?: string\n labelField: keyof T\n valueField: keyof T\n searchField?: keyof T\n search?: boolean\n searchPlaceholder?: string\n disable?: boolean\n autoScroll?: boolean\n showsVerticalScrollIndicator?: boolean\n dropdownPosition?: 'auto' | 'top' | 'bottom'\n flatListProps?: Omit, 'renderItem' | 'data'>\n keyboardAvoiding?: boolean\n backgroundColor?: string\n confirmSelectItem?: boolean\n accessibilityLabel?: string\n itemAccessibilityLabelField?: string\n inverted?: boolean\n mode?: 'default' | 'modal'\n onChange: (item: T) => void\n renderLeftIcon?: (visible?: boolean) => JSX.Element | null | undefined\n renderRightIcon?: (visible?: boolean) => JSX.Element | null | undefined\n renderItem?: (item: T, selected?: boolean) => JSX.Element | null | undefined\n renderInputSearch?: (\n onSearch: (text: string) => void\n ) => JSX.Element | null | undefined\n onFocus?: () => void\n onBlur?: () => void\n searchQuery?: (keyword: string, labelValue: string) => boolean\n onChangeText?: (search: string) => void\n onConfirmSelectItem?: (item: T) => void\n scrollable?: boolean\n}\n\nconst statusBarHeight: number = StatusBar.currentHeight || 0\n\nconst DropdownComponent: (\n props: DropdownProps\n) => ReactElement> | null =\n React.forwardRef((props, currentRef) => {\n const {\n testID,\n itemTestIDField,\n onChange,\n style = {},\n containerStyle,\n placeholderStyle,\n selectedTextStyle,\n itemContainerStyle,\n itemTextStyle,\n selectedTextProps = {},\n data = [],\n labelField,\n valueField,\n value,\n activeColor = '#F6F7F8',\n fontFamily,\n placeholder = 'Select item',\n maxHeight = 340,\n minHeight = 0,\n disable = false,\n keyboardAvoiding = true,\n inverted = true,\n renderLeftIcon,\n renderRightIcon = () => null,\n renderItem,\n onFocus,\n onBlur,\n autoScroll = true,\n showsVerticalScrollIndicator = true,\n dropdownPosition = 'auto',\n flatListProps,\n backgroundColor,\n onChangeText,\n confirmSelectItem,\n onConfirmSelectItem,\n accessibilityLabel,\n itemAccessibilityLabelField,\n mode = 'default',\n scrollable,\n } = props\n\n const ref = useRef(null)\n const refList = useRef(null)\n const [visible, setVisible] = useState(false)\n const [currentValue, setCurrentValue] = useState(null)\n const [listData, setListData] = useState(data)\n const [position, setPosition] = useState()\n const [keyboardHeight, setKeyboardHeight] = useState(0)\n\n const { width: W, height: H } = Dimensions.get('window')\n const styleContainerVertical: ViewStyle = useMemo(() => {\n return {\n backgroundColor: 'rgba(0,0,0,0.1)',\n alignItems: 'center',\n }\n }, [])\n const styleHorizontal: ViewStyle = useMemo(() => {\n return {\n width: '100%',\n alignSelf: 'center',\n }\n }, [W])\n\n useImperativeHandle(currentRef, () => {\n return { open: eventOpen, close: eventClose }\n })\n\n useEffect(() => {\n setListData([...data])\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data])\n\n const eventOpen = () => {\n if (!disable) {\n setVisible(true)\n if (onFocus) {\n onFocus()\n }\n\n scrollIndex()\n }\n }\n\n const eventClose = useCallback(() => {\n if (!disable) {\n setVisible(false)\n if (onBlur) {\n onBlur()\n }\n }\n }, [disable, onBlur])\n\n const font = useCallback(() => {\n if (fontFamily) {\n return {\n fontFamily: fontFamily,\n }\n } else {\n return {}\n }\n }, [fontFamily])\n\n const _measure = useCallback(() => {\n if (ref && ref?.current) {\n ref.current.measureInWindow((pageX, pageY, width, height) => {\n const isFull = mode === 'modal'\n const top = isFull ? 20 : height + pageY + 2\n const bottom = H - top + height\n const left = I18nManager.isRTL ? W - width - pageX : pageX\n\n setPosition({\n isFull,\n width: Math.floor(width),\n top: Math.floor(top + statusBarHeight),\n bottom: Math.floor(bottom - statusBarHeight),\n left: Math.floor(left),\n height: Math.floor(height),\n })\n })\n }\n }, [H, W, mode])\n\n const onKeyboardDidShow = useCallback(\n (e: KeyboardEvent) => {\n _measure()\n setKeyboardHeight(e.endCoordinates.height)\n },\n [_measure]\n )\n\n const onKeyboardDidHide = useCallback(() => {\n setKeyboardHeight(0)\n _measure()\n }, [_measure])\n\n useEffect(() => {\n const susbcriptionKeyboardDidShow = Keyboard.addListener(\n 'keyboardDidShow',\n onKeyboardDidShow\n )\n const susbcriptionKeyboardDidHide = Keyboard.addListener(\n 'keyboardDidHide',\n onKeyboardDidHide\n )\n\n return () => {\n if (typeof susbcriptionKeyboardDidShow?.remove === 'function') {\n susbcriptionKeyboardDidShow.remove()\n }\n\n if (typeof susbcriptionKeyboardDidHide?.remove === 'function') {\n susbcriptionKeyboardDidHide.remove()\n }\n }\n }, [onKeyboardDidHide, onKeyboardDidShow])\n\n const getValue = useCallback(() => {\n const defaultValue =\n typeof value === 'object' ? _.get(value, valueField) : value\n\n const getItem = data.filter((e) =>\n _.isEqual(defaultValue, _.get(e, valueField))\n )\n\n if (getItem.length > 0) {\n setCurrentValue(getItem[0])\n } else {\n setCurrentValue(null)\n }\n }, [data, value, valueField])\n\n useEffect(() => {\n getValue()\n }, [value, data, getValue])\n\n const scrollIndex = useCallback(() => {\n if (autoScroll && data.length > 0 && listData.length === data.length) {\n setTimeout(() => {\n if (refList && refList?.current) {\n const defaultValue =\n typeof value === 'object' ? _.get(value, valueField) : value\n\n const index = _.findIndex(listData, (e: any) =>\n _.isEqual(defaultValue, _.get(e, valueField))\n )\n if (index > -1 && index <= listData.length - 1) {\n refList?.current?.scrollToIndex({\n index: index,\n animated: false,\n })\n }\n }\n }, 200)\n }\n }, [autoScroll, data.length, listData, value, valueField])\n\n const showOrClose = useCallback(() => {\n if (!disable) {\n if (keyboardHeight > 0 && visible) {\n return Keyboard.dismiss()\n }\n\n _measure()\n setVisible(!visible)\n setListData(data)\n\n if (!visible) {\n if (onFocus) {\n onFocus()\n }\n } else {\n if (onBlur) {\n onBlur()\n }\n }\n scrollIndex()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disable,\n keyboardHeight,\n visible,\n _measure,\n data,\n scrollIndex,\n onFocus,\n onBlur,\n ])\n\n const onSelect = useCallback(\n (item: any) => {\n if (confirmSelectItem && onConfirmSelectItem) {\n return onConfirmSelectItem(item)\n }\n\n if (onChangeText) {\n onChangeText('')\n }\n setCurrentValue(item)\n onChange(item)\n eventClose()\n },\n [\n confirmSelectItem,\n eventClose,\n onChange,\n onChangeText,\n onConfirmSelectItem,\n ]\n )\n\n const _renderDropdown = () => {\n const isSelected = currentValue && _.get(currentValue, valueField)\n return (\n \n \n {renderLeftIcon?.(visible)}\n \n {isSelected !== null\n ? _.get(currentValue, labelField)\n : placeholder}\n \n {renderRightIcon(visible)}\n \n \n )\n }\n\n const _renderItem = useCallback(\n ({ item, index }: { item: any; index: number }) => {\n const isSelected = currentValue && _.get(currentValue, valueField)\n const selected = _.isEqual(_.get(item, valueField), isSelected)\n _.assign(item, { _index: index })\n return (\n onSelect(item)}\n >\n \n {renderItem ? (\n renderItem(item, selected)\n ) : (\n \n \n {_.get(item, labelField)}\n \n \n )}\n \n \n )\n },\n [\n accessibilityLabel,\n activeColor,\n currentValue,\n font,\n itemAccessibilityLabelField,\n itemContainerStyle,\n itemTestIDField,\n itemTextStyle,\n labelField,\n onSelect,\n renderItem,\n valueField,\n ]\n )\n\n const _renderList = useCallback(\n (isTopPosition: boolean) => {\n const isInverted = !inverted ? false : isTopPosition\n\n const _renderListHelper = () => {\n return (\n index.toString()}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n />\n )\n }\n\n return (\n \n \n {isInverted && _renderListHelper()}\n {!isInverted && _renderListHelper()}\n \n \n )\n },\n [\n _renderItem,\n accessibilityLabel,\n flatListProps,\n listData,\n inverted,\n scrollIndex,\n showsVerticalScrollIndicator,\n testID,\n ]\n )\n\n const _renderModal = useCallback(() => {\n if (visible && position) {\n const { isFull, width, height, top, bottom, left } = position\n\n const onAutoPosition = () => {\n if (keyboardHeight > 0) {\n return bottom < keyboardHeight + height\n }\n\n return bottom < 100\n }\n\n if (width && top && bottom) {\n const styleVertical: ViewStyle = {\n left: left,\n maxHeight: maxHeight,\n minHeight: minHeight,\n }\n const isTopPosition =\n dropdownPosition === 'auto'\n ? onAutoPosition()\n : dropdownPosition === 'top'\n\n let keyboardStyle: ViewStyle = {}\n\n let extendHeight = !isTopPosition ? top : bottom\n if (\n keyboardAvoiding &&\n keyboardHeight > 0 &&\n isTopPosition &&\n dropdownPosition === 'auto'\n ) {\n extendHeight = keyboardHeight\n }\n\n return (\n \n \n \n \n \n {_renderList(isTopPosition)}\n \n \n \n \n \n )\n }\n return null\n }\n return null\n }, [\n visible,\n position,\n keyboardHeight,\n maxHeight,\n minHeight,\n dropdownPosition,\n keyboardAvoiding,\n showOrClose,\n styleContainerVertical,\n backgroundColor,\n containerStyle,\n styleHorizontal,\n _renderList,\n ])\n\n return (\n \n {_renderDropdown()}\n {_renderModal()}\n \n )\n })\n\nfunction ListWrapper({\n scrollable,\n ...props\n}: {\n scrollable: boolean\n style: StyleProp\n children: ReactNode\n}) {\n if (scrollable) return \n return \n}\n\nexport default DropdownComponent\n\nexport const styles = StyleSheet.create({\n mainWrap: {\n justifyContent: 'center',\n },\n container: {\n flexShrink: 1,\n borderWidth: 0.5,\n borderColor: '#EEEEEE',\n backgroundColor: 'white',\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.2,\n shadowRadius: 1.41,\n elevation: 2,\n },\n flex1: {\n flex: 1,\n },\n flexShrink: {\n flexShrink: 1,\n },\n wrapTop: {\n justifyContent: 'flex-end',\n },\n dropdown: {\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: 35,\n },\n title: {\n marginVertical: 5,\n fontSize: 16,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n item: {\n padding: 17,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n textItem: {\n flex: 1,\n fontSize: 16,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n icon: {\n width: 20,\n height: 20,\n },\n input: {\n borderWidth: 0.5,\n borderColor: '#DDDDDD',\n paddingHorizontal: 8,\n marginBottom: 8,\n margin: 6,\n height: 45,\n },\n fullScreen: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n","import React, { FunctionComponent, useEffect, useState } from 'react'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport { View, Text, StyleSheet } from 'react-native'\nimport { BottomTabNavigationProp } from '@react-navigation/bottom-tabs'\n\nimport Colors from '../constants/Colors'\nimport { ITag } from '../api/tags/tags.types'\nimport { SourceTagsConsumer } from '../context'\nimport { ParamListBase } from '@react-navigation/native'\nimport { NativeStackNavigationProp } from '@react-navigation/native-stack'\nimport DropdownComponent from './DropdownComponent'\n\nexport interface IDropdownListProps {\n navigation:\n | BottomTabNavigationProp\n | NativeStackNavigationProp\n}\n\nconst ALL_SOURCES = 'Minden forrás'\nconst LINE_HEIGHT = 33\nconst MAX_LINES = 10\n\nconst styles = StyleSheet.create({\n dropdown: {\n height: 24,\n width: 170,\n marginRight: 13,\n },\n placeholder: {\n color: Colors.orangeWeb,\n fontSize: 16,\n marginLeft: 8,\n marginRight: 8,\n },\n dropdownContainer: {\n alignSelf: 'flex-start',\n width: 146,\n borderColor: Colors.oxfordBlue,\n borderBottomStartRadius: 10,\n borderBottomEndRadius: 10,\n },\n dropdownContainerTextWrap: {\n flex: 1,\n flexDirection: 'row',\n height: 25,\n margin: 8,\n },\n dropdownContainerText: {\n color: Colors.oxfordBlue,\n fontSize: 14,\n },\n selected: {\n fontFamily: 'Roboto_400Regular',\n width: '90%',\n },\n unselected: {\n fontFamily: 'Roboto_300Light',\n },\n})\n\nconst EmptySourceTag: ITag = {\n Type: 'source',\n Value: '',\n Title: 'Minden forrás',\n HasArticles: true,\n HasAnalyses: false,\n}\n\nconst renderRightIcon = () => (\n \n)\n\nexport const DropdownList: FunctionComponent = ({\n navigation,\n}) => {\n // States\n const [selected, setSelected] = useState('')\n\n useEffect(() => {\n navigation.setParams({ SourceTag: selected })\n }, [selected])\n\n const renderItem = (item: ITag) => {\n const isSelected = selected === item.Value\n return (\n \n \n {item.Title}\n \n {isSelected && }\n \n )\n }\n\n const onChange = (item: ITag) => {\n setSelected(selected === item.Value ? '' : item.Value)\n }\n\n return (\n \n {(sourceTags) => (\n \n \n \n )}\n \n )\n}\n","import React, { FunctionComponent } from 'react'\nimport { View, StyleSheet, Pressable, Text } from 'react-native'\nimport Colors from '../constants/Colors'\nimport { UnreadConsumer } from '../context/unread.context'\n\nexport interface INavbarIcon {\n name: string\n direction: string\n}\n\nexport interface INavbarIconButtonProps {\n navigation: any\n active: string\n side: keyof typeof navbarIcons\n}\n\nexport const navbarIcons: { left: INavbarIcon[]; right: INavbarIcon[] } = {\n left: [\n {\n name: 'article',\n direction: 'Home',\n },\n {\n name: 'query_stats',\n direction: 'Analysis',\n },\n ],\n right: [\n {\n name: 'settings',\n direction: 'Settings',\n },\n ],\n}\n\nconst styles = StyleSheet.create({\n iconWrapper: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n left: { justifyContent: 'flex-start', marginLeft: 7 },\n right: { justifyContent: 'flex-end', marginRight: 7 },\n})\n\nexport const NavbarIconButton: FunctionComponent = (\n props\n) => {\n const { navigation, active, side } = props\n return (\n \n {({ unreadItems }) => {\n return (\n \n {navbarIcons[side].map((icon, i) => {\n let unreadMessageCount = 0\n let backgroundWidth = 16\n let paddingRight = 0\n if (side === 'left') {\n unreadMessageCount =\n icon.direction === 'Home'\n ? unreadItems.unreadArticles.length\n : unreadItems.unreadAnalyses.length\n if (unreadMessageCount > 9) {\n backgroundWidth = unreadMessageCount < 100 ? 19 : 22\n paddingRight = unreadMessageCount < 100 ? 1.5 : 3\n }\n }\n return (\n navigation.navigate(icon.direction)}\n style={{ paddingRight }}\n >\n {unreadMessageCount > 0 && (\n \n \n {unreadMessageCount > 99 ? 99 : unreadMessageCount}\n \n \n +\n \n \n )}\n \n {icon.name}\n \n \n )\n })}\n \n )\n }}\n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { Pressable, StyleSheet, View, Linking } from 'react-native'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport { Text } from 'react-native-elements'\n\nimport Colors from '../constants/Colors'\nimport { getPDFUri } from '../screens/PDFReaderScreen'\nimport { IAnalysisSource } from '../api/analyses'\nimport { DropdownList } from './DropdownList'\nimport { NavbarIconButton, navbarIcons } from './NavbarIconButton'\n\nimport {\n NativeStackHeaderProps,\n NativeStackNavigationProp,\n} from '@react-navigation/native-stack'\nimport {\n BottomTabHeaderProps,\n BottomTabNavigationProp,\n} from '@react-navigation/bottom-tabs'\nimport { ParamListBase, Route, RouteProp } from '@react-navigation/native'\n\nconst titles: Record = {\n Root: '',\n Favorites: 'Kedvencek',\n Search: '',\n AnalysisRoot: 'Elemzések',\n AnalysisSearch: 'Keresés',\n AnalysisFavorites: 'Kedvencek',\n Settings: 'Beállítások',\n}\n\nconst setActiveState = (\n routeName: string,\n setActive: React.Dispatch>\n) => {\n if (\n routeName === 'AnalysisRoot' ||\n routeName === 'AnalysisSearch' ||\n routeName === 'AnalysisFavorites'\n ) {\n setActive('Analysis')\n } else if (\n routeName === 'Root' ||\n routeName === 'Search' ||\n routeName === 'Favorites'\n ) {\n setActive('Home')\n } else {\n setActive(routeName)\n }\n}\n\nconst setIsPDFScreenState = (\n routeName: string,\n setIsPDFScreen: React.Dispatch>\n) => {\n if (routeName === 'PDFReader') {\n setIsPDFScreen(true)\n } else {\n setIsPDFScreen(false)\n }\n}\n\nconst setIsDropdownVisibleState = (\n routeName: string,\n setIsDropdownVisible: React.Dispatch>\n) => {\n if (routeName === 'Root' || routeName === 'Search') {\n setIsDropdownVisible(true)\n } else {\n setIsDropdownVisible(false)\n }\n}\n\nconst setIsCanGoBackState = (\n routeName: string,\n setIsCanGoBack: React.Dispatch>\n) => {\n if (routeName in titles) {\n setIsCanGoBack(false)\n } else {\n setIsCanGoBack(true)\n }\n}\n\nconst iconHeaderSide = (\n navigation:\n | BottomTabNavigationProp\n | NativeStackNavigationProp,\n active: string,\n side: keyof typeof navbarIcons\n) => (\n \n \n \n)\n\nconst leftHeaderSideCanGoBack = (\n navigation:\n | BottomTabNavigationProp\n | NativeStackNavigationProp\n) => (\n {\n navigation.goBack()\n }}\n style={styles.narrowSide}\n >\n \n \n)\n\nconst rightHeaderSideCanGoBack = (\n route: Route | RouteProp,\n isPDFScreen: boolean\n) =>\n isPDFScreen ? (\n {\n Linking.openURL(getPDFUri((route?.params as IAnalysisSource).Uri))\n }}\n style={styles.narrowSide}\n >\n \n \n ) : (\n \n )\n\nexport const HeaderComponent: React.FC<\n NativeStackHeaderProps | BottomTabHeaderProps\n> = (props) => {\n const { navigation, route, options } = props\n if (!navigation.canGoBack) return null\n const SourceName = (route?.params as ParamListBase)?.SourceName\n const [active, setActive] = useState('')\n const [isCanGoBack, setIsCanGoBack] = useState(false)\n const [isPDFScreen, setIsPDFScreen] = useState(false)\n const [isDropdownVisible, setIsDropdownVisible] = useState(false)\n\n useEffect(() => {\n setActiveState(route.name, setActive)\n setIsPDFScreenState(route.name, setIsPDFScreen)\n setIsDropdownVisibleState(route.name, setIsDropdownVisible)\n setIsCanGoBackState(route.name, setIsCanGoBack)\n }, [route])\n\n return (\n \n {isCanGoBack\n ? leftHeaderSideCanGoBack(navigation)\n : iconHeaderSide(navigation, active, 'left')}\n \n \n {isDropdownVisible ? (\n \n ) : (\n titles[route.name] || SourceName || options.headerTitle || ''\n )}\n \n \n {isCanGoBack\n ? rightHeaderSideCanGoBack(route, isPDFScreen)\n : iconHeaderSide(navigation, active, 'right')}\n \n )\n}\n\nconst styles = StyleSheet.create({\n screenOptionsHeader: {\n height: 50,\n minHeight: 50,\n maxHeight: 50,\n backgroundColor: Colors.oxfordBlue,\n alignItems: 'center',\n flexDirection: 'row',\n },\n screenOptionsHeaderTitle: {\n color: Colors.orangeWeb,\n fontFamily: 'Roboto_500Medium',\n fontSize: 18,\n textAlign: 'center',\n },\n view: { flex: 1 },\n icon: {\n marginLeft: 13,\n marginRight: 6,\n },\n narrowSide: { minWidth: 50 },\n wideSide: { minWidth: 80 },\n})\n","import React, { FunctionComponent } from 'react'\nimport { createBottomTabNavigator } from '@react-navigation/bottom-tabs'\n\nimport { TopTabNavigator } from './TopTabNavigator'\nimport { SearchScreen } from '../screens/SearchScreen'\nimport { FavoritesScreen } from '../screens/FavoritesScreen'\n\nimport { BottomNavigationBar } from '../components/BottomNavigationBar'\n\nimport { RootTabParamList } from '../types'\nimport { ListScreen } from '../screens/ListScreen'\nimport { HeaderComponent } from '../components/HeaderComponent'\n\nexport interface IRootNavigatorProps {}\nconst BottomTab = createBottomTabNavigator()\n\nexport const RootNavigator: FunctionComponent = () => {\n return (\n }\n screenOptions={{\n header: (props) => ,\n }}\n >\n \n {(props) => (\n \n \n \n )}\n \n \n {(props) => (\n \n \n \n )}\n \n \n \n )\n}\n","import React, { useContext, useEffect, useState } from 'react'\nimport { Modal, StyleSheet, View, Text, Pressable } from 'react-native'\nimport Colors from '../constants/Colors'\nimport { UserContext } from '../context'\n\nexport interface IProfileDeleteProps {\n modalVisible: boolean\n setModalVisible: (arg0: boolean) => void\n}\n\nexport interface IProfileDeleteState {\n question: string\n onSubmit: () => void\n canSubmit: boolean\n}\n\nconst styles = StyleSheet.create({\n centeredView: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n modalView: {\n padding: 20,\n backgroundColor: 'white',\n borderRadius: 10,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 5,\n },\n modalText: {\n marginBottom: 10,\n textAlign: 'center',\n },\n text: {\n alignContent: 'center',\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 15,\n marginBottom: 20,\n },\n buttonView: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n },\n buttonTextCancel: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 13,\n },\n buttonTextContinue: {\n color: Colors.white,\n fontFamily: 'Roboto_400Regular',\n fontSize: 13,\n },\n buttonCancel: {\n marginLeft: 5,\n padding: 10,\n width: 'fit-content',\n alignItems: 'center',\n },\n buttonContinue: {\n marginLeft: 10,\n padding: 5,\n paddingHorizontal: 15,\n width: 'fit-content',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: Colors.oxfordBlue,\n borderRadius: 5,\n },\n})\n\nexport default function ProfileDeleteModal({\n modalVisible,\n setModalVisible,\n}: IProfileDeleteProps) {\n const { setDidUnsubscribe, user } = useContext(UserContext)\n const [state, setState] = useState({\n question: '',\n onSubmit: () => {},\n canSubmit: false,\n })\n useEffect(() => {\n if (!user.DidUnsubscribe)\n setState({\n question: 'Biztosan törölni szeretnéd az előfizetésedet?',\n onSubmit: () => setDidUnsubscribe(true),\n canSubmit: true,\n })\n else {\n setState({\n question:\n 'Ön nem rendelkezik valid előfizetéssel, kérjük lépjen kapcsolatba ügyfélszolgálatunkkal!',\n onSubmit: () => {},\n canSubmit: false,\n })\n }\n }, [user.DidUnsubscribe])\n const cancelButton = 'Mégse'\n const continueButton = 'Tovább'\n\n return (\n \n {\n setModalVisible(!modalVisible)\n }}\n >\n \n \n {state.question}\n \n setModalVisible(false)}\n >\n {cancelButton}\n \n {state.canSubmit && (\n {\n state.onSubmit()\n setModalVisible(false)\n }}\n >\n \n {continueButton}\n \n \n )}\n \n \n \n \n \n )\n}\n","import React from 'react'\nimport { Modal, StyleSheet, View, Text, Pressable } from 'react-native'\nimport Colors from '../constants/Colors'\n\nexport interface IConfirmationModalProps {\n isVisible: boolean\n setVisible: (arg0: boolean) => void\n onSubmit: () => void\n text: string\n cancelText?: string\n submitText?: string\n}\n\nconst styles = StyleSheet.create({\n centeredView: {\n paddingHorizontal: 20,\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n modalView: {\n padding: 20,\n backgroundColor: 'white',\n borderRadius: 10,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 5,\n },\n modalText: {\n marginBottom: 10,\n textAlign: 'center',\n },\n text: {\n alignContent: 'center',\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 15,\n marginBottom: 20,\n },\n buttonView: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n },\n buttonTextCancel: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 13,\n },\n buttonTextContinue: {\n color: Colors.white,\n fontFamily: 'Roboto_400Regular',\n fontSize: 13,\n },\n buttonCancel: {\n marginLeft: 5,\n padding: 10,\n width: 'fit-content',\n alignItems: 'center',\n },\n buttonContinue: {\n marginLeft: 10,\n padding: 5,\n paddingHorizontal: 15,\n width: 'fit-content',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: Colors.oxfordBlue,\n borderRadius: 5,\n },\n})\n\nexport default function ConfirmationModalModal({\n isVisible,\n setVisible,\n onSubmit,\n text,\n cancelText = 'Mégse',\n submitText = 'Tovább',\n}: IConfirmationModalProps) {\n return (\n \n {\n setVisible(!isVisible)\n }}\n >\n \n \n {text}\n \n setVisible(false)}\n >\n {cancelText}\n \n {\n setVisible(false)\n onSubmit()\n }}\n >\n {submitText}\n \n \n \n \n \n \n )\n}\n","import React, { FC, useContext, useEffect, useState } from 'react'\nimport { View, Text, StyleSheet, Pressable } from 'react-native'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport ProfileDeleteModal from '../components/ProfileDeleteModal'\nimport Colors from '../constants/Colors'\nimport { UserContext } from '../context'\nimport JSON from '../package.json'\nimport { RootStackScreenProps } from '../types'\nimport { Spinner } from '../components/Spinner'\nimport ConfirmationModalModal from '../components/ConfirmationModal'\nimport { ScreenSizeConsumer } from '../context/screen-size.context'\n\nconst styles = StyleSheet.create({\n containerView: {\n backgroundColor: Colors.white,\n },\n headerView: {\n height: 40,\n backgroundColor: Colors.platinum,\n alignItems: 'flex-start',\n justifyContent: 'center',\n },\n headerText: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_500Medium',\n fontSize: 17,\n marginHorizontal: 13,\n },\n view: {\n height: 50,\n alignItems: 'center',\n justifyContent: 'space-between',\n flexDirection: 'row',\n },\n viewSplit: {\n borderBottomWidth: 1,\n borderBottomColor: Colors.platinum,\n },\n text: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 15,\n marginHorizontal: 13,\n },\n icon: {\n marginHorizontal: 13,\n },\n info: {\n marginHorizontal: 13,\n fontSize: 14,\n fontFamily: 'Roboto_300Light',\n color: Colors.oxfordBlue,\n },\n})\n\nconst enum ConfirmationModalType {\n MarkAllRead,\n Logout,\n}\n\nexport const SettingsScreen: FC> = (props) => {\n const { navigation } = props\n const { user, isLoading, logout, setMarkAllRead, userUnreadMessages } =\n useContext(UserContext)\n const [isConfirmationModalVisible, setIsConfirmationModalVisible] =\n useState(false)\n const [confirmationModalType, setConfirmationModalType] = useState(\n ConfirmationModalType.Logout\n )\n const confirmationModalProps = {\n [ConfirmationModalType.MarkAllRead]: {\n onSubmit: () => setMarkAllRead(),\n text: 'Biztosan minden cikket, elemzést olvasottá teszel?',\n submitText: 'Igen',\n },\n [ConfirmationModalType.Logout]: {\n onSubmit: () => logout(),\n text: 'Biztosan ki szeretnél jelentkezni?',\n submitText: 'Tovább',\n },\n }\n const [deleteModalVisible, setDeleteModalVisible] = useState(false)\n const [isUnreadMessagesZero, setIsUnreadMessagesZero] = useState(true)\n\n useEffect(() => {\n const isUnreadCountZero =\n !userUnreadMessages.unreadAnalysesCount &&\n !userUnreadMessages.unreadArticlesCount\n if (isUnreadCountZero) setIsUnreadMessagesZero(true)\n else setIsUnreadMessagesZero(false)\n }, [userUnreadMessages])\n\n return (\n \n {({ height }) => (\n \n \n navigation.navigate('Categories')}\n >\n Kategóriák\n navigation.navigate('Categories')}\n style={styles.icon}\n />\n \n navigation.navigate('PreferredLanguage')}\n >\n Cikkek elsődleges nyelve\n navigation.navigate('PreferredLanguage')}\n style={styles.icon}\n />\n \n navigation.navigate('Notification')}\n >\n Értesítések\n navigation.navigate('Notification')}\n style={styles.icon}\n />\n \n {\n setConfirmationModalType(ConfirmationModalType.MarkAllRead)\n setIsConfirmationModalVisible(true)\n }}\n disabled={isUnreadMessagesZero}\n >\n \n Minden cikk, elemzés elolvasása\n \n \n \n \n Verzió\n v{JSON.version}\n \n \n E-mail\n {user?.Email}\n \n {\n setDeleteModalVisible(true)\n }}\n >\n Előfizetés törlése\n \n \n {\n setConfirmationModalType(ConfirmationModalType.Logout)\n setIsConfirmationModalVisible(true)\n }}\n >\n Kijelentkezés\n \n \n \n \n \n )}\n \n )\n}\n","import React, { FC } from 'react'\nimport { View } from 'react-native'\nimport { Text } from 'react-native-elements'\nimport { RootStackScreenProps } from '../types'\n\nexport const HelpScreen: FC> = () => {\n return (\n \n I am a placeholder for the help screen\n \n )\n}\n","import React, { FC } from 'react'\nimport { StyleSheet, TouchableOpacity } from 'react-native'\nimport { Text, View } from '../components/Themed'\n\nimport { RootStackScreenProps } from '../types'\n\nexport const NotFoundScreen: FC> = ({\n navigation,\n}) => {\n return (\n \n This screen doesn't exist.\n navigation.replace('Home' as any)}\n style={styles.link}\n >\n Go to home screen!\n \n \n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n padding: 20,\n },\n title: {\n fontSize: 20,\n fontWeight: 'bold',\n },\n link: {\n marginTop: 15,\n paddingVertical: 15,\n },\n linkText: {\n fontSize: 14,\n color: '#2e78b7',\n },\n})\n","import React, { FC } from 'react'\nimport { View, Text, StyleSheet, Pressable } from 'react-native'\nimport Colors from '../constants/Colors'\nimport { ContentTagsConsumer, UserConsumer } from '../context'\nimport { Switch } from 'react-native-switch'\nimport { PreferredTagsConsumer } from '../context/preferred-tags.context'\nimport { RootStackScreenProps } from '../types'\nimport { Spinner } from '../components/Spinner'\nimport { ScreenSizeConsumer } from '../context/screen-size.context'\n\nconst styles = StyleSheet.create({\n containerView: {\n backgroundColor: Colors.white,\n },\n view: {\n height: 50,\n alignItems: 'center',\n justifyContent: 'space-between',\n flexDirection: 'row',\n },\n viewSplit: {\n borderBottomWidth: 1,\n borderBottomColor: Colors.platinum,\n },\n text: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 15,\n marginHorizontal: 13,\n },\n switch: {\n marginHorizontal: 13,\n },\n})\n\nconst onPress = async (\n preferredTags: string | any[],\n setPreferredTags: (tags: string[]) => Promise,\n contentItem: { Value: any },\n fetchProfileUnreadMessages: () => Promise\n) => {\n const index = preferredTags.indexOf(contentItem.Value)\n if (index === -1) {\n await setPreferredTags([...preferredTags, contentItem.Value])\n } else {\n const tags = [...preferredTags]\n tags.splice(index, 1)\n await setPreferredTags(tags)\n }\n fetchProfileUnreadMessages()\n}\n\nexport const CategoriesScreen: FC> = () => {\n return (\n \n {({ height }) => (\n \n {({\n user,\n setPreferredTags,\n fetchProfileUnreadMessages,\n isLoading,\n }) => (\n \n {(tags) => {\n return (\n \n {({ tags: content, isLoading: tagsLoading }) => {\n return (\n \n \n {content?.map((contentItem, index) => {\n const value = tags\n .map((tag) => tag.Value)\n .includes(contentItem.Value)\n return (\n \n onPress(\n user.PreferredTags,\n setPreferredTags,\n contentItem,\n fetchProfileUnreadMessages\n )\n }\n >\n \n {contentItem.Title}\n \n \n onPress(\n user.PreferredTags,\n setPreferredTags,\n contentItem,\n fetchProfileUnreadMessages\n )\n }\n value={value}\n backgroundActive={Colors.orangeWeb + 30}\n backgroundInactive={Colors.oxfordBlue + 30}\n activeText=\"\"\n inActiveText=\"\"\n containerStyle={{\n marginHorizontal: 13,\n }}\n circleSize={16}\n barHeight={10}\n circleActiveColor={Colors.orangeWeb}\n circleInActiveColor={Colors.oxfordBlue}\n circleBorderWidth={0}\n switchWidthMultiplier={1.5}\n switchLeftPx={8}\n switchRightPx={8}\n />\n \n )\n })}\n \n )\n }}\n \n )\n }}\n \n )}\n \n )}\n \n )\n}\n","import React, { FC, useContext } from 'react'\nimport { View, StyleSheet, Pressable } from 'react-native'\nimport Colors from '../constants/Colors'\nimport { UserContext } from '../context'\nimport { RootStackScreenProps } from '../types'\nimport RadioForm, {\n RadioButton,\n RadioButtonInput,\n RadioButtonLabel,\n} from 'react-native-simple-radio-button'\nimport { Spinner } from '../components/Spinner'\nimport { ScreenSizeContext } from '../context/screen-size.context'\nimport { LanguagesContext } from '../context/languages.context'\nimport { defaultLanguage, ILanguage } from '../api/languages'\n\nconst styles = StyleSheet.create({\n containerView: {\n backgroundColor: Colors.white,\n },\n view: {\n height: 50,\n alignItems: 'center',\n justifyContent: 'space-between',\n flexDirection: 'row',\n marginBottom: '0px',\n },\n viewSplit: {\n borderBottomWidth: 1,\n borderBottomColor: Colors.platinum,\n },\n text: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 15,\n marginHorizontal: 13,\n },\n radio: {\n marginHorizontal: 13,\n },\n})\n\nconst onPress = (\n value: string,\n setPreferredLanguage: (arg0: string) => void\n) => {\n setPreferredLanguage(value)\n}\n\nexport const PreferredLanguageScreen: FC<\n RootStackScreenProps<'PreferredLanguage'>\n> = () => {\n const { height } = useContext(ScreenSizeContext)\n const { isLoading: isLanguageListLoading, languages } =\n useContext(LanguagesContext)\n const {\n user,\n setPreferredLanguage,\n isLoading: isUserLoading,\n } = useContext(UserContext)\n\n const isLoading = isUserLoading || isLanguageListLoading\n const radioButtonsData: { label: string; value: string }[] = [\n defaultLanguage,\n ...languages,\n ].map((language) => ({\n label: language.Name,\n value: language.Code,\n }))\n\n return (\n \n \n \n {radioButtonsData.map((data, i) => (\n onPress(data.value, setPreferredLanguage)}\n >\n \n onPress(value, setPreferredLanguage)}\n labelStyle={styles.text}\n />\n onPress(value, setPreferredLanguage)}\n buttonInnerColor={Colors.oxfordBlue}\n buttonOuterColor={Colors.oxfordBlue}\n buttonSize={8}\n buttonOuterSize={16}\n buttonWrapStyle={styles.radio}\n />\n \n \n ))}\n \n \n )\n}\n","import dayjs from 'dayjs'\nimport React, { useState } from 'react'\nimport { Modal, StyleSheet, View, Text, Pressable } from 'react-native'\nimport RadioForm, {\n RadioButton,\n RadioButtonInput,\n RadioButtonLabel,\n} from 'react-native-simple-radio-button'\nimport Colors from '../constants/Colors'\n\nexport interface ISnoozeProps {\n show: boolean\n setShow: (arg0: boolean) => void\n setSnoozeTime: (snoozeTime: string | Date | dayjs.Dayjs | null) => void\n}\n\nconst snoozeOptions = [\n {\n label: '15 percre',\n value: 15 * 60, // seconds\n },\n {\n label: '1 órára',\n value: 60 * 60, // seconds\n },\n {\n label: '8 órára',\n value: 8 * 60 * 60, // seconds\n },\n {\n label: '1 napra',\n value: 24 * 60 * 60, // seconds\n },\n {\n label: '1 hétre',\n value: 7 * 24 * 60 * 60, // seconds\n },\n]\n\nexport default function SnoozeModal({\n show,\n setShow,\n setSnoozeTime,\n}: ISnoozeProps) {\n const cancelButton = 'Mégse'\n const onPress = (snoozeTimeInSeconds: number) => {\n setShow(false)\n setSnoozeTime(dayjs().add(snoozeTimeInSeconds!, 'seconds'))\n }\n\n return (\n \n setShow(false)}\n >\n \n \n Értesítések szüneteltetése\n \n {snoozeOptions.map((data, index) => (\n onPress(data.value)}\n >\n \n onPress(value)}\n labelStyle={styles.text}\n />\n onPress(value)}\n buttonInnerColor={Colors.oxfordBlue}\n buttonOuterColor={Colors.oxfordBlue}\n buttonSize={8}\n buttonOuterSize={16}\n buttonWrapStyle={styles.radio}\n />\n \n \n ))}\n \n \n {\n setShow(false)\n setSnoozeTime(null)\n }}\n >\n {cancelButton}\n \n \n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n modalTitle: {\n color: Colors.oxfordBlue,\n fontSize: 15,\n marginBottom: 15,\n },\n centeredView: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n padding: 20,\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n modalView: {\n paddingTop: 20,\n paddingHorizontal: 20,\n paddingBottom: 10,\n backgroundColor: 'white',\n borderRadius: 10,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 5,\n },\n modalText: {\n marginBottom: 10,\n textAlign: 'center',\n },\n view: {\n height: 40,\n alignItems: 'center',\n justifyContent: 'space-between',\n flexDirection: 'row',\n marginBottom: 0,\n },\n viewSplit: {\n borderBottomWidth: 1,\n borderBottomColor: Colors.platinum,\n },\n radio: {\n marginHorizontal: 13,\n },\n text: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 14,\n },\n buttonView: {\n flexDirection: 'row',\n justifyContent: 'center',\n borderTopWidth: 1,\n borderTopColor: Colors.platinum,\n paddingTop: 10,\n },\n buttonTextCancel: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 15,\n },\n buttonCancel: {\n marginHorizontal: 10,\n paddingVertical: 10,\n width: '100%',\n alignItems: 'center',\n },\n})\n","import dayjs from 'dayjs'\n\nimport relativeTime from 'dayjs/plugin/relativeTime'\nimport utc from 'dayjs/plugin/utc'\nimport timezone from 'dayjs/plugin/timezone'\nimport 'dayjs/locale/hu'\n\ndayjs.extend(relativeTime)\ndayjs.extend(utc)\ndayjs.extend(timezone)\ndayjs.locale('hu')\n\nexport default dayjs\n","import React, { FC, useContext, useEffect, useState } from 'react'\nimport { View, StyleSheet, Text, Pressable } from 'react-native'\nimport { Switch } from 'react-native-switch'\nimport Colors from '../constants/Colors'\nimport { UserContext } from '../context'\nimport { RootStackScreenProps } from '../types'\nimport { Spinner } from '../components/Spinner'\nimport { useFocusEffect } from '@react-navigation/native'\nimport SnoozeModal from '../components/SnoozeModal'\nimport dayjs from '../utils/dayjs'\nimport { ScreenSizeConsumer } from '../context/screen-size.context'\n\nexport const NotificationScreen: FC<\n RootStackScreenProps<'Notification'>\n> = () => {\n const {\n user,\n setSnoozeTime: updateSnoozeTime,\n isLoading,\n fetchProfile,\n } = useContext(UserContext)\n\n const [snoozeTime, setSnoozeTime] = useState('')\n const [isSnoozed, setSnoozed] = useState(false)\n const [showAlert, setShowAlert] = useState(false)\n\n const snooze = (date: string | Date | dayjs.Dayjs | null) => {\n setSnoozed(!!date) // snoozed if there is value\n setSnoozeTime(date ? dayjs(date).format('MMM D, dddd HH:mm') : '')\n date && updateSnoozeTime(dayjs(date).format('YYYY-MM-DDTHH:mm:ssZ'))\n }\n\n useFocusEffect(\n React.useCallback(() => {\n return () => {\n fetchProfile()\n }\n }, [])\n )\n\n useEffect(() => {\n if (isLoading) return\n const date = dayjs.utc(user.SnoozeTime).local()\n snooze(date.isValid() ? date : '')\n }, [isLoading, user])\n\n return (\n \n {({ height }) => (\n \n setShowAlert(false)}\n setSnoozeTime={snooze}\n />\n \n \n {`Értesítések ${\n isSnoozed ? 'szüneteltetve' : 'bekapcsolva'\n }`}\n {\n if (isSnoozed) {\n updateSnoozeTime('')\n setSnoozed(false)\n setSnoozeTime('')\n } else {\n setShowAlert(true)\n setSnoozed(true)\n }\n }}\n value={!isSnoozed}\n backgroundActive={Colors.orangeWeb + 30}\n backgroundInactive={Colors.oxfordBlue + 30}\n activeText=\"\"\n inActiveText=\"\"\n containerStyle={{ marginHorizontal: 13 }}\n circleSize={16}\n barHeight={10}\n circleActiveColor={Colors.orangeWeb}\n circleInActiveColor={Colors.oxfordBlue}\n circleBorderWidth={0}\n switchWidthMultiplier={1.5}\n switchLeftPx={8}\n switchRightPx={8}\n />\n \n {snoozeTime && (\n \n Szüneteltetés vége\n {snoozeTime}\n \n )}\n \n )}\n \n )\n}\n\nconst styles = StyleSheet.create({\n containerView: {\n backgroundColor: Colors.white,\n },\n view: {\n height: 50,\n alignItems: 'center',\n justifyContent: 'space-between',\n flexDirection: 'row',\n marginBottom: '0px',\n },\n viewSplit: {\n borderBottomWidth: 1,\n borderBottomColor: Colors.platinum,\n },\n text: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 15,\n marginHorizontal: 13,\n },\n})\n","import React, { useEffect, useRef, useState, FunctionComponent } from 'react'\nimport {\n Text,\n StyleSheet,\n Pressable,\n ScrollView,\n View,\n Dimensions,\n} from 'react-native'\nimport Colors from '../constants/Colors'\n\nexport interface IAnalysisTopTabNavigationBarProps {\n state: any\n descriptors: any\n navigation: any\n}\n\nconst styles = StyleSheet.create({\n text: {\n width: 'max-content',\n alignSelf: 'center',\n position: 'relative',\n fontSize: 15,\n fontDisplay: 'block',\n marginVertical: 15,\n },\n pressable: { justifyContent: 'center' },\n hidden: {\n height: 0,\n maxHeight: 0,\n backgroundColor: Colors.white,\n },\n block: {\n height: 50,\n maxHeight: 50,\n backgroundColor: Colors.white,\n },\n})\n\nexport const AnalysisTopTabNavigationBar: FunctionComponent<\n IAnalysisTopTabNavigationBarProps\n> = (props) => {\n const { state, descriptors, navigation } = props\n const scrollView = useRef(null)\n const widthRefFirst = useRef(null)\n const widthRefLast = useRef(null)\n const [navPosition, setNavPosition] = useState(0)\n const [isFocused, setIsFocused] = useState(0)\n let scrollPosition = 0\n\n useEffect(() => {\n scrollView.current?.scrollTo({ x: navPosition })\n }, [navPosition])\n\n useEffect(() => {\n if (scrollView.current && isFocused !== state.index) {\n const parent = (scrollView.current as any).childNodes[0]\n const child = parent.children[state.index]\n const parentRect = parent.getBoundingClientRect()\n const childRect = child.getBoundingClientRect()\n const screenWidth = Dimensions.get('window').width\n const navPosition =\n childRect.left - parentRect.left - screenWidth / 2 + childRect.width / 2\n setNavPosition(navPosition)\n setIsFocused(state.index)\n }\n }, [state.index])\n\n return (\n \n {\n scrollPosition = event.nativeEvent.contentOffset.x\n }}\n scrollEventThrottle={0}\n removeClippedSubviews\n >\n {state.routes.map(\n (route: { key: string | number; name: any }, index: any) => {\n const { options } = descriptors[route.key]\n const label =\n options.tabBarLabel !== undefined\n ? options.tabBarLabel\n : options.title !== undefined\n ? options.title\n : route.name\n\n const isFocused = state.index === index\n\n const onPress = (event: any) => {\n const navigationEvent = navigation.emit({\n type: 'tabPress',\n target: route.key,\n canPreventDefault: true,\n })\n const { x, width } = event.target.getBoundingClientRect()\n const screenWidth = Dimensions.get('window').width\n\n setNavPosition(\n scrollPosition - (screenWidth / 2 - (x + width / 2))\n )\n setIsFocused(index)\n if (!isFocused && !navigationEvent.defaultPrevented) {\n navigation.navigate({ name: route.name, merge: true })\n }\n }\n\n return (\n \n \n {label.toUpperCase()}\n \n \n )\n }\n )}\n \n \n )\n}\n","import React, { FunctionComponent } from 'react'\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs'\nimport Colors from '../constants/Colors'\nimport { AnalysisTabParamList, AnalysisTabParamProps } from '../types'\nimport { FiltersProvider } from '../context'\nimport { AnalysisTopTabNavigationBar } from '../components/AnaysisTopTabNavigationBar'\nimport { PreferredTagsConsumer } from '../context/preferred-tags.context'\nimport { MaterialTopTabBarProps } from '@react-navigation/material-top-tabs/lib/typescript/src/types'\nimport { ScrollToTopProvider } from '../context/scroll-to-top.context'\n\nconst AnalysisTopTab = createMaterialTopTabNavigator()\n\nexport const AnalysisTopTabNavigator: FunctionComponent<\n AnalysisTabParamProps<'AnalysisList'>\n> = ({ route, children }) => {\n const { ScrollToTop } = route.params\n\n return (\n \n \n {(tags) => {\n const filteredTags = tags.filter((tag) => tag.HasAnalyses)\n return (\n }\n screenOptions={{\n tabBarActiveTintColor: Colors.oxfordBlue,\n tabBarScrollEnabled: true,\n }}\n >\n \n {() => {children as any}}\n \n {filteredTags.map((tag) => (\n \n {() => (\n \n {children as any}\n \n )}\n \n ))}\n \n )\n }}\n \n \n )\n}\n","import React from 'react'\nimport {\n Modal,\n StyleSheet,\n View,\n Text,\n Pressable,\n TextInput,\n} from 'react-native'\nimport Colors from '../constants/Colors'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport { IAnalysisMessageParams } from '../api/analyses/analyses.query'\nimport { UserConsumer } from '../context'\nimport Toast from 'react-native-toast-message'\n\nexport interface IConfirmationModalProps {\n isVisible: boolean\n setVisible: (arg0: boolean) => void\n id: string\n setId: (arg0: string) => void\n onSubmit: (params: IAnalysisMessageParams) => Promise\n cancelText?: string\n submitText?: string\n}\n\nconst styles = StyleSheet.create({\n centeredView: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n modalView: {\n padding: 20,\n backgroundColor: 'white',\n borderRadius: 10,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 5,\n width: '80vw',\n },\n text: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_500Medium',\n fontSize: 15,\n },\n buttonView: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n },\n buttonTextContinue: {\n color: Colors.white,\n fontFamily: 'Roboto_400Regular',\n fontSize: 13,\n },\n buttonContinue: {\n marginLeft: 10,\n padding: 5,\n paddingHorizontal: 15,\n width: 'fit-content',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 5,\n },\n input: {\n borderWidth: 0.5,\n borderColor: Colors.oxfordBlue,\n borderRadius: 10,\n padding: 10,\n marginVertical: 10,\n color: Colors.oxfordBlue,\n },\n titleContainer: {\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n})\n\nexport default function CommentingModal({\n isVisible,\n setVisible,\n id,\n setId,\n onSubmit,\n submitText = 'Küldés',\n}: IConfirmationModalProps) {\n const [text, onChangeText] = React.useState('')\n return (\n \n {({ user }) => (\n \n {\n setVisible(!isVisible)\n }}\n >\n \n \n \n {'Kapcsolatfelvétel'}\n \n {\n setId('')\n onChangeText('')\n setVisible(false)\n }}\n />\n \n \n \n \n \n \n {\n setVisible(false)\n onSubmit({\n AnalysisId: id,\n Message: text,\n })\n .then(() => {\n Toast.show({\n type: 'success',\n text1: `Sikeres üzenetküldés!`,\n visibilityTime: 6000,\n })\n setId('')\n onChangeText('')\n })\n .catch((error) => {\n Toast.show({\n type: 'error',\n text1: `Sikertelen üzenetküldés! Kérlek próbáld újra!`,\n text2: error,\n visibilityTime: 6000,\n })\n setId('')\n onChangeText('')\n })\n }}\n >\n {submitText}\n \n \n \n \n \n \n )}\n \n )\n}\n","import React from 'react'\nimport { FunctionComponent } from 'react'\nimport { Text, View, StyleSheet, Pressable } from 'react-native'\nimport { Avatar, ListItem } from 'react-native-elements'\n\nimport Colors from '../constants/Colors'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport { SentimentIcon } from './SentimentIcon'\nimport { UserConsumer } from '../context'\nimport { DateConverter } from './DateConverter'\nimport { IAnalysis } from '../api/analyses'\nimport { BottomTabNavigationProp } from '@react-navigation/bottom-tabs'\nimport { CompositeNavigationProp } from '@react-navigation/native'\nimport { NativeStackNavigationProp } from '@react-navigation/native-stack'\nimport { AnalysisTabParamList, RootStackParamList } from '../types'\nimport { getImageUri } from './Tile'\n\nexport interface IAnalysisTileProps {\n setCommentingModalVisible: React.Dispatch>\n setCommentedAnalysisId: React.Dispatch>\n read: (key: string) => void\n analysis: IAnalysis\n isUnread: boolean\n navigation: CompositeNavigationProp<\n BottomTabNavigationProp,\n NativeStackNavigationProp\n >\n}\n\nexport const AnalysisTile: FunctionComponent = (props) => {\n const {\n analysis,\n isUnread,\n setCommentingModalVisible,\n setCommentedAnalysisId,\n read,\n navigation,\n } = props\n\n return (\n \n {({ user, setBookmarks }) => {\n const index = user.BookmarkedAnalyses.indexOf(analysis.AnalysisId)\n const isBookmarked = index > -1\n const borderLeftColor = isUnread ? Colors.orangeWeb : Colors.white\n return (\n \n \n \n \n \n \n \n \n {analysis.Title}\n \n {\n setCommentedAnalysisId(analysis.AnalysisId)\n setCommentingModalVisible(true)\n }}\n >\n \n \n \n \n \n \n \n {DateConverter(analysis.Date)}\n \n \n {!!analysis.SentimentTag ? (\n \n \n \n ) : null}\n {\n if (index === -1) {\n setBookmarks(user.BookmarkedNews, [\n ...user.BookmarkedAnalyses,\n analysis.AnalysisId,\n ])\n } else {\n const tags = [...user.BookmarkedAnalyses]\n tags.splice(index, 1)\n setBookmarks(user.BookmarkedNews, tags)\n }\n }}\n >\n \n \n \n \n \n \n {\n read(analysis.AnalysisId)\n navigation.navigate('PDFReader', analysis.Source)\n }}\n />\n \n \n )\n }}\n \n )\n}\n\nconst styles = StyleSheet.create({\n listItemContent: {\n borderRightColor: Colors.unselectedBlue,\n borderRightWidth: 2,\n paddingRight: 15,\n },\n listItemTitleContainer: {\n width: '100%',\n flex: 1,\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n listItemTitle: {\n display: 'flex',\n width: '85%',\n fontFamily: 'Roboto_500Medium',\n fontSize: 17,\n color: Colors.oxfordBlue,\n paddingBottom: 3,\n },\n subtitle: {\n width: '100%',\n height: '100%',\n alignContent: 'center',\n },\n dateSentimentContainer: {\n flex: 1,\n flexDirection: 'row',\n width: '100%',\n height: '100%',\n marginTop: 12,\n maxHeight: 15,\n alignItems: 'center',\n },\n date: {\n display: 'flex',\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_300Light',\n fontSize: 11,\n width: '50%',\n margin: 0,\n },\n sentimentContainer: {\n flex: 1,\n flexDirection: 'row',\n width: '50%',\n justifyContent: 'flex-end',\n height: '100%',\n alignItems: 'center',\n },\n sentimentWrapper: { marginHorizontal: 15 },\n favoriteIconWrapper: { alignContent: 'center' },\n messageIcon: {\n alignItems: 'flex-end',\n width: '15%',\n height: 30,\n },\n commentIcon: {\n color: Colors.oxfordBlue,\n alignSelf: 'flex-end',\n },\n favoriteIcon: {\n color: Colors.oxfordBlue,\n alignSelf: 'center',\n },\n imagePlaceholder: {\n backgroundColor: 'transparent',\n },\n})\n","import React, { useEffect, useState, useContext, useRef } from 'react'\nimport { Text, StyleSheet, Pressable, FlatList, View } from 'react-native'\nimport Colors from '../constants/Colors'\nimport { RootStackParamList, AnalysisTabParamList } from '../types'\nimport { now } from '../utils'\nimport { refreshDelayTime } from '../constants/Config'\nimport { AnalysesConsumer, AnalysesProvider } from '../context/analyses.context'\nimport { RefreshControl } from './RefreshControl'\nimport { ScreenSizeConsumer } from '../context/screen-size.context'\nimport Browser from '../constants/Browser'\nimport { BottomTabNavigationProp } from '@react-navigation/bottom-tabs'\nimport { CompositeNavigationProp } from '@react-navigation/native'\nimport { NativeStackNavigationProp } from '@react-navigation/native-stack'\nimport CommentingModal from './CommentingModal'\nimport { AnalysisTile } from './AnalysisTile'\nimport { PreferredTagsContext } from '../context/preferred-tags.context'\nimport { ScrollToTopConsumer } from '../context/scroll-to-top.context'\nimport { onScroll } from './ListComponent'\nimport { UnreadContext } from '../context/unread.context'\n\nexport interface IAnalysisListComponentProps {\n ContentTag?: string\n SearchText?: string\n AnalysesIds?: Array\n navigation: CompositeNavigationProp<\n BottomTabNavigationProp,\n NativeStackNavigationProp\n >\n}\n\nexport const AnalysisListComponent: React.FC = ({\n ContentTag,\n SearchText,\n AnalysesIds,\n navigation,\n}) => {\n const tags = useContext(PreferredTagsContext)\n const { unreadItems, setUnreadItems, refresh } = useContext(UnreadContext)\n const [CreatedBefore, setCreatedBefore] = useState(\n now().toISOString()\n )\n const [isRefreshing, setRefreshing] = useState(false)\n const [isCommentingModalVisible, setCommentingModalVisible] =\n useState(false)\n const [commentedAnalysisId, setCommentedAnalysisId] = useState('')\n const [isScrolled, setIsScrolled] = useState(false)\n const flatlistRef = useRef(null)\n\n useEffect(() => {\n setCreatedBefore(now().toISOString())\n }, [tags])\n\n useEffect(() => {\n if (isRefreshing) refresh()\n }, [isRefreshing])\n\n return (\n \n {({ ScrollToTop }) => {\n if (ScrollToTop && flatlistRef.current?.props.data?.length) {\n flatlistRef.current?.scrollToIndex({ index: 0 })\n }\n return (\n \n {({ width, height }) => (\n \n \n {({\n analyses,\n isLoading,\n total,\n setCount,\n setIsRefreshable,\n message,\n }) => {\n setIsRefreshable(!isScrolled)\n return (\n <>\n `${analysis.AnalysisId}`}\n onEndReached={() => {\n if (!analyses.length || total <= analyses.length)\n return\n\n setCount(analyses.length)\n }}\n onEndReachedThreshold={0.5}\n onScroll={onScroll(isScrolled, setIsScrolled)}\n refreshControl={\n {\n setRefreshing(true)\n setTimeout(() => {\n setCreatedBefore(now().toISOString())\n setRefreshing(false)\n }, refreshDelayTime)\n }}\n />\n }\n renderItem={({ item }) => {\n const isUnread =\n unreadItems.unreadAnalyses.includes(\n item.AnalysisId\n )\n return (\n <>\n {\n if (isUnread) {\n setUnreadItems({\n ...unreadItems,\n unreadAnalyses:\n unreadItems.unreadAnalyses.filter(\n (id) => id !== item.AnalysisId\n ),\n })\n }\n navigation.navigate(\n 'PDFReader',\n item.Source\n )\n }}\n style={({ pressed }) => ({\n opacity: pressed ? 0.5 : 1,\n flex: 1,\n width,\n ...(!Browser.isMobile &&\n !Browser.isIOS && {\n paddingHorizontal: 15,\n }),\n })}\n >\n \n setUnreadItems({\n ...unreadItems,\n unreadAnalyses:\n unreadItems.unreadAnalyses.filter(\n (id) => id !== key\n ),\n })\n }\n setCommentingModalVisible={\n setCommentingModalVisible\n }\n setCommentedAnalysisId={\n setCommentedAnalysisId\n }\n navigation={navigation}\n />\n \n {total === analyses.indexOf(item) + 1 && (\n \n )}\n \n )\n }}\n ListEmptyComponent={\n isLoading ? null : (\n \n Nincs a keresési feltételeknek megfelelő elemzés\n \n )\n }\n />\n \n \n )\n }}\n \n \n )}\n \n )\n }}\n \n )\n}\n\nconst styles = StyleSheet.create({\n containerView: {\n backgroundColor: Colors.listWhite,\n },\n flatList: {\n backgroundColor: Colors.listWhite,\n alignItems: 'center',\n justifyContent: 'center',\n },\n empty: {\n fontWeight: 'bold',\n marginVertical: 20,\n color: 'gray',\n },\n})\n","import React, { useContext, useEffect, useState } from 'react'\nimport { View, StyleSheet } from 'react-native'\n\nimport { AnalysisTabParamProps } from '../types'\nimport { UserContext } from '../context'\nimport { useIsFocused } from '@react-navigation/native'\nimport { Spinner } from '../components/Spinner'\nimport { AnalysisListComponent } from '../components/AnalysisListComponent'\nimport Colors from '../constants/Colors'\n\nconst styles = StyleSheet.create({\n view: {\n flex: 1,\n backgroundColor: Colors.white,\n },\n})\nexport const AnalysisFavoritesScreen: React.FC<\n AnalysisTabParamProps<'AnalysisList'>\n> = ({ navigation }) => {\n const { user, isLoading } = useContext(UserContext)\n const initialBookmarkedAnalysesState = user.BookmarkedAnalyses.length\n ? user.BookmarkedAnalyses\n : ['']\n const [AnalysesIds, setAnalysesIds] = useState>(\n initialBookmarkedAnalysesState\n )\n const isFocused = useIsFocused()\n useEffect(() => {\n if (!isFocused) return\n if (user.BookmarkedAnalyses.length) setAnalysesIds(user.BookmarkedAnalyses)\n else setAnalysesIds([''])\n }, [isFocused])\n return (\n \n \n\n \n \n )\n}\n","import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport Colors from '../constants/Colors'\nimport { FiltersConsumer } from '../context'\nimport { AnalysisTabParamProps } from '../types'\nimport { AnalysisListComponent } from '../components/AnalysisListComponent'\n\nconst styles = StyleSheet.create({\n view: {\n flex: 1,\n backgroundColor: Colors.white,\n },\n})\n\nexport const AnalysisListScreen: React.FC<\n AnalysisTabParamProps<'AnalysisList'>\n> = ({ navigation }) => {\n return (\n \n \n {({ ContentTag }) => {\n return (\n \n )\n }}\n \n \n )\n}\n","import React, { FC, useRef } from 'react'\nimport { StyleSheet, TextInput, View } from 'react-native'\n\nimport { AnalysisTabParamProps } from '../types'\nimport { AnalysisListComponent } from '../components/AnalysisListComponent'\nimport { FiltersConsumer } from '../context'\nimport { useDebounce } from '../utils'\nimport Colors from '../constants/Colors'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport { TouchableOpacity } from 'react-native-gesture-handler'\nimport { UnreadProvider } from '../context/unread.context'\n\nconst styles = StyleSheet.create({\n view: {\n flex: 1,\n backgroundColor: Colors.white,\n },\n sectionStyle: {\n flexDirection: 'row',\n height: 33,\n margin: 13,\n borderRadius: 50,\n borderColor: Colors.oxfordBlue,\n borderWidth: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n inputStyle: {\n flex: 1,\n color: Colors.oxfordBlue,\n paddingHorizontal: 10,\n outlineStyle: 'none',\n },\n icon: {\n paddingLeft: 5,\n paddingRight: 5,\n },\n})\nexport const AnalysisSearchScreen: FC<\n AnalysisTabParamProps<'AnalysisList'>\n> = ({ navigation }) => {\n const [SearchText, setSearchText] = useDebounce('', 500)\n const analysisSearchInput = useRef()\n\n return (\n \n \n \n setSearchText(text)}\n placeholder=\"Keresés\"\n placeholderTextColor={Colors.oxfordBlue + 95}\n autoCapitalize=\"none\"\n keyboardType=\"default\"\n returnKeyType=\"next\"\n blurOnSubmit={false}\n />\n {!!SearchText && (\n {\n analysisSearchInput.current.clear()\n setSearchText('')\n }}\n >\n \n \n )}\n \n \n {({ ContentTag }) => {\n return (\n \n )\n }}\n \n \n )\n}\n","import React, { FunctionComponent } from 'react'\nimport { createBottomTabNavigator } from '@react-navigation/bottom-tabs'\n\nimport { AnalysisTopTabNavigator } from './AnalysisTopTabNavigator'\nimport { AnalysisFavoritesScreen } from '../screens/AnalysisFavoritesScreen'\n\nimport { BottomNavigationBar } from '../components/BottomNavigationBar'\n\nimport { AnalysisRootTabParamList } from '../types'\nimport { AnalysisListScreen } from '../screens/AnalysisListScreen'\nimport { AnalysisSearchScreen } from '../screens/AnalysisSearchScreen'\nimport { HeaderComponent } from '../components/HeaderComponent'\n\nexport interface IRootNavigatorProps {}\nconst BottomTab = createBottomTabNavigator()\n\nexport const AnalysisRootNavigator: FunctionComponent<\n IRootNavigatorProps\n> = () => {\n return (\n }\n screenOptions={{\n header: (props) => ,\n }}\n >\n \n {(props) => (\n \n \n \n )}\n \n \n {(props) => (\n \n \n \n )}\n \n \n \n )\n}\n","import React from 'react'\nimport {\n Modal,\n StyleSheet,\n View,\n Text,\n Pressable,\n FlatList,\n} from 'react-native'\nimport { concat } from 'lodash'\nimport { ITag } from '../api/tags'\nimport Colors from '../constants/Colors'\nimport { contentTags } from '../constants/Config'\nimport { UserConsumer } from '../context'\nimport { PreferredTagsConsumer } from '../context/preferred-tags.context'\nimport * as RootNavigation from '../navigation/AuthNavigation'\n\nexport interface IConfirmationModalProps {\n isVisible: boolean\n setVisible: (arg0: boolean) => void\n newContentTags: ITag[]\n fetchedContentTags: ITag[]\n}\n\nconst getDifference = (current: ITag[], prev: ITag[]) => {\n return current.filter((currentTag) => {\n return !prev.find((prevTag) => prevTag.Value === currentTag.Value)\n })\n}\n\nexport const checkContentTagsWithLS = (currentContentTags: ITag[]) => {\n const oldContentTags = getContentTagsFromLS()\n const contentTagsDifference = getDifference(\n currentContentTags,\n oldContentTags\n )\n if (\n !contentTagsDifference.length &&\n getDifference(oldContentTags, currentContentTags).length\n ) {\n setContentTagsToLS(currentContentTags)\n }\n return contentTagsDifference\n}\n\nexport const getContentTagsFromLS = () =>\n JSON.parse(localStorage.getItem(contentTags) || 'null') || []\n\nexport const setContentTagsToLS = (currentContentTags: ITag[]) =>\n localStorage.setItem(contentTags, JSON.stringify(currentContentTags))\n\nexport const activateNewPreferredTags = (\n tags: ITag[],\n newContentTags: ITag[],\n setPreferredTags: (tags: string[]) => Promise\n) => {\n const tagValues = tags.map((tag) => tag.Value)\n const newContentTagValues = newContentTags.map((tag) => tag.Value)\n const preferredTags = concat(tagValues, newContentTagValues)\n setPreferredTags(preferredTags)\n}\n\nexport default function NewContentTagsModal({\n isVisible,\n setVisible,\n newContentTags,\n fetchedContentTags,\n}: IConfirmationModalProps) {\n const title =\n newContentTags.length === 1 ? 'kategória érhető' : 'kategóriák érhetők'\n const activationText =\n newContentTags.length === 1 ? 'aktiválásához' : 'aktiválásukhoz'\n return (\n \n {\n setVisible(false)\n }}\n >\n \n {({ setPreferredTags }) => (\n \n {(tags) => (\n \n \n {`Új ${title} el!`}\n \n tag.Value}\n persistentScrollbar\n renderItem={({ item }) => (\n {`\\u2022 ${item.Title}`}\n )}\n />\n \n \n {`Az ${activationText} kattints az`}{' '}\n Aktiválás{' '}\n {`gombra!`}\n \n \n {\n setContentTagsToLS(fetchedContentTags)\n setVisible(false)\n }}\n >\n Mégse\n \n {\n activateNewPreferredTags(\n tags,\n newContentTags,\n setPreferredTags\n )\n setContentTagsToLS(fetchedContentTags)\n setVisible(false)\n RootNavigation.navigate('Categories')\n }}\n >\n Aktiválás\n \n \n \n \n )}\n \n )}\n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n centeredView: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n position: 'absolute',\n height: '100%',\n width: '100%',\n backgroundColor: Colors.transparentBackgroundOxfordBlue,\n },\n modalView: {\n padding: 20,\n backgroundColor: 'white',\n borderRadius: 10,\n borderColor: Colors.orangeWeb,\n borderWidth: 3,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 5,\n maxWidth: '75vw',\n },\n modalText: {\n marginBottom: 10,\n textAlign: 'center',\n },\n text: {\n alignContent: 'center',\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 15,\n marginBottom: 10,\n },\n highlight: {\n fontFamily: 'Roboto_500Medium',\n },\n listText: {\n alignContent: 'center',\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 14,\n marginBottom: 5,\n },\n listWrapper: {\n marginBottom: 10,\n marginLeft: 10,\n maxHeight: 75,\n },\n buttonView: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n },\n buttonTextCancel: {\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 13,\n },\n buttonTextContinue: {\n color: Colors.white,\n fontFamily: 'Roboto_400Regular',\n fontSize: 13,\n },\n buttonCancel: {\n marginLeft: 5,\n padding: 10,\n width: 'fit-content',\n alignItems: 'center',\n outlineStyle: 'none',\n },\n buttonContinue: {\n marginLeft: 10,\n padding: 5,\n paddingHorizontal: 15,\n width: 'fit-content',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: Colors.oxfordBlue,\n borderRadius: 5,\n outlineStyle: 'none',\n },\n})\n","// Example of Splash, Login and Sign Up in React Native\n// https://aboutreact.com/react-native-login-and-signup/\nimport 'react-native-gesture-handler'\n\n// Import React and Component\nimport React, { FunctionComponent, useEffect, useState } from 'react'\n\n// Import Navigators from React Navigation\nimport {\n createNavigationContainerRef,\n DefaultTheme,\n NavigationContainer,\n} from '@react-navigation/native'\nimport { createNativeStackNavigator } from '@react-navigation/native-stack'\nimport { StyleSheet, SafeAreaView } from 'react-native'\nimport LinkingConfiguration from './LinkingConfiguration'\nimport Colors from '../constants/Colors'\nimport { LoginScreen } from '../screens/LoginScreen'\nimport { RootNavigator } from './RootNavigator'\nimport { SettingsScreen } from '../screens/SettingsScreen'\nimport { HelpScreen } from '../screens/HelpScreen'\nimport { NotFoundScreen } from '../screens/NotFoundScreen'\nimport { CategoriesScreen } from '../screens/CategoriesScreen'\nimport { PreferredLanguageScreen } from '../screens/PreferredLanguageScreen'\nimport {\n ContentTagsConsumer,\n ContentTagsProvider,\n SentimentTagsProvider,\n SourceTagsProvider,\n UserConsumer,\n} from '../context'\nimport { PreferredTagsProvider } from '../context/preferred-tags.context'\nimport { NotificationScreen } from '../screens/NotificationScreen'\nimport { PDFReaderScreen } from '../screens/PDFReaderScreen'\nimport { AnalysisRootNavigator } from './AnalysisRootNavigator'\nimport { ScreenSizeConsumer } from '../context/screen-size.context'\nimport { HeaderComponent } from '../components/HeaderComponent'\nimport NewContentTagsModal, {\n checkContentTagsWithLS,\n} from '../components/NewContentTagsModal'\nimport { ITag } from '../api/tags'\nimport { LanguagesProvider } from '../context/languages.context'\nimport NewLanguageFeatureModal from '../components/NewLanguageFeatureModal'\n\nconst Stack = createNativeStackNavigator()\n\nexport interface IAuthNavigationProps {}\n\nconst styles = StyleSheet.create({\n safeArea: {\n flex: 1,\n backgroundColor: Colors.oxfordBlue,\n },\n})\n\nexport const navigationRef = createNavigationContainerRef()\n\nexport function navigate(\n name: keyof ReactNavigation.RootParamList,\n params?: {}\n) {\n if (navigationRef.isReady()) {\n navigationRef.navigate(name, params)\n }\n}\n\nexport const AuthNavigation: FunctionComponent = () => {\n const [isNewContentTagsModalVisible, setIsNewContentTagsModalVisible] =\n useState(false)\n const [contentTagsDifference, setContentTagsDifference] = useState([])\n\n return (\n \n {({ token }) => (\n \n \n \n \n \n \n {({ height }) => (\n \n <>\n \n {({ isLoading, tags }) => {\n if (\n !isLoading &&\n tags.length &&\n !isNewContentTagsModalVisible\n ) {\n const checkedContentTagsDifference =\n checkContentTagsWithLS(tags)\n if (checkedContentTagsDifference.length) {\n setContentTagsDifference(\n checkedContentTagsDifference\n )\n setIsNewContentTagsModalVisible(true)\n }\n }\n return (\n \n )\n }}\n \n\n {token ? : null}\n \n (\n \n ),\n }}\n >\n {!token ? (\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 React, { useEffect, useState } from 'react'\nimport { StyleSheet, View, Text, TouchableOpacity, Modal } from 'react-native'\nimport { Image } from 'react-native-elements'\nimport Colors from '../constants/Colors'\nimport { isMirror } from '../constants/Config'\nimport originalSrc from '../variants/original/icon.png'\nimport mirrorSrc from '../variants/mirror/icon.png'\nimport bannerSrc from '../web/language_feature.png'\nimport { languageFeatureModalPath } from '../constants/Config'\n\nconst imgSrc = isMirror ? mirrorSrc : originalSrc\n\nexport default function NewLanguageFeatureModal({}) {\n const [isVisible, setIsVisible] = useState(false)\n\n useEffect(() => {\n const hidden = localStorage.getItem(languageFeatureModalPath)\n if (!hidden) setIsVisible(true)\n }, [])\n\n return (\n {\n setIsVisible(false)\n localStorage.setItem(languageFeatureModalPath, 'hidden')\n }}\n >\n \n \n \n \n \n \n Ismerd meg a nyelvválasztó funkciót!\n \n \n \n \n \n \n Mától a kártyaképet is lefordíthatod.\n \n \n Kattints a legördülő zászló ikonra.\n \n \n\n {\n setIsVisible(false)\n localStorage.setItem(languageFeatureModalPath, 'hidden')\n }}\n >\n Megértettem\n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: 'gray',\n width: '100%',\n height: '100%',\n },\n centeredView: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n position: 'absolute',\n height: '100%',\n width: '100%',\n backgroundColor: Colors.transparentBackgroundOxfordBlue,\n overflow: 'scroll',\n },\n modalView: {\n padding: 20,\n backgroundColor: 'white',\n borderRadius: 10,\n borderWidth: 0,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 5,\n maxWidth: '75vw',\n },\n text: {\n alignContent: 'center',\n color: Colors.oxfordBlue,\n fontFamily: 'Roboto_400Regular',\n fontSize: 15,\n marginBottom: 10,\n },\n highlight: {\n fontFamily: 'Roboto_500Medium',\n },\n buttonView: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n },\n buttonTextContinue: {\n color: Colors.white,\n fontFamily: 'Roboto_400Regular',\n fontSize: 13,\n },\n buttonContinue: {\n marginLeft: 10,\n padding: 5,\n paddingHorizontal: 15,\n width: 'fit-content',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: Colors.oxfordBlue,\n borderRadius: 5,\n outlineStyle: 'none',\n },\n button: {\n backgroundColor: Colors.orangeWeb,\n borderRadius: 10,\n padding: 10,\n elevation: 2,\n },\n textStyle: {\n color: 'white',\n fontWeight: 'bold',\n textAlign: 'center',\n },\n head: {\n marginTop: 0,\n marginBottom: 24,\n width: '100%',\n flexDirection: 'column',\n alignItems: 'center',\n },\n imagePlaceholder: { backgroundColor: 'transparent' },\n imageContainer: {\n backgroundColor: 'gray',\n borderRadius: 10,\n },\n image: { width: 56, height: 56 },\n bannerContainer: {\n width: '100%',\n height: '33.3vh',\n backgroundColor: '#e6e8eb',\n borderTopRightRadius: 10,\n borderTopLeftRadius: 10,\n },\n bannerPlaceholder: {\n backgroundColor: 'transparent',\n borderTopRightRadius: 10,\n borderTopLeftRadius: 10,\n },\n banner: {\n width: '100%',\n height: '100%',\n borderTopLeftRadius: 10,\n borderTopRightRadius: 10,\n },\n headText: {\n marginLeft: 10,\n flex: 1,\n textAlign: 'center',\n paddingVertical: 10,\n fontSize: 24,\n },\n title: { fontWeight: 'bold', fontSize: 24 },\n subtitle: { color: 'gray', fontSize: 16 },\n body: {\n marginBottom: 25,\n paddingTop: 10,\n },\n bodyText: {\n paddingVertical: 10,\n textAlign: 'center',\n fontSize: 18,\n },\n})\n","import { AuthNavigation } from './AuthNavigation'\n\nexport default AuthNavigation\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(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n)\n\nconst _publicUrl = process.env.PUBLIC_URL || window.config?.PUBLIC_URL || ''\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(_publicUrl, 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 = `${_publicUrl}/service-worker.js`\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(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n )\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(\n 'No internet connection found. App is running in offline mode.'\n )\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, { Component, ReactNode } from 'react'\nimport { Modal, StyleSheet, TouchableOpacity, View } from 'react-native'\nimport { Image, Text } from 'react-native-elements'\nimport { appName, authTokenPath, isMirror } from '../constants/Config'\nimport JSON from '../package.json'\nimport Colors from '../constants/Colors'\nimport originalSrc from '../variants/original/icon.png'\nimport mirrorSrc from '../variants/mirror/icon.png'\nimport manifest from '../web/manifest.json'\nimport Browser from '../constants/Browser'\n\nconst imgSrc = isMirror ? mirrorSrc : originalSrc\n\nexport interface IInstallPromptState {\n installDisabled: boolean\n hasprompt: boolean\n userInstalled: boolean\n}\n\nexport class InstallPrompt extends Component<{}, IInstallPromptState> {\n public readonly state = {\n installDisabled: false,\n hasprompt: false,\n userInstalled: false,\n }\n\n public deferredprompt?: any\n\n public styles = StyleSheet.create({\n centeredView: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'rgba(0,0,0,0.5)',\n },\n modalView: {\n margin: 20,\n backgroundColor: 'white',\n borderRadius: 20,\n padding: 10,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 5,\n },\n button: {\n backgroundColor: Colors.orangeWeb,\n borderRadius: 20,\n padding: 10,\n elevation: 2,\n },\n textStyle: {\n color: 'white',\n fontWeight: 'bold',\n textAlign: 'center',\n },\n head: {\n marginTop: 0,\n marginBottom: 24,\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n },\n imagePlaceholder: { backgroundColor: 'transparent' },\n imageContainer: {\n backgroundColor: 'gray',\n borderRadius: 10,\n },\n image: { width: 56, height: 56 },\n headText: { marginLeft: 10, flex: 1 },\n title: { fontWeight: 'bold', fontSize: 24 },\n subtitle: { color: 'gray', fontSize: 16 },\n body: {\n marginBottom: 25,\n paddingTop: 10,\n borderTopWidth: 1,\n borderTopColor: 'gray',\n },\n sectionTitle: { fontWeight: 'bold', fontSize: 16, marginBottom: 10 },\n })\n\n constructor(props: {}) {\n super(props)\n\n window.addEventListener('beforeinstallprompt', (event: Event) => {\n event.preventDefault()\n this.deferredprompt = event\n this.setState({ ...this.state, hasprompt: true })\n })\n\n window.addEventListener('appinstalled', (evt) => {\n this.setState({ ...this.state, userInstalled: true })\n })\n }\n\n public async install(): Promise {\n this.setState({ ...this.state, installDisabled: true })\n localStorage.removeItem(authTokenPath)\n if (this.deferredprompt) {\n this.deferredprompt.prompt()\n\n const choiceResult = await this.deferredprompt.userChoice\n\n if (choiceResult.outcome === 'accepted') {\n console.log('Your PWA has been installed')\n return true\n } else {\n console.log('User chose to not install your PWA')\n }\n }\n\n this.setState({ ...this.state, installDisabled: false })\n return false\n }\n\n public shouldShowBrowserPrompt(): boolean {\n return this.state.hasprompt && !this.state.userInstalled\n }\n\n public render(): ReactNode {\n if (!this.shouldShowBrowserPrompt() || !Browser.isSupportingBrowser)\n return null\n\n return (\n \n \n \n \n \n \n \n {manifest.name.replaceAll('@name', appName)}\n \n {`v${JSON.version}`}\n \n \n \n Részletek\n {manifest.description.replaceAll('@name', appName)}\n \n\n this.install()}\n disabled={this.state.installDisabled}\n >\n Telepítés\n \n \n \n \n )\n }\n}\n","import React, { FC, useEffect, useState } from 'react'\nimport { ActivityIndicator, StyleSheet } from 'react-native'\nimport { Card, Image } from 'react-native-elements'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\nimport { Text, View } from '../components/Themed'\nimport Browser from '../constants/Browser'\nimport Colors from '../constants/Colors'\nimport JSON from '../package.json'\n\nexport const SuccessCard: FC = () => {\n return (\n \n \n \n Sikeres Telepítés!\n \n \n \n \n Sikeresen telepítetted az alkalmazást, kérjük nyisd meg azt, majd\n aktiváld felhasználódat!\n \n \n Amennyiben további kérdésed maradt lépj kapcsolatba\n ügyfélszolgálatunkkal!\n \n \n \n )\n}\n\nexport const FailureCard: FC = () => {\n return (\n \n \n \n Sikertelen telepítés!\n \n \n \n \n Úgy tűnik akadályba ütköztél az alkalmazás telepítése során. Ennek\n több oka is lehet:\n \n \n {`\\u2022 Az alkalmazás már telepítve van az eszközödön`}\n {`\\u2022 Az alkalmazás nem megfelelő környezetből lett megnyitva`}\n {`\\u2022 A böngésződ nem támogatja az alkalmazás letöltését`}\n \n \n Kérjük próbáld újra a \"Chrome\" vagy \"Edge\" böngésző használatával!\n \n \n Amennyiben további kérdésed maradt lépj kapcsolatba\n ügyfélszolgálatunkkal!\n \n \n \n )\n}\n\nexport const WaitCard: FC = () => {\n return (\n \n \n \n Kérjük várjon...\n \n \n \n \n A telepítési képernyő pillanatokon belül meg kell, hogy jelenjen.\n \n \n Amennyiben mégsem jelenne meg, valószínűleg az alkalmazás már\n telepítve van eszközödön.\n \n \n Amennyiben további kérdésed maradt lépj kapcsolatba\n ügyfélszolgálatunkkal!\n \n \n \n )\n}\n\nexport const SafariHowToCard: FC = () => {\n return (\n \n \n \n \n \n Útmutató\n {`v${JSON.version}`}\n \n \n \n \n \n \n Úgy tűnik iOS környezetből nyitottad meg rendszerünket, így az\n alkalmazás csak manuálisan telepíthető.\n \n \n \n {`\\u2022 Kattints a \"Megosztás\" `}\n \n {` gombra Safari böngésződ ${Browser.whereIsShare}`}\n \n \n {`\\u2022 Görgess (amennyiben szükséges) amíg meg nem találod a \"Főképernyőhöz adás\" `}\n \n {` gombot`}\n \n \n \n Amennyiben további kérdésed maradt lépj kapcsolatba\n ügyfélszolgálatunkkal!\n \n \n \n )\n}\n\nexport default function InstallScreen() {\n const [isInstalled, setIsInstalled] = useState(false)\n window.addEventListener('appinstalled', () => {\n setIsInstalled(true)\n })\n return (\n \n {(() => {\n if (isInstalled) {\n return \n } else if (Browser.showIOSSafariHow2) {\n return \n } else if (!Browser.isSupportingBrowser) {\n return \n } else {\n return \n }\n })()}\n \n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n padding: 20,\n backgroundColor: 'gray',\n },\n fullView: { flex: 1, justifyContent: 'center', alignItems: 'center' },\n card: {\n width: '80%',\n borderRadius: 20,\n },\n title: {\n fontSize: 20,\n fontWeight: 'bold',\n justifyContent: 'center',\n display: 'flex',\n alignItems: 'center',\n },\n text: {\n fontSize: 14,\n color: 'gray',\n marginBottom: 5,\n },\n list: {\n marginVertical: 10,\n },\n listItem: {\n marginBottom: 3,\n marginLeft: 10,\n fontSize: 14,\n color: 'gray',\n },\n successIcon: {\n color: '#7DE24E',\n marginRight: 5,\n },\n failureIcon: {\n color: '#FF0000',\n marginRight: 5,\n },\n warningIcon: {\n color: Colors.orangeWeb,\n marginRight: 5,\n },\n imagePlaceholder: { backgroundColor: 'transparent' },\n imageContainer: {},\n image: { height: 16, width: 16 },\n\n head: {\n marginTop: 0,\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n headText: { marginLeft: 10, display: 'flex', alignItems: 'flex-start' },\n subtitle: {\n marginLeft: 5,\n color: 'gray',\n fontSize: 16,\n fontWeight: 'normal',\n },\n})\n","import ReactGA from 'react-ga'\nimport { googleAppId } from './Config'\n\nexport class GoogleTracker {\n private static interval = 5000\n private timer?: ReturnType\n\n constructor() {\n ReactGA.initialize(googleAppId)\n }\n\n public start(): void {\n ReactGA.pageview(window.location.pathname)\n this.timer = setTimeout(() => this.start(), GoogleTracker.interval)\n }\n\n public stop(): void {\n if (!this.timer) return\n clearTimeout(this.timer)\n delete this.timer\n }\n}\n","import { StatusBar } from 'expo-status-bar'\nimport React, { useEffect, useState } from 'react'\nimport { SafeAreaProvider } from 'react-native-safe-area-context'\nimport Toast from 'react-native-toast-message'\nimport AppLoading from 'expo-app-loading'\n\nimport useCachedResources from './hooks/useCachedResources'\nimport Navigation from './navigation'\nimport { register } from './workers/serviceWorkerRegistration'\nimport { InstallPrompt } from './components/InstallPrompt'\nimport InstallScreen from './screens/InstallScreen'\nimport JSON from './package.json'\nimport { UserProvider } from './context'\nimport {\n deviceIdPath,\n deviceNamePath,\n isProduction,\n versionPath,\n} from './constants/Config'\nimport Browser, { BrowserType } from './constants/Browser'\nimport { GoogleTracker } from './constants/GoogleTracker'\nimport { ScreenSizeProvider } from './context/screen-size.context'\nimport { getDeviceId } from './utils'\nimport { UnreadProvider } from './context/unread.context'\n\nregister()\n\nexport default function App() {\n const isLoadingComplete = useCachedResources()\n const [isInstalled, setIsInstalled] = useState(false)\n useEffect(() => {\n const oldVersion = localStorage.getItem(versionPath)\n const newVersion = JSON.version\n if (!isInstalled || oldVersion === newVersion) return\n localStorage.setItem(versionPath, newVersion)\n Toast.show({\n type: 'info',\n text1: `Új verzió! (v${newVersion})`,\n text2: 'Az alkalmazást a háttérben frissítettük.',\n visibilityTime: 6000,\n })\n }, [isInstalled])\n\n useEffect(() => {\n ;(async () => {\n const deviceId = await getDeviceId()\n const id = localStorage.getItem(deviceIdPath) || deviceId\n const name = localStorage.getItem(deviceNamePath) || navigator.userAgent\n localStorage.setItem(deviceIdPath, id)\n localStorage.setItem(deviceNamePath, name)\n })()\n\n const media = window.matchMedia('(display-mode: standalone)')\n /** @note change this to test install screens */\n const getIsInstalled = () =>\n media.matches ||\n (Browser.browser === BrowserType.Firefox && Browser.isMobile) ||\n !isProduction\n const listener = () => setIsInstalled(getIsInstalled())\n setIsInstalled(getIsInstalled())\n media.addEventListener('change', listener)\n return () => media.removeEventListener('change', listener)\n }, [])\n\n useEffect(() => {\n const tracker = new GoogleTracker()\n tracker.start()\n }, [])\n return (\n <>\n {(() => {\n if (!isLoadingComplete) {\n return \n } else {\n return (\n \n \n \n \n \n {isInstalled ? : }\n \n \n \n \n \n )\n }\n })()}\n \n \n )\n}\n","import * as Font from 'expo-font'\nimport * as SplashScreen from 'expo-splash-screen'\nimport * as React from 'react'\nimport Icon from 'react-native-vector-icons/MaterialIcons'\n\nexport default function useCachedResources() {\n const [isLoadingComplete, setLoadingComplete] = React.useState(false)\n\n // Load any resources or data that we need prior to rendering the app\n React.useEffect(() => {\n async function loadResourcesAndDataAsync() {\n try {\n SplashScreen.preventAutoHideAsync()\n\n // Load fonts\n await Font.loadAsync({\n roboto: {\n uri: require('../assets/fonts/Roboto-Regular.ttf'), //Roboto_400Regular,\n display: Font.FontDisplay.BLOCK,\n },\n Roboto_300Light: {\n uri: require('../assets/fonts/Roboto-Light.ttf'), //Roboto_300Light,\n display: Font.FontDisplay.BLOCK,\n },\n Roboto_400Regular: {\n uri: require('../assets/fonts/Roboto-Regular.ttf'), //Roboto_400Regular,\n display: Font.FontDisplay.BLOCK,\n },\n Roboto_500Medium: {\n uri: require('../assets/fonts/Roboto-Medium.ttf'), //Roboto_500Medium,\n display: Font.FontDisplay.BLOCK,\n },\n })\n await Icon.loadFont()\n } catch (e) {\n // We might want to provide this error information to an error reporting service\n console.warn(e)\n } finally {\n setLoadingComplete(true)\n SplashScreen.hideAsync()\n }\n }\n\n loadResourcesAndDataAsync()\n }, [])\n\n return isLoadingComplete\n}\n","module.exports = __webpack_public_path__ + \"./fonts/Roboto-Light.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/Roboto-Medium.ttf\";","var map = {\n\t\"./facebook.svg\": 517,\n\t\"./instagram.svg\": 518,\n\t\"./linkedin.svg\": 519,\n\t\"./tiktok.svg\": 520,\n\t\"./twitter.svg\": 521,\n\t\"./youtube.svg\": 522\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 516;","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMTUgMTUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE1IDE1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzMyNzlCRTt9Cgkuc3Qxe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxnPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTExLjIsMTVIOC42Nkw3LjUsMTQuNjJMNi4zNSwxNUgzLjhDMS43LDE1LDAsMTMuMywwLDExLjJWMy44QzAsMS43LDEuNywwLDMuOCwwaDcuNDFDMTMuMywwLDE1LDEuNywxNSwzLjgKCQl2Ny40MUMxNSwxMy4zLDEzLjMsMTUsMTEuMiwxNXoiLz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik02LjM0LDUuODdWNy41SDQuNDZ2Mi4xNGgxLjg4VjE1aDIuMzJWOS42NGgxLjczbDAuMzMtMi4xNEg4LjY2VjYuMTFjMC0wLjU5LDAuMjktMS4xNiwxLjIxLTEuMTZoMC45M1YzLjEzCgkJYzAsMC0wLjg1LTAuMTQtMS42Ni0wLjE0QzcuNDUsMi45OSw2LjM0LDQuMDEsNi4zNCw1Ljg3eiIvPgo8L2c+Cjwvc3ZnPg==\"","module.exports = __webpack_public_path__ + \"static/media/instagram.bd66ffe6.svg\";","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMTUgMTUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE1IDE1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzA0N0JCNjt9Cgkuc3Qxe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxnPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTExLjUsMGgtOEMxLjU3LDAsMCwxLjU3LDAsMy41djhDMCwxMy40MywxLjU3LDE1LDMuNSwxNWg4YzEuOTMsMCwzLjUtMS41NywzLjUtMy41di04CgkJQzE1LDEuNTcsMTMuNDMsMCwxMS41LDB6Ii8+Cgk8Zz4KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNC4xNSw1LjkzaDEuNTJ2NC44OUg0LjE1VjUuOTN6IE00LjkxLDMuNUM1LjQsMy41LDUuOCwzLjksNS44LDQuMzhjMCwwLjQ5LTAuMzksMC44OC0wLjg4LDAuODgKCQkJYy0wLjQ5LDAtMC44OC0wLjQtMC44OC0wLjg4QzQuMDMsMy45LDQuNDMsMy41LDQuOTEsMy41Ii8+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTYuNjMsNS45M2gxLjQ2VjYuNmgwLjAyYzAuMi0wLjM4LDAuNy0wLjc5LDEuNDQtMC43OWMxLjU0LDAsMS44MiwxLjAxLDEuODIsMi4zM3YyLjY4SDkuODVWOC40NAoJCQljMC0wLjU3LTAuMDEtMS4zLTAuNzktMS4zYy0wLjc5LDAtMC45MSwwLjYyLTAuOTEsMS4yNnYyLjQySDYuNjNWNS45M3oiLz4KCTwvZz4KPC9nPgo8L3N2Zz4=\"","module.exports = __webpack_public_path__ + \"static/media/tiktok.c888201b.svg\";","module.exports = __webpack_public_path__ + \"static/media/twitter.17598046.svg\";","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMTUgMTUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE1IDE1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0VFMkUyRjt9Cgkuc3Qxe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxnPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTExLjUsMTVoLThDMS41NywxNSwwLDEzLjQzLDAsMTEuNWwwLThDMCwxLjU3LDEuNTcsMCwzLjUsMGw4LDBDMTMuNDMsMCwxNSwxLjU3LDE1LDMuNXY4CgkJQzE1LDEzLjQzLDEzLjQzLDE1LDExLjUsMTV6Ii8+Cgk8Zz4KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTEuOTEsNi40OGMwLTEuMDktMC44OC0xLjk3LTEuOTctMS45N0g0Ljg5Yy0xLjA5LDAtMS45NywwLjg4LTEuOTcsMS45N3YyLjM1YzAsMS4wOSwwLjg4LDEuOTcsMS45NywxLjk3CgkJCWg1LjA1YzEuMDksMCwxLjk3LTAuODgsMS45Ny0xLjk3VjYuNDh6IE04Ljk0LDcuODNMNi42OCw4Ljk1QzYuNTksOSw2LjI5LDguOTMsNi4yOSw4Ljgzdi0yLjNjMC0wLjEsMC4zLTAuMTcsMC4zOS0wLjEyTDguODUsNy42CgkJCUM4Ljk0LDcuNjUsOS4wMyw3Ljc4LDguOTQsNy44M3oiLz4KCTwvZz4KPC9nPgo8L3N2Zz4K\""],"sourceRoot":""}