{"version":3,"sources":["components/ScrollToTop.tsx","trendrating/api/account/Decoder.ts","trendrating/api/account/endpoints.js","KeenContextProvider.tsx","hooks/useKeen.ts","hooks/useAuth.tsx","components/Loader.tsx","trendrating/deepClone.ts","trendrating/api/Properties.ts","trendrating/api/Configuration.ts","types/Defaults.ts","AppContextProvider.tsx","hooks/useEnvironment.ts","pages/Footer.tsx","hooks/useInput.tsx","hooks/useValidator.tsx","components/AuthenticationWizard/Login.tsx","components/Select.tsx","components/AuthenticationWizard/Registration.tsx","components/AuthenticationWizard/SuccessStep.tsx","components/ChangePassword.tsx","components/ProfileEditForm.tsx","eventBus.ts","hooks/useRouter.ts","pages/Header.tsx","pages/PageWrap.tsx","pages/Disclaimer.tsx","trendrating/app/formatter/FormOptions.ts","trendrating/app/formatter/RankingSelection.ts","trendrating/app/formatter/Strategy.ts","trendrating/date/TDate.js","trendrating/formatter/Taxonomy.js","trendrating/formatter/_currency.js","trendrating/formatter/_rate.js","trendrating/formatter/Formatter.js","trendrating/utils/Formatter.js","hooks/useFormatter.ts","queries/products.ts","trendrating/api/PTag.ts","pages/HomePortfoliosTicker.tsx","pages/PortfolioHomeLongOnly.tsx","pages/PortfolioHomeClassic.tsx","pages/PortfolioHomeLongShort.tsx","pages/Home.tsx","pages/NoMatch.tsx","pages/PrivacyPolicy.tsx","components/Chart.tsx","components/ProductChart.tsx","hooks/data/useProduct.ts","pages/HomeDisclaimer.tsx","hooks/useDisclaimer.tsx","pages/detail/ProductDetailYearChart.tsx","pages/detail/ProductDetailAnalyticsFacts.tsx","components/Grid.tsx","pages/detail/ProductDetailAnalyticsGridMonthly.tsx","pages/detail/ProductDetailAnalyticsGridQuarterly.tsx","pages/detail/ProductDetailAnalyticsGridYearly.tsx","pages/detail/ProductDetailAnalyticsGrid.tsx","pages/detail/ProductDetailPerformanceCharts.tsx","pages/detail/ProductDetailAnalyticsPerformanceGrid.tsx","pages/detail/ProductDetailAnalytics.tsx","hooks/useProperties.ts","components/DownloadCsv.tsx","components/Lock.tsx","components/LockTable.tsx","trendrating/api/compute/Taxon.ts","components/LongShortBarChart.tsx","components/PeerWeightPie.tsx","components/PeerWeightTable.tsx","components/PeerWeight.tsx","pages/detail/ProductDetailHoldings.tsx","pages/detail/ProductDetailOverview.tsx","pages/list/ProductSelect.tsx","components/ProductHistogramQuartersDiff.tsx","pages/ProductDetail.tsx","pages/list/ProductListFilter.tsx","pages/list/ProductListFilterRadio.tsx","pages/list/ProductListFilters.tsx","pages/list/ProductListItemBody.tsx","pages/list/ProductListItem.tsx","pages/list/ProductListItems.tsx","pages/list/ProductListTableItems.tsx","pages/list/ProductListTableItemsLS.tsx","pages/ProductList.tsx","pages/TermsOfService.tsx","AppAuthenticated.tsx","components/capture/CaptureChart.tsx","components/capture/CaptureDetail.tsx","components/capture/CaptureStatistic.tsx","components/capture/CaptureStatisticChart.tsx","pages/Capture.tsx","App.tsx","i18n.js","index.tsx","reportWebVitals.ts"],"names":["ScrollToTop","pathname","useLocation","useEffect","window","scrollTo","decodeUser","response","rawData","id","firstName","lastName","email","userName","role","profile","type","firm","creationTime","format","active","country","products","contractType","productMax","billingStart","conversionDate","owner","stripeId","endpoints","get","remove","register","login","logout","updateFields","KeenContext","createContext","undefined","KeenContextProvider","children","useState","keen","setKeen","md","MobileDetect","navigator","userAgent","is","client","KeenTracking","projectId","writeKey","helpers","extendEvents","geo","ip_address","info","tech","browser","getBrowserProfile","user_agent","device_type","tablet","mobile","addons","name","input","ip","remove_ip_property","output","ua_string","Provider","value","useKeen","context","useContext","Error","recordEvent","useCallback","action","actionParam","user","isProduction","document","location","host","startsWith","console","log","action_param","AuthContext","isReady","isLogged","signin","signout","editProfile","ProvideAuth","auth","useProvideAuth","useAuth","setReady","setUser","axios","withCredentials","then","data","status","error","Promise","reject","message","decodedUser","fieldsToUpdate","a","post","res","headers","params","ts","Date","getTime","password","Loader","props","className","Container","Row","Col","sm","deepClone","Set","Array","from","Map","k","v","RegExp","source","flags","valueObject","Object","keys","reduce","acc","key","assign","isArray","Properties","properties","this","etf","index","security","stock","typeSpecificProperties","property","includes","toLowerCase","labelIndex","instrumentType","_get","securityType","defaultInstrumentType","_instrumentType","propertyType","label","JSON","stringify","Configuration","configuration","product","flavourCode","productCode","flavourName","codeName","generate","item","column","columnsAvailable","ready","i","length","push","items","landing","options","_snakeCase2CamelCase","page","pages","alerts","enabled","widgets","workflow","analysisInstrument","analysisList","analysisPeer","ranking","screening","strategyBuilder","strategyTracker","systematicPortfolios","_ranking","checkColumns","viewer","what","where","whereWhat","viewerFilter","_selection","selectionUniverse","smartBeta","_smartBeta","columns","columns_available","field","pageId","actionItems","option","_function","_functionName","_functions","_operator","_operatorName","_operators","_option","_options","_transformations","lengthI","functions","operators","j","lengthJ","isRemovable","tag","getTag","lengthK","columnHeaders","defaultTemplate","presetTemplates","transformations","create","_factorConstraint","edit","_item","_property","snakeCaseStrings","converted","tokens","split","toUpperCase","substring","join","paths","home","productDetail","disclaimer","privacy","termsOfService","environmentTemplate","account","analysis_list","overview_tabs","table","Stock","Index","ETF","Sector","Currency","headerIndex","panelIndex","formatter","display","widget","default_template","preset_templates","decile","outlier","constraints","max","min","quantile","quartile","quintile","threshold","sortByNumeric","sortByOutlier","sortByQuantile","sortByPerformance","sortByRating","sortByRetracement","sortByThreshold","propertyLabelIndex","function","functionParams","operator","operatorParams","rules","structure","optimize","rank","landing_page","landing_page_options","Commodity","widgetOptions","hasDomesticForeign","isSortEnabled","strategy_builder","form_advanced","selection_universe","bottom","equalTo","equalToPercentage","equalToRate","A","B","C","D","greaterThan","gt","greaterThanPercentage","greaterThanOrEqualTo","ge","greaterThanOrEqualToPercentage","lessThan","lt","lessThanPercentage","lessThanOrEqualTo","le","lessThanOrEqualToPercentage","range","rangeDecile","rangePercentage","rangeQuartile","rangeQuintile","rangeMarketCap","rangeVolatility","top","transformation","weight","premium","rate","form_alpha","form_compare","form_long_short","form_macro_rotation","form_smart_beta","hedging","sortByExists","sortByString","selection","track","comparison","typeName","api","baseEndPoint","domain","compute","node","isDebug","report","rest","uri","forcedEnv","testPath","prodPath","hostname","pathResolver","devModeProducts","usage","storeKey","storeUrl","customerCare","isImpersonating","userId","taxonomies","AppContext","AppEnvironmentContext","reducer","prevState","payload","AppContextProvider","useReducer","environment","dispatch","setValue","timestamp","now","useQuery","isLoadingFieldsConfiguration","isLoading","errorFieldsConfiguration","dataFieldsConfiguration","isLoadingTaxonomies","errorTaxonomies","dataTaxonomies","useAppContext","useEnvironment","FooterLinks","to","Footer","fluid","getFullYear","useInput","initialValue","onchange","event","target","useSignUpValidator","signUpInputValues","VALIDATE_EMAIL","VALIDATE_FIRSTNAME","VALIDATE_LASTNAME","VALIDATE_FIRM","VALIDATE_COUNTRY","VALIDATE_ROLE","t","useTranslation","useImmerReducer","draft","test","isValid","countryRuleValidation","roleRuleValidation","state","isFormValid","values","filter","Login","handleLogin","hasLoginFailed","loginFailedMessage","showRegisterMessage","navigateToRegistration","checkValidation","startingCheckValidation","paramsLogin","trim","signInInputValues","VALIDATE_PASSWORD","useSignInValidator","validInputs","emailInputRef","useRef","current","focus","addErrorClass","isInputValid","emailErrorClass","passwordErrorClass","onSubmit","preventDefault","htmlFor","onChange","autoComplete","placeholder","ref","title","onClick","Select","selectTitle","selectedValue","onSelect","Form","map","replace","CountrySelect","Registration","handleRegister","navigateToLogin","navigateToSuccess","confirmPassword","firstNameErrorClass","lastNameErrorClass","firmErrorClass","countryErrorClass","roleErrorClass","form","SuccessStep","newPassword","confirmNewPassword","formStatus","errorMessage","showMessage","loadingStatus","success","ChangePassword","userData","changeUserPassword","handleSubmit","Button","disabled","ProfileEditForm","editHandler","setSuccess","setIsLoading","userEmail","userInvestorProfile","userFirstName","userLastName","userCountry","userFirm","paramsEdit","e","catch","err","eventBus","callback","addEventListener","detail","dispatchEvent","CustomEvent","removeEventListener","useRouter","useParams","history","useHistory","match","useRouteMatch","useMemo","query","URLSearchParams","search","HeaderUserBox","setShowUserBox","initialTab","router","isLogging","setIsLogging","setLoginFailedMessage","setLoginFailed","setShowRegisterMessage","wizardState","setWizardState","wizardSteps","registration","goToLogin","goToRegistration","goToSuccess","setTimeout","AuthWizardComponent","variant","Header","viewType","showUserBox","predefinedTab","setPredefinedTab","busShowUserBox","showBox","prevShowBox","body","classList","add","src","alt","PageWrap","footerChildren","headerChildren","mode","setViewType","DisclaimerText","Disclaimer","FormOptions","checked","innerHTML","LEVEL_TO_DISPLAY_ITEM_TITLE","micro","small","mid","large","datum","taxonomy","SizeClassification","optionsMapAtLevel","optionsOrder","getField","isFinite","raw_value","startIndex","endIndex","RankingSelection","formatType","optionsRanking","configurationBuilder","_prepareOptionsRanking","functionName","formatted","operatorName","_formatted","_formatBottomTop","_formatRange","_formatRangePercentage","getOption","propertyLabel","keyCounter","start","end","itemFunction","itemOperator","keyFunction","optionsMap","Strategy","formatRankingSelection","optionsSelection","optionsSmartBeta","taxonomyStock","formAdvanced","stockClassification","StockClassification","String","strong","subTypes","_rankingSelection","smartFormatter","constraint","formattedConstraint","formattedConstraints","_rankingSelectionPropertyLabel","foundFunction","foundOperatorParams","foundFunctionParams","foundOperator","foundParam","TDate","dateObject","getTimezoneOffset","millisecondsToDays","date","day","getDate","month","getMonth","_prefixZero","days","daysToMilliseconds","setHours","milliseconds","getUTCDate","getUTCMonth","getUTCFullYear","parseInt","quotient","Math","floor","remainder","dateToDays","today","Taxonomy","taxonId","taxonType","parent","getAncestorAtLevel","taxonLevel","charAt","getAncestorByLevel","whatWhere","whatType","whereType","whereParent","_currency","symbol","EUR","GBP","JPY","USD","_rate","U","class","color","colorChart","rateClass","tcrClass","Formatter","baseClass","strategyFormatter","normalizationThreshold","notAvailable","_getOption","width","number","barValue","abs","cssClassBar","cssClassBarBlock","bar","createElement","style","barSpanContent","appendChild","barSpanFill","backgroundColor","barSpanFillOpposite","outerHTML","isMillisecond","separator","rawDate","Y","d","m","getUTCDay","M","months","token","hasIcon","valueHelper","decimals","isPercentage","hasAbbreviatedLabel","icon","html","high","low","pdf","text","abbr","standard","isUpgrade","_newHighNewLowHelper","template","downgrade","upgrade","colored","contraints","hasPositiveSign","zero","parseFloat","isNaN","toFixed","valueFixed","zeroFixed","rounded","Number","currency","formattedValue","numberBig","hasTrendArrow","scale","rateMeta","Infinity","rateChange","rateDate","ratePrev","ratePrevMeta","rateMetaTitle","hasToEscapeXmlEntities","escapeXmlEntities","string","ancestorAtLevel","taxonomyUtils","defaultValue","labels","PEER_SHORT_NAMES","SERVER_TYPE_DEFAULT","SERVER_TYPES","FormatterBase","StrategyFormatter","setProperties","setTaxonomies","trendratingFormatterType","formatterName","_commonHtmlPdfText","isShortened","suffixWithName","_name","getWhatAndWhereLabel","whatTaxonomy","whereTaxonomy","size","syntheticRankProperty","rankingRule","instrument","custom","propertyAlias","rationaleObject","_getFormatter","_resolveReferenceProperties","propertyServer","sourceType","warn","_getFormatterFallback","backendProperty","sourcePropertyConfiguration","propertyConfiguration","hasOwnProperty","formatters","outputNotAvailable","serverTypeDefault","serverTypes","_properties","serverType","clientType","_preparePropertyConfiguration","useFormatter","getFilePath","pathKey","develop","all","longShort","ANALYTICS_DICT","performance_equity_1_Y","single","performance_equity_3_Y","performance_equity_5_Y","annualized_rate_of_Return_equity","total_return","annualized_total_return","last_12_months","max_drawdown","avg_yearly_drawdown","monthly_std","sharpe","sterling","beta","one_months_return","three_months_return","six_months_return","one_year_return","two_years_return_annualized","three_years_return_annualized","five_years_return_annualized","ten_years_return_annualized","positive_quarters_perc","negative_quarters_perc","outperforming_quarters_perc","YTD","yearly_performances","quarterly_performances","monthly_performances","yearly_drawdown","quarterly_drawdown","monthly_drawdown","yearly_standard_dev","quarterly_standard_dev","monthly_standard_dev","number_of_holdings","yearly_avg_turnover","PTag","analyticsMap","analytics","curve","isSingleReturn","curveToSerieID","H","tagWithSerieId","HomePortfoliosTicker","portfolios","setPortfolios","filepath","isLoadingProducts","errorProducts","dataProducts","annualizedReturns","isPositive","priceAnalytics","stats","hPosAnalytics","shortName","positions","annualizedRateOfReturn","portfolio","speed","gradientColor","pauseOnHover","PortfolioHomeLongOnly","listStyle","padding","href","rel","FAQsDict","PortfolioHomeClassic","fontSize","marginTop","fontWeight","textTransform","colSpan","flex","textAlign","marginBottom","FAQs","FAQ","question","eKey","Accordion","Item","eventKey","Body","f","toString","PortfolioHomeLongShort","showMore","setShowMore","xs","zIndex","textShadow","lg","HomeWrap","overflowX","Home","NoMatch","PrivacyPolicyText","PrivacyPolicy","Chart","forwardRef","constructorType","useAutomaticRatio","chartRef","createRef","useImperativeHandle","chart","reflow","highcharts","Highcharts","ProductChart","enableRelative","isInteractive","showBar","setIsChartEnabled","setScale","period","setOptions","showRelative","setShowRelative","firstDate","lastDate","subject","benchmark","priceList","priceBenchmark","result","quot","rem","u","tmpDate","toStr","parseISO","subYears","subMonths","ytdDate","daysToDate","_startDateFromPeriod","ticker","_date2Milliseconds","T","setRelative","relative","series","show","hide","redraw","benchmarkSec","lineWidth","shadow","backtestEndsAt","crossAtPoint","mainSec","relativeSec","historyElement","sort","b","Hlong","Hshort","datesLong","datesShort","h","Hdata","first","newCrossAtPoint","_setCrossPoint","fromJsonToSerieRescale","targetData","rescaleAt","stopAtDate","dataLength","serie","rescaleRatio","rescaleAtDate","rescaleAtValue","firstValidDate","serieDataPrice","allowPointSelect","clip","dataGrouping","events","legendItemClick","states","hover","lineWidthPlus","visible","yAxis","alignTicks","animation","borderWidth","height","resetZoomButton","theme","credits","exporting","legend","margin","plotOptions","connectNulls","cursor","enableMouseTracking","inactive","opacity","rangeSelector","scrollbar","tooltip","hideDelay","shared","useHTML","valueDecimals","xAxis","plotLines","zoomEnabled","align","x","opposite","showEmpty","startOnTick","fontFamily","verticalAlign","rotation","refresh","Check","peerWeightSort","isTcrMode","peerWeightData","dataType","cardinality","HomeDisclaimer","handleDisclaimer","isDisclaimerAccepted","Modal","centered","scrollable","onHide","closeButton","Title","useDisclaimer","useCookies","cookies","setCookie","hasCookie","setDisclaimerAccepted","path","ProductDetailYearChart","strategy","setActiveKey","list","ProductDetailAnalyticsFacts","strategyAnalytics","analyticsExtractor","productInfo","strategyLabel","benchmarkLabel","differenceLabel","cumulativeLabel","calendarAnalytics","timeframes","minTimeFrame","maxTimeFrame","formattedMinTimeframe","formattedMaxTimeframe","xxl","xl","Table","position","dangerouslySetInnerHTML","__html","Grid","gridRef","gridInstanceRef","preparedColumns","sorter","cell","formatterParams","onRendered","getData","userOptions","newGridInstance","Tabulator","columnHeaderVertAlign","virtualDomBuffer","layout","cellVertAlign","selectable","setColumns","clearSort","initialSort","setSort","destroy","exception","replaceData","ProductDetailAnalyticsGridMonthly","analyticsDetail","percentageFormatter","getValue","percentageColoredFormatter","hozAlign","vertAlign","_s_normalizationThreshold","ProductDetailAnalyticsGridQuarterly","UTC","quarter","ProductDetailAnalyticsGridYearly","ProductDetailAnalyticsGrid","yearlyRef","monthlyRef","quarterlyRef","getAnalyticsByTimeframe","timeframe","yearly","perf","drawdown","std","quarterly","monthly","portfolioPerf","benchmarkPerf","diffPerf","portfolioDrawDown","benchmarkDrawDown","diffDrawDown","portfolioStd","benchmarkStd","diffStd","formatAnalytics","aggregateAnalytics","timeFrame","strategyPerformance","strategyMaxDrawdown","strategyVolatility","benchmarkPerformance","benchmarkMaxDrawdown","benchmarkVolatility","deltaPerformance","deltaMaxDrawdown","deltaVolatility","turnover","arrayOfObject","LENGTH","aAbs","bAbs","maxIndex","minIndex","IQR","normalizeAndCutOutliers","yearlyAnalytics","quarterlyAnalytics","monthlyAnalytics","Tab","defaultActiveKey","transition","Nav","Link","Content","Pane","instance","prepareOptions","limits","categories","benchmarkData","diffData","borderColor","floating","points","forEach","point","y","turboThreshold","tickAmount","tickInterval","endOnTick","ProductDetailPerformanceCharts","chartEntityRef","optionsEntity","setOptionsEntity","dataE","dataB","dataD","hasBenchmark","ProductDetailAnalyticsPerformanceGrid","priceListLastDate","i18n","formatPerformance","formatPerformanceColor","priceListLastDateFormatted","language","ProductDetailAnalytics","yearsLabel","useProperties","isIE11","msSaveOrOpenBlob","getSeparator","toLocaleString","toCSV","lines","enclosingCharacter","header","row","element","elementOrEmpty","buildUriFromCsv","csv","uFEFF","URL","webkitURL","createObjectURL","blob","Blob","DownloadCsv","download","productId","setCsv","setHref","csvHeader","line","csvHeaderItem","buildCsv","alert","msSaveBlob","Lock","OverlayTrigger","placement","overlay","Tooltip","LockTable","formatTaxonPrefixingParent","taxon","getTaxonById","taxonomyIndex","prepareSerie","dataSerie","ratingScale","totalWeight","trendrating","LongShortBarChart","alignChartOnTop","isPieClickable","showFlags","setSerie","serieLong","setSerieLong","serieShort","setSerieShort","weights","weightsShort","weightsLong","chartData","net","long","short","find","buildChartData","reversed","step","pos","imagePath","reserveSpace","borderRadius","pointsInfo","numberFormat","stacking","maxPointWidth","PeerWeightPie","containerRef","colors","baseColor","fill","brighten","spacing","pie","center","dataLabels","click","stopPropagation","outside","slicedOffset","PeerWeightTable","handleClick","tcr","PeerWeightMarketSelect","handleChange","PeerWeightSectorSelect","PeerWeight","peerWeights","chartType","setData","setFilter","Country","CountryLong","CountryShort","SectorLong","SectorShort","Industry","IndustryLong","IndustryShort","classNames","ProductDetailHoldings","titleFormatter","widthGrow","holdings","isLongShort","method","dir","ProductDetailOverview","pName","blocks","blks","blk","section","markets","investmentUniverse","minimumDailyLiquidity","allocationRules","selectionRules","rankingRules","rebalance","block","idx","OverviewBlock","ProductSelect","selectedId","Dropdown","Toggle","Menu","sorterMap","ProductHistogramQuartersDiff","btnActive","setBtnActive","visibleSerie","setVisibleSerie","categoryFormatter","initialdata","dataObjectDiff","dataObjectPerf","dataXYDiff","entries","prev","dataXYPerf","sortBy","sortIndex","currentData","serie1","serie2","onClickDistributionBtn","onClickCalendarBtn","valuesDiff","valuesPerf","maxDiff","valueDiff","s","subtitle","gridLineWidth","minPadding","overflow","setVisible","getName","update","groupPadding","negativeColor","ProductDetail","activeKey","checkDisclaimer","analyticsRef","overviewChartRef","baseUrl","queryKey","url","getProductFromDataList","isLoadingProduct","errorProduct","dataProduct","productType","setProduct","calendarRebalance","securities","fetch","accumulator","clusters","total","peerWeightsIndustryShort","peerWeightsIndustryLong","industry","sector","peerWeightsSectorShort","peerWeightsSectorLong","blockedHoldings","useProduct","productOptions","mountOnEnter","unmountOnExit","ProductListFilter","prevFilter","updatedFilter","ProductListFilterRadio","reset","toggleFilter","sortByStructure","numberA","indexOf","numberB","ProductListFilters","showWarning","setShowWarning","filterProductByMethod","filterProductByGeo","geoList","Boolean","orderedKeys","themeList","resetThemeFilter","validThemeFilters","themeFilter","methodList","methods","prevShowWarning","prepareDataFromPosition","productByPosition","annualizedBenchmark","aggregated","AnnualizedRateOfReturn","annualizedDifference","diff","annualizedPortfolio","equity","years","annualizedPerformance","difference","ProductListItemBody","totalRows","descriptions","isSingle","singleItem","description","grouped","rowDifference","rule","Popover","as","ProductListItem","isVisible","transitions","useTransition","enter","leave","reverse","delay","config","mass","tension","friction","clamp","productName","styles","div","ProductListItems","maxLength","groupedProducts","sortedProducts","renderedList","getOrderedKeys","ProductListTableItems","exposureA","exposure","exposureB","newItem","oneYearPerf","three_years_perf","ten_years_perf","ten_years_perf_diff","sharpeRatio","positiveQuartersPerc","outperformersQuartersPerc","isCombined","formatColPDF","ancorNode","iconNode","baseURL","formatPerformanceColored","formatNumber","formatPercentage","cssClass","headerTooltip","headerHozAlign","headerSortStartingDir","sorterParams","thousandSeparator","decimalSeperator","alignEmptyValues","rowClick","toggleSelect","link","ProductListTableItemsLS","performanceEquity1Y","performanceEquity3Y","performanceEquity5Y","performanceBenchmark1Y","performanceBenchmark3Y","performanceBenchmark5Y","performanceDiff1Y","performanceDiff3Y","performanceDiff5Y","annualizedRateOfReturnEquity","annualizedRateOfReturnBenchmark","annualizedRateOfReturnDiff","capture","obj","sortNumeric","ProductList","showTable","cookie","initState","productFilters","isLoadingList","errorList","dataList","combinedProduct","TermsOfServiceText","TermsOfService","AppAuthenticated","exact","buttonText","cookieName","background","buttonStyle","expires","CaptureChart","dispersion","topList","rc","bottomList","pr_adjusted","serieName","perfMnemonic","normalizedRatingPerf","stillLoss","avoidedLoss","sec","rating","pointAvoidedLoss","showLastLabel","maxPadding","AB","CD","spacingTop","spacingBottom","CaptureDetail","any","card","ABPerc","CDPerc","CaptureStatistic","dField","byAgeField","byAge","clusterStats","CaptureStatisticChart","concat","byAgefMnemonic","Capture","activeDispersion","setActiveDispersion","showTopList","setShowTopList","showBottomList","setShowBottomList","showTopCaptureList","setShowTopCaptureList","showBottomCaptureList","setShowBottomCaptureList","formatPercentageNoDecimal","isLoadingDispersions","errorDispersions","dispersions","getDispersionById","isLoadingDispersion","errorDispersion","optionsTopList","optionsBottomList","optionsCaptureBottomList","optionsCaptureTopList","columnsCapture","App","use","Backend","LanguageDetector","initReactI18next","i18nextPlugin","init","fallbackLng","debug","react","useSuspense","interpolation","escapeValue","enableAllPlugins","bubbles","cancelable","evt","createEvent","initCustomEvent","prototype","Event","onPerfEntry","queryClient","QueryClient","defaultOptions","queries","staleTime","refetchOnWindowFocus","ReactDOM","render","StrictMode","I18nextProvider","CookiesProvider","getElementById","Function","getCLS","getFID","getFCP","getLCP","getTTFB"],"mappings":"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,YAEFC,MAAO,CACL,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,MAEFC,IAAK,CACH,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,aAEFC,OAAQ,CACN,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,YACA,YAEFC,SAAU,CACR,SACA,SACA,OACA,KACA,KACA,KACA,MACA,KACA,KACA,OAGJtD,kBAAmB,CACjB,CACEC,MAAO,UAET,CACEA,MAAO,QAET,CACEA,MAAO,WAET,CACEA,MAAO,YAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,QAET,CACEA,MAAO,YAET,CACEA,MAAO,YACPsD,YAAa,GAEf,CACEtD,MAAO,UAET,CACEA,MAAO,YAET,CACEA,MAAO,UAET,CACEA,MAAO,OAET,CACEA,MAAO,WACPuD,WAAY,GAEd,CACEvD,MAAO,SACPuD,WAAY,GAEd,CACEvD,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,KACPwD,UAAW,GAEb,CACExD,MAAO,KACPwD,UAAW,GAEb,CACExD,MAAO,OAET,CACEA,MAAO,OAET,CACEA,MAAO,YAET,CACEA,MAAO,aAET,CACEA,MAAO,OAET,CACEA,MAAO,MAET,CACEA,MAAO,KACPsD,YAAa,GAEf,CACEtD,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,QAET,CACEA,MAAO,QAET,CACEA,MAAO,QAET,CACEA,MAAO,QAET,CACEA,MAAO,QAET,CACEA,MAAO,gBAET,CACEA,MAAO,iBAET,CACEA,MAAO,gBAET,CACEA,MAAO,oBAKfP,aAAc,CACZuD,MAAO,CACL,CACE,CACEjG,MAAO,SACPiD,MAAO,KACPyD,QAAS,CACPC,OAAQ,cAGZ,CACE3G,MAAO,QACPiD,MAAO,CAAC,KAAM,YAAa,KAAM,MACjCyD,QAAS,CACPC,OAAQ,eAGZ,CACE3G,MAAO,eA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,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,QAET,CACEA,MAAO,QAET,CACEA,MAAO,QAET,CACEA,MAAO,QAET,CACEA,MAAO,QAET,CACEA,MAAO,gBAET,CACEA,MAAO,iBAET,CACEA,MAAO,gBAET,CACEA,MAAO,oBAKfP,aAAc,CACZuD,MAAO,CACL,CACE,CACEjG,MAAO,SACPiD,MAAO,UACPyD,QAAS,CACPC,OAAQ,eACRyB,UAAW,CACT,mBACA,yBAIN,CACEpI,MAAO,WACPiD,MAAO,WACPyD,QAAS,CACPC,OAAQ,iBACRyB,UAAW,YAGf,CACEpI,MAAO,SACPiD,MAAO,MACPyD,QAAS,CACPC,OAAQ,eACRyB,UAAW,eAGf,CACEpI,MAAO,YACPiD,MAAO,YACPyD,QAAS,CACPC,OAAQ,qBAQtB,CACElF,SAAS,EACTtL,GAAI,cACJuL,QAAS,CACPY,OAAQ,CACN2D,MAAO,CACLlD,QAAS,CACP5D,SAAU,CACR,SACA,OACA,KACA,KACA,KACA,KACA,WACA,YAGJ6D,kBAAmB,CACjB,CACEC,MAAO,UAET,CACEA,MAAO,WAET,CACEA,MAAO,YAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,QAET,CACEA,MAAO,YAET,CACEA,MAAO,UAET,CACEA,MAAO,YAET,CACEA,MAAO,UAET,CACEA,MAAO,OAET,CACEA,MAAO,WACPuD,WAAY,GAEd,CACEvD,MAAO,SACPuD,WAAY,GAEd,CACEvD,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,SAKfP,aAAc,CACZuD,MAAO,CACL,CACE,CACEjG,MAAO,SACPiD,MAAO,KACPyD,QAAS,CACPC,OAAQ,oBASxBhF,SAAU,CACR0G,SAAU,CACR5G,SAAS,GAEX6G,KAAM,CACJ7G,SAAS,KAIf8G,aAAc,OACdC,qBAAsB,CAAC,QACvBxG,UAAW,CACTP,SAAS,EACTzB,MAAO,iBACP0B,QAAS,CACPK,QAAS,CACP4C,OAAQ,CACN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AAU,OACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,eACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,gBACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,eACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,gBACVwI,mBAAoB,MAK5BxF,OAAQ,CACN2D,MAAO,CACLlD,QAAS,CACP5D,SAAU,CACR,SACA,OACA,KACA,KACA,KACA,MACA,KACA,MAEF+G,MAAO,CACL,SACA,OACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,YACA,YAEFC,MAAO,CACL,SACA,OACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,MAEFC,IAAK,CACH,SACA,OACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,aAEFC,OAAQ,CACN,SACA,OACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,YACA,YAEFoC,UAAW,CACT,SACA,OACA,KACA,KACA,KACA,MACA,KACA,MAEFnC,SAAU,CACR,SACA,OACA,KACA,KACA,KACA,MACA,KACA,KACA,OAGJtD,kBAAmB,CACjB,CACEC,MAAO,UAET,CACEA,MAAO,QAET,CACEA,MAAO,WAET,CACEA,MAAO,YAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,QAET,CACEA,MAAO,YAET,CACEA,MAAO,YACPsD,YAAa,GAEf,CACEtD,MAAO,YAET,CACEA,MAAO,UAET,CACEA,MAAO,OAET,CACEA,MAAO,WACPuD,WAAY,GAEd,CACEvD,MAAO,SACPuD,WAAY,GAEd,CACEvD,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,KACPwD,UAA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A,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL+O,kBAAmB,IACnBQ,sBAAuB,IACvBG,+BAAgC,IAChCG,mBAAoB,IACpBG,4BAA6B,IAC7BO,gBAAiB,OAIvB,CACE3G,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,gBACb1E,SAAU,cACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACLqP,YAAa,OAInB,CACEzF,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,MAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,iBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,oBAKlBuD,UAAW,CACTkB,UAAW,CACT8G,OAAQ,CACN7K,MAAO,SACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,IACLC,IAAK,GAEPlH,MAAO,SACPtJ,KAAM,mBACNyD,MAAO,KAIb6J,UAAW,CACT8G,QAAS,CACP9K,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,MACP7F,MAAO,OAET,CACE6F,MAAO,SACP7F,MAAO,UAET,CACE6F,MAAO,SACP7F,MAAO,WAGXzD,KAAM,SACNyD,MAAO,QAGX4Q,KAAM,CACJ/K,MAAO,SACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,OACNyD,MAAO,CACLiP,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,MAKXnI,QAAS,CACP,CACE2C,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,SACb1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,cACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL0Q,OAAQ,OAId,CACE9G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL0Q,OAAQ,OAId,CACE9G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,YACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,OACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,OACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,OACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,OACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,OACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,eACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,gBACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,eACVwI,mBAAoB,EACpB8C,eAAgB,MAElB,CACE7G,UAAW,CAAC,UACZC,UAAW,CAAC,CAAC,YACb1E,SAAU,gBACVwI,mBAAoB,EACpB8C,eAAgB,SAKxBI,WAAY,CACVvJ,SAAS,GAEXwJ,aAAc,CACZxJ,SAAS,GAEXyJ,gBAAiB,CACfzJ,SAAS,GAEX0J,oBAAqB,CACnB1J,SAAS,GAEX2J,gBAAiB,CACf3J,SAAS,GAEX,OAAQ,0DACR,OAAQ,4CACR4J,QAAS,CACP1G,OAAQ,CACNiC,iBAAkB,GAClB7C,UAAW,CACT+C,OAAQ,CACN9G,MAAO,SACP2G,OAAQ,CACN3G,MAAO,SACPtJ,KAAM,eACNyD,MAAO,KAGXiN,SAAU,CACRpH,MAAO,WACP2G,OAAQ,CACN3G,MAAO,WACPtJ,KAAM,eACNyD,MAAO,IAGXkN,SAAU,CACRrH,MAAO,WACP2G,OAAQ,CACN3G,MAAO,WACPtJ,KAAM,eACNyD,MAAO,IAGXA,MAAO,CACL6F,MAAO,UAGXgE,UAAW,CACTgF,OAAQ,CACNhJ,MAAO,SACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,KAGX8O,QAAS,CACPjJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,IAGX+O,kBAAmB,CACjBlJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,mBACNyD,MAAO,IAGXgP,YAAa,CACXnJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,OACNyD,MAAO,CACLiP,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,KAITC,YAAa,CACXxJ,MAAO,kBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEsP,GAAI,MAKZC,sBAAuB,CACrB1J,MAAO,kBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEsP,GAAI,MAKZE,qBAAsB,CACpB3J,MAAO,8BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,MAKZC,+BAAgC,CAC9B7J,MAAO,8BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEyP,GAAI,MAKZE,SAAU,CACR9J,MAAO,eACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACE4P,GAAI,MAKZC,mBAAoB,CAClBhK,MAAO,eACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACE4P,GAAI,MAKZE,kBAAmB,CACjBjK,MAAO,2BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACE+P,GAAI,MAKZC,4BAA6B,CAC3BnK,MAAO,2BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACE+P,GAAI,MAKZE,MAAO,CACLpK,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,UACPtJ,KAAM,uBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZG,YAAa,CACXrK,MAAO,SACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,KACPoB,QAAS,CACP,CACEpB,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,cACP7F,MAAO,OAGXzD,KAAM,gBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZI,gBAAiB,CACftK,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,UACPtJ,KAAM,iCACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZK,cAAe,CACbvK,MAAO,WACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,KACPoB,QAAS,CACP,CACEpB,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,MAGXzD,KAAM,gBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZM,cAAe,CACbxK,MAAO,WACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,KACPoB,QAAS,CACP,CACEpB,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,MAGXzD,KAAM,gBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZO,eAAgB,CACdzK,MAAO,uBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZQ,gBAAiB,CACf1K,MAAO,sBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,kBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZS,IAAK,CACH3K,MAAO,MACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,MAIbiH,QAAS,CACP,CACE2C,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,gBACb1E,SAAU,KACVwI,mBAAoB,EACpB3N,MAAO,CACL4N,SAAU,QACVC,eAAgB,KAChBC,SAAU,cACVC,eAAgB,CACdkB,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,KAIT,CACExF,UAAW,CAAC,SACZC,UAAW,CACT,CACE,iBACA,cACA,WACA,MACA,WAGJ1E,SAAU,YACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL8O,QAAS,IACTO,YAAa,IACbG,qBAAsB,IACtBG,SAAU,IACVG,kBAAmB,IACnBQ,eAAgB,OAItB,CACE1G,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,kBACA,qBACA,wBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL+O,kBAAmB,IACnBQ,sBAAuB,IACvBG,+BAAgC,IAChCG,mBAAoB,IACpBG,4BAA6B,IAC7BO,gBAAiB,OAIvB,CACE3G,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,gBACb1E,SAAU,cACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACLqP,YAAa,OAInB,CACEzF,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,wBACA,qBACA,kBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,wBACA,qBACA,kBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL+O,kBAAmB,IACnBQ,sBAAuB,IACvBG,+BAAgC,IAChCG,mBAAoB,IACpBG,4BAA6B,IAC7BG,gBAAiB,SAM3BzF,KAAM,CACJ+B,iBAAkB,GAClB7C,UAAW,CACToD,SAAU,CACRnH,MAAO,WACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,IACLC,IAAK,GAEPlH,MAAO,SACPtJ,KAAM,SACNyD,MAAO,IAGXA,MAAO,CACL6F,MAAO,UAGXgE,UAAW,CACTgF,OAAQ,CACNhJ,MAAO,SACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,KAGX8O,QAAS,CACPjJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,IAGX+O,kBAAmB,CACjBlJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,mBACNyD,MAAO,IAGXgP,YAAa,CACXnJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,OACNyD,MAAO,CACLiP,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,KAITC,YAAa,CACXxJ,MAAO,kBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEsP,GAAI,MAKZC,sBAAuB,CACrB1J,MAAO,kBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEsP,GAAI,MAKZE,qBAAsB,CACpB3J,MAAO,8BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,MAKZC,+BAAgC,CAC9B7J,MAAO,8BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEyP,GAAI,MAKZE,SAAU,CACR9J,MAAO,eACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACE4P,GAAI,MAKZC,mBAAoB,CAClBhK,MAAO,eACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACE4P,GAAI,MAKZE,kBAAmB,CACjBjK,MAAO,2BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACE+P,GAAI,MAKZC,4BAA6B,CAC3BnK,MAAO,2BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACE+P,GAAI,MAKZE,MAAO,CACLpK,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,UACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZI,gBAAiB,CACftK,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,UACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZO,eAAgB,CACdzK,MAAO,uBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZQ,gBAAiB,CACf1K,MAAO,sBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,kBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZS,IAAK,CACH3K,MAAO,MACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,MAIbiH,QAAS,CACP,CACE2C,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,gBACb1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,iBACA,QAGJ1E,SAAU,YACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL8O,QAAS,IACTO,YAAa,IACbG,qBAAsB,IACtBG,SAAU,IACVG,kBAAmB,IACnBQ,eAAgB,OAItB,CACE1G,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,sBAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,sBAGJ1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL+O,kBAAmB,IACnBQ,sBAAuB,IACvBG,+BAAgC,IAChCG,mBAAoB,IACpBG,4BAA6B,IAC7BO,gBAAiB,OAIvB,CACE3G,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,sBAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,sBAGJ1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL+O,kBAAmB,IACnBQ,sBAAuB,IACvBG,+BAAgC,IAChCG,mBAAoB,IACpBG,4BAA6B,IAC7BG,gBAAiB,UAO7B,OAAQ,0DACR,OAAQ,4CACRvI,QAAS,CACP4C,OAAQ,CACNiC,iBAAkB,GAClB7C,UAAW,CACT+C,OAAQ,CACN9G,MAAO,SACP2G,OAAQ,CACN3G,MAAO,SACPtJ,KAAM,eACNyD,MAAO,KAGX4M,QAAS,CACP/G,MAAO,UACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,EACLC,IAAK,GAEPlH,MAAO,UACPtJ,KAAM,SACNyD,MAAO,KAGXgN,SAAU,CACRnH,MAAO,WACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,IACLC,IAAK,GAEPlH,MAAO,SACPtJ,KAAM,SACNyD,MAAO,IAGXiN,SAAU,CACRpH,MAAO,WACP2G,OAAQ,CACN3G,MAAO,WACPtJ,KAAM,eACNyD,MAAO,IAGXkN,SAAU,CACRrH,MAAO,WACP2G,OAAQ,CACN3G,MAAO,WACPtJ,KAAM,eACNyD,MAAO,IAGXmN,UAAW,CACTtH,MAAO,YACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,OACLC,KAAM,OAERlH,MAAO,YACPtJ,KAAM,SACNyD,MAAO,IAGXA,MAAO,CACL6F,MAAO,UAGXgE,UAAW,CACTsH,aAAc,CACZtL,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,aACP7F,MAAO,QAET,CACE6F,MAAO,gBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXoN,cAAe,CACbvH,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,sBACP7F,MAAO,QAET,CACE6F,MAAO,sBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXqN,cAAe,CACbxH,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,oBACP7F,MAAO,QAET,CACE6F,MAAO,iBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXsN,eAAgB,CACdzH,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,qBACP7F,MAAO,OAET,CACE6F,MAAO,wBACP7F,MAAO,SAGXzD,KAAM,SACNyD,MAAO,QAGXuN,kBAAmB,CACjB1H,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,qBACP7F,MAAO,QAET,CACE6F,MAAO,oBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXwN,aAAc,CACZ3H,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,SACP7F,MAAO,QAET,CACE6F,MAAO,SACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXyN,kBAAmB,CACjB5H,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,sBACP7F,MAAO,QAET,CACE6F,MAAO,sBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXoR,aAAc,CACZvL,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,SACP7F,MAAO,OAET,CACE6F,MAAO,SACP7F,MAAO,SAGXzD,KAAM,SACNyD,MAAO,QAGX0N,gBAAiB,CACf7H,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,kBACP7F,MAAO,QAET,CACE6F,MAAO,kBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,UAIbiH,QAAS,CACP,CACE2C,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,iBACb1E,SAAU,SACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,iBACb1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,aACjCC,UAAW,CACT,CAAC,iBACD,CAAC,kBACD,CAAC,oBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WACjCC,UAAW,CACT,CAAC,qBACD,CAAC,kBACD,CAAC,kBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,kBACb1E,SAAU,YACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,kBACb1E,SAAU,cACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,iBACb1E,SAAU,SACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,aACjCC,UAAW,CACT,CAAC,iBACD,CAAC,kBACD,CAAC,oBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,MAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,iBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,mBAIhBuF,KAAM,CACJ+B,iBAAkB,CAChB,CACEmB,SAAU,QACVC,eAAgB,KAChBC,SAAU,oBACVC,eAAgB,CACd/N,MAAO,QAETmF,SAAU,OAGdyE,UAAW,CACTgD,QAAS,CACP/G,MAAO,UACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,EACLC,IAAK,GAEPlH,MAAO,UACPtJ,KAAM,SACNyD,MAAO,KAGXgN,SAAU,CACRnH,MAAO,WACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,IACLC,IAAK,GAEPlH,MAAO,SACPtJ,KAAM,SACNyD,MAAO,IAGXmN,UAAW,CACTtH,MAAO,YACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,OACLC,KAAM,OAERlH,MAAO,YACPtJ,KAAM,SACNyD,MAAO,IAGXA,MAAO,CACL6F,MAAO,UAGXgE,UAAW,CACTsH,aAAc,CACZtL,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,aACP7F,MAAO,QAET,CACE6F,MAAO,gBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXoN,cAAe,CACbvH,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,sBACP7F,MAAO,QAET,CACE6F,MAAO,sBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXqN,cAAe,CACbxH,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,oBACP7F,MAAO,QAET,CACE6F,MAAO,iBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXsN,eAAgB,CACdzH,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,qBACP7F,MAAO,OAET,CACE6F,MAAO,wBACP7F,MAAO,SAGXzD,KAAM,SACNyD,MAAO,QAGXuN,kBAAmB,CACjB1H,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,qBACP7F,MAAO,QAET,CACE6F,MAAO,oBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXwN,aAAc,CACZ3H,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,SACP7F,MAAO,QAET,CACE6F,MAAO,SACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXyN,kBAAmB,CACjB5H,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,sBACP7F,MAAO,QAET,CACE6F,MAAO,sBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,SAGXoR,aAAc,CACZvL,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,SACP7F,MAAO,OAET,CACE6F,MAAO,SACP7F,MAAO,SAGXzD,KAAM,SACNyD,MAAO,QAGX0N,gBAAiB,CACf7H,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPoB,QAAS,CACP,CACEpB,MAAO,kBACP7F,MAAO,QAET,CACE6F,MAAO,kBACP7F,MAAO,QAGXzD,KAAM,SACNyD,MAAO,UAIbiH,QAAS,CACP,CACE2C,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,iBACb1E,SAAU,SACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,iBACb1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,aACjCC,UAAW,CACT,CAAC,iBACD,CAAC,kBACD,CAAC,oBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WACjCC,UAAW,CACT,CAAC,qBACD,CAAC,kBACD,CAAC,kBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,kBACb1E,SAAU,YACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,kBACb1E,SAAU,cACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,iBACb1E,SAAU,SACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,aACjCC,UAAW,CACT,CAAC,iBACD,CAAC,kBACD,CAAC,oBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,MAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,iBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CAAC,CAAC,qBAAsB,CAAC,mBACpC1E,SAAU,oBAKlB,OAAQ,4DACR,OAAQ,4CACRkM,UAAW,CACT7G,OAAQ,CACNiC,iBAAkB,GAClB7C,UAAW,CACT+C,OAAQ,CACN9G,MAAO,SACP2G,OAAQ,CACN3G,MAAO,SACPtJ,KAAM,eACNyD,MAAO,KAGXgN,SAAU,CACRnH,MAAO,WACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,IACLC,IAAK,GAEPlH,MAAO,SACPtJ,KAAM,SACNyD,MAAO,IAGXiN,SAAU,CACRpH,MAAO,WACP2G,OAAQ,CACN3G,MAAO,WACPtJ,KAAM,eACNyD,MAAO,IAGXkN,SAAU,CACRrH,MAAO,WACP2G,OAAQ,CACN3G,MAAO,WACPtJ,KAAM,eACNyD,MAAO,IAGXA,MAAO,CACL6F,MAAO,UAGXgE,UAAW,CACTgF,OAAQ,CACNhJ,MAAO,SACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,KAGX8O,QAAS,CACPjJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,IAGX+O,kBAAmB,CACjBlJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,mBACNyD,MAAO,IAGXgP,YAAa,CACXnJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,OACNyD,MAAO,CACLiP,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,KAITC,YAAa,CACXxJ,MAAO,kBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEsP,GAAI,MAKZC,sBAAuB,CACrB1J,MAAO,kBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEsP,GAAI,MAKZE,qBAAsB,CACpB3J,MAAO,8BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,MAKZC,+BAAgC,CAC9B7J,MAAO,8BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEyP,GAAI,MAKZE,SAAU,CACR9J,MAAO,eACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACE4P,GAAI,MAKZC,mBAAoB,CAClBhK,MAAO,eACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACE4P,GAAI,MAKZE,kBAAmB,CACjBjK,MAAO,2BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACE+P,GAAI,MAKZC,4BAA6B,CAC3BnK,MAAO,2BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACE+P,GAAI,MAKZE,MAAO,CACLpK,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,UACPtJ,KAAM,uBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZG,YAAa,CACXrK,MAAO,SACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,KACPoB,QAAS,CACP,CACEpB,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,aACP7F,MAAO,KAET,CACE6F,MAAO,cACP7F,MAAO,OAGXzD,KAAM,gBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZI,gBAAiB,CACftK,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,UACPtJ,KAAM,iCACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZK,cAAe,CACbvK,MAAO,WACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,KACPoB,QAAS,CACP,CACEpB,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,MAGXzD,KAAM,gBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZM,cAAe,CACbxK,MAAO,WACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,KACPoB,QAAS,CACP,CACEpB,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,KAET,CACE6F,MAAO,eACP7F,MAAO,MAGXzD,KAAM,gBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZO,eAAgB,CACdzK,MAAO,uBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZQ,gBAAiB,CACf1K,MAAO,sBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,kBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZS,IAAK,CACH3K,MAAO,MACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,MAIbiH,QAAS,CACP,CACE2C,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,gBACb1E,SAAU,KACVwI,mBAAoB,EACpB3N,MAAO,CACL4N,SAAU,QACVC,eAAgB,KAChBC,SAAU,cACVC,eAAgB,CACdkB,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,KAIT,CACExF,UAAW,CAAC,SACZC,UAAW,CACT,CACE,iBACA,cACA,WACA,MACA,WAGJ1E,SAAU,YACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL8O,QAAS,IACTO,YAAa,IACbG,qBAAsB,IACtBG,SAAU,IACVG,kBAAmB,IACnBQ,eAAgB,OAItB,CACE1G,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,kBACA,qBACA,wBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL+O,kBAAmB,IACnBQ,sBAAuB,IACvBG,+BAAgC,IAChCG,mBAAoB,IACpBG,4BAA6B,IAC7BO,gBAAiB,OAIvB,CACE3G,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,gBACb1E,SAAU,cACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACLqP,YAAa,OAInB,CACEzF,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,wBACA,qBACA,kBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,wBACA,qBACA,kBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,wBACA,qBACA,kBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,wBACA,qBACA,kBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,wBACA,qBACA,kBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,wBACA,qBACA,kBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CACE,wBACA,qBACA,kBACA,MACA,UAEF,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,MAEZ,CACEyE,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,iBAEZ,CACEyE,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,WAAY,WAAY,UAC7CC,UAAW,CACT,CAAC,cAAe,WAAY,QAAS,MAAO,UAC5C,CAAC,iBACD,CAAC,iBACD,CAAC,gBAEH1E,SAAU,mBAIhBuF,KAAM,CACJ+B,iBAAkB,CAChB,CACEmB,SAAU,QACVC,eAAgB,KAChBC,SAAU,cACVC,eAAgB,CACd/N,MAAO,CACLiP,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,IAGPjK,SAAU,OAGdyE,UAAW,CACToD,SAAU,CACRnH,MAAO,WACP2G,OAAQ,CACNK,YAAa,CACXC,IAAK,IACLC,IAAK,GAEPlH,MAAO,SACPtJ,KAAM,SACNyD,MAAO,IAGXA,MAAO,CACL6F,MAAO,UAGXgE,UAAW,CACTgF,OAAQ,CACNhJ,MAAO,SACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,KAGX8O,QAAS,CACPjJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,IAGX+O,kBAAmB,CACjBlJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,mBACNyD,MAAO,IAGXgP,YAAa,CACXnJ,MAAO,cACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,OACNyD,MAAO,CACLiP,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,KAITC,YAAa,CACXxJ,MAAO,kBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEsP,GAAI,MAKZC,sBAAuB,CACrB1J,MAAO,kBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEsP,GAAI,MAKZE,qBAAsB,CACpB3J,MAAO,8BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,MAKZC,+BAAgC,CAC9B7J,MAAO,8BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEyP,GAAI,MAKZE,SAAU,CACR9J,MAAO,eACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACE4P,GAAI,MAKZC,mBAAoB,CAClBhK,MAAO,eACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACE4P,GAAI,MAKZE,kBAAmB,CACjBjK,MAAO,2BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACE+P,GAAI,MAKZC,4BAA6B,CAC3BnK,MAAO,2BACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,2BACNyD,MAAO,CACL,CACE+P,GAAI,MAKZE,MAAO,CACLpK,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,UACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZI,gBAAiB,CACftK,MAAO,UACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,UACPtJ,KAAM,2BACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZO,eAAgB,CACdzK,MAAO,uBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,iBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZQ,gBAAiB,CACf1K,MAAO,sBACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,kBACNyD,MAAO,CACL,CACEyP,GAAI,EACJM,GAAI,MAKZS,IAAK,CACH3K,MAAO,MACP2G,OAAQ,CACNK,YAAa,KACbhH,MAAO,GACPtJ,KAAM,SACNyD,MAAO,MAIbiH,QAAS,CACP,CACE2C,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,gBACb1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,SACZC,UAAW,CACT,CACE,SACA,cACA,uBACA,WACA,oBACA,iBACA,QAGJ1E,SAAU,YACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL8O,QAAS,IACTO,YAAa,IACbG,qBAAsB,IACtBG,SAAU,IACVG,kBAAmB,IACnBQ,eAAgB,OAItB,CACE1G,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACL+O,kBAAmB,IACnBQ,sBAAuB,IACvBG,+BAAgC,IAChCG,mBAAoB,IACpBG,4BAA6B,IAC7BO,gBAAiB,OAIvB,CACE3G,UAAW,CAAC,SACZC,UAAW,CAAC,CAAC,gBACb1E,SAAU,cACVwI,mBAAoB,EACpB8C,eAAgB,CACdzQ,MAAO,CACLqP,YAAa,OAInB,CACEzF,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,oBACA,wBACA,iCACA,qBACA,8BACA,kBACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,KACVwI,mBAAoB,GAEtB,CACE/D,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,MAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,QAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,iBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,gBAEZ,CACEyE,UAAW,CAAC,QAAS,YACrBC,UAAW,CACT,CACE,SACA,UACA,cACA,uBACA,WACA,oBACA,QACA,OAEF,CACE,UACA,cACA,uBACA,WACA,oBACA,UAGJ1E,SAAU,oBAKlBqC,SAAU,CACR0G,SAAU,CACR5G,SAAS,GAEXgK,MAAO,CACLhK,SAAS,GAEXiK,WAAY,CACVjK,SAAS,MAKjBtL,GAAI,GACJoK,YAAa,oBACboL,SAAU,qBAEZ/Q,KAAM,MAERgR,IAAK,CACH9F,QAAS,CACP+F,aAAc,uBACdC,OAAQ,qBAEVC,QAAS,CACPF,aAAc,uBACdC,OAAQ,oBACRE,KAAM,0BAERC,SAAS,EACTC,OAAQ,CACNL,aAAc,iBACdC,OAAQ,qBAEVK,KAAM,CACJN,aAAc,SACdC,OAAQ,qBAWVM,IArmPiB,SAACC,GACpB,IAAMC,EAAW,iCACXC,EAAW,iCAEjB,GAAiB,MAAbF,EAAmB,CACrB,GAAkB,SAAdA,EACF,OAAOC,EACF,GAAkB,SAAdD,EACT,OAAOE,EAOX,OAHiCzW,OAAOgF,SAASC,SAC9CyR,UAGD,IAAK,YACL,IAAK,qCACL,IAAK,6BACH,OAAOF,EAET,IAAK,2BACL,IAAK,4BACL,IAAK,6BACH,OAAOC,GA6kPJE,GACLC,gBAAiB,WACjBC,MAAO,CACLC,SAAU,8BACVC,SACE,mFAGNzM,cAAe,KAEf0M,aAAc,CACZC,iBAAiB,EACjBC,OAAQ,MAEVjO,WAAY,KACZkO,WAAY,MCxqPDC,EAAanV,yBAAc,GAI3BoV,EAAoDpV,wBAC7D,IAQEqV,EAAU,SAACC,EAA2B3S,GACxC,IAAQhE,EAAkBgE,EAAlBhE,KAAM4W,EAAY5S,EAAZ4S,QACd,OAAQ5W,GACJ,IAAK,iBACD,OAAO,2BACA2W,GADP,IAEItO,WAAYuO,IAEpB,IAAK,iBACD,OAAO,2BACAD,GADP,IAEIJ,WAAYK,IAEpB,QACI,OAAOD,IAINE,EAAqB,SAAC,GAA2C,IAAzCrV,EAAwC,EAAxCA,SACjC,EAA4BC,oBAAS,GAArC,mBAAOmD,EAAP,KAAgBS,EAAhB,KAEA,EAAgCyR,qBAAWJ,EAASvH,GAApD,mBAAO4H,EAAP,KAAoBC,EAApB,KAEA,EAA0BvV,mBAA2B,CACjDsV,YAAaA,IADjB,mBAAOtT,EAAP,KAAcwT,EAAd,KAIA9X,qBAAU,WACwB,MAA1B4X,EAAY1O,YAAgD,MAA1B0O,EAAYR,aAC9CQ,EAAYrN,cAAgB,IAAID,EAAc,CAC1CC,cAAeqN,EAAY3H,QAAQzF,QAAQD,cAC3CC,QAASoN,EAAY3H,QAAQzF,QAC7BtB,WAAY0O,EAAY1O,aAE5B4O,EAAS,CACLF,YAAaA,IAGjB1R,GAAS,MAEd,CAAC0R,IAEJ,IAAMG,EAAY1Q,KAAK2Q,MAEvB,EAIIC,mBAAqB,uBAAuB,kBAC5C7R,IAAM,2CAAD,OAA4C2R,OAJtCG,EADf,EACIC,UACOC,EAFX,EAEI3R,MACM4R,EAHV,EAGI9R,KAKJ,EAII0R,mBAAqB,cAAc,kBACnC7R,IAAM,kCAAD,OAAmC2R,OAJ7BO,EADf,EACIH,UACOI,EAFX,EAEI9R,MACM+R,EAHV,EAGIjS,KAuBJ,OAlBAvG,qBAAU,WACyB,MAA3BqY,GACAR,EAAS,CACLhX,KAAM,iBACN4W,QAASY,EAAwB9R,SAG1C,CAAC8R,IAEJrY,qBAAU,WACgB,MAAlBwY,GACAX,EAAS,CACLhX,KAAM,iBACN4W,QAASe,EAAejS,SAGjC,CAACiS,IAEAN,GAAgCI,EACzB,cAAC,EAAD,IAGPF,EACO,+CAAgBA,EAAyBxR,WAGhD2R,EACO,+CAAgBA,EAAgB3R,WAIvC,cAACyQ,EAAWhT,SAAZ,CAAqBC,MAAOmB,EAA5B,SACI,cAAC6R,EAAsBjT,SAAvB,CAAgCC,MAAOA,EAAvC,SACKjC,OCzHJoW,EAAgB,WACzB,IAAMjU,EAAUC,qBAAW4S,GAC3B,QAAgBlV,IAAZqC,EACA,MAAM,IAAIE,MAAJ,0DAIV,OAAOF,GAGEkU,EAAiB,WAC1B,IAAMlU,EAAUC,qBAAW6S,GAC3B,QAAgBnV,IAAZqC,EACA,MAAM,IAAIE,MAAJ,2DAIV,OAAOF,GCVLmU,GAAc,WAChB,OACI,sBAAKjR,UAAU,4CAAf,UACI,cAAC,IAAD,CACIA,UAAU,wFACVkR,GAAIlJ,EAAMG,WAFd,wBAMA,cAAC,IAAD,CACInI,UAAU,wFACVkR,GAAIlJ,EAAMI,QAFd,4BAMA,cAAC,IAAD,CACIpI,UAAU,wFACVkR,GAAIlJ,EAAMK,eAFd,kCAUC8I,GAAS,SAAC,GAA0C,IAAxCxW,EAAuC,EAAvCA,SAAUqF,EAA6B,EAA7BA,UAC/B,OACI,wBACIA,UAAS,uDACLA,QADK,IACLA,IAAa,IAFrB,SAKI,cAACC,EAAA,EAAD,CAAWmR,OAAK,EAAhB,SACI,eAAClR,EAAA,EAAD,WACI,eAACC,EAAA,EAAD,CACIC,GAAI,EACJJ,UAAU,yCAFd,mBAIY,IAAIL,MAAO0R,cAJvB,kBAMC1W,EACG,qCACI,cAACwF,EAAA,EAAD,CAAKC,GAAI,EAAT,SAAazF,IACb,cAACwF,EAAA,EAAD,CAAKC,GAAI,EAAT,SACI,cAAC,GAAD,SAIR,cAACD,EAAA,EAAD,CAAKC,GAAI,EAAT,SACI,cAAC,GAAD,c,UCzDfkR,GAAW,SAACC,GACrB,MAA0B3W,mBAAS2W,GAAnC,mBAAO3U,EAAP,KAAcwT,EAAd,KAUA,MAAO,CACHxT,QACA4U,SAViB,SACjBC,GAIArB,EAASqB,EAAMC,OAAO9U,U,oBC6BjB+U,GAAqB,SAACC,GAC/B,IAUMC,EAAiB,iBACjBC,EAAqB,qBACrBC,EAAoB,oBAEpBC,EAAgB,gBAChBC,EAAmB,mBACnBC,EAAgB,gBAEdC,EAAMC,eAAND,EAwIR,EAA0BE,cAtIV,SAACC,EAAqCnV,GAAoB,IAAD,MACrE,OAAQA,EAAOhE,MACX,KAAK0Y,EAEG,uJACaU,KAAb,UAAkBX,EAAkB7Y,aAApC,QAA6C,IAC7CuZ,EAAMvZ,MAAQ,CACVyZ,SAAS,EACTtT,QAAS,IAGboT,EAAMvZ,MAAQ,CACVyZ,SAAS,EACTtT,QAASiT,EAAE,mBAGnB,MAEJ,KAAKL,EACwB,iBACJS,KAAjB,UAAsBX,EAAkB/Y,iBAAxC,QAAqD,IACrDyZ,EAAMzZ,UAAY,CACd2Z,SAAS,EACTtT,QAAS,IAGboT,EAAMzZ,UAAY,CACd2Z,SAAS,EACTtT,QAASiT,EAAE,oBAGnB,MAEJ,KAAKJ,EACuB,iBACJQ,KAAhB,UAAqBX,EAAkB9Y,gBAAvC,QAAmD,IACnDwZ,EAAMxZ,SAAW,CACb0Z,SAAS,EACTtT,QAAS,IAGboT,EAAMxZ,SAAW,CACb0Z,SAAS,EACTtT,QAASiT,EAAE,mBAGnB,MA+BJ,KAAKH,EACGJ,EAAkBxY,KAAMqK,OACxB6O,EAAMlZ,KAAO,CACToZ,SAAS,EACTtT,QAAS,IAGboT,EAAMlZ,KAAO,CACToZ,SAAS,EACTtT,QAASiT,EAAE,iBAGnB,MAEJ,KAAKF,EACD,IAAMQ,KACFb,EAAkBpY,QAASiK,QACG,qBAA9BmO,EAAkBpY,SAIlB8Y,EAAM9Y,QADNiZ,EACgB,CACZD,SAAS,EACTtT,QAAS,IAGG,CACZsT,SAAS,EACTtT,QAASiT,EAAE,oBAGnB,MAEJ,KAAKD,EACD,IAAMQ,KACFd,EAAkB3Y,KAAMwK,QACG,kBAA3BmO,EAAkB3Y,MAIlBqZ,EAAMrZ,KADNyZ,EACa,CACTF,SAAS,EACTtT,QAAS,IAGA,CACTsT,SAAS,EACTtT,QAASiT,EAAE,iBAGnB,MAEJ,QACI,OAAOG,KAtJY,CAC3BvZ,MAAO,CAAEyZ,SAAS,EAAOtT,QAAS,IAClCrG,UAAW,CAAE2Z,SAAS,EAAOtT,QAAS,IACtCpG,SAAU,CAAE0Z,SAAS,EAAOtT,QAAS,IAErC9F,KAAM,CAAEoZ,SAAS,EAAOtT,QAAS,IACjC1F,QAAS,CAAEgZ,SAAS,EAAOtT,QAAS,IACpCjG,KAAM,CAAEuZ,SAAS,EAAOtT,QAAS,MAmJrC,mBAAOyT,EAAP,KAAcxC,EAAd,KAwCA,OAtCA7X,qBAAU,WACN6X,EAAS,CAAEhX,KAAM0Y,MAClB,CAACD,EAAkB7Y,MAAOoX,IAE7B7X,qBAAU,WACN6X,EAAS,CAAEhX,KAAM2Y,MAClB,CAACF,EAAkB/Y,UAAWsX,IAEjC7X,qBAAU,WACN6X,EAAS,CAAEhX,KAAM4Y,MAClB,CAACH,EAAkB9Y,SAAUqX,IAUhC7X,qBAAU,WACN6X,EAAS,CAAEhX,KAAM6Y,MAClB,CAACJ,EAAkBxY,KAAM+W,IAE5B7X,qBAAU,WACN6X,EAAS,CAAEhX,KAAM+Y,MAClB,CAACN,EAAkB3Y,KAAMkX,IAE5B7X,qBAAU,WACN6X,EAAS,CAAEhX,KAAM8Y,MAClB,CAACL,EAAkBpY,QAAS2W,IAQxB,CAAEwC,QAAOC,aANQ5R,OAAO6R,OAAOF,GAAOG,QACzC,SAAClW,GAAD,OAA6B,IAAlBA,EAAM4V,WAGgB/O,SC3NlC,SAASsP,GAAT,GAMS,IALZC,EAKW,EALXA,YACAC,EAIW,EAJXA,eACAC,EAGW,EAHXA,mBACAC,EAEW,EAFXA,oBACAC,EACW,EADXA,uBAEA,EAAmDxY,oBAAS,GAA5D,mBAAOyY,EAAP,KAAwBC,EAAxB,KACMva,EAAQuY,GAAS,IACjBzR,EAAWyR,GAAS,IAEpBiC,EAAc,CAChBxa,MAAOA,EAAM6D,MAAM4W,OACnB3T,SAAUA,EAASjD,OAGvB,EDgN8B,SAAC6W,GAC/B,IAKM5B,EAAiB,iBACjB6B,EAAoB,oBAElBvB,EAAMC,eAAND,EAmCR,EAA0BE,cAjCV,SAACC,EAAqCnV,GAAoB,IAAD,EACrE,OAAQA,EAAOhE,MACX,KAAK0Y,EAEG,uJACaU,KAAb,UAAkBkB,EAAkB1a,aAApC,QAA6C,IAC7CuZ,EAAMvZ,MAAQ,CACVyZ,SAAS,EACTtT,QAAS,IAGboT,EAAMvZ,MAAQ,CACVyZ,SAAS,EACTtT,QAASiT,EAAE,mBAGnB,MAEJ,KAAKuB,EACGD,EAAkB5T,SAAS4D,OAC3B6O,EAAMzS,SAAW,CACb2S,SAAS,EACTtT,QAAS,IAGboT,EAAMzS,SAAW,CACb2S,SAAS,EACTtT,QAASiT,EAAE,yBArCA,CAC3BpZ,MAAO,CAAEyZ,SAAS,EAAOtT,QAAS,IAClCW,SAAU,CAAE2S,SAAS,EAAOtT,QAAS,MAyCzC,mBAAOyT,EAAP,KAAcxC,EAAd,KAgBA,OAdA7X,qBAAU,WACN6X,EAAS,CAAEhX,KAAM0Y,MAClB,CAAC4B,EAAkB1a,MAAOoX,IAE7B7X,qBAAU,WACN6X,EAAS,CAAEhX,KAAMua,MAClB,CAACD,EAAkB5T,SAAUsQ,IAQzB,CAAEwC,QAAOC,aANQ5R,OAAO6R,OAAOF,GAAOG,QACzC,SAAClW,GAAD,OAA6B,IAAlBA,EAAM4V,WAGgB/O,QC1QNkQ,CAAmBJ,GAA1CZ,EAAR,EAAQA,MAAOC,EAAf,EAAeA,YAETgB,EAAcjB,EAEdkB,EAAgBC,iBAAyB,MAE/Cxb,qBAAU,kCAAMub,EAAcE,eAApB,aAAM,EAAuBC,UAAS,IAEhD,IAQMC,EAAgB,SAACC,GACnB,IAAIlU,EAAY,GAMhB,OALIqT,IACKa,IACDlU,EAAY,sBAGbA,GAGLmU,EAAkBF,EAAcL,EAAY7a,MAAMyZ,SAClD4B,EAAqBH,EAAcL,EAAY/T,SAAS2S,SAE9D,OACI,cAACtS,EAAA,EAAD,UACI,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,UACI,cAACF,EAAA,EAAD,UACI,cAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,SACI,sBAAKJ,UAAU,cAAf,UACI,oBAAIA,UAAU,gCAAd,8CAGCiT,EACG,qBACIjT,UAAU,qBACV/G,KAAK,QAFT,SAIKia,IAEL,KACJ,sBAAMmB,SAtCT,SAAC5C,GAClBA,EAAM6C,iBACNhB,GAAwB,GACpBV,GACAI,EAAYO,EAAaX,IAkCqB5S,UAAU,YAAxC,SACI,eAACE,EAAA,EAAD,CAAKF,UAAU,MAAf,UACI,eAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,uBACIJ,UAAU,yBACVuU,QAAQ,gBAFZ,2BAMA,uBACI3X,MAAO7D,EAAM6D,MACb4X,SAAUzb,EAAMyY,SAChBrY,KAAK,QACL6G,UAAS,uBAAkBmU,EAAlB,YACLP,EAAY7a,MAAMyZ,QACZ,cACA,IAEV5Z,GAAG,qBACHyD,KAAK,QACLoY,aAAa,MACbC,YAAY,GACZC,IAAKd,IAERR,EACGO,EAAY7a,MAAMyZ,QAAU,KACxB,qBAAKxS,UAAU,2BAAf,SACI,4BAEQ4T,EAAY7a,MACPmG,YAKrB,QAER,eAACiB,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,uBACIJ,UAAU,yBACVuU,QAAQ,mBAFZ,sBAMA,uBACI3X,MAAOiD,EAASjD,MAChB4X,SAAU3U,EAAS2R,SACnBxR,UAAS,uBAAkBoU,EAAlB,YACLR,EAAY/T,SAAS2S,QACf,cACA,IAEV5Z,GAAG,mBACHyD,KAAK,WACLlD,KAAK,WACLsb,aAAa,MACbC,YAAY,KAEfrB,EACGO,EAAY/T,SACP2S,QAAU,KACX,qBAAKxS,UAAU,2BAAf,SACI,4BAEQ4T,EAAY/T,SACPX,YAKrB,QAER,eAACiB,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,mBAAGJ,UAAU,mCAAb,oBAGA,wBACIA,UAAU,kCACV7G,KAAK,SAFT,mCAYxB,cAAC+G,EAAA,EAAD,UACI,cAACC,EAAA,EAAD,CAAKC,GAAI,GAAIJ,UAAU,wBAAvB,SACI,4DAGR,cAACE,EAAA,EAAD,UACI,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,UACI,qBAAKJ,UAAU,gCAAf,SACI,wBACIA,UAAU,kCACV4U,MAAM,yBACNzb,KAAK,SACL0b,QAAS,kBAAMzB,KAJnB,uBAUHD,EACG,qBACInT,UAAU,2BACV/G,KAAK,QAFT,0CAMA,e,cCxKrB,SAAS6b,GAAT,GAQI,IAPPC,EAOM,EAPNA,YACAlR,EAMM,EANNA,QACA6Q,EAKM,EALNA,YACAM,EAIM,EAJNA,cACAC,EAGM,EAHNA,SACAjV,EAEM,EAFNA,UACArF,EACM,EADNA,SAEA,OACI,qCACI,uBAAOqF,UAAU,yBAAyBuU,QAAQ,gBAAlD,SACKQ,IAEL,eAACG,GAAA,EAAKJ,OAAN,CACIlY,MAAOoY,EACPR,SAAUS,EACVjV,UAAWA,EAHf,UAKI,iCAAS0U,IACR7Q,EAAQsR,KAAI,SAACtP,EAAgBlE,GAC1B,OACI,wBAAoB/E,MAAOiJ,EAA3B,SACKA,EAAOuP,QAAQ,KAAM,MADbzT,SAMxBhH,KAKN,SAAS0a,GAAT,GAKiB,IAJpBrV,EAImB,EAJnBA,UACAgV,EAGmB,EAHnBA,cACAC,EAEmB,EAFnBA,SACAta,EACmB,EADnBA,SAEA,OACI,qCACI,uBAAOqF,UAAU,yBAAyBuU,QAAQ,gBAAlD,qBAGA,eAACW,GAAA,EAAKJ,OAAN,CACIlY,MAAOoY,EACPR,SAAUS,EACVjV,UAAWA,EAHf,UAKI,sDACA,wBAAQpD,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,8BACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,4BACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,iCACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,6CACA,wBAAQA,MAAM,KAAd,oCACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,2BACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,4CACA,wBAAQA,MAAM,KAAd,+BACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,0BACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,4BACA,wBAAQA,MAAM,KAAd,sCACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,8BACA,wBAAQA,MAAM,KAAd,qCACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,mDAGA,wBAAQA,MAAM,KAAd,0BACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,8BACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,4BACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,gCACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,+BACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,yCACA,wBAAQA,MAAM,KAAd,2BACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,2BACA,wBAAQA,MAAM,KAAd,8BACA,wBAAQA,MAAM,KAAd,yCACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,2BACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,+CACA,wBAAQA,MAAM,KAAd,2CACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,uCACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,oDAGA,wBAAQA,MAAM,KAAd,gCACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,8CACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,oCACA,wBAAQA,MAAM,KAAd,2BACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,wDAGA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,8BACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,6CACA,wBAAQA,MAAM,KAAd,kCACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,kCACA,wBAAQA,MAAM,KAAd,2BACA,wBAAQA,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,4BACA,wBAAQA,MAAM,KAAd,sCACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,6CACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,8BACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,gCACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,iCACA,wBAAQA,MAAM,KAAd,0DAGA,wBAAQA,MAAM,KAAd,mCACA,wBAAQA,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,wCACA,wBAAQA,MAAM,KAAd,uCACA,wBAAQA,MAAM,KAAd,8CACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,mCACA,wBAAQA,MAAM,KAAd,0BACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,0BACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,6BACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,0BACA,wBAAQA,MAAM,KAAd,0DAGA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,oCACA,wBAAQA,MAAM,KAAd,uBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,kCACA,wBAAQA,MAAM,KAAd,uCACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,0CACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,yBACA,wBAAQA,MAAM,KAAd,kBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,iCACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,0BACA,wBAAQA,MAAM,KAAd,sCACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,kCACA,wBAAQA,MAAM,KAAd,4BACA,wBAAQA,MAAM,KAAd,2BACA,wBAAQA,MAAM,KAAd,kDACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,wBACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,+CACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,qCACA,wBAAQA,MAAM,KAAd,kCACA,wBAAQA,MAAM,KAAd,+BACA,wBAAQA,MAAM,KAAd,4BACA,wBAAQA,MAAM,KAAd,mBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,yBAEHjC,KC7SN,SAAS2a,GAAT,GAOgB,IANrBrC,EAMoB,EANpBA,eACAsC,EAKoB,EALpBA,eACArC,EAIoB,EAJpBA,mBACAC,EAGoB,EAHpBA,oBACAqC,EAEoB,EAFpBA,gBACAC,EACoB,EADpBA,kBAEA,EAAmD7a,oBAAS,GAA5D,mBAAOyY,EAAP,KAAwBC,EAAxB,KACMva,EAAQuY,GAAS,IACjBzR,EAAWyR,GAAS,IACpBoE,EAAkBpE,GAAS,IAC3BzY,EAAYyY,GAAS,IACrBxY,EAAWwY,GAAS,IACpBlY,EAAOkY,GAAS,IAChB9X,EAAU8X,GAAS,IACnBrY,EAAOqY,GAAS,IAEhBiC,EAAc,CAClBxa,MAAOA,EAAM6D,MAAM4W,OACnB3T,SAAUA,EAASjD,MACnB8Y,gBAAiBA,EAAgB9Y,MACjC/D,UAAWA,EAAU+D,MAAM4W,OAC3B1a,SAAUA,EAAS8D,MAAM4W,OACzBpa,KAAMA,EAAKwD,MAAM4W,OACjBha,QAASA,EAAQoD,MACjB3D,KAAMA,EAAK2D,OAGb,EAA+B+U,GAAmB4B,GAA1CZ,EAAR,EAAQA,MAAOC,EAAf,EAAeA,YAETgB,EAAcjB,EAEdkB,EAAgBC,iBAAyB,MAE/Cxb,qBAAU,kCAAMub,EAAcE,eAApB,aAAM,EAAuBC,UAAS,IAEhD,IASMC,EAAgB,SAACC,GACrB,IAAIlU,EAAY,GAMhB,OALIqT,IACGa,IACHlU,EAAY,sBAGTA,GAGHmU,EAAkBF,EAAcL,EAAY7a,MAAMyZ,SAClDmD,EAAsB1B,EAAcL,EAAY/a,UAAU2Z,SAC1DoD,EAAqB3B,EAAcL,EAAY9a,SAAS0Z,SAKxDqD,EAAiB5B,EAAcL,EAAYxa,KAAKoZ,SAChDsD,EAAoB7B,EAAcL,EAAYpa,QAAQgZ,SACtDuD,EAAiB9B,EAAcL,EAAY3a,KAAKuZ,SACtD,OACE,cAACtS,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,UACE,cAACF,EAAA,EAAD,CAAKF,UAAU,OAAf,SACE,cAACG,EAAA,EAAD,UACE,sBAAKH,UAAU,cAAf,UACE,oBAAIA,UAAU,gCAAd,2EAGCiT,EACC,qBAAKjT,UAAU,qBAAqB/G,KAAK,QAAzC,SACGia,IAED,KACJ,uBACEmB,SA5CO,SAAC5C,GACpBA,EAAM6C,iBACNhB,GAAwB,GACpBV,IACF2C,EAAehC,GACfkC,MAwCUzV,UAAU,YACVpH,GAAG,YAHL,UAKE,eAACsH,EAAA,EAAD,CAAKF,UAAU,MAAf,UACE,eAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,UACE,uBACEJ,UAAU,yBACVuU,QAAQ,qBAFV,2BAMA,uBACE3X,MAAO7D,EAAM6D,MACb4X,SAAUzb,EAAMyY,SAChBrY,KAAK,QACL6G,UAAS,uBAAkBmU,EAAlB,YACPP,EAAY7a,MAAMyZ,QAAU,cAAgB,IAE9C5Z,GAAG,qBACHyD,KAAK,QACLoY,aAAa,MACbC,YAAY,GACZC,IAAKd,IAENR,EACCO,EAAY7a,MAAMyZ,QAAU,KAC1B,qBAAKxS,UAAU,2BAAf,SACE,4BAAI4T,EAAY7a,MAAMmG,YAGxB,QAEN,cAACiB,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,cAAC0U,GAAD,CACE9U,UAAS,uBAAkB+V,EAAlB,YACPnC,EAAY3a,KAAKuZ,QAAU,cAAgB,IAE7CwC,cAAe/b,EAAK2D,MACpBqY,SAAUhc,EAAKuY,SACfkD,YAAY,mBACZ7Q,QAAS,CACP,oBACA,eACA,iBACA,oBACA,qBACA,gBACA,SACA,UAEFkR,YAAY,mBAjBd,SAmBG1B,EACCO,EAAY3a,KAAKuZ,aAAU/X,EACzB,qBAAKuF,UAAU,2BAAf,SACE,4BAAI4T,EAAY3a,KAAKiG,iBAGvBzE,SAIV,eAACyF,EAAA,EAAD,CAAKF,UAAU,WAAf,UACE,eAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,UACE,uBACEJ,UAAU,yBACVuU,QAAQ,yBAFV,wBAMA,uBACE3X,MAAO/D,EAAU+D,MACjB4X,SAAU3b,EAAU2Y,SACpBrY,KAAK,OACL6G,UAAS,uBAAkB2V,EAAlB,YACP/B,EAAY/a,UAAU2Z,QAAU,cAAgB,IAElD5Z,GAAG,yBACHyD,KAAK,YACLoY,aAAa,MACbC,YAAY,KAEbrB,EACCO,EAAY/a,UAAU2Z,QAAU,KAC9B,qBAAKxS,UAAU,2BAAf,SACE,4BAAI4T,EAAY/a,UAAUqG,YAG5B,QAEN,eAACiB,EAAA,EAAD,CAAKC,GAAI,EAAT,UACE,uBACEJ,UAAU,yBACVuU,QAAQ,mBAFV,uBAMA,uBACE3X,MAAO9D,EAAS8D,MAChB4X,SAAU1b,EAAS0Y,SACnBrY,KAAK,OACL6G,UAAS,uBAAkB4V,EAAlB,YACPhC,EAAY9a,SAAS0Z,QAAU,cAAgB,IAEjD5Z,GAAG,mBACHyD,KAAK,WACLoY,aAAa,MACbC,YAAY,KAEbrB,EACCO,EAAY9a,SAAS0Z,QAAU,KAC7B,qBAAKxS,UAAU,2BAAf,SACE,4BAAI4T,EAAY9a,SAASoG,YAG3B,WAGR,eAACgB,EAAA,EAAD,CAAKF,UAAU,WAAf,UACE,cAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,cAACiV,GAAD,CACErV,UAAS,uBAAkB8V,EAAlB,YACPlC,EAAYpa,QAAQgZ,QAAU,cAAgB,IAEhDwC,cAAexb,EAAQoD,MACvBqY,SAAUzb,EAAQgY,SALpB,SAOG6B,EACCO,EAAYpa,QAAQgZ,aAAU/X,EAC5B,qBAAKuF,UAAU,2BAAf,SACE,4BAAI4T,EAAYpa,QAAQ0F,iBAG1BzE,MAGR,eAAC0F,EAAA,EAAD,CAAKC,GAAI,EAAT,UACE,uBACEJ,UAAU,yBACVuU,QAAQ,oBAFV,kBAMA,uBACE3X,MAAOxD,EAAKwD,MACZ4X,SAAUpb,EAAKoY,SACfrY,KAAK,OACL6G,UAAS,uBAAkB6V,EAAlB,YACPjC,EAAYxa,KAAKoZ,QAAU,cAAgB,IAE7C5Z,GAAG,oBACHyD,KAAK,OACLoY,aAAa,MACbC,YAAY,KAEbrB,EACCO,EAAYxa,KAAKoZ,QAAU,KACzB,qBAAKxS,UAAU,2BAAf,SACE,4BAAI4T,EAAYxa,KAAK8F,YAGvB,qBAOhB,cAACgB,EAAA,EAAD,CAAKF,UAAU,OAAf,SACE,eAACG,EAAA,EAAD,WACE,sBAAKH,UAAU,gCAAf,UACE,wBACEA,UAAU,kCACV4U,MAAM,gBACNzb,KAAK,SAEL0b,QAAS,kBAAMW,KALjB,kBASA,wBACExV,UAAU,kCACV4U,MAAM,wBACNzb,KAAK,SACL6c,KAAK,YAJP,wBAUD7C,EACC,qBAAKnT,UAAU,2BAA2B/G,KAAK,QAA/C,4BAGE,eC1ST,SAASgd,KACZ,OACI,sBAAKjW,UAAU,0BAAf,UACI,mBAAGA,UAAU,0DACb,qBAAKA,UAAU,mCAAf,SACI,+EC8DhB,IAAM6P,GAAU,SAACyC,EAAwBnV,GACrC,OAAQA,EAAOhE,MACX,IAAK,gBACD,MAGIgE,EAAO4S,QAFGmG,EADd,EACIrW,SACiBsW,EAFrB,EAEIT,gBAGAQ,EAAYzS,QACZ0S,EAAmB1S,QACnB0S,IAAuBD,GAEvB5D,EAAMzS,SAAW,CACb2S,SAAS,EACTtT,QAAS,IAEboT,EAAMoD,gBAAkB,CACpBlD,SAAS,EACTtT,QAAS,IAEboT,EAAM8D,WAAa,CACf5D,SAAS,EACTtT,QAAS,IAEboT,EAAM+D,aAAe,GACrB/D,EAAMgE,aAAc,GAEnBJ,EAAYzS,QACZ0S,EAAmB1S,SAClByS,EAAYzS,QAAW0S,EAAmB1S,SA8C5C6O,EAAMzS,SAAW,CACb2S,SAAS,EACTtT,QAAS,IAEboT,EAAMoD,gBAAkB,CACpBlD,SAAS,EACTtT,QAAS,0BAEboT,EAAM8D,WAAa,CACf5D,SAAS,EACTtT,QAAS,8BAEboT,EAAM+D,aAAe,8BAxDhBH,EAAYzS,QAAW0S,EAAmB1S,OAcnCyS,EAAYzS,QAepB6O,EAAMzS,SAAW,CACb2S,SAAS,EACTtT,QAAS,IAEboT,EAAMoD,gBAAkB,CACpBlD,SAAS,EACTtT,QAAS,0BAEboT,EAAM8D,WAAa,CACf5D,SAAS,EACTtT,QAAS,sCAEboT,EAAM+D,aAAe,uCA1BrB/D,EAAMzS,SAAW,CACb2S,SAAS,EACTtT,QAAS,0BAEboT,EAAMoD,gBAAkB,CACpBlD,SAAS,EACTtT,QAAS,IAEboT,EAAM8D,WAAa,CACf5D,SAAS,EACTtT,QAAS,kCAEboT,EAAM+D,aAAe,mCA1BrB/D,EAAMzS,SAAW,CACb2S,SAAS,EACTtT,QAAS,0BAEboT,EAAMoD,gBAAkB,CACpBlD,SAAS,EACTtT,QAAS,0BAEboT,EAAM8D,WAAa,CACf5D,SAAS,EACTtT,QAAS,2BAEboT,EAAM+D,aAAe,2BA6C7B,MACJ,IAAK,cACD/D,EAAMiE,cAAgBpZ,EAAO4S,QAC7B,MACJ,IAAK,cACDuC,EAAMkE,QAAUrZ,EAAO4S,QACvB,MACJ,IAAK,oBACDuC,EAAM+D,aAAelZ,EAAO4S,QAC5B,MACJ,IAAK,mBACDuC,EAAMgE,YAAcnZ,EAAO4S,QAC3B,MACJ,QACI,OAAOuC,IAIZ,SAASmE,GAAT,GAGkB,IAFrBC,EAEoB,EAFpBA,SACAC,EACoB,EADpBA,mBAEA,EAAmD/b,oBAAS,GAA5D,mBAAOyY,EAAP,KAAwBC,EAAxB,KAEQ1a,EAAO8d,EAAP9d,GAqBFsd,EAAc5E,GAAS,IACvB6E,EAAqB7E,GAAS,IAEpC,EAA0Be,aAAgBxC,GAtBnB,CACnBhQ,SAAU,CACN2S,SAAS,EACTtT,QAAS,IAEbwW,gBAAiB,CACblD,SAAS,EACTtT,QAAS,IAEbkX,WAAY,CACR5D,SAAS,EACTtT,QAAS,IAEbqX,eAAe,EACfC,SAAS,EACTH,aAAc,GACdC,aAAa,IAMjB,mBAAO3D,EAAP,KAAcxC,EAAd,KAEA7X,qBAAU,WACN6X,EAAS,CACLhX,KAAM,gBACN4W,QAAS,CACLlQ,SAAUqW,EAAYtZ,MACtB8Y,gBAAiBS,EAAmBvZ,WAG7C,CAACuZ,EAAmBvZ,MAAOuT,EAAU+F,EAAYtZ,QAEpD,IAAMga,EAAY,uCAAG,WAAOnF,GAAP,SAAApS,EAAA,yDACjBoS,EAAM6C,iBACNhB,GAAwB,GACxBnD,EAAS,CAAEhX,KAAM,cAAe4W,SAAS,IACzCI,EAAS,CAAEhX,KAAM,mBAAoB4W,SAAS,KAC1C4C,EAAMyD,WAAW5D,QALJ,iCAOTrC,EAAS,CAAEhX,KAAM,cAAe4W,SAAS,IAPhC,SAQH4G,EAAmB,CACrB/d,KACAiH,SAAUsW,EAAmBvZ,QAVxB,OAYTuT,EAAS,CAAEhX,KAAM,cAAe4W,SAAS,IACzCI,EAAS,CAAEhX,KAAM,cAAe4W,SAAS,IACzCI,EAAS,CAAEhX,KAAM,oBAAqB4W,QAAS,KAdtC,kDAgBT,OACII,EAAS,CAAEhX,KAAM,cAAe4W,SAAS,IACzCI,EAAS,CAAEhX,KAAM,cAAe4W,SAAS,IACzCI,EAAS,CACLhX,KAAM,oBACN4W,QAAS,6CArBR,0DAAH,sDAoDZuG,EAvBE3D,EAAM4D,cAEF,qBAAKvW,UAAU,gCAAgC/G,KAAK,QAApD,yBAKC0Z,EAAM6D,QAQH,qBAAKxW,UAAU,sBAAsB/G,KAAK,QAA1C,qDANA,qBAAK+G,UAAU,qBAAqB/G,KAAK,QAAzC,SACK0Z,EAAM0D,eAe3B,OACI,qCACI,cAACnW,EAAA,EAAD,CAAKF,UAAU,OAAf,SACI,cAACG,EAAA,EAAD,CAAKC,GAAI,GAAT,SACI,cAACF,EAAA,EAAD,CAAKF,UAAU,OAAf,SACI,cAACG,EAAA,EAAD,UACI,sBAAKH,UAAU,cAAf,UACI,oBAAIA,UAAU,gCAAd,kCAGCqT,GAAmBV,EAAM2D,YACpBA,EACA,KACN,sBACIjC,SAAUuC,EACV5W,UAAU,YACVpH,GAAG,uBAHP,SAKI,eAACsH,EAAA,EAAD,CAAKF,UAAU,MAAf,UACI,eAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,uBACIJ,UAAU,yBACVuU,QAAQ,sBAFZ,0BAMA,uBACI3X,MAAOsZ,EAAYtZ,MACnB4X,SAAU0B,EAAY1E,SACtBrY,KAAK,WACLP,GAAG,sBACHyD,KAAK,QACLoY,aAAa,MACbC,YAAY,GACZ1U,UAAS,4EAEDqT,EACMV,EAAM9S,SACD2S,QACD,cACA,oBACJ,GAPL,yDAWZa,GACMV,EAAM9S,SAAS2S,SACZ,qBAAKxS,UAAU,2BAAf,SACI,4BAEQ2S,EAAM9S,SACDX,YAKrB,QAEV,eAACiB,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,uBACIJ,UAAU,yBACVuU,QAAQ,0BAFZ,8BAMA,uBACI3X,MAAOuZ,EAAmBvZ,MAC1B4X,SACI2B,EAAmB3E,SAEvBrY,KAAK,WACLP,GAAG,0BACHyD,KAAK,QACLoY,aAAa,MACbC,YAAY,GACZ1U,UAAS,uBACLqT,EACMV,EAAM+C,gBACDlD,QACD,cACA,oBACJ,MAGba,GACMV,EAAM+C,gBACFlD,SACD,qBAAKxS,UAAU,2BAAf,SACI,4BAEQ2S,EACK+C,gBACAxW,YAKrB,wBAStC,cAACgB,EAAA,EAAD,UACI,cAACC,EAAA,EAAD,UACI,cAAC0W,GAAA,EAAD,CACI7W,UAAU,uCACVgW,KAAK,uBACL7c,KAAK,SACL2d,WAAUnE,EAAM4D,cAJpB,oCC/Vb,SAASQ,GAAT,GAAuE,IAA5CL,EAA2C,EAA3CA,SAAUM,EAAiC,EAAjCA,YACxC,EAAmDpc,oBAAS,GAA5D,mBAAOyY,EAAP,KAAwBC,EAAxB,KACA,EAA8B1Y,qBAA9B,mBAAO4b,EAAP,KAAgBS,EAAhB,KACA,EAAkCrc,oBAAS,GAA3C,mBAAO6V,EAAP,KAAkByG,EAAlB,KAGQzH,EAOJiH,EAPA9d,GACOue,EAMPT,EANA3d,MACSqe,EAKTV,EALAxd,QACWme,EAIXX,EAJA7d,UACUye,EAGVZ,EAHA5d,SACSye,EAETb,EAFAld,QACMge,EACNd,EADAtd,KAEEL,EAAQuY,GAAS6F,GACjBte,EAAYyY,GAAS+F,GACrBve,EAAWwY,GAASgG,GACpBle,EAAOkY,GAASkG,GAChBhe,EAAU8X,GAASiG,GACnBte,EAAOqY,GAAS8F,GAEhBK,EAAa,CACf1e,MAAO2d,EAAS3d,MAChBF,UAAWA,EAAU+D,MACrB9D,SAAUA,EAAS8D,MACnBxD,KAAMA,EAAKwD,MACXpD,QAASA,EAAQoD,MACjB3D,KAAMA,EAAK2D,OAGf,EAA+B+U,GAAmB8F,GAA1C9E,EAAR,EAAQA,MAAOC,EAAf,EAAeA,YAETgB,EAAcjB,EAEdsB,EAAgB,SAACC,GACnB,IAAIlU,EAAY,GAMhB,OALIqT,IACKa,IACDlU,EAAY,sBAGbA,GAGL2V,EAAsB1B,EAAcL,EAAY/a,UAAU2Z,SAC1DoD,EAAqB3B,EAAcL,EAAY9a,SAAS0Z,SACxDqD,EAAiB5B,EAAcL,EAAYxa,KAAKoZ,SAChDsD,EAAoB7B,EAAcL,EAAYpa,QAAQgZ,SACtDuD,EAAiB9B,EAAcL,EAAY3a,KAAKuZ,SAkDhD8D,EAvBE7F,EAEI,qBAAKzQ,UAAU,gCAAgC/G,KAAK,QAApD,yBAIGoa,EACHmD,EAEI,qBAAKxW,UAAU,sBAAsB/G,KAAK,QAA1C,qDAMA,qBAAK+G,UAAU,qBAAqB/G,KAAK,QAAzC,mEATL,EAmBX,OACI,qCACI,cAACiH,EAAA,EAAD,UACI,cAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,SACI,cAACF,EAAA,EAAD,CAAKF,UAAU,OAAf,SACI,cAACG,EAAA,EAAD,UACI,sBAAKH,UAAU,cAAf,UACI,oBAAIA,UAAU,gCAAd,sCAGCsW,EACD,uBACIjC,SA9DX,SAACqD,GAClBA,EAAEpD,iBACFhB,GAAwB,GACpBV,IACAsE,GAAa,GACbF,EAAY,CACRpe,GAAI6W,EACJ1W,MAAOA,EAAM6D,MACb/D,UAAWA,EAAU+D,MACrB9D,SAAUA,EAAS8D,MACnBpD,QAASA,EAAQoD,MACjBxD,KAAMA,EAAKwD,MACX1D,QAASD,EAAK2D,QAEbgC,MAAK,WACFsY,GAAa,GACbD,GAAW,MAEdU,OAAM,SAACC,GACJA,GAAOX,GAAW,QA4CFjX,UAAU,YACVpH,GAAG,YAHP,UAKI,eAACsH,EAAA,EAAD,CAAKF,UAAU,MAAf,UACI,eAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,uBACIJ,UAAU,yBACVuU,QAAQ,qBAFZ,2BAMA,uBACIuC,UAAU,EACVla,MAAO8Z,EAAS3d,MAChBI,KAAK,QACL6G,UAAU,eACVpH,GAAG,qBACHyD,KAAK,QACLoY,aAAa,MACbC,YAAY,GACZ,iBAAe,UACfE,MAAM,mCAGd,cAACzU,EAAA,EAAD,CAAKC,GAAI,EAAT,SACI,cAAC0U,GAAD,CACI9U,UAAS,uBAAkB+V,EAAlB,YACLnC,EAAY3a,KAAKuZ,QACX,cACA,IAEVwC,cAAe/b,EAAK2D,MACpBqY,SAAUhc,EAAKuY,SACfkD,YAAY,mBACZ7Q,QAAS,CACL,oBACA,eACA,iBACA,oBACA,qBACA,gBACA,SACA,UAEJkR,YAAY,mBAnBhB,SAqBK1B,EACGO,EAAY3a,KACPuZ,aAAU/X,EACX,qBAAKuF,UAAU,2BAAf,SACI,4BAEQ4T,EACK3a,KACAiG,iBAKrBzE,SAIhB,eAACyF,EAAA,EAAD,CAAKF,UAAU,WAAf,UACI,eAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,uBACIJ,UAAU,yBACVuU,QAAQ,yBAFZ,wBAMA,uBACI3X,MAAO/D,EAAU+D,MACjB4X,SAAU3b,EAAU2Y,SACpBrY,KAAK,OACL6G,UAAS,uBAAkB2V,EAAlB,YACL/B,EAAY/a,UACP2Z,QACC,cACA,IAEV5Z,GAAG,yBACHyD,KAAK,YACLoY,aAAa,MACbC,YAAY,KAEfrB,EACGO,EAAY/a,UACP2Z,QAAU,KACX,qBAAKxS,UAAU,2BAAf,SACI,4BAEQ4T,EACK/a,UACAqG,YAKrB,QAER,eAACiB,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,uBACIJ,UAAU,yBACVuU,QAAQ,mBAFZ,uBAMA,uBACI3X,MAAO9D,EAAS8D,MAChB4X,SAAU1b,EAAS0Y,SACnBrY,KAAK,OACL6G,UAAS,uBAAkB4V,EAAlB,YACLhC,EAAY9a,SAAS0Z,QACf,cACA,IAEV5Z,GAAG,mBACHyD,KAAK,WACLoY,aAAa,MACbC,YAAY,KAEfrB,EACGO,EAAY9a,SACP0Z,QAAU,KACX,qBAAKxS,UAAU,2BAAf,SACI,4BAEQ4T,EACK9a,SACAoG,YAKrB,WAGZ,eAACgB,EAAA,EAAD,CAAKF,UAAU,WAAf,UACI,cAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,SACI,cAACiV,GAAD,CACIrV,UAAS,uBAAkB8V,EAAlB,YACLlC,EAAYpa,QAAQgZ,QACd,cACA,IAEVwC,cAAexb,EAAQoD,MACvBqY,SAAUzb,EAAQgY,SAPtB,SASK6B,EACGO,EAAYpa,QACPgZ,aAAU/X,EACX,qBAAKuF,UAAU,2BAAf,SACI,4BAEQ4T,EACKpa,QACA0F,iBAKrBzE,MAGZ,eAAC0F,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,uBACIJ,UAAU,yBACVuU,QAAQ,oBAFZ,kBAMA,uBACI3X,MAAOxD,EAAKwD,MACZ4X,SAAUpb,EAAKoY,SACfrY,KAAK,OACL6G,UAAS,uBAAkB6V,EAAlB,YACLjC,EAAYxa,KAAKoZ,QACX,cACA,IAEV5Z,GAAG,oBACHyD,KAAK,OACLoY,aAAa,MACbC,YAAY,KAEfrB,EACGO,EAAYxa,KACPoZ,QAAU,KACX,qBAAKxS,UAAU,2BAAf,SACI,4BAEQ4T,EAAYxa,KACP8F,YAKrB,yBASpC,cAACgB,EAAA,EAAD,UACI,eAACC,EAAA,EAAD,WACI,sHAIA,cAAC0W,GAAA,EAAD,CACI7W,UAAU,uCACVgW,KAAK,YACL7c,KAAK,SACL2d,WAAUrG,EAJd,oCClWb,IAAMoH,GAAW,SACjBpG,EAAeqG,GACdva,SAASwa,iBAAiBtG,GAAO,SAACiG,GAAD,OAAYI,EAASJ,EAAEM,YAFnDH,GAAW,SAIXpG,EAAe5S,GACpBtB,SAAS0a,cAAc,IAAIC,YAAYzG,EAAO,CAAEuG,OAAQnZ,MALnDgZ,GAAW,SAObpG,EAAeqG,GAClBva,SAAS4a,oBAAoB1G,EAAOqG,ICF/BM,GAAY,WACrB,IAAM3Y,EAAS4Y,cACT7a,EAAWnF,cACXigB,EAAUC,cACVC,EAAQC,cAGd,OAAOC,mBAAQ,WACX,MAAO,CAEHhV,KAAM4U,EAAQ5U,KACd0R,QAASkD,EAAQlD,QACjBhd,SAAUoF,EAASpF,SACnBqH,OAAQA,EACRkZ,MAAO,IAAIC,gBAAgBpb,EAASqb,QAGpCL,QACAhb,WACA8a,aAEL,CAAC7Y,EAAQ+Y,EAAOhb,EAAU8a,KCiB3BQ,GAAgB,SAAC,GAAwD,IAAtDC,EAAqD,EAArDA,eAAgBC,EAAqC,EAArCA,WACvC,EACEza,IADMR,EAAR,EAAQA,QAASC,EAAjB,EAAiBA,SAAU7D,EAA3B,EAA2BA,SAAU8D,EAArC,EAAqCA,OAAQC,EAA7C,EAA6CA,QAASb,EAAtD,EAAsDA,KAAMc,EAA5D,EAA4DA,YAEtD8a,EAASb,KACf,EAAkCxd,oBAAS,GAA3C,mBAAOse,EAAP,KAAkBC,EAAlB,KACA,EAAoDve,mBAAiB,IAArE,mBAAOsY,EAAP,KAA2BkG,EAA3B,KACA,EAAyCxe,oBAAkB,GAA3D,mBAAOqY,EAAP,KAAuBoG,EAAvB,KACA,EACEze,oBAAkB,GADpB,mBAAOuY,EAAP,KAA4BmG,EAA5B,KAEA,EAAsC1e,mBAAQ,OAC5Coe,QAD4C,IAC5CA,IAAc,SADhB,mBAAOO,EAAP,KAAoBC,EAApB,KAIMC,EAAcf,mBAClB,iBAAO,CACLte,MAAO,QACPsf,aAAc,eACdlD,QAAS,UACTmD,UAAW,kBAAMH,EAAe,UAChCI,iBAAkB,kBAAMJ,EAAe,iBACvCK,YAAa,kBAAML,EAAe,eAEpC,IAGIjE,EAAiB,SAAC,GASN,IARhBxc,EAQe,EARfA,MAGAF,GAKe,EAPfgH,SAOe,EANf6V,gBAMe,EALf7c,WACAC,EAIe,EAJfA,SACAM,EAGe,EAHfA,KACAI,EAEe,EAFfA,QACAP,EACe,EADfA,KAEAqgB,GAAuB,GAUvBnf,EATyB,CACvBpB,QACAF,YACAC,WACAI,QAASD,EACTD,SAAUD,EACVS,UACAJ,SAEyBwF,MAAK,kBAC9Bkb,YAAW,WACTR,GAAuB,KACtB,SAiDDtG,EAAc,SAAC,GAAoC,IAAlCja,EAAiC,EAAjCA,MAAO8G,EAA0B,EAA1BA,SACxB9B,IACFob,GAAa,GACblb,EAAOlF,EAAO8G,GAAUjB,MACtB,SAAClG,GACCygB,GAAa,GACbE,GAAe,GACS,MAApBJ,EAAO7gB,UAET0hB,YAAW,kBAAMb,EAAOvV,KAAK,cAAa,KAE5CqV,GAAe,MAEjB,SAACha,GACCoa,GAAa,GACbE,GAAe,GACI,mBAAfta,EAAM5F,KACRigB,EAAsB,8CAED,MAAjBra,EAAMG,QACRka,EAAsBra,EAAMG,SAG5Bka,EACE,+DASRW,EAAsB,WAC1B,OAAQR,GACN,KAAKE,EAAYC,aACf,OACE,cAACpE,GAAD,CACEnC,oBAAqBA,EACrBoC,eAAgBA,EAChBtC,eAAgBA,EAChBC,mBAAoBA,EACpBsC,gBAAiBiE,EAAYE,UAC7BlE,kBAAmBgE,EAAYI,cAIrC,KAAKJ,EAAYjD,QACf,OAAO,cAACP,GAAD,IAET,KAAKwD,EAAYrf,MACjB,QACE,OACE,cAAC2Y,GAAD,CACEC,YAAaA,EACbC,eAAgBA,EAChBC,mBAAoBA,EACpBC,oBAAqBA,EACrBC,uBAAwBqG,EAAYG,qBAM9C,OACE,sBAAK5Z,UAAU,kBAAf,UACE,cAACE,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,SACE,qBAAKJ,UAAU,gDAAf,SACE,eAAC6W,GAAA,EAAD,CACE7W,UAAU,kCACV6U,QAAS,kBAAMkE,GAAe,IAC9BiB,QAAQ,OAHV,UAKE,mBAAGha,UAAU,4BALf,yBAWN,cAACC,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,SACE,qBAAKJ,UAAU,4EAAf,SACGhC,EACC,sBAAKgC,UAAU,cAAf,UACE,cAAC+W,GAAD,CACEL,SAAUrZ,EACV2Z,YA9GQ,SAAC,GAQH,IAPtBpe,EAOqB,EAPrBA,GACAG,EAMqB,EANrBA,MACAG,EAKqB,EALrBA,QACAL,EAIqB,EAJrBA,UACAC,EAGqB,EAHrBA,SACAU,EAEqB,EAFrBA,QACAJ,EACqB,EADrBA,KAEA,GAAI2E,EACF,OAAOI,EAAY,CACjBvF,KACAG,QACAG,UACAL,YACAC,WACAU,UACAJ,YA+FU,cAACqd,GAAD,CACEC,SAAUrZ,EACVsZ,mBAjIW,SAAC,GAMvB,IALL/d,EAKI,EALJA,GACAiH,EAII,EAJJA,SAKA,GAAI9B,EACF,OAAOI,EAAY,CACjBvF,KACAiH,gBAyHU,qBAAKG,UAAU,OAAf,SACE,eAAC6W,GAAA,EAAD,CACE7W,UAAU,wBACV6U,QA9IC,WACf9W,GACFG,IAAUU,MAAK,WACbma,GAAe,OAyIH,oBAIU1b,EAAKxE,UAJf,IAI2BwE,EAAKvE,iBAIlCogB,EACF,qBAAKlZ,UAAU,kBAAf,6BAEA,cAAC+Z,EAAD,gBAUHE,GAAS,SAAC,GAAoD,IAAlDtf,EAAiD,EAAjDA,SACvB,GADwE,EAAvCqF,UAAuC,EAA5Bka,SACR3b,KAA5BR,EAAR,EAAQA,QAASC,EAAjB,EAAiBA,SAAUX,EAA3B,EAA2BA,KAC3B,EAAsCzC,oBAAkB,GAAxD,mBAAOuf,EAAP,KAAoBpB,EAApB,KAEA,EAA0Cne,qBAA1C,mBAAOwf,EAAP,KAAsBC,EAAtB,KAIMC,EAAsB,SAACC,GAC3BxB,GAAe,SAACyB,GAKd,OAJIA,IAAgBD,GAElBhiB,OAAOC,SAAS,EAAG,GAEd+hB,MAiCX,OA7BAjiB,qBAAU,WAER,OADAuf,GAAY,sBAAuByC,GAC5B,WACLzC,GAAgB,sBAAuByC,MAExC,IAEHhiB,qBAAU,WAKR,OAJAuf,GAAY,8BAA8B,WACxCwC,EAAiB,gBACjBC,GAAe,MAEV,WACLzC,GAAgB,8BAA8B,WAC5CwC,EAAiB,gBACjBC,GAAe,SAGlB,IAEHhiB,qBAAU,WACRC,OAAOC,SAAS,EAAG,GACf2hB,EACF5c,SAASkd,KAAKC,UAAUC,IAAI,cAE5Bpd,SAASkd,KAAKC,UAAUxgB,OAAO,gBAEhC,CAACigB,IAECpc,EAqBH,wBAAQiC,UAAU,oBAAlB,SACE,cAACC,EAAA,EAAD,CAAWmR,OAAK,EAACpR,UAAU,qBAA3B,SACE,eAACE,EAAA,EAAD,CAAKF,UAAU,kCAAf,UACE,cAACG,EAAA,EAAD,CAAKH,UAAU,yCAAf,SACE,cAAC,IAAD,CAAMkR,GAAIlJ,EAAMC,KAAMjI,UAAU,uBAAhC,SACE,qBACEA,UAAU,YACV4a,IAAI,mBACJC,IAAI,oBAITlgB,EACC,cAACwF,EAAA,EAAD,CAAKH,UAAU,6DAAf,SACGrF,IAED,KACJ,eAACwF,EAAA,EAAD,CACEH,UAAS,4BACPrF,EAAW,GAAK,UADT,uBADX,UAKE,eAACkc,GAAA,EAAD,CACE7W,UAAS,+FACPma,EAAc,SAAW,IAE3BtF,QAAS,kBAAMkE,GAAe,SAACoB,GAAD,OAAkBA,MAChDH,QAASG,EAAc,UAAY,OALrC,UAOE,mBAAGna,UAAU,wBAA2B,IACvChC,EAAQ,UACFX,EAAKxE,UADH,YACgBwE,EAAKvE,UAC1B,sBAELqhB,EACC,cAAC,GAAD,CACEnB,WAAYoB,EACZrB,eAAgBA,IAGlB,aA3DR,iCACE,cAAC9Y,EAAA,EAAD,CAAWmR,OAAK,EAACpR,UAAU,QAA3B,SACE,cAACE,EAAA,EAAD,CAAKF,UAAU,kCAAf,SACE,cAACG,EAAA,EAAD,CAAKH,UAAU,WAAf,SACE,cAAC,IAAD,CAAMkR,GAAIlJ,EAAMC,KAAMjI,UAAU,uBAAhC,SACE,qBACEA,UAAU,YACV4a,IAAI,mBACJC,IAAI,2BC/STC,GAAW,SAAC,GAKH,IAJpBngB,EAImB,EAJnBA,SACAogB,EAGmB,EAHnBA,eACAC,EAEmB,EAFnBA,eAEmB,IADnBC,YACmB,MADZ,UACY,EACbhM,EAA2B1W,OAAOiF,SAASyR,SACjD,EAAgCrU,mBAE9B,YAFF,mBAAOsf,EAAP,KAAiBgB,EAAjB,KAgCA,OAzBA5iB,qBAAU,WACR,OAAQ2W,GAKN,IAAK,4BACL,IAAK,6BACHiM,EAAY,aAEZ,MAUF,QACEA,EAAY,iBAEf,CAACjM,IAGF,sBACEjP,UAAS,mBACE,YAATib,EAAqB,kBAAoB,cADlC,uBADX,UAKE,cAAC,GAAD,CAAQf,SAAUA,EAAUla,UAAU,gBAAtC,SACGgb,IAEH,sBAAMhb,UAAU,uCAAhB,SAAwDrF,IACxD,cAAC,GAAD,CAAQqF,UAAU,gBAAlB,SAAmC+a,QC1D5BI,GAAiB,WAC1B,OACI,gCACI,4JAIA,qEACA,grDA6BA,wDACA,8TAOA,+DACA,qXAQA,mFACA,mqBAYA,8fAUA,mfAUA,2pBAaA,kfAUA,qYAQA,8DACA,6cAaCC,GAAa,WACtB,OACI,eAAC,GAAD,WACI,qBAAKpb,UAAU,yBAAf,SACI,cAACC,EAAA,EAAD,UACI,4EAGR,qBAAKD,UAAU,YAAf,SACI,eAACC,EAAA,EAAD,WACI,cAAC,GAAD,IACA,qBAAKD,UAAU,YAAf,SACI,cAAC,IAAD,CAAMA,UAAU,uBAAuBkR,GAAIlJ,EAAMC,KAAjD,qC,+BC9HXoT,GAAb,WAII,WAAYnL,GAA8B,yBAH1CA,iBAGyC,EACrCzO,KAAKyO,YAAcA,EAL3B,4CAQI,SAASxK,GACL,IAAI7B,EAAe,GAEnB,OAAQ6B,GA4FJ,IAAK,aACD7B,EAAU,CAEN,CACIwI,GAAI,GACJM,GAAI,IACJ2O,SAAS,EACTC,UAAW,QACX9Y,MAAO,YACPgM,KAAM,KACNmG,MAAO,4BAEX,CACIvI,GAAI,IACJM,GAAI,IACJ2O,SAAS,EACTC,UAAW,QACX9Y,MAAO,YACPgM,KAAM,KACNmG,MAAO,2BAEX,CACIvI,GAAI,IACJM,GAAI,IACJ2O,SAAS,EACTC,UAAW,MACX9Y,MAAO,UACPgM,KAAM,KACNmG,MAAO,wBAEX,CACIvI,GAAI,IACJM,GAAI,IACJ2O,SAAS,EACTC,UAAW,QACX9Y,MAAO,YACPgM,KAAM,KACNmG,MAAO,4BAEX,CACIvI,GAAI,IACJM,GAAI,KACJ2O,SAAS,EACTC,UAAW,OACX9Y,MAAO,WACPgM,KAAM,KACNmG,MAAO,0BAkDf,MAEJ,IAAK,OAED,IAOI4G,EAAmC,CACnCC,MAAO,2BACPC,MAAO,0BACPC,IAAK,uBACLC,MAAO,yBAGPvV,EAAW,GACXwV,EAAQ,KACRC,EAAWra,KAAKyO,YAAYR,WAAWqM,mBAC3C,IAAK,IAAI3a,KAAO0a,EACZD,EAAQC,EAAS1a,GACjBiF,EAAS3C,KAAK,CACVjB,MAAOoZ,EAAK,KACZ1iB,KAAM0iB,EAAK,KACXjf,MAAOwE,IAKf,IADA,IAAI4a,EAAyB,GACpBxY,EAAI,EAAGC,EAAS4C,EAAS5C,OAAQD,EAAIC,EAAQD,IA3B/B,aA4BnBqY,EAAQxV,EAAS7C,IACR,OACLwY,EAAkBH,EAAK,OAAaA,GAI5ChY,EAAU,GAEV,IADA,IAAIoY,EAlC8B,CAC9B,QACA,QACA,MACA,SA+BKzY,EAAI,EAAGA,EAAIyY,EAAaxY,OAAQD,IACrCqY,EAAQG,EAAkBC,EAAazY,IACvCK,EAAQH,KAAK,CACTjB,MAAOoZ,EAAK,MACZjH,MAAO4G,EAA4BK,EAAK,OACxCjf,MAAOif,EAAK,QAIpB,MAyDJ,IAAK,aACDhY,EAAU,CACN,CACIwI,GAAI,KACJM,GAAI,GACJ2O,SAAS,EACTC,UAAW,MACX9Y,MAAO,6BACPgM,KAAM,KACNmG,MAAO,8BAEX,CACIvI,GAAI,GACJM,GAAI,GACJ2O,SAAS,EACTC,UAAW,MACX9Y,MAAO,gCACPgM,KAAM,KACNmG,MAAO,iCAEX,CACIvI,GAAI,GACJM,GAAI,KACJ2O,SAAS,EACTC,UAAW,OACX9Y,MAAO,6BACPgM,KAAM,KACNmG,MAAO,+BAOvB,OAAOvU,EAAUwD,KAnVzB,uBA4VI,SAAU6B,EAAY9I,GAClB,IAAIiH,EAAUpC,KAAKya,SAASxW,GAC5B,OAAQA,GAWJ,IAAK,aAED,GAAIyW,SAASvf,GAAQ,CACjB,GAAIA,GAASiH,EAAQ,GAAGwI,IAAMzP,EAAQiH,EAAQ,GAAG8I,GAC7C,OAAO9I,EAAQ,GACZ,GACHjH,GAASiH,EAAQ,GAAGwI,IACpBzP,EAAQiH,EAAQ,GAAG8I,GAEnB,OAAO9I,EAAQ,GACZ,GACHjH,GAASiH,EAAQ,GAAGwI,IACpBzP,EAAQiH,EAAQ,GAAG8I,GAEnB,OAAO9I,EAAQ,GACZ,GACHjH,GAASiH,EAAQ,GAAGwI,IACpBzP,EAAQiH,EAAQ,GAAG8I,GAEnB,OAAO9I,EAAQ,GACZ,GAAIjH,GAASiH,EAAQ,GAAGwI,GAC3B,OAAOxI,EAAQ,GAKvB,IAAIwI,EAAK,KACLM,EAAK,KACT,QAAoBlS,IAAhBmC,EAAK,SAAwCnC,IAAhBmC,EAAK,GAClC,IAAK,IAAI4G,EAAI,EAAGC,EAASI,EAAQJ,OAAQD,EAAIC,EAAQD,IAC7C5G,EAAMyP,KAAOxI,EAAQL,GAAG6I,KACxBA,EAAKxI,EAAQL,IAGb5G,EAAM+P,KAAO9I,EAAQL,GAAGmJ,KACxBA,EAAK9I,EAAQL,IAKzB,OAAU,MAANmJ,GAAoB,MAANN,EACP,CACHA,GAAIA,EAAG5J,MACPkK,GAAIA,EAAGlK,MACP2Z,UAAW,CACP/P,GAAIA,EACJM,GAAIA,IAIL,CACHN,GAAIzP,EAAK,GACT+P,GAAI/P,EAAK,GACTwf,UAAW,CACP/P,GAAIA,EACJM,GAAIA,IA+FpB,IAAK,aACD,IAAI0P,EAAa,KACbC,EAAW,KACf,GAAI1f,EAAMyP,IAAMzP,EAAM+P,GAClB,IAAK,IAAInJ,EAAI,EAAGA,EAAIK,EAAQJ,OAAQD,IAC5B5G,EAAMyP,IAAMzP,EAAMyP,KAAOxI,EAAQL,GAAG6I,KACpCgQ,EAAa7Y,GAED,MAAZ5G,EAAMyP,KACNgQ,EAAa,GAEbzf,EAAM+P,IAAM/P,EAAM+P,KAAO9I,EAAQL,GAAGmJ,KACpC2P,EAAW9Y,GAEC,MAAZ5G,EAAM+P,KACN2P,EAAW7Y,EAAS,GAiBhC,MAZa,CACT4I,GACkB,MAAdgQ,EACMxY,EAAQwY,GAAR,MACA,KACV1P,GAAgB,MAAZ2P,EAAmBzY,EAAQyY,GAAR,MAA6B,KACpDF,UAAW,CACP/P,GAAkB,MAAdgQ,EAAqBxY,EAAQwY,GAAczf,EAAMyP,GACrDM,GAAgB,MAAZ2P,EAAmBzY,EAAQyY,GAAY1f,EAAM+P,KAQjE,MAAO,WAniBf,KCZa4P,GAAb,WASI,cAA+C,IAAjCrM,EAAgC,EAAhCA,YAAasM,EAAmB,EAAnBA,WAAmB,yBAR9CA,WAAkB,KAQ4B,KAP9C/Z,MAAa,KAOiC,KAL9CoB,QAAe,KAK+B,KAH9C4Y,eAAsB,KAGwB,KAF9Cjb,WAAkB,KAGdC,KAAKoC,QAAU,IAAIwX,GAAYnL,GAE/B,IAAIwM,EAAuBxM,EAAW,cAAkBjW,IACpD,mBAEJwH,KAAKgb,eAAiBhb,KAAKkb,uBACvBD,EAAoB,QAApB,cAIAjb,KAAK+a,WADS,MAAdA,EACkBA,EAEA,OAGtB/a,KAAKD,WAAa0O,EAAY1O,WAC9BC,KAAKgB,MAAQ,IAAIlB,EAAW,CACxBC,WAAYC,KAAKD,aA3B7B,4CA+BI,SAASO,EAAkB6a,EAAsBnS,GAC7C,IAAIoS,EAAY,GAEhB,OAAQD,GACJ,IAAK,UACDC,EAAY,UAEZ,MAEJ,IAAK,WACD,OAAQpS,EAAc,OAClB,KAAK,EACDoS,EAAY,WACZ,MAEJ,KAAK,EACDA,EAAY,WACZ,MAEJ,KAAK,GACDA,EAAY,SACZ,MAEJ,QACIA,EAAS,oBAAgBpS,EAAc,MAA9B,KAIjB,MAEJ,IAAK,YACDoS,EAAY,YAEZ,MAEJ,IAAK,QAEDA,EAAY,GAEZ,MAEJ,QACIA,EAAY,WAIpB,OAAOA,IA7Ef,sBAgFI,SACI9a,EACA6a,EACAE,EACAnS,GAEA,IAAIkS,EAAY,GACZE,EAAa,KACblZ,EAAUpC,KAAKoC,QAEnB,OAAQiZ,GACJ,IAAK,SAUDD,EAAYpb,KAAKub,iBACbrS,EAAc,MACd,UAGJ,MAcJ,IAAK,UAEDkS,EAAY,CAAC,cADbE,EAAapS,EAAc,OACa5C,KAAK,KAE7C,MAEJ,IAAK,oBAED8U,EAAY,CAAC,eADbE,EAAapS,EAAc,OACc,KAAK5C,KAAK,KAEnD,MAEJ,IAAK,cAGD,GAFAgV,EAAa,IAEwB,IAAjCpS,EAAc,MAAd,EACA,GACS,SADDlJ,KAAK+a,WAELO,EAAWrZ,KACP,gDAKJqZ,EAAWrZ,KAAK,KAM5B,IAAqC,IAAjCiH,EAAc,MAAd,EACA,GACS,SADDlJ,KAAK+a,WAELO,EAAWrZ,KACP,gDAKJqZ,EAAWrZ,KAAK,KAM5B,IAAqC,IAAjCiH,EAAc,MAAd,EACA,GACS,SADDlJ,KAAK+a,WAELO,EAAWrZ,KACP,gDAKJqZ,EAAWrZ,KAAK,KAM5B,IAAqC,IAAjCiH,EAAc,MAAd,EACA,GACS,SADDlJ,KAAK+a,WAELO,EAAWrZ,KACP,gDAKJqZ,EAAWrZ,KAAK,KAMF,IAAtBqZ,EAAWtZ,QACXsZ,EAAWrZ,KAAK,OAGpBmZ,EAAYE,EAAWhV,KAAK,MAE5B,MAEJ,IAAK,cACL,IAAK,uBACL,IAAK,WACL,IAAK,oBACL,IAAK,QACD8U,EAAYpb,KAAKwb,aAAatS,EAAc,OAE5C,MAEJ,IAAK,wBACL,IAAK,iCACL,IAAK,qBACL,IAAK,8BACL,IAAK,kBACDkS,EAAYpb,KAAKyb,uBACbvS,EAAc,OAGlB,MAEJ,IAAK,iBAUGkS,EAHiC,OANrCE,EAAalZ,EAAQsZ,UACjB,aACAxS,EAAc,MAAU,KAId,UAAV,IACiC,MAAjCoS,EAAU,UAAV,GAGIA,EAAU,KAAWA,EAAU,IAEL,MAApBA,EAAU,GADVA,EAAU,GAGV,CACI,UACAA,EAAU,GACV,MACAA,EAAU,IACZhV,KAAK,KAGbgV,EAAU,KAAWA,EAAU,IAEL,MAApBA,EAAU,GADVA,EAAU,GAGV,CAACA,EAAU,GAAQ,IAAKA,EAAU,IAAQhV,KACtC,KAIlB,MAEJ,IAAK,kBAMD8U,GALAE,EAAalZ,EAAQsZ,UACjB,aACAxS,EAAc,MAAU,KAId,KAAWoS,EAAU,IAEL,MAApBA,EAAU,GADVA,EAAU,GAGV,CAACA,EAAU,GAAQ,IAAKA,EAAU,IAAQhV,KAAK,KAEzD,MAEJ,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,iBACL,IAAK,oBACL,IAAK,eACL,IAAK,oBACL,IAAK,eACL,IAAK,kBAID8U,GADAE,GAFAA,EACItb,KAAKgb,eAAe1a,GAApB,UAA2C6a,IACxB,UAAcE,IACdnS,EAAc,OAAzB,MAEZ,MAEJ,IAAK,MAUDkS,EAAYpb,KAAKub,iBACbrS,EAAc,MACd,OAGJ,MAcJ,QACIkS,EAAS,qBAAiBC,GAIlC,OAAOD,IAlUf,sBAqUI,SAAS9a,EAAkBqb,EAAoBlb,GAI3C,OAHAA,OACmBzH,IAAfyH,GAA0C,MAAdA,EAAqB,EAAIA,OAEnCzH,IAAlB2iB,GAAgD,MAAjBA,EACnB3b,KAAKgB,MACJxI,IAAI8H,EAAUG,GAGxBkb,EAAcrb,KA9U7B,8BAkVI,SAAiBnF,EAAe6F,GAC5B,MAAM,GAAN,OAAUA,EAAV,YAAmB7F,KAnV3B,0BAsVI,SAAaA,GACT,IAAImgB,EAAangB,EAAM,GACnBigB,EAAY,GACZjgB,EAAM6G,OAAS,GACfoZ,EAAUnZ,KAAK,YAEnB,IAAI2Z,EAAa,EACbC,EAAQ,KACRC,EAAM,KAEV,IAAK,IAAInc,KAAO2b,EAAY,CACxB,OAAQ3b,GACJ,IAAK,KACL,IAAK,KACDkc,EAAQP,EAAW3b,GAEnB,MAEJ,IAAK,KACL,IAAK,KACDmc,EAAMR,EAAW3b,GAKzBic,IA+BJ,OA5BmB,IAAfA,EACI,OAAQN,EAERF,EAAUnZ,KAAK,8BAA+B4Z,GACvC,OAAQP,EAEfF,EAAUnZ,KAAK,kBAAmB4Z,GAC3B,OAAQP,EAEfF,EAAUnZ,KAAK,2BAA4B6Z,GACpC,OAAQR,GAEfF,EAAUnZ,KAAK,eAAgB6Z,GAInCV,EAAY,CACR,UACAS,EACA,MACAC,GAIJ3gB,EAAM6G,OAAS,GACfoZ,EAAUnZ,KAAK,OAGZmZ,EAAU9U,KAAK,OA9Y9B,oCAiZI,SAAuBnL,GACnB,IAAImgB,EAAangB,EAAM,GACnBigB,EAAmB,GACnBQ,EAAa,EACbC,EAAQ,KACRC,EAAM,KAEV,IAAK,IAAInc,KAAO2b,EAAY,CACxB,OAAQ3b,GACJ,IAAK,KACL,IAAK,KACDkc,EAA0B,IAAlBP,EAAW3b,GAEnB,MAEJ,IAAK,KACL,IAAK,KACDmc,EAAwB,IAAlBR,EAAW3b,GAKzBic,IA4BJ,OAzBmB,IAAfA,EACI,OAAQN,EAERF,EAAY,CAAC,8BAA+BS,EAAQ,KAC7C,OAAQP,EAEfF,EAAY,CAAC,kBAAmBS,EAAQ,KACjC,OAAQP,EAEfF,EAAY,CAAC,2BAA4BU,EAAM,KACxC,OAAQR,IAEfF,EAAY,CAAC,eAAgBU,EAAM,MAIvCV,EAAY,CACR,UACAS,EAAQ,IACR,MACAC,EAAM,IACN3gB,EAAM6G,OAAS,EAAI,MAAQ,IAI5BoZ,EAAU9U,KAAK,OAnc9B,oCAwcI,SAAuBlE,GAQnB,IAPA,IAAI2Z,EAAe,KACfC,EAAe,KACfC,EAAc,KACd7X,EAAS,KACT8X,EAAkB,GAClB5b,EAAW,KAENyB,EAAI,EAAG+C,EAAU1C,EAAQJ,OAAQD,EAAI+C,EAAS/C,IAAK,CAKxDma,EAFA5b,GAFA8D,EAAShC,EAAQL,IAEA,SAAN,OAEY,CACnBgD,UAAW,IAKf,IACI,IAAIE,EAAI,EAAGC,EAAUd,EAAM,UAAcpC,OACzCiD,EAAIC,EACJD,IACF,CACE8W,EAAe3X,EAAM,UAAca,GAEnC+W,EAAe5X,EAAM,UAAca,GAAG,GAEtCgX,EAAcF,EAAY,MAC1BG,EAAW5b,GAAX,UAAkC2b,GAAe,CAC7Cjb,MAAO+a,EAAY,MACnB/W,UAAW,IAGfkX,EAAW5b,GAAX,UAAkC2b,GAAlC,UACID,EAAY,OACZ,GAMJ,IAJA,IAAMrc,EACFuc,EAAW5b,GAAX,UAAkC2b,GAAlC,UACID,EAAY,OAGZ/c,EAAI,EACJqG,EAAU0W,EAAY,OAAZ,QAAkCha,OAChD/C,EAAIqG,EACJrG,IAEAU,EAAIqc,EAAY,OAAZ,QAAkC/c,GAAlC,OAAiD,CACjD+B,MAAOgb,EAAY,OAAZ,QAAkC/c,GAAlC,QAMvB,OAAOid,MA/ff,KCAaC,GAAb,WAgBI,WAAY1N,GAA8B,yBAf1CA,iBAeyC,OAdzC2N,uBAA8B,KAcW,KAbzCrB,WAAa,OAa4B,KAZzCC,eAAsB,KAYmB,KAXzCqB,iBAAwB,KAWiB,KAVzCC,iBAAwB,KAUiB,KATzCvc,WAAa,KAS4B,KARzCwc,mBAQyC,EACrCvc,KAAKyO,YAAcA,EASnB,IAAIwM,EACAxM,EAAYrN,cAAc5I,IAAI,mBAClCwH,KAAKgb,eAAiBC,EAAqBlY,QAAQ8C,KAAKzD,QAExDpC,KAAKqc,iBAAmBpB,EAAqBzO,UAAU3G,KAAKzD,QAG5D,IAAMka,EACFrB,EAAqBuB,aAAa9Z,QAAQmB,UAAUzB,QACxDpC,KAAKsc,iBAAmB,GAExB,IADA,IAAI3a,EAAO,KACFI,EAAI,EAAGC,EAASsa,EAAiBta,OAAQD,EAAIC,EAAQD,IAC1DJ,EAAO2a,EAAiBva,GACxB/B,KAAKsc,iBAAiB3a,EAAI,SAAJ,OAA6BA,EAGvD3B,KAAKD,WAAa0O,EAAY1O,WAC9BC,KAAKoc,uBAAyB,IAAItB,GAAiB,CAC/CrM,YAAaA,EACbsM,WAAY/a,KAAK+a,aAUrB,IAAM0B,EACFhO,EAAYR,WAAWyO,oBAAoBhJ,KAAI,SAAC/R,GAC5C,MAAO,CAACgb,OAAOhb,EAAKxK,IAAKwK,MAGjC3B,KAAKuc,cAAgB,IAAIvd,IAAoByd,GA5DrD,kDAkSI,SAAethB,GACX,IAAIigB,EAAY,GAOhB,QAN0B,IAAtBjgB,EAAK,WAA8C,IAArBA,EAAK,SACnCigB,EAAUnZ,KAAKjC,KAAK4c,OAAO,cAEL,IAAtBzhB,EAAK,WAA+C,IAArBA,EAAK,SACpCigB,EAAUnZ,KAAKjC,KAAK4c,OAAO,YAEvBzhB,EAAK,gBACT,IAAK,MACDigB,EAAUnZ,KACNjC,KAAK4c,OACoB,IAArBxB,EAAUpZ,OAAe,OAAOxB,cAAgB,SAGxD,MAEJ,IAAK,QACD4a,EAAUnZ,KACNjC,KAAK4c,OACoB,IAArBxB,EAAUpZ,OACJ,SAASxB,cACT,WAGd,MAEJ,QACI4a,EAAUnZ,KAAKjC,KAAK4c,OAAO,aAGnC,IAAI5a,EAAS7G,EAAK,kBAAsB6G,OACxC,GAAIA,EAAS,EAAG,CAEZ,IADA,IAAI6a,EAAW,GACN9a,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAMJ,EAAY3B,KAAKuc,cAAc/jB,IACjC2C,EAAK,kBAAsB4G,IAE/B8a,EAAS5a,KAAKjC,KAAK4c,OAAOjb,EAAK/G,OAEnCwgB,EAAUnZ,KAAK,CAAC,IAAK4a,EAASvW,KAAK,MAAO,KAAKA,KAAK,KAExD,OAAO8U,EAAU9U,KAAK,OA5U9B,qBAkYI,SAAQnL,GACJ,OAAO6E,KAAK8c,kBAAkB3hB,EAAO6E,KAAKgb,kBAnYlD,uBA+bI,SAAU7f,GACN,OAAO6E,KAAK8c,kBAAkB3hB,EAAO6E,KAAKqc,oBAhclD,oBAqiBI,SAAOlhB,GACH,MAAO,WAAaA,EAAQ,cAtiBpC,+BAwoBI,SAAkBA,EAAYiH,GAsD1B,IArDA,IAAM2a,EAAsB,CACxB5U,SAAU,CACN,EAAG,CACC8B,QAAS,CAAE,EAAG,eAAgB,EAAG,mBACjCa,SAAU,CACN,EAAG,eACH,EAAG,oBACH,EAAG,uBAEPG,kBAAmB,CACf,EAAG,eACH,EAAG,oBACH,EAAG,uBAEPT,YAAa,CACT,EAAG,uBACH,EAAG,mBAEPG,qBAAsB,CAClB,EAAG,kBACH,EAAG,uBACH,EAAG,qBAGX,EAAG,CACCV,QAAS,CAAE,EAAG,eAAgB,EAAG,mBACjCa,SAAU,CACN,EAAG,eACH,EAAG,oBACH,EAAG,uBAEPG,kBAAmB,CACf,EAAG,eACH,EAAG,oBACH,EAAG,uBAEPT,YAAa,CACT,EAAG,uBACH,EAAG,mBAEPG,qBAAsB,CAClB,EAAG,uBACH,EAAG,sBAMfqS,EAAa,KACbC,EAAsB,KACtBC,EAAuB,GACvBd,EAAyBpc,KAAKoc,uBAC9BT,EAAgB3b,KAAKmd,+BAA+B/a,GAC/CL,EAAI,EAAGC,EAAS7G,EAAM6G,OAAQD,EAAIC,EAAQD,IAAK,CAGpD,IAAMqb,EAAgBL,GAFtBC,EAAa7hB,EAAM4G,IAE6BgH,UAM5CsU,EAAsB,KAC1B,GAAqB,MAAjBD,GAAsD,MAA7BJ,EAAWhU,eAAwB,CAC5D,IAAMsU,EACFF,EAAcJ,EAAWhU,eAAe7N,OAM5C,GAA2B,MAAvBmiB,EAA6B,CAC7B,IAAMC,EACFD,EAAoBN,EAAW/T,UAMnC,GAAqB,MAAjBsU,EACA,GAA4B,YAAxBP,EAAW/T,UACX,GAAuC,MAAnC+T,EAAW9T,eAAe/N,MAAe,CACzC,IAAM+N,EACF8T,EAAW9T,eAAe/N,MACR,MAAlB+N,IACAmU,EACIE,EAAcrU,SAOvB,CACH,IAAIsU,EAAa,KACjB,OAAQR,EAAW/T,UACf,IAAK,cACDuU,EAAa,KACb,MACJ,IAAK,uBACDA,EAAa,KACb,MACJ,IAAK,WACDA,EAAa,KACb,MACJ,IAAK,oBACDA,EAAa,KAKrB,GACkB,MAAdA,GACmC,MAAnCR,EAAW9T,eAAe/N,OAC1B6hB,EAAW9T,eAAe/N,MAAM6G,OAAS,EAC3C,CACE,IAAMkH,EACF8T,EAAW9T,eAAe/N,MAAM,GAC5BqiB,GAEc,MAAlBtU,IACAmU,EACIE,EAAcrU,OAW1C,GAA2B,MAAvBmU,GACAJ,EAAsB,IAEFhb,KAChBma,EAAuB9b,SACnB0c,EAAU,SACVrB,EACA,OAGRsB,EAAoBhb,KAAKob,GACzBH,EAAqBjb,KAAKgb,OACvB,CAgDH,IA/CAA,EAAsB,IAEFhb,KAChBma,EAAuB9b,SACnB0c,EAAU,SACVrB,EACA,OAIRsB,EAAoBhb,KAChBma,EAAuBrT,SACnBiU,EAAU,SACVA,EAAU,SACVA,EAAU,iBAQd,aAAcA,GACdC,EAAoBhb,KAChBma,EAAuBnT,SACnB+T,EAAU,SACVA,EAAU,SACVA,EAAU,SACVA,EAAU,iBAKlB,WAAYA,GACZC,EAAoBhb,KAChBma,EAAuBnT,SACnB+T,EAAU,SACVA,EAAU,SACV,SACA,CACI7hB,MAAO6hB,EAAU,UAO7BC,EAAoBjb,OAAS,EAAG,CAChC,MACIib,EADJ,kBAEAA,EAAsB,CAFtB,gBAIqB3W,KAAK,MAI9B4W,EAAqBjb,KAAKgb,IAGlC,OAAOC,IAt1Bf,4CAw1BI,SAA+B9a,GAG3B,IAFA,IAAIgC,EAAS,KACTuX,EAAqB,GAChB5Z,EAAI,EAAGC,EAASI,EAAQJ,OAAQD,EAAIC,EAAQD,IAEjD4Z,GADAvX,EAAShC,EAAQL,GAAR,UACW,OAAaqC,EAAM,MAE3C,OAAOuX,MA/1Bf,KCJa8B,GAAb,0FAQI,SAAWC,GACP,IAGIviB,EAHeuiB,EAAWvf,UAGc,GAFvBuf,EAAWC,oBAEiB,IAEjD,OAAO3d,KAAK4d,mBAAmBziB,KAdvC,2BAwBI,SAAc0iB,GACV,IAAIC,EAAMD,EAAKE,UACXC,EAAQH,EAAKI,WAAa,EAS9B,MANgB,CAFLJ,EAAKjO,cAIZ5P,KAAKke,YAAYF,GACjBhe,KAAKke,YAAYJ,IACnBxX,KAAK,OAjCf,wBA6CI,SAAW6X,GACP,IAAIN,EAAO,IAAI3f,KAAK8B,KAAKoe,mBAAmBD,IAE5C,OADAN,EAAKQ,SAAS,EAAG,EAAG,EAAG,GAChBR,IAhDf,2BA0DI,SAAcM,GACV,IAAIG,EAAete,KAAKoe,mBAAmBD,GACvCN,EAAO,IAAI3f,KAAKogB,GAEhBR,EAAMD,EAAKU,aACXP,EAAQH,EAAKW,cAAgB,EASjC,MANgB,CAFLX,EAAKY,iBAIZze,KAAKke,YAAYF,GACjBhe,KAAKke,YAAYJ,IACnBxX,KAAK,OAtEf,gCAkFI,SAAmB6X,GACfA,EAAOO,SAASP,GAChB,IAAIQ,EAAWC,KAAKC,MAAMV,EAAO,GAC7BW,EAAYF,KAAKC,MAAMV,EAAO,GAIlC,OAHmBS,KAAKC,MACa,OAArB,EAAXF,EAAeG,EAAY,GAAa,OAvFrD,gCAmGI,SAAmBR,GAKf,IACI5N,MALJ4N,EAAeI,SAASJ,IAIK,IACR,OAAS,EAE1BQ,KAAepO,EAAI,GAKvB,OAJkB,IAAdoO,IACAA,EAAY,GAEM,KALJpO,EAAI,GAKIoO,IA/GlC,mBAwHI,WACI,OAAO9e,KAAK+e,WAAW,IAAI7gB,QAzHnC,uBAiII,WAGI,OAFY8B,KAAKgf,QAEF,IApIvB,yBAuII,SAAY7jB,GACR,OAAIA,EAAQ,GACD,IAAMA,EAGVA,MA5If,KCAa8jB,GAAb,kGAKI,SAAmB5E,EAAU6E,EAASC,GAClC,YAA0BnmB,IAAtBqhB,EAAS6E,GACF,KAIqB,MAA5B7E,EAAS6E,GAASE,QAClB/E,EAAS6E,GAASxnB,OAASynB,EAEpBD,EAGJlf,KAAKqf,mBACRhF,EACAA,EAAS6E,GAASE,OAClBD,KApBZ,gCA4BI,SAAmB9E,EAAU6E,EAASI,GAClC,IAAItS,EAAOqN,EAAS6E,GAIpB,OAHmBR,SAAS1R,EAAKtV,KAAK6nB,OAAO,KACzBb,SAASY,EAAWC,OAAO,KAEK,MAAfvS,EAAKoS,OAC/BF,EAGJlf,KAAKwf,mBAAmBnF,EAAUrN,EAAKoS,OAAQE,KArC9D,kCAmDI,SAAqBG,GACjB,IAAItkB,EAAQ,CACRoI,KAAM,KACNmc,SAAU,KACVlc,MAAO,KACPmc,UAAW,MAGXnc,EACsB,MAAtBic,EAAS,MACHA,EAAS,cAAkBjnB,IAAIinB,EAAS,OACxC,KAIV,GAHAtkB,EAAK,MAAqB,MAATqI,EAAgB,KAAOA,EAAK,KAC7CrI,EAAK,UAAyB,MAATqI,EAAgB,KAAOA,EAAK,KAEpC,MAATA,GAAmC,WAAlBA,EAAK,KAAuB,CAC7C,IAAIoc,EAAcH,EAAS,cAAkBjnB,IAAIgL,EAAK,QACnC,MAAfoc,IACAzkB,EAAK,MAAY,CAACykB,EAAW,KAAU,IAAKpc,EAAK,MAAU8C,KACvD,KAKZ,IAAI/C,EACqB,MAArBkc,EAAS,KACHA,EAAS,aAAiBjnB,IAAIinB,EAAS,MACvC,KAIV,OAHAtkB,EAAK,KAAmB,MAARoI,EAAe,KAAOA,EAAI,KAC1CpI,EAAK,SAAuB,MAARoI,EAAe,KAAOA,EAAI,KAEvCpI,MAlFf,KCAa0kB,GAAY,CAOrBC,OAAQ,CACJC,IAAK,SACLC,IAAK,UACLC,IAAK,QACLC,IAAK,MCXAC,GAOD,CACJ/V,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACH6V,EAAG,WAZED,GAeD,CACJ,EAAK,CACDE,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,MAAO,GAEX,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,MAAO,GAEX,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,MAAO,GAEX,KAAM,CACFklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,OAAQ,GAEZ,KAAM,CACFklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,OAAQ,GAEZ,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,MAAO,GAEX,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,MAAO,GAEX,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,OAAQ,GAEZ,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,OAAQ,GAEZ,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,MAAO,IApFNglB,GAyFW,CAChB,EAAK,CACDE,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACPwf,UAAW,IACXC,SAAU,IACVtlB,MAAO,GAEX,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,KACPwf,UAAW,IACXC,SAAU,IACVtlB,MAAO,GAEX,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,KACPwf,UAAW,IACXC,SAAU,IACVtlB,MAAO,GAEX,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACPwf,UAAW,IACXC,SAAU,IACVtlB,MAAO,GAEX,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,KACPwf,UAAW,IACXC,SAAU,IACVtlB,MAAO,GAEX,KAAM,CACFklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,KACPwf,UAAW,IACXC,SAAU,IACVtlB,OAAQ,GAEZ,KAAM,CACFklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACPwf,UAAW,IACXC,SAAU,IACVtlB,OAAQ,GAEZ,KAAM,CACFklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,KACPwf,UAAW,IACXC,SAAU,IACVtlB,OAAQ,GAEZ,KAAM,CACFklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,KACPwf,UAAW,IACXC,SAAU,IACVtlB,OAAQ,GAEZ,KAAM,CACFklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACPwf,UAAW,IACXC,SAAU,IACVtlB,OAAQ,GAEZ,QAAS,CACLklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACPwf,UAAW,IACXC,SAAU,IACVtlB,MAAO,MAEX,KAAQ,CACJklB,MAAO,gCACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACPwf,UAAW,OACXrlB,MAAO,MAEX,EAAK,CACDklB,MAAO,6BACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACPwf,UAAW,IACXrlB,MAAO,OCpMNulB,GAAb,iDACIC,UAAY,SADhB,KAGIC,kBAAoB,KAHxB,uCAoCI,SAAI5iB,GAEA,IAAI6iB,EACyB,MAAzB7iB,EAAM,aAC6C,MAAnDA,EAAM,YAAN,uBACMA,EAAM,YAAN,uBACA,EAIN8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,MAEvDgjB,EAAQhhB,KAAK+gB,WAAW/iB,EAAQ,QAAS,SAEzChD,EAASgD,EAAOhD,OAChBG,EAAQ6C,EAAO7C,MAEnB,GAAIA,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAGvB,IAAI1F,EAAY,CAACpb,KAAKihB,OAAOjjB,IAE7B,GACS,SADDhD,EACJ,CACI,IAAIkmB,EAAW,EAEXA,EADAtC,KAAKuC,IAAIhmB,GAAS0lB,EACP,IAEAjC,KAAKuC,IACZzC,SAAkB,IAARvjB,EAAe0lB,IAI7BjC,KAAKuC,IAAIhmB,GAAS,GAAkB,IAAb+lB,IACvBA,EAAW,GAGfA,EAAuB,GAAXA,EAAiB,IAE7B,IAAIE,EAAcphB,KAAK2gB,UAAY,OAC/BU,EAAmBD,EAAc,QACjCE,EAAMxlB,SAASylB,cAAc,OAGjC,GAFAD,EAAI/iB,UAAY6iB,EAChBE,EAAIE,MAAMR,MAAQA,EACd7lB,EAAQ,EAAG,CACX,IAAIsmB,EAAiB3lB,SAASylB,cAAc,QAC5CE,EAAeljB,UAAY8iB,EAC3BI,EAAeD,MAAMR,MAAQ,MAC7BM,EAAII,YAAYD,GAEhB,IAAIE,EAAc7lB,SAASylB,cAAc,QACzCI,EAAYpjB,UAAY8iB,EACxBM,EAAYH,MAAMI,gBAAkB,QACpCD,EAAYH,MAAMR,MAAlB,UAA6BE,EAA7B,KACAI,EAAII,YAAYC,GAEpB,GAAIxmB,EAAQ,EAAG,CACX,IAAI0mB,EAAsB/lB,SAASylB,cAAc,QACjDM,EAAoBtjB,UAAY8iB,EAChCQ,EAAoBL,MAAMI,gBAAkB,QAC5CC,EAAoBL,MAAMR,MAA1B,UAAqC,GAAKE,EAA1C,KACAI,EAAII,YAAYG,GAEhB,IAAIF,EAAc7lB,SAASylB,cAAc,QACzCI,EAAYpjB,UAAY8iB,EACxBM,EAAYH,MAAMI,gBAAkB,MACpCD,EAAYH,MAAMR,MAAlB,UAA6BpC,KAAKuC,IAAID,GAAtC,KACAI,EAAII,YAAYC,GAEhB,IAAIF,EAAiB3lB,SAASylB,cAAc,QAC5CE,EAAeljB,UAAY8iB,EAC3BI,EAAeD,MAAMR,MAAQ,MAC7BM,EAAII,YAAYD,GAGpBrG,EAAUnZ,KAAKqf,EAAIQ,WAW3B,OAAO1G,EAAU9U,KAAK,OA3H9B,kBA+II,SAAKtI,GAED,IAAInG,EAASmI,KAAK+gB,WAAW/iB,EAAQ,SAAU,CAAC,IAAK,IAAK,MAEtD+jB,EAAgB/hB,KAAK+gB,WAAW/iB,EAAQ,iBAAiB,GAIzD8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,MAEvDgkB,EAAYhiB,KAAK+gB,WAAW/iB,EAAQ,YAAa,KAGjD7C,GADS6C,EAAOhD,OACRgD,EAAO7C,OAEnB,GAAIA,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAGlBiB,IACD5mB,GAAQ,IAAIsiB,IAAQW,mBAAmBjjB,IA4CnC,IAzCR,IAAIigB,EAAY,GACZ6G,EAAU,IAAI/jB,KAAK/C,GACnB+mB,EAAID,EAAQxD,iBACZ0D,EAAIF,EAAQ1D,aACZ6D,EAAIH,EAAQzD,cAAgB,EAC5BV,EAAMmE,EAAQI,YAEdC,EAAIF,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAC5B7X,EAAI4X,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAE5BhE,EAAO,CACP,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,OAGHoE,EAAS,CACT,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,OAQEC,EAAQ,KACHzgB,EAAI,EAAGC,EAASnK,EAAOmK,OAAQD,EAAIC,EAAQD,IAAK,CACrD,OAAQlK,EAAOkK,IACX,IAAK,MACL,IAAK,MACDygB,EAAQrE,EAAKL,GACb,MAEJ,IAAK,IACL,IAAK,IACD0E,EAAQjY,EACR,MAEJ,IAAK,IACDiY,EAAQF,EACR,MAEJ,IAAK,IACDE,EAAQD,EAAOD,GACf,MAEJ,IAAK,IACL,IAAK,IACDE,EAAQN,EAMhB9G,GAAaoH,EACTzgB,EAAIC,EAAS,IACboZ,GAAa4G,GAO7B,OAAO5G,IApPf,kCAwQI,SAAqBpd,GACjB,IAAIykB,EAAUziB,KAAK+gB,WAAW/iB,EAAQ,WAAW,GAI7C8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,CACvDnD,MAAO,KACPG,OAAQ,KAGRA,EAASgD,EAAOhD,OAChBG,EAAQ6C,EAAO7C,MACfunB,EAAc1kB,EAAO0kB,YAEzB,GAAIvnB,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAGvB,IAAI1F,EAAYpb,KAAKihB,OAAO,CACxB7e,QAAS,CACL4F,YAAa,CACTC,IAAK,GACLC,IAAK,GAETya,SAAU,EACVC,cAAc,EACd9B,aAAc,CACVjmB,MAAO,KACPG,OAAQ,KAGhBA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,OAGjB,GACS,SADD1nB,EAE4B,IAAxB0nB,EAAW,OAA8B,IAAZD,IAC7BrH,GACgB,4CAW5B,OAAOA,IA3Tf,2BAgVI,SAAcpd,GACV,IAAI6kB,EAAsB7iB,KAAK+gB,WAC3B/iB,EACA,uBACA,GAKA8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,MAEvDhD,EAASgD,EAAOhD,OAChBG,EAAQ6C,EAAO7C,MAEnB,GAAIA,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAGvB,IAEI9f,EAFAoa,EAAY,GACZ0H,EAAO,KAEP1gB,EAAU,CACV0gB,KAAM,CACFC,KAAM,CACFC,KAAM,qEACNC,IAAK,sEAETC,IAAK,CACDF,KAAM,wDACNC,IAAK,yDAETE,KAAM,CACFH,KAAM,OACNC,IAAK,QAGbjiB,MAAO,CACHoiB,KAAM,CACF,KAAM,MACN,KAAM,MACN,KAAM,MACN,MAAO,QAEXC,SAAU,CACN,KAAM,UACN,KAAM,WACN,KAAM,WACN,MAAO,eAKnBloB,EAAQujB,SAASvjB,GAEjB,IAAImoB,GAAY,EAChB,OAAQtoB,GACJ,IAAK,OACGG,EAAQ,EACR2nB,EAAO1gB,EAAQ0gB,KAAKC,KAAKC,MAEzBF,EAAO1gB,EAAQ0gB,KAAKC,KAAKE,IACzBK,GAAY,GAEhB,MAEJ,IAAK,MACGnoB,EAAQ,EACR2nB,EAAO1gB,EAAQ0gB,KAAKI,IAAIF,MAExBF,EAAO1gB,EAAQ0gB,KAAKI,IAAID,IACxBK,GAAY,GAEhB,MAEJ,IAAK,OACGnoB,EAAQ,EACR2nB,EAAO1gB,EAAQ0gB,KAAKK,KAAKH,MAEzBF,EAAO1gB,EAAQ0gB,KAAKK,KAAKF,IACzBK,GAAY,GAcxB,GAAc,MANdtiB,EAAQhB,KAAKujB,qBACTpoB,GACwB,IAAxB0nB,EACMzgB,EAAQpB,MAAMoiB,KACdhhB,EAAQpB,MAAMqiB,WAEN,CAEd,IAAIG,EAAWxjB,KAAK+gB,WAAW/iB,EAAQ,WAAY,CAC/CylB,UAAU,GAAD,OAAKX,EAAL,YAAa9hB,GACtB0iB,QAAQ,GAAD,OAAKZ,EAAL,YAAa9hB,KAExBoa,EAAYkI,EAAYE,EAAQ,QAAcA,EAAQ,UAG1D,OAAOpI,IAtbf,oBAidI,SAAOpd,GAGH,IAAI2lB,EAAU3jB,KAAK+gB,WAAW/iB,EAAQ,UAAW,MAE7C4lB,EAAa5jB,KAAK+gB,WAAW/iB,EAAQ,cAAe,MAEpD2kB,EAAW3iB,KAAK+gB,WAAW/iB,EAAQ,WAAY,GAI/C8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,MAEvD4kB,EAAe5iB,KAAK+gB,WAAW/iB,EAAQ,gBAAgB,GAEvD6lB,EAAkB7jB,KAAK+gB,WAAW/iB,EAAQ,mBAAmB,GAG7D8lB,EAAO9jB,KAAK+gB,WAAW/iB,EAAQ,QAAQ,GAEvChD,EAASgD,EAAOhD,OAChBG,EAAQ6C,EAAO7C,MAEnB,GAAIA,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAKvB,GAFA3lB,EAAQ4oB,WAAW5oB,GAEf6oB,MAAM7oB,GACN,OAAO2lB,EAAY,OAgBvB,GAbI8B,IACAznB,GAAgB,KAGhByoB,IACIzoB,EAAQyoB,EAAW3b,MACnB9M,EAAQyoB,EAAW3b,KAEnB9M,EAAQyoB,EAAW1b,MACnB/M,EAAQyoB,EAAW1b,MAIvB4b,GAAkB,IAAV3oB,EACR,OAAQ,GAAG8oB,QAAQtB,IAAaC,EAAe,IAAM,IAClD,IAAKkB,GAAkB,IAAV3oB,EAChB,MAAO,GAGX,IAAI+oB,EAAatF,KAAKuC,IAAIhmB,GAAO8oB,QAAQtB,GACrCwB,GAAa,GAAGF,QAAQtB,GAE5B,GAAIuB,IAAeC,EACf,OAAOA,GAAavB,EAAe,IAAM,IAG7C,IAAIxH,GACCyI,GAAmB1oB,EAAQ,EAAI,IAAM,IACtCA,EAAM8oB,QAAQtB,IACbC,EAAe,IAAM,IAEtBtC,EAAQ,GACZ,OAAQtlB,GACJ,IAAK,OACG2oB,IAEiB,aAAZA,GAA0BxoB,EAAQ,GACtB,aAAZwoB,GAA0BxoB,EAAQ,EAEnCmlB,EAAQ,yCAEK,aAAZqD,GAA0BxoB,EAAQ,GACtB,aAAZwoB,GAA0BxoB,EAAQ,KAEnCmlB,EAAQ,0CAGZA,IACAlF,EACI,gBAAkBkF,EAAQ,KAAOlF,EAAY,WAErD,MAEJ,IAAK,MACGuI,IAEiB,aAAZA,GAA0BxoB,EAAQ,GACtB,aAAZwoB,GAA0BxoB,EAAQ,EAEnCmlB,EAAQH,GAAA,GAEK,aAAZwD,GAA0BxoB,EAAQ,GACtB,aAAZwoB,GAA0BxoB,EAAQ,KAEnCmlB,EAAQH,GAAA,IAGZG,IACAlF,EACI,gBAAkBkF,EAAQ,KAAOlF,EAAY,WAU7D,OAAOA,IAjkBf,uBAmlBI,SAAUpd,GAEN,IAAI2kB,EAAW3iB,KAAK+gB,WAAW/iB,EAAQ,WAAY,GAI/C8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,MAEvD7C,EAAQ6C,EAAO7C,MAEnB,GAAIA,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAGvB,IAAIsC,EAAO,GACPgB,EAAU,EAcd,QAZAjpB,EAAQ4oB,WAAW5oB,KAEN,KACTioB,EAAO,IACAjoB,GAAS,IAChBioB,EAAO,IACAjoB,GAAS,IAChBioB,EAAO,IACAjoB,GAAS,MAChBioB,EAAO,KAGHA,GACJ,IAAK,IACDgB,EAAUjpB,EAAQ,KAClB,MAEJ,IAAK,IACDipB,EAAUjpB,EAAQ,IAClB,MAEJ,IAAK,IACDipB,EAAUjpB,EAAQ,IAClB,MAEJ,IAAK,IACDipB,EAAUjpB,EAAQ,IAClB,MAEJ,QACIipB,EAAUjpB,EAUlB,OANgB,IAAIgE,OAAO,WAAawjB,EAAW,GAAK,OAC1C7R,KAAK6L,OAAOyH,MACtBA,EAAUA,EAAQH,QAAQtB,KAE9ByB,EAAUC,OAAOD,GAASH,QAAQtB,IAEjBS,IA5oBzB,mBA+pBI,SAAMplB,GAIF,IAAI8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,MAEvDhD,EAASgD,EAAOhD,OAChBG,EAAQ6C,EAAO7C,MACfunB,EAAc1kB,EAAO0kB,YAEzB,GAAIvnB,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAGvB,IAAIwD,EAAW5B,EAAY4B,SACvBlJ,EAAY,GACZmJ,EAAiB,GAarB,GAXAA,EAAiBvkB,KAAKwkB,UAAU,CAC5BpiB,QAAS,CACL0e,aAAc,CACVjmB,MAAO,KACPG,OAAQ,KAGhBA,OAAQA,EACRG,MAAOA,IAIF,SADDH,EAEIspB,KAAYzE,GAAUC,SACtBwE,EAAWzE,GAAUC,OAAOwE,IAGhClJ,EAAY,CACR,gBACAkJ,EACA,IACAC,EACA,MACAvkB,KAAK6d,KAAK,CACNzb,QAAS,CACL0e,aAAc,CACVjmB,MAAO,KACPG,OAAQ,KAGhBA,OAAQ,OACRG,MAAOunB,EAAY7E,OAEvB,KACAyG,EACA,IACAC,EACA,WACFje,KAAK,SAMP8U,EAAYkJ,EAAW,IAAMC,EAIrC,OAAOnJ,IAjuBf,oBAsvBI,SAAOpd,GACH,IAAIymB,EAAgBzkB,KAAK+gB,WAAW/iB,EAAQ,iBAAiB,GAIzD8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,CACvDnD,MAAO,KACPG,OAAQ,KAGRA,EAASgD,EAAOhD,OAChBG,EAAQ6C,EAAO7C,MACfunB,EAAc1kB,EAAO0kB,YAEzB,GAAIvnB,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAGvB,IAAIviB,EAAY,KACZ6c,EAAY,GACZsJ,EAAQvE,GACRwE,EAAWD,EAAMvpB,GAYrB,OAVgB,MAAZwpB,IACAA,EAAW,CACPtE,MAAO,mCACPC,MAAO,UACPC,WAAY,UACZvf,MAAO,IACP7F,MAAOypB,MAIP5pB,GACJ,IAAK,OACD,GACmB,MAAf0nB,KAEI,eAAgBA,GAChB,aAAcA,GACd,aAAcA,GAGlB,MAAM,IAAInnB,MACN,gGAIR,IAAIspB,EAAanC,EAAW,WACxBoC,EAAWpC,EAAW,SACtBqC,EAAWrC,EAAW,SACtBsC,EAAeN,EAAMK,GAEzB,GAAmB,IAAfF,OACiB7rB,IAAb+rB,IAEiB,IAAbA,GAA4B,IAAV5pB,IAClBigB,EAAY,CACR,kBACAuJ,EAAQ,MACR,4BACAK,EAAY,MACZ,OACAL,EAAQ,MACR,KACAA,EAAQ,MACR,cAGkB,IAAlBF,IACAlmB,EACIpD,EAAQ4pB,EACF,yBACA,2BAEV3J,EAAUnZ,KACN,CACI,gBACA1D,EACA,aACF+H,KAAK,MAIf8U,EAAYA,EAAU9U,KAAK,KAGd,IAAbye,GAA4B,IAAV5pB,IAClBigB,EAAY,CACR,kBACAuJ,EAAQ,MACR,yBACAA,EAAQ,MACR,cAGkB,IAAlBF,IACAlmB,EAAY,uBAEZ6c,EAAUnZ,KACN,CACI,kBACA1D,EACA,gBACF+H,KAAK,MAIf8U,EAAYA,EAAU9U,KAAK,UAGhC,CACH,IAAI2e,EAAgB,KAGJ,MAAZH,IACAG,EACI,YACAjlB,KAAK6d,KAAK,CACNzb,QAAS,CACL0e,aAAc,CACVjmB,MAAO,KACPG,OAAQ,KAGhBA,OAAQ,OACRG,MAAO2pB,KAInB1J,EAAY,CACR,kBACAuJ,EAAQ,MACS,MAAjBM,EACM,YAAcA,EACd,GACN,KACAN,EAAQ,MACR,aACFre,KAAK,IAGX,MAEJ,IAAK,MACD8U,EAAY,CACR,wBACAuJ,EAAQ,MACR,KACAA,EAAQ,MACR,oBACFre,KAAK,IAEP,MAGJ,QACI8U,EAAYuJ,EAAS3jB,MAM7B,OAAOoa,IAz5Bf,oBA46BI,SAAOpd,GACH,IAAIknB,EAAyBllB,KAAK+gB,WAC9B/iB,EACA,0BACA,GAKA8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,MAEvDhD,EAASgD,EAAOhD,OAChBG,EAAQ6C,EAAO7C,MAEnB,GAAIA,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAOvB,SAASqE,EAAkBC,GACvB,OAAOA,EAAOzR,QAAQ,MAAO,SAHjCxY,EAAQwhB,OAAOxhB,GAMf,IAAIigB,EAAY,GAChB,GACS,SADDpgB,EAEAogB,EAAY,CACR,iBAC2B,IAA3B8J,EACMC,EAAkBhqB,GAClBA,EACN,KACAA,EACA,WACFmL,KAAK,SAOP8U,GAC+B,IAA3B8J,EACMC,EAAkBhqB,GAClBA,EAMlB,OAAOigB,IAj+Bf,mBAq/BI,SAAMpd,GAGF,IAAIqnB,EAAkBrlB,KAAK+gB,WAAW/iB,EAAQ,kBAAmB,MAI7D8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,MAEvDqc,EAAWra,KAAK+gB,WAAW/iB,EAAQ,WAAY,MAE/ChD,EAASgD,EAAOhD,OAChBG,EAAQ6C,EAAO7C,MAEnB,GAAIA,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAGvB,IAAI1F,EAAY,GAEhB,GAAgB,MAAZf,KAAsBlf,KAASkf,GAC/B,OAAOyG,EAAY,OAGvB,IAAMwE,EAAgB,IAAIrG,GAE1B,GACS,SADDjkB,EACJ,CACI,IAAIsgB,EAAa,KAObA,EANmB,MAAnB+J,EAMahL,EALGiL,EAAc9F,mBAC1BnF,EACAlf,EACAkqB,IAE2BzqB,KAElByf,EAASlf,GAAOP,KAGjCwgB,EAAS,uBAAmBE,EAAnB,aAAkCA,EAAlC,eAMb,CAOQF,EANmB,MAAnBiK,EAMYhL,EALIiL,EAAc9F,mBAC1BnF,EACAlf,EACAkqB,IAE0BzqB,KAElByf,EAASlf,GAAOP,KAOxC,OAAOwgB,IAnjCf,iBAokCI,SAAIpd,GAIA,IAAI8iB,EAAe9gB,KAAK+gB,WAAW/iB,EAAQ,eAAgB,CACvDnD,MAAO,KACPG,OAAQ,KAGRA,EAASgD,EAAOhD,OAChBG,EAAQ6C,EAAO7C,MAEnB,GAAIA,IAAU2lB,EAAY,MACtB,OAAOA,EAAY,OAGvB,IAAI1F,EAAY,GAEZuJ,EADQxE,GACShlB,GAErB,OAAQH,GACJ,IAAK,OACDogB,EAAY,CACR,kBACAuJ,EAAQ,MACR,KACAA,EAAQ,MACR,aACFre,KAAK,IAEP,MAEJ,IAAK,MACD8U,EAAY,CACR,wBACAuJ,EAAQ,MACR,KACAA,EAAQ,MACR,oBACFre,KAAK,IAEP,MAGJ,QACI8U,EAAYuJ,EAAS3jB,MAM7B,OAAOoa,IAvnCf,wBAwoCI,SAAWpd,EAAQoG,EAAQmhB,GACvBA,OAAgCvsB,IAAjBusB,EAA6BA,EAAe,KAE3D,IAAI5gB,EACA,YAAa3G,QACShF,IAAtBgF,EAAM,SACe,MAArBA,EAAM,SACNoG,KAAUpG,EAAM,cACchF,IAA9BgF,EAAM,QAAYoG,IACW,MAA7BpG,EAAM,QAAYoG,GACZpG,EAAM,QAAYoG,GAClB,KAMV,OAJe,MAAXO,IACAA,EAAU4gB,GAGP5gB,IAzpCf,kCAqqCI,SAAqBxJ,EAAOqqB,GACxB,IAAIxkB,EAAQ,GAoBZ,OAlBI7F,GAAS,IACT6F,EAAQwkB,EAAO,OACRrqB,GAAS,IAChB6F,EAAQwkB,EAAO,MACRrqB,GAAS,GAChB6F,EAAQwkB,EAAO,MACRrqB,GAAS,GAChB6F,EAAQwkB,EAAO,MACRrqB,IAAU,IACjB6F,EAAQwkB,EAAO,OACRrqB,IAAU,IACjB6F,EAAQwkB,EAAO,MACRrqB,IAAU,GACjB6F,EAAQwkB,EAAO,MACRrqB,IAAU,KACjB6F,EAAQwkB,EAAO,OAGZxkB,MA1rCf,KCDa0f,GAAb,WA4BI,WAAYjS,GAAc,yBA3B1B5W,OAAS,KA2BgB,KA1BzBkI,WAAa,KA0BY,KAzBzBsa,SAAW,KAyBc,KAxBzBpM,WAAa,KAwBY,KArBzBwX,iBAAmB,CACf,+BAAgC,+BAChC,mCAAoC,2BACpC,2CACI,6BAEJ,0BAA2B,0BAC3B,8BAA+B,8BAC/B,kDACI,uCAEJ,4BAA6B,4BAC7B,8BAA+B,8BAC/B,0BAA2B,0BAC3B,kCAAmC,4BACnC,iCAAkC,kCAMb,KAHzBC,oBAAsB,aAGG,KAFzBC,aAAe,CAAC,YAAa,WAAY,MAAO,QAAS,SAAU,SAG/D3lB,KAAKnI,OAAS,IAAI+tB,GAClB5lB,KAAKqa,SAAW,IAAI4E,GACpBjf,KAAK4gB,kBAAoB,IAAIiF,GAAkBpX,GAE/CzO,KAAK8lB,cAAcrX,EAAW,YAC9BzO,KAAK+lB,cAActX,EAAW,YAlCtC,0CA2CI,SAAOuX,EAA0BhoB,GAC7B,OAAOgC,KAAKnI,OAAOmuB,GAA0BhoB,KA5CrD,kBA0DI,SAAKsC,EAAU2lB,EAAe9qB,EAAOunB,EAAahrB,GAC9C,OAAOsI,KAAKkmB,mBACR5lB,EACA2lB,EACA9qB,EACAunB,EACAhrB,EACA,UAjEZ,iBA+EI,SAAI4I,EAAU2lB,EAAe9qB,EAAOunB,EAAahrB,GAC7C,OAAOsI,KAAKkmB,mBACR5lB,EACA2lB,EACA9qB,EACAunB,EACAhrB,EACA,SAtFZ,wBA6GI,SAAWsG,GACP,IAAImoB,EACqB,MAArBnoB,EAAM,WAAuB,gBAAiBA,EAAM,UAC9CA,EAAM,QAAN,YAENooB,EACqB,MAArBpoB,EAAM,SAAuB,mBAAoBA,EAAM,SACjDA,EAAM,QAAN,eAEN2D,EAAO3D,EAAM,KACbiQ,EAAajQ,EAAM,WAEnBpD,EAAO,GAEP4I,EAAQ,KACZ,GACS,eADD7B,EAAI,OAAJ,KAEA/G,EAAKqH,KAAKN,EAAI,KAAJ,QAGG,OADb6B,EAAQ7B,EAAI,KAAJ,UAC2C,MAA9BsM,EAAU,MAAUzK,IACrC5I,EAAKqH,KAAKgM,EAAU,MAAUzK,GAApB,MAGV4iB,GAA0C,MAAxBzkB,EAAI,KAAJ,MAClB/G,EAAKqH,KAAKN,EAAI,KAAJ,UAMlB,CACI,IAAI4B,EAAO5B,EAAI,OAAJ,KACX6B,EAAQ7B,EAAI,OAAJ,MACR,IAAI0kB,EAAQrmB,KAAKqa,SAASiM,qBAAqB,CAC3C/iB,KAAe,QAATA,EAAiB,KAAOA,EAC9BgjB,aAActY,EAAU,KACxBzK,MAAiB,QAAVA,EAAkB,KAAOA,EAChCgjB,cAAevY,EAAU,QAGzBxK,EAAY,GA6BhB,GA5BqB,MAAjB4iB,EAAK,MAAsC,MAAlBA,EAAK,MAC9BzrB,EAAKqH,KAAK,UAGVuB,EACsB,MAAlB6iB,EAAK,MACC,KACAA,EAAK,MAAU1S,QAAQ,IAAK,QAElB,IAAhBwS,GACS,MAAT3iB,GACAA,KAASxD,KAAKylB,mBAEdjiB,EAAQxD,KAAKylB,iBAAiBjiB,IAGrB,MAATA,GACAC,EAAUxB,KAAKuB,GAIE,MAAjB6iB,EAAK,MACL5iB,EAAUxB,KAAKokB,EAAK,MAGxBzrB,EAAKqH,KAAKwB,EAAU6C,KAAK,SAGC,MAA1B3E,EAAI,OAAJ,KAAgC,CAChC,IAAI8kB,EAAOxY,EAAU,KAASzV,IAAImJ,EAAI,OAAJ,MAClC/G,EAAKqH,KAAKwkB,EAAI,OAK1B,OAAO7rB,EAAK0L,KAAK,SA1LzB,yBA6LI,SAAYogB,EAAuBC,EAAaC,EAAY5rB,GACxD,IAAIG,EAAQyrB,EAAWF,GACnBtL,EAAY,GAOR,OAAQsL,GACJ,IAAK,OACL,IAAK,eACDtL,EAAYuB,OAAOxhB,EAAQ,GAE3B,MAEJ,IAAK,YACDigB,EAAYpb,KAAK6mB,OAAO,SAAU,CAC9BzkB,QAAS,CACLuhB,QAAS,WACThB,SAAU,EACVkB,iBAAiB,EACjB/C,aAAc,CACVjmB,MAAO,KACPG,OAAQ,KAGhBA,OAAQA,EACRG,MAAOA,EACPunB,YAAa,OAGjB,MAEJ,IAAK,WACDtH,EAAqB,MAATjgB,EAAgBwhB,OAAOxhB,EAAQ,GAAK,GAEhD,MAEJ,QACI,OAAQwrB,EAAW,UAEf,IAAK,UAEGvL,EADU,IAAVjgB,EACY,GAEA,UAGhB,MAEJ,IAAK,WACDigB,EACa,MAATjgB,EAEMwhB,OAAOxhB,GACP,GAEV,MAEJ,IAAK,YAEGigB,EADU,IAAVjgB,EACY,OAEA,QAGhB,MAEJ,IAAK,QACDigB,EAAYpb,KAAKkmB,mBACbS,EAAW,SACX,QACAC,EAAWF,GACXE,EACAA,EAAU,KACV5rB,GAGJ,MAEJ,QACIogB,EAAYjgB,GAUpC,OAAOigB,IAzRf,uBA4RI,SAAU9a,EAAUwmB,EAAeC,GAC/B,IAAIrvB,EAAOqvB,EAAe,KAASvmB,cAC/BiH,EAAYzH,KAAKgnB,cAAc1mB,EAAU,QAAS5I,GAElDgrB,EAAc,KAWlB,OAVwC,MAApCjb,EAAS,sBACTib,EAAc,GAEd1iB,KAAKinB,4BACDxf,EACAsf,EACArE,IAIS,gBAAbpiB,EACO,CACH,MACAN,KAAKnI,OAAO4P,EAAS,MAAU,CAC3BrF,QAASqF,EAAS,QAClBzM,OAAQ,OACRG,MAAO4rB,EAAgBD,GACvBpE,YAAaA,KAEnBpc,KAAK,KAGJtG,KAAKnI,OAAO4P,EAAS,MAAU,CAClCrF,QAASqF,EAAS,QAClBzM,OAAQ,OACRG,MAAO4rB,EAAgBD,GACvBpE,YAAaA,MA3TzB,oBA+TI,WACI,OAAO1iB,KAAK4gB,oBAhUpB,mBA4UI,SAAMtgB,EAAU2lB,EAAeW,GAC3B,IAAIlvB,EAAOkvB,EAAU,KAASpmB,cAC1BiH,EAAYzH,KAAKgnB,cAAc1mB,EAAU2lB,EAAevuB,GAExDwvB,EAAiBzf,EAAS,gBAE1Bib,EAAc,KAWlB,OAVwC,MAApCjb,EAAS,sBACTib,EAAc,GAEd1iB,KAAKinB,4BACDxf,EACAmf,EACAlE,IAID1iB,KAAKnI,OAAO4P,EAAS,MAAU,CAClCrF,QAASqF,EAAS,QAClBzM,OAAQ,OACRG,MAAOyrB,EAAWM,GAClBxE,YAAaA,MAjWzB,iBA2WI,SAAIvnB,EAAOH,GAMP,OAJe,OAAXG,GAA6B,UAAVA,GAA8B,MAATA,IACxCA,EAAQ,MAGL6E,KAAKnI,OAAL,IAAmB,CACtBuK,QAAS,CACL0e,aAAc,CACVjmB,MAAO,KACPG,OAAQ,MAGhBA,OAAQA,EACRG,MAAOA,EACPunB,YAAa,SA1XzB,kBAyYI,SAAKpiB,EAAU2lB,EAAe9qB,EAAOunB,EAAahrB,GAC9C,OAAOsI,KAAKkmB,mBACR5lB,EACA2lB,EACA9qB,EACAunB,EACAhrB,EACA,UAhZZ,gCAqZI,SACI4I,EACA2lB,EACA9qB,EACAunB,EACAhrB,EACAsD,GAEA,IAAIyM,EAAYzH,KAAKgnB,cACjB1mB,EACA2lB,EACAvuB,EAAK8I,eAGT,GAAmB,MAAfkiB,EAAqB,CACrB,IAAIwE,EAAiBzf,EAAS,gBAE1Byf,KAAkBxE,IAClBvnB,EAAQunB,EAAYwE,IAGxBlnB,KAAKinB,4BACDxf,EACAib,EACAA,GAIR,OAAO1iB,KAAKnI,OAAO4P,EAAS,MAAU,CAClCrF,QAASqF,EAAS,QAClBzM,OAAQA,EACRG,MAAOA,EACPunB,YAAaA,MArbzB,2BAybI,SAAcpiB,EAAU2lB,EAAevuB,GACnC,IAAIyvB,EAAazvB,EACjB,GAAuB,MAAnBsI,KAAKD,YAAyC,MAAnBC,KAAKiO,WAOhC,OANA/R,QAAQkrB,KAAK,+CAAgD,CACzDnB,cAAeA,EACf3lB,SAAUA,EACV5I,KAAMyvB,IAGHnnB,KAAKqnB,sBAAsB/mB,GAYtC,GATA5I,EACY,MAARA,GAAkBA,KAAQsI,KAAKD,WAEzBrI,EADAsI,KAAK0lB,oBAGTplB,KAAYN,KAAKD,WAAWrI,KAC9BA,EAAOsI,KAAK0lB,uBAGVplB,KAAYN,KAAKD,WAAWrI,IAgB9B,OAfAwE,QAAQkrB,KACJ,CACI,cACA9mB,EACA,WACA6mB,EACA,aACF7gB,KAAK,KACP,CACI2f,cAAeA,EACf3lB,SAAUA,EACV5I,KAAMyvB,IAIPnnB,KAAKqnB,sBAAsB/mB,GAGtC,IAAImH,EAAYzH,KAAKD,WAAWrI,GAAM4I,GAAtB,UAEhB,GAAgC,MAA5BmH,EAAUwe,GACV,MAAM,IAAI1qB,MAAJ,oBACW0qB,EADX,gBACgC3lB,EADhC,gBAWV,MALyC,UAArCmH,EAAUwe,GAAV,OACAxe,EAAUwe,GAAV,iBACIjmB,KAAKiO,WAAWxG,EAAUwe,GAAV,eAGjBxe,EAAUwe,KA/ezB,mCAkfI,SAAsB3lB,GAClB,MAAO,CACHgnB,gBAAiBhnB,EACjB8B,QAAS,CACL0e,aAAc,CACVjmB,MAAO,KACPG,OAAQ,KAGhBtD,KAAM,YA3flB,2CAsgBI,SAA8B4I,EAAUinB,GACpC,IAAIC,EAAqB,eAAQD,GAEjC,IAAKC,EAAsBC,eAAe,gBAOtC,OANAvrB,QAAQkrB,KACJ,mDACA9mB,EACAknB,GAGGA,EAGX,IAAI/f,EAAY,KACZigB,EAAaF,EAAqB,UACtC,GAAkB,MAAdE,EACA,OAAOF,EAGX,IAAI1G,EAAe0G,EAAqB,aACpCplB,EAAU,KACVulB,EAAqB,KAEzB,IAAK,IAAI1B,KAAiByB,EAEtBtlB,GADAqF,EAAYigB,EAAWzB,IACJ,QAEnBxe,EAAS,gBACL+f,EAAqB,gBAEzBG,EAAqBvlB,EAAO,aAAP,OACrBqF,EAAS,QAAT,aAAuC,CACnC5M,MAAOimB,EACP9lB,OAAQ2sB,GAGZlgB,EAAS,oBAC+B,MAApCA,EAAS,oBACH,KACAA,EAAS,oBAGvB,OAAO+f,IAhjBf,yCAmjBI,SAA4B/f,EAAWrI,EAAQ6Q,GAC3C,GAAc,MAAVA,GACwC,MAApCxI,EAAS,oBACT,IAAK,IAAI9H,KAAO8H,EAAS,oBACrBwI,EAAOtQ,GAAOP,EAAOqI,EAAS,oBAAwB9H,MAvjB1E,2BA8jBI,SAAcI,GAOV,IANA,IAAI6nB,EAAoB5nB,KAAK0lB,oBACzBmC,EAAc7nB,KAAK2lB,aAEnBmC,EAAc,GAEdC,EAAa,KACRhmB,EAAI,EAAGC,EAAS6lB,EAAY7lB,OAAQD,EAAIC,EAAQD,KACrDgmB,EAAaF,EAAY9lB,MACPhC,IACd+nB,EAAYC,EAAWvnB,eAAiBT,EAAWgoB,IAK3D,IAAK,IAAMznB,KADXwnB,EAAYF,GAAqB,GACV7nB,EACd8nB,EAAYtnB,SAASD,KACtBwnB,EAAYF,GAAmBtnB,GAAYP,EAAWO,IAO9D,IAAK,IAAM0nB,KAHXhoB,KAAKD,WAAL,eAAuB+nB,GAGE9nB,KAAKD,WAC1B,IAAK,IAAMO,KAAYN,KAAKD,WAAWioB,GACnChoB,KAAKD,WAAWioB,GAAY1nB,GACxBN,KAAKioB,8BACD3nB,EACAN,KAAKD,WAAWioB,GAAY1nB,MA3lBpD,2BAimBI,SAAc2N,GACVjO,KAAKiO,WAAaA,MAlmB1B,KCTaia,GAAe,WACxB,IAAQzZ,EAAgBc,IAAhBd,YAER,EAAoBtV,oBAAc,WAC9B,OAAO,IAAIunB,GAAUjS,MAGzB,OAJA,qBCIS0Z,IALUthB,EAAoB+F,IAAIQ,IAKpB,SAACgb,GAC1B,IAAM5a,EAA2B1W,OAAOiF,SAASyR,SAC3CoB,EAAY1Q,KAAK2Q,MAEjBtI,EAAQ,CACZ8hB,QAAQ,gDAAD,OAAkDzZ,GACzD0Z,IAAI,gCAAD,OAAkC1Z,GACrC2Z,UAAU,oDAAD,OAAsD3Z,IAEjE,OAAQpB,GAGN,IAAK,YACL,IAAK,2BACL,IAAK,qCACL,IAAK,6BACH,OAAOjH,EAAK,QAGd,IAAK,6BACL,IAAK,4BACH,OAAOA,EAAK,UAEd,QACE,OAAOA,EAAK,OCWZiiB,GAAgC,CACpCC,uBAAwB,CACtBrjB,IAAK,qCACL9E,SAAU,iBACVooB,QAAQ,GAEVC,uBAAwB,CACtBvjB,IAAK,qCACL9E,SAAU,iBACVooB,QAAQ,GAEVE,uBAAwB,CACtBxjB,IAAK,qCACL9E,SAAU,iBACVooB,QAAQ,GAEVG,iCAAkC,CAChCzjB,IAAK,sCACL9E,SAAU,iBACVooB,QAAQ,GAEVI,aAAc,CACZ1jB,IAAK,SACL9E,SAAU,iBACVooB,QAAQ,GAEVK,wBAAyB,CACvB3jB,IAAK,gBACL9E,SAAU,iBACVooB,QAAQ,GAEVM,eAAgB,CACd5jB,IAAK,qCACL9E,SAAU,iBACVooB,QAAQ,GAEVO,aAAc,CACZ7jB,IAAK,OACL9E,SAAU,iBACVooB,QAAQ,GAEVQ,oBAAqB,CACnB9jB,IAAK,gFACL9E,SAAU,iBACVooB,QAAQ,GAEVS,YAAa,CACX/jB,IAAK,4CACL9E,SAAU,iBACVooB,QAAQ,GAEVU,OAAQ,CACNhkB,IAAK,WACL9E,SAAU,iBACVooB,QAAQ,GAEVW,SAAU,CACRjkB,IAAK,aACL9E,SAAU,iBACVooB,QAAQ,GAEVY,KAAM,CACJlkB,IAAK,WACL9E,SAAU,iBACVooB,QAAQ,GAEVa,kBAAmB,CACjBnkB,IAAK,+BACL9E,SAAU,iBACVooB,QAAQ,GAEVc,oBAAqB,CACnBpkB,IAAK,iCACL9E,SAAU,iBACVooB,QAAQ,GAEVe,kBAAmB,CACjBrkB,IAAK,iCACL9E,SAAU,iBACVooB,QAAQ,GAEVgB,gBAAiB,CACftkB,IAAK,qCACL9E,SAAU,iBACVooB,QAAQ,GAEViB,4BAA6B,CAC3BvkB,IAAK,qCACL9E,SAAU,iBACVooB,QAAQ,GAEVkB,8BAA+B,CAC7BxkB,IAAK,qCACL9E,SAAU,iBACVooB,QAAQ,GAEVmB,6BAA8B,CAC5BzkB,IAAK,qCACL9E,SAAU,iBACVooB,QAAQ,GAGVoB,4BAA6B,CAC3B1kB,IAAK,sCACL9E,SAAU,iBACVooB,QAAQ,GAEVqB,uBAAwB,CACtB3kB,IAAK,mCACL9E,SAAU,iBACVooB,QAAQ,GAEVsB,uBAAwB,CACtB5kB,IAAK,oCACL9E,SAAU,iBACVooB,QAAQ,GAEVuB,4BAA6B,CAC3B7kB,IAAK,oCACL9E,SAAU,iBACVooB,QAAQ,GAEVwB,IAAK,CACH9kB,IAAK,qBACL9E,SAAU,iBACVooB,QAAQ,GAGVyB,oBAAqB,CACnB/kB,IAAK,uCACL9E,SAAU,iBACVooB,QAAQ,GAEV0B,uBAAwB,CACtBhlB,IAAK,6CACL9E,SAAU,iBACVooB,QAAQ,GAEV2B,qBAAsB,CACpBjlB,IAAK,yCACL9E,SAAU,iBACVooB,QAAQ,GAEV4B,gBAAiB,CACfllB,IAAK,qCACL9E,SAAU,iBACVooB,QAAQ,GAEV6B,mBAAoB,CAClBnlB,IAAK,2CACL9E,SAAU,iBACVooB,QAAQ,GAEV8B,iBAAkB,CAChBplB,IAAK,uCACL9E,SAAU,iBACVooB,QAAQ,GAEV+B,oBAAqB,CACnBrlB,IAAK,6CACL9E,SAAU,iBACVooB,QAAQ,GAEVgC,uBAAwB,CACtBtlB,IAAK,mDACL9E,SAAU,iBACVooB,QAAQ,GAEViC,qBAAsB,CACpBvlB,IAAK,+CACL9E,SAAU,iBACVooB,QAAQ,GAEVkC,mBAAoB,CAClBxlB,IAAK,wDACL9E,SAAU,gBACVooB,QAAQ,GAEVmC,oBAAqB,CACnBzlB,IAAK,gDACL9E,SAAU,gBACVooB,QAAQ,IAICoC,GAAb,WAGE,WACmB1tB,GAChB,yBADgBA,OACjB,KAJF2tB,kBAIE,EACA/qB,KAAK+qB,aAAevC,GANxB,uCASE,SAAIwC,EAAmBC,GAAyB,IAAD,kBAkBpC,EAaa,UAIb,MAlCHhnB,EAAK,oBAAGjE,KAAK+qB,oBAAR,iBAAG,EAAoBC,UAAvB,aAAG,EAAgC1qB,gBAAnC,QAA+C,KACpD8E,EAAG,oBAAGpF,KAAK+qB,oBAAR,iBAAG,EAAoBC,UAAvB,aAAG,EAAgC5lB,WAAnC,QAA0C,KAC7C8lB,EAAc,oBAAGlrB,KAAK+qB,oBAAR,iBAAG,EAAoBC,UAAvB,aAAG,EAAgCtC,cAAnC,QAA6C,KAE3DyC,EAAiB,CACrBC,EAAG,IACH/gB,EAAG,IACHE,EAAG,QAGD8gB,EAAiB,GAEjBjmB,EAAI7E,SAAS,OACf8qB,EAAc,OAAGjmB,QAAH,IAAGA,OAAH,EAAGA,EAAKuO,QAAQ,IAAb,UAAqBwX,EAAeF,KAGnDI,EADgB,sBAAdL,EACY,OAAG5lB,QAAH,IAAGA,OAAH,EAAGA,EAAKuO,QAAQ,KAAb,WAAuBwX,EAAeF,KAEzC,UAAGI,SAAH,aAAG,EAAgB1X,QAC/B,KADe,WAEXwX,EAAeF,MAIvBI,EADSjmB,EAAI7E,SAAS,MACR,OAAG6E,QAAH,IAAGA,OAAH,EAAGA,EAAKuO,QAAQ,KAAb,WAAuBwX,EAAeF,KAEtC7lB,EAGnB,GAAInB,GAASonB,GAAoC,MAAlBH,EAC7B,OAAIA,EACK,oBACL3rB,OAAO6R,OAAP,oBAAcpR,KAAK5C,YAAnB,iBAAc,EAAY6G,UAA1B,aAAc,EAAqBonB,UAAnC,QAAsD,WADjD,aACL,EAA4D,UADvD,QAC6D,GAGpE,oBAAOrrB,KAAK5C,YAAZ,iBAAO,EAAY6G,UAAnB,aAAO,EAAqBonB,UAA5B,QAA+C,OA7CvD,KC9NO,SAASC,KACd,IAAQ7c,EAAgBc,IAAhBd,YACFhH,EAAYygB,KAClB,EAAoC/uB,qBAApC,mBAAOoyB,EAAP,KAAmBC,EAAnB,KAGMC,GADgBhd,EAAY7B,IAAIc,gBACrBya,MAEjB,EAIIrZ,mBAAqB,YAAY,WACnC,OAAO7R,IAAM,GAAD,OAAIwR,EAAY7B,IAAIQ,IAAMqe,OAJ3BC,EADb,EACE1c,UACO2c,EAFT,EAEEruB,MACMsuB,EAHR,EAGExuB,KAuDF,GAlDAvG,qBAAU,WACR,GAAoB,MAAhB+0B,EAAJ,CAIA,IAAIZ,EAAY,KACZa,EAAoB,KACpBC,EAAa,KAEjBN,EACEI,EAAaxuB,KACViU,QACC,SAAChQ,GAAD,MACmB,YAAjBA,EAAQ3J,MAAuC,qBAAjB2J,EAAQ3J,QAEzCgc,KAAI,SAACrS,GAAkB,IAAD,UASrB,OARA2pB,EAAY,IAAIF,GAAK,CACnBiB,eAAc,gCAAO1qB,QAAP,IAAOA,GAAP,UAAOA,EAAS0qB,sBAAhB,aAAO,EAAyBC,cAAhC,QAA2C,KACzDC,cAAa,gCAAO5qB,QAAP,IAAOA,GAAP,UAAOA,EAAS4qB,qBAAhB,aAAO,EAAwBD,cAA/B,QAA0C,OAGzDH,EAAoBb,EAAUxyB,IAAI,0BAA2B,KAC7DszB,GAAa,UAACD,SAAD,QAAsB,IAAM,EAElC,CACLK,UAAW7qB,EAAQlH,KAAKS,KACxBA,KAAK,GAAD,OAAKyG,EAAQlH,KAAKS,MAAlB,OACFyG,EAAQlH,KAAKgyB,UAAb,YACS9qB,EAAQlH,KAAKgyB,UADtB,YAEI,IAENL,aACAM,uBAAwB3kB,EAAUof,OAAO,SAAU,CACjDzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0wB,EACPnJ,YAAa,eAKtB,CAACkJ,EAAcnkB,IAEdikB,GAAmC,MAAdH,EACvB,OAAO,kDAGT,GAAII,EACF,OAAO,wDAGT,IAAMvuB,EACJ,mCACGmuB,EAAW7X,KAAI,SAAC2Y,GAAD,OACd,iCACGA,EAAUzxB,KADb,IAEGyxB,EAAUP,WACT,sBAAMvtB,UAAU,OAAhB,SAAwB8tB,EAAUD,yBAElC,sBAAM7tB,UAAU,MAAhB,SAAuB8tB,EAAUD,2BAL1BC,EAAUzxB,WAY3B,OACE,cAAC,KAAD,CACE2D,UAAU,cACVijB,MAAO,CAAEI,gBAAiB,UAAWtB,MAAO,WAC5CgM,MAAO,GACPC,cAAe,CAAC,EAAG,EAAG,GACtBC,cAAc,EALhB,SAOGpvB,ICtGA,SAASqvB,KACd,OACE,qCACE,qBAAKluB,UAAU,8BAAf,SACE,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,eAACE,EAAA,EAAD,CAAKF,UAAU,yBAAf,UACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,EAAGiF,UAAU,qCAAtB,SACE,sBAAMA,UAAU,yBAAhB,SACE,qBACEA,UAAU,YACV4a,IAAI,mBACJC,IAAI,oBAKV,eAAC1a,EAAA,EAAD,CAAKpF,GAAI,EAAGiF,UAAU,qCAAtB,UACE,sBAAKA,UAAU,GAAf,UACE,mBAAGA,UAAU,YAAb,sDAGA,mBAAGA,UAAU,GAAb,SACE,iCACE,cAAC,IAAD,CACEkR,GAAIlJ,EAAMlF,QACV9C,UAAU,sDAFZ,6DASN,qBAAKA,UAAU,OAAf,SACE,mBAAGA,UAAU,YAAb,+LAUV,qBAAKA,UAAU,8BAAf,SACE,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,qCACE,eAACE,EAAA,EAAD,CAAKF,UAAU,sDAAf,UACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,sCAAvB,SACE,gDAEF,eAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,OAAvB,kFAGE,uBAHF,0EAKE,uBALF,4FAOE,uBAPF,kFASE,uBATF,oFAWE,uBACA,kQASJ,eAACE,EAAA,EAAD,CAAKF,UAAU,0DAAf,UACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,sCAAvB,SACE,kDAEF,eAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,OAAvB,0LAIE,uBAJF,oKAOE,uBACA,0BAEF,eAACG,EAAA,EAAD,CAAKpF,GAAI,GAAT,UACE,wBAAOiF,UAAU,aAAjB,UACE,qBAAIA,UAAU,sBAAd,UACE,sCACA,oCACA,qDAGF,+BACE,2CACA,sCACM,sBAAMA,UAAU,gBAAhB,qBAEN,uCACO,sBAAMA,UAAU,gBAAhB,wBAMT,+BACE,oDACA,6BACE,sBAAMA,UAAU,gBAAhB,oBAEF,6BACE,sBAAMA,UAAU,gBAAhB,uBAMJ,+BACE,uDACA,6BACE,sBAAMA,UAAU,gBAAhB,oBAEF,6BACE,sBAAMA,UAAU,gBAAhB,yBAON,mBAAGA,UAAU,OAAb,mDAEF,cAACG,EAAA,EAAD,CAAKH,UAAU,OAAOjF,GAAI,GAA1B,wMAOF,eAACmF,EAAA,EAAD,CAAKF,UAAU,0DAAf,UACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,sCAAvB,SACE,+CAEF,eAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,OAAvB,kGAGE,uBACA,iGAGA,uBAPF,qDASE,uBATF,gFAYE,uBAZF,qHAeE,uBAfF,wKAsBF,eAACE,EAAA,EAAD,CAAKF,UAAU,0DAAf,UACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,sCAAvB,SACE,gDAEF,eAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,OAAvB,2IAGE,uBACA,uBAJF,2CAQF,eAACE,EAAA,EAAD,CAAKF,UAAU,qDAAf,UACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,EAAGiF,UAAW,OAAvB,SACE,qBACEA,UAAU,gBACVijB,MAAO,CACLkL,UAAW,OACXC,QAAS,KAJb,UAOE,qBAAIpuB,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,sCASA,qBAAIA,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,sCASA,qBAAIA,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,+BASA,qBAAIA,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,gCASA,qBAAIA,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,2BASA,qBAAIA,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,sBASA,qBAAIA,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,4BAWJ,cAACG,EAAA,EAAD,CAAKpF,GAAI,EAAT,SACE,qBACE6f,IAAI,yBACJC,IAAI,SACJ7a,UAAU,0BAQtB,sBAAKA,UAAU,iDAAf,UACE,qBAAKA,UAAU,6BACf,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,cAACE,EAAA,EAAD,CAAKF,UAAU,0DAAf,SACE,eAACG,EAAA,EAAD,CACEpF,GAAI,GACJiF,UAAU,iDAFZ,UAIE,sBAAKA,UAAU,YAAf,UACE,oBAAIA,UAAU,OAAd,sGAIA,oBAAIA,UAAU,OAAd,SACE,qGAKF,oBAAIA,UAAU,OAAd,SACE,mFAGJ,cAAC,IAAD,CACEkR,GAAIlJ,EAAMlF,QACV9C,UAAU,wFAFZ,sDAOA,mBACEquB,KAAK,0CACL3c,OAAO,SACP4c,IAAI,aAHN,SAKE,qBAAKtuB,UAAU,wFAAf,qG,cCzSVuuB,GAAW,CACf,CACE3Z,MACE,0EACF4P,KACE,mBAAGxkB,UAAU,gBAAb,8RAQJ,CACE4U,MACE,2EACF4P,KACE,mBAAGxkB,UAAU,gBAAb,8fAYJ,CACE4U,MAAO,2DACP4P,KACE,mBAAGxkB,UAAU,gBAAb,6dAWJ,CACE4U,MAAO,kDACP4P,KACE,mBAAGxkB,UAAU,gBAAb,0VASJ,CACE4U,MAAO,+CACP4P,KACE,mBAAGxkB,UAAU,gBAAb,0MAOJ,CACE4U,MAAO,sCACP4P,KACE,mBAAGxkB,UAAU,gBAAb,qOAQJ,CACE4U,MAAO,gEACP4P,KACE,mBAAGxkB,UAAU,gBAAb,+KAOJ,CACE4U,MAAO,sDACP4P,KACE,+BACE,6BACE,mBAAGxkB,UAAU,gBAAb,mQAOF,6BACE,mBAAGA,UAAU,gBAAb,+XASF,6BACE,mBAAGA,UAAU,gBAAb,yMAWH,SAASwuB,KACd,OACE,qCACE,sBAAKxuB,UAAU,8BAAf,UACE,eAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,UACE,qBAAKA,UAAU,WAAf,SACE,qBAAKA,UAAU,MAAf,SACE,oBAAGijB,MAAO,CAAEwL,SAAU,SAAtB,UACE,qGAGU,IAJZ,gMASE,uBACA,wBACExL,MAAO,CACLwL,SAAU,SAFd,6IAWN,cAACvuB,EAAA,EAAD,CAAKF,UAAU,gCAAf,SACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIkoB,MAAO,CAAEyL,UAAW,OAAjC,SACE,sBAAK1uB,UAAU,2CAAf,UACE,mBACEijB,MAAO,CACLwL,SAAU,QACVE,WAAY,OACZC,cAAe,aAJnB,6LAWA,wBAAO5uB,UAAU,oBAAjB,UACE,kCACE,6BACE,oBAAI6uB,QAAS,EAAb,gDAEF,+BACE,uBACA,oBAAIA,QAAS,EAAb,oBACA,oBAAIA,QAAS,EAAb,qBACA,oBAAIA,QAAS,EAAb,sBACA,0BAEF,+BACE,uBACA,0CACA,+CACA,0CACA,+CACA,0CACA,+CACA,oDAGJ,kCACE,+BACE,+CACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,yCAEF,+BACE,+CACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,yCAEF,+BACE,iDACA,wCACA,wCACA,wCACA,wCACA,wCACA,wCACA,sDAOZ,cAAC3uB,EAAA,EAAD,CAAKF,UAAU,sDAAf,SACE,cAACG,EAAA,EAAD,CACEpF,GAAI,GACJiF,UAAU,iDAFZ,SAIE,cAAC,IAAD,CACEkR,GAAIlJ,EAAMlF,QACV9C,UAAU,wFAFZ,2CAUN,sBAAKA,UAAU,iBAAf,UACE,sBAAKA,UAAU,yBAAf,UACE,kFACA,4ZAM8D,uBAC5D,uBAPF,8PAaF,qBAAKA,UAAU,+BAGjB,sBAAKA,UAAU,iBAAf,UACE,qBAAKA,UAAU,4BACf,sBAAKA,UAAU,yBAAf,UACE,uDACA,ofAaJ,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,cAACE,EAAA,EAAD,CAAKF,UAAU,gCAAf,SACE,eAACG,EAAA,EAAD,CAAKpF,GAAI,GAAT,UACE,oBAAIiF,UAAU,0BAAd,SACE,sBAAMA,UAAU,6DAAhB,SACE,wBAAQijB,MAAO,CAAE2L,cAAe,aAAhC,+EAOJ,qBAAK5uB,UAAU,gBAAf,SACE,gCACE,8BACE,mDADF,sGAKA,8BACE,iGAGU,IAJZ,uIASA,8BACE,0EAAsD,IADxD,8EAUV,eAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,UACE,cAACE,EAAA,EAAD,CAAKF,UAAU,gCAAf,SACE,eAACG,EAAA,EAAD,CAAKpF,GAAI,GAAT,UACE,oBAAIiF,UAAU,0BAAd,SACE,sBAAMA,UAAU,6DAAhB,SACE,oDAIJ,qBAAKA,UAAU,gBAAf,SACE,gCACE,8BACE,8DADF,mNAOA,8BACE,uDADF,uEAIA,8BACE,yFAEU,IAHZ,8QAUA,8BACE,6DADF,4HAKA,8BACE,qDADF,iLAUR,cAACE,EAAA,EAAD,CAAKF,UAAU,qDAAf,SACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,6CAAvB,SACE,cAAC6W,GAAA,EAAD,CACEhC,QAAS,kBAAMgD,GAAkB,uBAAuB,IACxD7X,UAAU,wFAFZ,uCAQJ,cAACE,EAAA,EAAD,CAAKF,UAAU,sDAAf,SACE,cAACG,EAAA,EAAD,CACEpF,GAAI,GACJiF,UAAU,iDAFZ,SAIE,cAAC,IAAD,CACEkR,GAAIlJ,EAAMlF,QACV9C,UAAU,wFAFZ,6DASN,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,cAACE,EAAA,EAAD,CAAKF,UAAU,gCAAf,SACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAT,SACE,sBAAKiF,UAAU,2CAAf,UACE,sBAAKA,UAAU,0BAAf,UACE,qBAAKijB,MAAO,CAAE6L,KAAM,KACpB,qBACE7L,MAAO,CAAE6L,KAAM,EAAGL,SAAU,QAASE,WAAY,QADnD,iCAKA,qBACE1L,MAAO,CAAE6L,KAAM,EAAGL,SAAU,QAASE,WAAY,QADnD,uCAOF,sBAAK3uB,UAAU,0BAAf,UACE,qBAAKijB,MAAO,CAAE6L,KAAM,GAApB,SACE,6HAKF,qBAAK7L,MAAO,CAAE6L,KAAM,EAAGC,UAAW,SAAUhN,MAAO,SAAnD,SACE,mBAAG/hB,UAAU,8BAEf,qBAAKijB,MAAO,CAAE6L,KAAM,EAAGC,UAAW,SAAUhN,MAAO,OAAnD,SACE,mBAAG/hB,UAAU,6BAIjB,sBAAKA,UAAU,0BAAf,UACE,qBAAKijB,MAAO,CAAE6L,KAAM,GAApB,SACE,kGAKF,qBAAK7L,MAAO,CAAE6L,KAAM,EAAGC,UAAW,SAAUhN,MAAO,SAAnD,SACE,mBAAG/hB,UAAU,8BAEf,qBAAKijB,MAAO,CAAE6L,KAAM,EAAGC,UAAW,SAAUhN,MAAO,OAAnD,SACE,mBAAG/hB,UAAU,6BAIjB,sBAAKA,UAAU,0BAAf,UACE,qBAAKijB,MAAO,CAAE6L,KAAM,GAApB,SACE,oEAEF,qBAAK7L,MAAO,CAAE6L,KAAM,EAAGC,UAAW,SAAUhN,MAAO,SAAnD,SACE,mBAAG/hB,UAAU,8BAEf,qBAAKijB,MAAO,CAAE6L,KAAM,EAAGC,UAAW,SAAUhN,MAAO,OAAnD,SACE,mBAAG/hB,UAAU,6BAIjB,sBAAKA,UAAU,0BAAf,UACE,qBAAKijB,MAAO,CAAE6L,KAAM,GAApB,SACE,uIAKF,qBAAK7L,MAAO,CAAE6L,KAAM,EAAGC,UAAW,SAAUhN,MAAO,SAAnD,SACE,mBAAG/hB,UAAU,8BAEf,qBAAKijB,MAAO,CAAE6L,KAAM,EAAGC,UAAW,SAAUhN,MAAO,OAAnD,SACE,mBAAG/hB,UAAU,yCAS3B,qBAAKA,UAAU,mBAAf,SACE,qBAAKA,UAAU,uBAAf,SACE,eAACC,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKF,UAAU,gCAAf,UACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,EAAT,SACE,sBAAKiF,UAAU,wBAAf,UACE,oBACEijB,MAAO,CACL+L,aAAc,QACdJ,cAAe,aAHnB,6CAQA,qWAM6C,uBAC3C,uBACA,qEARF,yLAW0D,IACxD,+CAZF,0KAe0B,IACxB,kEAhBF,QAgBqD,IACnD,qEAjBF,OAoBA,qBAAI5uB,UAAU,oBAAd,UACE,4CACY,kDADZ,yDAIA,sCACM,sDADN,0GAQN,cAACG,EAAA,EAAD,CAAKpF,GAAI,EAAT,SACE,qBAAKiF,UAAU,wBAAf,SACE,qBAAKA,UAAU,uBAIrB,cAACE,EAAA,EAAD,CAAKF,UAAU,qDAAf,SACE,cAACG,EAAA,EAAD,CACEpF,GAAI,GACJiF,UAAU,6CAFZ,SAIE,cAAC6W,GAAA,EAAD,CACEhC,QAAS,kBAAMgD,GAAkB,uBAAuB,IACxD7X,UAAU,wFAFZ,uCAQJ,cAACE,EAAA,EAAD,CAAKF,UAAU,0DAAf,SACE,cAACG,EAAA,EAAD,CACEpF,GAAI,GACJiF,UAAU,iDAFZ,SAIE,cAAC,IAAD,CACEkR,GAAIlJ,EAAMlF,QACV9C,UAAU,wFAFZ,iEAYV,qBAAKA,UAAU,wBAAf,SACE,sBAAKA,UAAU,uBAAf,UACE,cAACC,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,CAAKF,UAAU,gCAAgCpH,GAAI,MAAnD,SACE,cAACuH,EAAA,EAAD,CAAKpF,GAAI,GAAT,SACE,cAAC,GAAD,CAAMk0B,KAAMV,WAIlB,eAACtuB,EAAA,EAAD,CAAWD,UAAU,OAArB,UACE,cAACE,EAAA,EAAD,CAAKF,UAAU,qDAAf,SACE,cAACG,EAAA,EAAD,CACEpF,GAAI,GACJiF,UAAU,6CAFZ,SAIE,cAAC6W,GAAA,EAAD,CACEhC,QAAS,kBAAMgD,GAAkB,uBAAuB,IACxD7X,UAAU,wFAFZ,uCAQJ,cAACE,EAAA,EAAD,CAAKF,UAAU,sDAAf,SACE,cAACG,EAAA,EAAD,CACEpF,GAAI,GACJiF,UAAU,6CAFZ,SAIE,cAAC,IAAD,CACEkR,GAAIlJ,EAAMlF,QACV9C,UAAU,wFAFZ,qEAehB,IAAMkvB,GAAM,SAAC,GAQN,IAPLC,EAOI,EAPJA,SACAx0B,EAMI,EANJA,SACAy0B,EAKI,EALJA,KAMA,OACE,eAACC,GAAA,EAAUC,KAAX,CAAgBC,SAAUH,EAA1B,UACE,cAACC,GAAA,EAAUpV,OAAX,UACE,oBAAIja,UAAU,YAAd,SAA2BmvB,MAE7B,cAACE,GAAA,EAAUG,KAAX,UAAiB70B,QAKjBs0B,GAAO,YAAiE,IAA9DA,EAA6D,EAA7DA,KACd,OACE,qCACE,oBAAIhM,MAAO,CAAE+L,aAAc,SAA3B,iBACA,cAACK,GAAA,EAAD,UACGJ,EAAK9Z,KAAI,SAACsa,EAAGjsB,GACZ,OACE,cAAC,GAAD,CAEE4rB,KAAM5rB,EAAEksB,WACRP,SAAUM,EAAE7a,MACZja,SAAU80B,EAAEjL,MAHPhhB,YCtmBZ,SAASmsB,KACd,MAAgC/0B,oBAAS,GAAzC,mBAAOg1B,EAAP,KAAiBC,EAAjB,KAEA,OACE,qCACE,qBAAK7vB,UAAU,8BAAf,SACE,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,eAACE,EAAA,EAAD,CAAKF,UAAU,yBAAf,UACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,EAAGiF,UAAU,qCAAtB,SACE,sBAAMA,UAAU,yBAAhB,SACE,qBACEA,UAAU,YACV4a,IAAI,mBACJC,IAAI,oBAKV,cAAC1a,EAAA,EAAD,CAAKpF,GAAI,EAAGiF,UAAU,gCAAtB,SACE,sBAAKA,UAAU,GAAf,UACE,mBAAGA,UAAU,YAAb,SACE,mBAAGA,UAAU,YAAb,sXAWF,wBAAOA,UAAU,aAAjB,UACE,qBAAIA,UAAU,sBAAd,UACE,sCACA,oCACA,qDAGF,+BACE,2CACA,sCACM,sBAAMA,UAAU,gBAAhB,qBAEN,uCACO,sBAAMA,UAAU,gBAAhB,wBAMT,+BACE,oDACA,6BACE,sBAAMA,UAAU,gBAAhB,oBAEF,6BACE,sBAAMA,UAAU,gBAAhB,uBAkBJ,+BACE,uDACA,6BACE,sBAAMA,UAAU,gBAAhB,oBAEF,6BACE,sBAAMA,UAAU,gBAAhB,yBAON,mBAAGA,UAAU,YAAb,gDAEA,mBAAGA,UAAU,GAAb,SACE,iCACE,cAAC,IAAD,CACEkR,GAAIlJ,EAAMlF,QACV9C,UAAU,sDAFZ,sEAsCd,sBAAKA,UAAU,iDAAf,UACE,qBAAKA,UAAU,6BACf,cAACC,EAAA,EAAD,CAAWD,UAAU,GAArB,SACE,eAACE,EAAA,EAAD,CAAKF,UAAU,yBAAf,UACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,iCAAvB,SACE,sBAAKA,UAAU,wBAAf,UACE,oBAAIA,UAAU,OAAd,sGAIA,oBAAIA,UAAU,OAAd,SACE,0GAQN,cAACG,EAAA,EAAD,CACE2vB,GAAI,GACJ9vB,UAAU,8DAFZ,SAIE,sBACEijB,MAAO,CAAE8M,OAAQ,IACjBlb,QAAS,WACPgb,GAAaD,IAEf5vB,UAAU,yCALZ,UAOE,uCAAU4vB,EAAW,OAAS,UAAiB,IAC9CA,EACC,mBAAG5vB,UAAU,qBAEb,mBAAGA,UAAU,4BAKnB,mCACG4vB,GACC,eAACzvB,EAAA,EAAD,CAAKH,UAAU,OAAOijB,MAAO,CAAE8M,OAAQ,KAAOD,GAAI,GAAI/0B,GAAI,GAA1D,UACE,sBAAKiF,UAAU,gBAAf,UACE,qBACEA,UAAU,0BACVijB,MAAO,CACLI,gBAAiB,WAHrB,SAME,sBAAMrjB,UAAU,OAAhB,SACE,uDAGJ,qBACEA,UAAU,kBACVijB,MAAO,CACLlB,MAAO,QACPiO,WAAY,QAJhB,ueAkBF,sBAAKhwB,UAAU,qBAAf,UACE,qBACEA,UAAU,0BACVijB,MAAO,CACLI,gBAAiB,WAHrB,SAME,sBAAMrjB,UAAU,OAAhB,SACE,sDAGJ,qBACEA,UAAU,kBACVijB,MAAO,CACLlB,MAAO,QACPiO,WAAY,QAJhB,ohBAwBd,qBAAKhwB,UAAU,8BAAf,SACE,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,eAACE,EAAA,EAAD,CAAKF,UAAU,yBAAf,UACE,cAACG,EAAA,EAAD,CAAK2vB,GAAI,GAAI1vB,GAAI,GAAIrF,GAAI,EAAGiF,UAAU,SAAtC,SACE,sBAAMA,UAAU,yBAAhB,oFAKF,cAACG,EAAA,EAAD,CAAK2vB,GAAI,GAAI/0B,GAAI,GAAIiF,UAAU,gCAA/B,SACE,cAACG,EAAA,EAAD,CAAK2vB,GAAI,GAAI1vB,GAAI,GAAjB,SACE,qBACEwa,IAAI,yBACJ5a,UAAU,YACV6a,IAAI,SAIV,cAAC1a,EAAA,EAAD,CAAK2vB,GAAI,GAAI9vB,UAAU,gCAAvB,SACE,sBAAMA,UAAU,kBAAhB,wDAIF,cAACG,EAAA,EAAD,CAAK2vB,GAAI,GAAI9vB,UAAU,qCAAvB,SACE,uBAAMA,UAAU,mBAAhB,4HAGE,uBAHF,kJASF,cAACG,EAAA,EAAD,UACE,wBAAOH,UAAU,sBAAjB,UACE,oBAAIA,UAAU,wBAMd,+BACE,4CACA,+EACA,2DAC2B,sBAAMA,UAAU,UAAhB,eAAmC,IAD9D,MAGE,sBAAMA,UAAU,UAAhB,gBAHF,OAKA,mDAEF,+BACE,4CACA,iFACA,2DAC2B,sBAAMA,UAAU,UAAhB,eAAmC,IAD9D,MAGE,sBAAMA,UAAU,UAAhB,gBAHF,OAKA,qDAEF,+BACE,+CACA,uEACA,2DAC2B,sBAAMA,UAAU,UAAhB,eAAmC,IAD9D,MAGE,sBAAMA,UAAU,UAAhB,gBAHF,OAKA,oDAEF,+BACE,6CACA,sEACA,2DAC2B,sBAAMA,UAAU,UAAhB,eAAmC,IAD9D,MAGE,sBAAMA,UAAU,UAAhB,gBAHF,OAKA,iEAQZ,sBAAKA,UAAU,iDAAf,UACE,qBAAKA,UAAU,6BACf,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,cAACE,EAAA,EAAD,CAAKF,UAAU,0DAAf,SACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,uCAAvB,SACE,oBAAIA,UAAU,4BAAd,qNAUR,sBAAKA,UAAU,8BAAf,UACE,qBAAKA,UAAU,6BAEf,cAACC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKF,UAAU,OAAf,UACE,cAACG,EAAA,EAAD,CAAKH,UAAU,GAAGiwB,GAAI,EAAtB,SACE,qBAAKjwB,UAAU,oBAAf,SACE,sBAAKA,UAAU,YAAf,UACE,sBAAMA,UAAU,wBAAhB,oBACA,mBAAGA,UAAU,OAAb,6DAGA,qBACEA,UAAU,gBACVijB,MAAO,CACLkL,UAAW,OACXC,QAAS,KAJb,UAOE,qBAAIpuB,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,+DAUA,qBAAIA,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,sCASA,qBAAIA,UAAU,OAAd,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,iCAcR,cAACG,EAAA,EAAD,CAAKH,UAAU,GAAGiwB,GAAI,EAAtB,SACE,qBAAKjwB,UAAU,oBAAf,SACE,sBAAKA,UAAU,YAAf,UACE,sBAAMA,UAAU,wBAAhB,iBACA,mBAAGA,UAAU,OAAb,sMAuCN,cAACG,EAAA,EAAD,CAAKH,UAAU,GAAGiwB,GAAI,EAAtB,SACE,qBAAKjwB,UAAU,eAAf,SACE,sBAAKA,UAAU,YAAf,UACE,sBAAMA,UAAU,wBAAhB,kBACA,oBAAGA,UAAU,OAAb,2LAIE,uBAJF,oIAcV,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,cAACE,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,UACE,sBAAMH,UAAU,GAAhB,SACE,oBAAGA,UAAU,mBAAb,UACE,wBAAQijB,MAAO,CAAElB,MAAO,WAAxB,2IAKA,uBACA,wBAAQkB,MAAO,CAAElB,MAAO,WAAxB,oEAUZ,qBAAK/hB,UAAU,8BAAf,SACE,cAACC,EAAA,EAAD,CAAWD,UAAU,OAArB,SACE,cAACE,EAAA,EAAD,CAAKF,UAAU,qDAAf,SACE,eAACG,EAAA,EAAD,CACEpF,GAAI,GACJiF,UAAU,8DAFZ,UAIE,sBAAMA,UAAU,yBAAhB,sBACA,uBAAMA,UAAU,mBAAhB,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,4CASA,uBAAMA,UAAU,mBAAhB,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,+BASA,uBAAMA,UAAU,mBAAhB,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,2BASA,uBAAMA,UAAU,mBAAhB,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,oBASA,uBAAMA,UAAU,mBAAhB,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,0BASA,uBAAMA,UAAU,mBAAhB,UACE,mBACEijB,MAAO,CACLlB,MAAO,SAET/hB,UAAU,iBALd,wEAaR,sBAAKA,UAAU,iDAAf,UACE,qBAAKA,UAAU,6BACf,cAACC,EAAA,EAAD,CAAWD,UAAU,YAArB,SACE,cAACE,EAAA,EAAD,CAAKF,UAAU,0DAAf,SACE,cAACG,EAAA,EAAD,CACEpF,GAAI,GACJiF,UAAU,iDAFZ,SAIE,cAAC,IAAD,CACEkR,GAAIlJ,EAAMlF,QACV9C,UAAU,wFAFZ,kECrhBd,IAAMkwB,GAAW,SAAC,GAAqD,IAAnDv1B,EAAkD,EAAlDA,SAAoBuf,GAA8B,EAAxClc,SAAwC,EAA9Bkc,UACtC,OACE,sBAAKla,UAAU,sCAAf,UACE,qBAAKA,UAAU,8DACf,sBAAKA,UAAU,2FAAf,UAmBE,cAAC,GAAD,CACEka,SAAUA,EACVvf,SACE,qBAAKqF,UAAU,gCAAf,SACE,cAAC,IAAD,CAAMkR,GAAIlJ,EAAMlF,QAAS9C,UAAU,6BAAnC,+CAMN,sBACEA,UAAU,yBACVijB,MAAO,CAAEkN,UAAW,UAFtB,SAIGx1B,IAEH,cAAC,GAAD,WAMKy1B,GAAO,WAClB,MAA8B7xB,IAAtBP,EAAR,EAAQA,SAAUD,EAAlB,EAAkBA,QACZkR,EAA2B1W,OAAOiF,SAASyR,SACjD,EAAgCrU,mBAE9B,YAFF,mBAAOsf,EAAP,KAAiBgB,EAAjB,KAiCA,OAzBA5iB,qBAAU,WACR,OAAQ2W,GAKN,IAAK,4BACL,IAAK,6BACHiM,EAAY,aAEZ,MAUF,QACEA,EAAY,iBAEf,CAACjM,IAEClR,EAmBH,cAAC,GAAD,CAAUC,SAAUA,EAAUkc,SAAUA,EAAxC,SACE,sBAAKla,UAAU,cAAf,UACE,sBAAKA,UAAU,iDAAf,UACE,qBAAKA,UAAU,6BACf,cAACC,EAAA,EAAD,CAAWD,UAAU,GAArB,SACE,cAACE,EAAA,EAAD,CAAKF,UAAU,6BAAf,SACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,2BAAvB,SACE,qBAAKA,UAAU,yCAAf,SACE,qBAAIA,UAAU,SAAd,UACE,uBAAMA,UAAU,8CAAhB,wCAEE,uBACc,cAAbka,GAA4B,iBACf,aAAbA,GAA2B,eAE9B,uCAOZ,cAAC6S,GAAD,IAEc,aAAb7S,GAA2B,cAACgU,GAAD,IACd,eAAbhU,GAA6B,cAACsU,GAAD,IAChB,cAAbtU,GAA4B,cAACyV,GAAD,SA3C/B,cAAC,GAAD,CAAU3xB,SAAUA,EAAUkc,SAAUA,EAAxC,SACE,qBAAKla,UAAU,cAAf,SACE,qBAAKA,UAAU,sBAAf,SACE,cAACC,EAAA,EAAD,CAAWD,UAAU,sBAArB,SACE,cAACE,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,CAAKpF,GAAI,GAAIiF,UAAU,kBAAvB,SACE,qBAAKA,UAAU,OAAf,qCCzGLqwB,GAAU,WACnB,OACI,cAAC,GAAD,UACI,wCCACC,GAAoB,WAC7B,OACI,gCACI,sWASA,wDAEA,0jBAYA,oUAQA,0DAEA,yJAKA,mHAGI,uBAHJ,6EAKI,uBALJ,sFASA,gGAKA,yCAEA,6RAOA,urBAcA,wTAK+B,IAC3B,mBAAGjC,KAAK,iDAAR,4DANJ,OAYA,ySAK6B,IACzB,mBAAGA,KAAK,sHAAR,iDANJ,sFAaA,0CAEA,kcAUA,gUAQA,uDAEA,sKAGc,IACV,mBAAGA,KAAK,8BAAR,kCAJJ,uIAOc,IACV,mBAAGA,KAAK,8BAAR,kCARJ,6LAcA,sDAEA,qYASA,sDAEA,6jBAYA,oDACA,0bAUA,+BACI,mGAIA,mHAIA,sGAMJ,8CACA,gWAKoE,IAChE,mBACIA,KAAK,mCACL3c,OAAO,SACP4c,IAAI,sBAHR,uCANJ,OAgBA,gDACA,mYASA,+BACI,6BACI,mBACID,KAAK,6CACL3c,OAAO,SACP4c,IAAI,sBAHR,0CAQJ,6BACI,mBACID,KAAK,oCACL3c,OAAO,SACP4c,IAAI,sBAHR,2CAQJ,6BACI,mBACID,KAAK,4CACL3c,OAAO,SACP4c,IAAI,sBAHR,6CAUR,wDAEA,0IAEoD,IAChD,mBAAGD,KAAK,8BAAR,kCAHJ,WASCkC,GAAgB,WACzB,OACI,eAAC,GAAD,WACI,qBAAKvwB,UAAU,yBAAf,SACI,cAACC,EAAA,EAAD,UACI,oDAGR,qBAAKD,UAAU,YAAf,SACI,eAACC,EAAA,EAAD,WACI,cAAC,GAAD,IACA,qBAAKD,UAAU,YAAf,SACI,cAAC,IAAD,CAAMA,UAAU,uBAAuBkR,GAAIlJ,EAAMC,KAAjD,qC,oGCvOXuoB,GAAQC,sBACjB,WAOI9b,GACE,IANE3U,EAMH,EANGA,UAMH,IALG0wB,uBAKH,MALqB,aAKrB,EAJG7sB,EAIH,EAJGA,QAIH,IAHG8sB,yBAGH,SACKC,EAAWC,sBAUjB,OARAC,8BAAoBnc,GAAK,kBAAMic,EAAS7c,QAASgd,SAEjDz4B,qBAAU,WACkB,MAApBs4B,EAAS7c,SAA6C,MAA1B6c,EAAS7c,QAAQgd,OAC7CH,EAAS7c,QAAQgd,MAAMC,WAE5B,CAACJ,EAAU/sB,IAGV,qBACI7D,UAAS,iBAAKA,QAAL,IAAKA,IAAa,IAAlB,OACL2wB,EAAoB,oBAAsB,IAFlD,SAKI,cAAC,KAAD,CACID,gBAAiBA,EACjB/b,IAAKic,EACLK,WAAYC,KACZrtB,QAASA,SC1ChBstB,GAAeV,sBAC1B,WASE9b,GACI,IAAD,IARDyc,sBAQC,aAPDC,qBAOC,aANDC,eAMC,aALDX,yBAKC,SAJD/zB,EAIC,EAJDA,MACA20B,EAGC,EAHDA,kBAIF,EAA0B32B,mBAAmC,eAA7D,mBAAOurB,EAAP,KAAcqL,EAAd,KACA,EAAiB52B,mBAAiB,OAA3B62B,EAAP,oBACA,EAA8B72B,mBAA6B,IAA3D,mBAAOiJ,EAAP,KAAgB6tB,EAAhB,KAEA,EAAwC92B,oBAAkB,GAA1D,mBAAO+2B,EAAP,KAAqBC,EAArB,KAGMhB,EAAW9c,mBACX5K,EAAYygB,KA+5BlB,OA75BArxB,qBAAU,WACJi5B,GACFA,GAAkB,KAEnB,CAACA,IA8CJj5B,qBAAU,WACR,IAEIu5B,EAAiB,EACjBC,EAAgB,EAChBC,EAAe,KACfC,EAAiB,KACjBC,EAAiB,KACjBC,EAAsB,KA+Db,MAATt1B,GAA2B,MAAV60B,GAiBiB,MAAlC70B,EAAK,SAAL,YAEAq1B,EAAY5xB,EAAUzD,EAAK,SAAL,WACtBi1B,EAAYxR,KAAK1W,IACfsoB,EAAU,GAAV,EACAA,EAAUA,EAAUxuB,OAAS,GAA7B,GAEFquB,EAAWzR,KAAK3W,IACduoB,EAAU,GAAV,EACAA,EAAUA,EAAUxuB,OAAS,GAA7B,GAEFouB,EAzFyB,WAC3B,IAAIM,EAAS,EACb,GAAgB,MAAZL,EAAkB,CACpB,IAAMM,EAAO/R,KAAKC,MAAMwR,EAAW,GAC7BO,EAAMhS,KAAKC,MAAMwR,EAAW,GAC5BQ,EAAIjS,KAAKC,MAA6B,OAAf,EAAP8R,EAAWC,EAAM,GAAa,KAC9CE,EAAU,IAAI5yB,KAAK2yB,GACnB3O,EAAI4O,EAAQlhB,cACZuS,EAAI2O,EAAQ/S,UACZqE,EAAI0O,EAAQ7S,WAAa,EAGzB8S,EAAQ7O,EAAI,KAFRE,EAAI,GAAK,IAAMA,EAAI,GAAKA,GAEN,KADlBD,EAAI,GAAK,IAAMA,EAAI,GAAKA,GAE5B1S,EAAKuhB,aAASD,GACpB,GAAU,MAANthB,EAAY,CACd,IAAI1Q,EACJ,OAAQixB,GACN,IAAK,KACHjxB,EAAOkyB,aAASxhB,EAAI,GACpB,MACF,IAAK,KACH1Q,EAAOkyB,aAASxhB,EAAI,GACpB,MACF,IAAK,KACH1Q,EAAOkyB,aAASxhB,EAAI,GACpB,MACF,IAAK,MACH1Q,EAAOkyB,aAASxhB,EAAI,IACpB,MACF,IAAK,KACH1Q,EAAOmyB,aAAUzhB,EAAI,GACrB,MACF,IAAK,KACH1Q,EAAOmyB,aAAUzhB,EAAI,GACrB,MACF,IAAK,MACH,IAAI0hB,EAAUjP,EAAI,EAAI,SACtBnjB,EAAOiyB,aAASG,GAChB,MACF,IAAK,MAEHpyB,GADc,IAAI0e,IACL2T,WAAWhB,GACxB,MACF,QACErxB,EAAO0Q,EAEX,GAAY,MAAR1Q,EAAc,CAChB,IAEM2R,KAFe3R,EAAKZ,UACK,IACR,OAAS,EAG1BgkB,EAAW,KAFDzR,EAAI,MACLA,EAAI,GAEnBggB,EAAS9R,KAAK3W,IAAIka,EAAGiO,KAI3B,OAAOM,EAgCOW,GA2BZf,EAAU,CACRxQ,OAAQ3kB,EAAK,KAAL,KACRm2B,OAAQn2B,EAAK,KAAL,KACRP,KAAMO,EAAK,KAAL,KACNmpB,SAAU,MAIY,MAAtBnpB,EAAK,WACkC,MAAvCA,EAAK,SAAL,iBAEAs1B,EAAiB7xB,EAAUzD,EAAK,SAAL,gBAC3Bo1B,EAAY,CACVzQ,OAAQ3kB,EAAK,UAAL,KACRP,KAAMO,EAAK,UAAL,KACNm2B,OAAQn2B,EAAK,UAAL,KACRmpB,SAAU,MAE0B,MAAlCnpB,EAAK,SAAL,YACFo1B,EAAS,OACPp1B,EAAK,SAAL,eAAuC,GAAvC,OACFo1B,EAAS,KACPp1B,EAAK,SAAL,eAAuC,GAAvC,KACFo1B,EAAS,OACPp1B,EAAK,SAAL,eAAuC,GAAvC,QAgPV,IAhGA,IAAMo2B,EAAqB,SAACC,GAC1B,IAAMb,EAAO/R,KAAKC,MAAM2S,EAAI,GACtBZ,EAAMhS,KAAKC,MAAM2S,EAAI,GAE3B,OADU5S,KAAKC,MAA6B,OAAf,EAAP8R,EAAWC,EAAM,GAAa,MAmChDa,EAAc,SAACC,GACnB,GAAwB,MAApBvC,EAAS7c,QAAiB,CACT,IAAD,MAIX,MAJP,GAAI4d,EACF,UAAAf,EAAS7c,QAAQqf,OAAO,UAAxB,SAA4BC,OAC5B,UAAAzC,EAAS7c,QAAQqf,OAAO,UAAxB,SAA4BC,OAC5B,UAAAzC,EAAS7c,QAAQqf,OAAO,UAAxB,SAA4BE,YAE5B,UAAA1C,EAAS7c,QAAQqf,OAAO,UAAxB,SAA4BE,OAC5B,UAAA1C,EAAS7c,QAAQqf,OAAO,UAAxB,SAA4BE,OAC5B,UAAA1C,EAAS7c,QAAQqf,OAAO,UAAxB,SAA4BC,OAE1BjC,GACFQ,GAAiBD,GAEnBf,EAAS7c,QAAQwf,WAOjB10B,EAAY,CACd20B,aAAc,CACZ3G,EAAG,KACH9K,MAAO,UACP0R,UAAW,EACXp3B,KAAM,KACNq3B,QAAQ,EACRnS,OAAQ,MAKVoS,eAdmB,KAenBC,aAAc,KACdC,QAAS,CACPhH,EAAG,KACH9K,MAAO,UACP0R,UAAW,EACXp3B,KAAMO,EAAK,KAAL,KACN82B,QAAQ,EACRnS,OAAQ,MAEVuS,YAAa,CACXjH,EAAG,KACH9K,MAAO,UACP7d,SAAS,EACTuvB,UAAW,EACXp3B,KAAM,uBACNq3B,QAAQ,EACRnS,OAAQ,aAORjJ,EAAU,GACL9U,EAAI,EAAGA,EAAIyuB,EAAUxuB,OAAQD,IAAK,CACzC,IAAIuwB,EAAsB,GAC1BA,EAAc,EAAc9B,EAAUzuB,GAAV,EAC5BuwB,EAAc,EAAe9B,EAAUzuB,GAAV,EAC7B8U,EAAQ5U,KAAKqwB,GAgBf,GAdAzb,EAAQ0b,MAAK,SAAU30B,EAAG40B,GACxB,OAAO50B,EAAC,EAAc40B,EAAC,GAClB,EACDA,EAAC,EAAc50B,EAAC,EAChB,EACA,KAGNR,EAAKg1B,QAAQhH,EAAIvU,EACjBzZ,EAAKg1B,QAAQtS,OAASwQ,EAAQxQ,OAC9B1iB,EAAKg1B,QAAQx3B,KAAO01B,EAAQgB,OAC5Bl0B,EAAKg1B,QAAQ9N,SAAWgM,EAAQhM,SAChClnB,EAAK+0B,aAAe3B,EAAUA,EAAUxuB,OAAS,GAEhC,MAAbuuB,EAAmB,CAErB1Z,EAAU,GACV,IAAK,IAAI9U,EAAI,EAAGA,EAAI0uB,EAAezuB,OAAQD,IAAK,CAC9C,IAAIuwB,EAAsB,GAC1BA,EAAc,EAAc7B,EAAe1uB,GAAf,EAC5BuwB,EAAc,EAAe7B,EAAe1uB,GAAf,EAC7B8U,EAAQ5U,KAAKqwB,GAEfzb,EAAQ0b,MAAK,SAAU30B,EAAG40B,GACxB,OAAO50B,EAAC,EAAc40B,EAAC,GAClB,EACDA,EAAC,EAAc50B,EAAC,EAChB,EACA,KAGNR,EAAK20B,aAAa3G,EAAIvU,EACtBzZ,EAAK20B,aAAajS,OAASyQ,EAAUzQ,OACrC1iB,EAAK20B,aAAan3B,KAAO21B,EAAUe,OACnCl0B,EAAK20B,aAAazN,SAAWiM,EAAUjM,SAOvC,IAJA,IAAImO,EAAar1B,EAAKg1B,QAAQhH,EAC1BsH,EAAct1B,EAAK20B,aAAa3G,EAChCuH,EAAiB,GACjBC,EAAkB,GACb7wB,EAAI,EAAGA,EAAI0wB,EAAMzwB,OAAQD,IAAK,CACrC,IAAI8wB,EAAIJ,EAAM1wB,GACd4wB,EAAUE,EAAC,GAAeA,EAAC,EAE7B,IAAK,IAAI9wB,EAAI,EAAGA,EAAI2wB,EAAO1wB,OAAQD,IAAK,CACtC,IAAI8wB,EAAIH,EAAO3wB,GACf6wB,EAAWC,EAAC,GAAeA,EAAC,EAE9B,IAAIC,EAAa,GACjB,IAAK,IAAIjV,KAAQ8U,OACU35B,IAArB45B,EAAW/U,GACbiV,EAAM7wB,KAAK,CAAEkgB,EAAGzD,SAASb,GAAO3e,EAAG,OAEnC4zB,EAAM7wB,KAAK,CACTkgB,EAAGzD,SAASb,GACZ3e,EAAGyzB,EAAU9U,GAAQ+U,EAAW/U,KAItC,IADA,IAAIkV,EAAa,IACRhxB,EAAI,EAAGA,EAAI+wB,EAAM9wB,QAEX,OADb+wB,EAAQD,EAAM/wB,GAAN,GADwBA,KAMlC,IAAK,IAAIA,EAAI+wB,EAAM9wB,OAAS,EAAGD,GAAK,EAAGA,IAChB,MAAjB+wB,EAAM/wB,GAAN,IACF+wB,EAAM/wB,GAAN,GAAiB,IAAQgxB,GAG7BD,EAAMP,MAAK,SAAU30B,EAAQ40B,GAC3B,OAAO50B,EAAEukB,EAAIqQ,EAAErQ,EAAI,EAAIqQ,EAAErQ,EAAIvkB,EAAEukB,GAAK,EAAI,KAE1C/kB,EAAKi1B,YAAYjH,EAAI0H,OAErB11B,EAAK20B,aAAa3G,EAAI,KAEN,IAAdgF,GArKmB,SAACvS,GACtB,GAAIqS,GAAgBP,EAAgB,CAGlC,IAFA,IAAIqD,EACF51B,EAAKi1B,YAAYjH,EAAEhuB,EAAKi1B,YAAYjH,EAAEppB,OAAS,GACxCD,EAAI,EAAGA,EAAI3E,EAAKi1B,YAAYjH,EAAEppB,OAAQD,IAC7C,GAAI3E,EAAKi1B,YAAYjH,EAAErpB,GAAnB,GAAoC8b,EAAM,CAC5CmV,EAAkB51B,EAAKi1B,YAAYjH,EAAErpB,GACrC,MAGJ3E,EAAK+0B,aAAea,MACf,CAEL,IADA,IAAIA,EAAkB51B,EAAKg1B,QAAQhH,EAAEhuB,EAAKg1B,QAAQhH,EAAEppB,OAAS,GACpDD,EAAI,EAAGA,EAAI3E,EAAKg1B,QAAQhH,EAAEppB,OAAQD,IACzC,GAAI3E,EAAKg1B,QAAQhH,EAAErpB,GAAf,GAAgC8b,EAAM,CACxCmV,EAAkB51B,EAAKg1B,QAAQhH,EAAErpB,GACjC,MAGJ3E,EAAK+0B,aAAea,GAqJtBC,CAAe7C,GAIjB,IAAM8C,EAAyB,SAC7B91B,EACA+1B,EACAC,EACAC,GAEA,IAEIn0B,EAAGijB,EAFHmR,EAAal2B,EAAK4E,OAClBuxB,EAAQ,GAERC,EAAe,EAEnB,IAAkB,IAAdJ,EAAqB,CACvB,IAAIhD,EAAYhzB,EAAKk2B,EAAa,GAAlB,EAChB,GAAIlD,EAAYgD,EAAS,EAEvB,IAAK,IAAIrxB,EAAI,EAAGA,EAAIoxB,EAAWnxB,OAAQD,IACrC,GAAIoxB,EAAWpxB,GAAX,GAA4BquB,EAAW,CACzCgD,EAAYD,EAAWpxB,GACvB,MAON,IAHA,IAAI0xB,EAAgBL,EAAS,EACzBM,EAAiBN,EAAS,EAC1BO,EAAiB,KACZ5xB,EAAIuxB,EAAa,EAAGvxB,GAAK,EAAGA,IACnC,GAA2B,MAAvB3E,EAAK2E,GAAL,EAA6B,CAC/B4xB,EAAiBv2B,EAAK2E,GAAL,EACjB,MAGJ,IAAK,IAAIA,EAAI,EAAGA,EAAIuxB,IAClBnR,EAAI/kB,EAAK2E,GAAL,EACJ7C,EAAI9B,EAAK2E,GAAL,IACAogB,EAAIsR,GAAiBtR,EAAIwR,IAHC5xB,IAM9B,GAAIogB,IAAMsR,EAAe,CACD,MAAlBC,IACFF,EAAeE,EAAiBx0B,GAElC,OAIN,IAAK,IAAI6C,EAAI,EAAGA,EAAIuxB,MAClBnR,EAAI/kB,EAAK2E,GAAL,GACIsxB,GAFsBtxB,IAK9B7C,EAAI9B,EAAK2E,GAAL,EAAsByxB,EAC1BD,EAAMtxB,KAAK,CAACsvB,EAAmBpP,GAAIjjB,GAAK,EAAI,KAAOA,IAKrD,OAHAq0B,EAAMhB,MAAK,SAAU30B,EAAQ40B,GAC3B,OAAO50B,EAAE,GAAK40B,EAAE,GAAK,EAAIA,EAAE,GAAK50B,EAAE,IAAM,EAAI,KAEvC21B,GAGLK,EAAiBV,EACnB91B,EAAKg1B,QAAQhH,EACbhuB,EAAKg1B,QAAQhH,EACbhuB,EAAK+0B,aACL/B,GAGEuB,EAAc,CAChB,CACEkC,kBAAkB,EAClBC,MAAM,EACNxT,MAAOljB,EAAKg1B,QAAQ9R,MACpBljB,KAAMw2B,EACNG,aAAc,CAAEtxB,SAAS,GACzBuxB,OAAQ,CACNC,gBAAiB,SAACjkB,GAChBA,EAAM6C,iBACN4e,MAKJt6B,GAAIiG,EAAKg1B,QAAQtS,OACjBwE,SAAUlnB,EAAKg1B,QAAQ9N,SACvB0N,UAAW50B,EAAKg1B,QAAQJ,UACxBp3B,KAAMwC,EAAKg1B,QAAQx3B,KACnBq3B,QAAS/B,GAAgB9yB,EAAKg1B,QAAQH,OACtCiC,OAAQ,CACNC,MAAO,CACL1xB,SAAS,EACT2xB,cAAe,IAGnB18B,KAAM,OACN28B,SAAUnE,EACVoE,MAAO,EACPhG,OAAQ,IAIe,MAAvBlxB,EAAK20B,aAAa3G,GACpBuG,EAAO1vB,KAAK,CACVvK,KAAM,OACNP,GAAIiG,EAAK20B,aAAajS,OACtBllB,KAAMwC,EAAK20B,aAAan3B,KACxB0pB,SAAUlnB,EAAK20B,aAAazN,SAC5BlnB,KAAM81B,EACJ91B,EAAK20B,aAAa3G,EAClBhuB,EAAKg1B,QAAQhH,EACbhuB,EAAK+0B,aACL/B,GAEFkE,MAAO,EACPtC,UAAW50B,EAAK20B,aAAaC,UAC7B1R,MAAOljB,EAAK20B,aAAazR,MACzByT,aAAc,CAAEtxB,SAAS,GACzB6rB,OAAQ,EACR+F,SAAUnE,EACV+B,QAAQ,EACR4B,kBAAkB,EAClBG,OAAQ,CACNC,gBAAiB,SAACjkB,GAChBA,EAAM6C,iBACN4e,MAIJyC,OAAQ,CACNC,MAAO,CACL1xB,SAAS,EACT2xB,cAAe,MAMnBzE,GAAwC,MAAtBvyB,EAAKi1B,YAAYjH,GACrCuG,EAAO1vB,KAAK,CACVvK,KAAM,OACNP,GAAIiG,EAAKi1B,YAAYvS,OACrBllB,KAAMwC,EAAKi1B,YAAYz3B,KACvB0pB,SAAU,KACVlnB,KAAM81B,EACJ91B,EAAKi1B,YAAYjH,EACjBhuB,EAAKg1B,QAAQhH,EACbhuB,EAAK+0B,aACL/B,GAEF4B,UAAW50B,EAAKi1B,YAAYL,UAC5B1R,MAAOljB,EAAKi1B,YAAY/R,MACxByT,aAAc,CAAEtxB,SAAS,GACzB6rB,OAAQ,EACR+F,QAASnE,EACT+B,QAAQ,EACR4B,kBAAkB,EAClBS,MAAO,EACPN,OAAQ,CACNC,gBAAiB,SAACjkB,GAChBA,EAAM6C,iBACN4e,MAIJyC,OAAQ,CACNC,MAAO,CACL1xB,SAAS,EACT2xB,cAAe,MAMvB,IAwBIhyB,EAA8B,CAChCktB,MAAO,CACLiF,YAAY,EACZC,WAAW,EACXC,YAAa,EACbC,OAAQ,KAERC,gBAAiB,CAAEC,MAAO,CAAEltB,QAAS,UAgCvCmtB,QAAS,CAAEpyB,SAAS,GACpBqyB,UAAW,CAAEryB,SAAS,GACtBsyB,OAAQ,CAAEtyB,SAAS,EAAMuyB,OAAQ,GACjCx7B,UAAW,CAAEiJ,SAAS,GACtBwyB,YAAa,CACXtD,OAAQ,CACNuD,cAAc,EACdV,WAAW,EACXW,OAAQ,UACRC,qBAAqB,EAsBrBlB,OAAQ,CACNC,MAAO,CACL1xB,QAASmtB,GAEXyF,SAAU,CACRC,QAAS,MAKjBC,cAAe,CAAE9yB,SAAS,GAC1B+yB,UAAW,CAAE/yB,SAAS,GACtBkvB,OAAQA,EACRxe,MAAO,CAAEgQ,UAAMnqB,GACfy8B,QAAS,CACPhzB,QAASmtB,EAiCT8F,UAAW,IACXvvB,OAAO,EACPwvB,QAAQ,EACRC,SAAS,EACTC,cAAe,GAEjBC,MAAO,CACL,CACE3iB,MAAO,CAAEgQ,KAAM,MACfqC,OAAQ,CAAEhE,MAAO,CAAEwL,SAAU,MAC7B+I,eAAW/8B,EACXg9B,aAAa,IAGjB1B,MA5JqC,CACrC,CACE9O,OAAQ,CAAEyQ,MAAO,QAASC,GAAI,GAC9B/iB,MAAO,CAAEgQ,KAAM,MACfzrB,KAAMgtB,EACNsN,UAAW,EACXmE,UAAU,EACVC,WAAW,EACXC,aAAa,EACbL,aAAa,GAEf,CACExQ,OAAQ,CAAEyQ,MAAO,QAASC,GAAI,GAC9B/iB,MAAO,CAAEgQ,KAAM,MACfzrB,KAAMgtB,EACNsN,UAAW,EACXmE,UAAU,EACVC,WAAW,EACXC,aAAa,EACbL,aAAa,KA6IjB,GAA2B,MAAvB54B,EAAK80B,eAAwB,CAC/B,IAAI6D,EAAgD,CAClD,CACEzV,MAAO,cACPnpB,GAAI,yBACJ6J,MAAO,CACLwgB,MAAO,CACLlB,MAAO,OACPgW,WAAY,0BACZtJ,SAAU,OAEZ7J,KAAM,SACNoT,cAAe,SACfL,EAAG,GAEL/6B,MAAOo2B,EAAmBn0B,EAAK80B,gBAC/BlR,MAAO,GAET,CACEV,MAAO,UACPnpB,GAAI,oBACJ6J,MAAO,CACLi1B,MAAO,QACPO,SAAU,EACVhV,MAAO,CACLlB,MAAO,OACPgW,WAAY,0BACZtJ,SAAU,OAEZ7J,KAAM,WACN+S,GAAI,GAEN/6B,MAAOo2B,EAAmBn0B,EAAK80B,gBAC/BlR,MAAO,IAIV5e,EAAQ0zB,MAAoC,GAAGC,UAAYA,EAE9D9F,EAAW7tB,KACV,CACD+sB,EACAQ,EACAloB,EACAmoB,EACAI,EACAtL,EACAwL,EACA/0B,IAGFk0B,8BAAoBnc,GAAK,iBAAO,CAC9BujB,QAAS,WAEiB,MAApBtH,EAAS7c,SAEX6c,EAAS7c,QAAQid,cAQrB,sBAAKhxB,UAAU,kDAAf,UACGsxB,GACC,qBAAKtxB,UAAU,uDAAf,SACE,qBAAKA,UAAU,mCAAf,SAmBE,cAACkV,GAAA,EAAKijB,MAAN,CACE7c,QAAmB,gBAAV6K,EACThtB,KAAK,WACLsJ,MAAM,YACN7J,GAAG,mBACH4b,SAAU,SAAC/C,GAAD,OACRA,EAAMC,OAAO4J,QACTkW,EAAS,eACTA,EAAS,iBAMvB,qBAAKxxB,UAAU,mFAAf,SACE,cAACwwB,GAAD,CACExwB,UAAU,QACV2U,IAAKic,EACL/sB,QAASA,EACT8sB,kBAAmBA,YC78BzByH,GAAiB,SAACv5B,GAA2C,IAAhCw5B,EAA+B,wDAC5DA,EAEFx5B,EAAKm1B,MAAK,SAAU30B,EAAQ40B,GAI1B,OAAI50B,EAAC,KAAa40B,EAAC,KACV,EAGL50B,EAAC,KAAa40B,EAAC,MAIf50B,EAAC,OAAa40B,EAAC,QAHT,EAON50B,EAAC,OAAa40B,EAAC,OACV,EAGF,KAGTp1B,EAAKm1B,MAAK,SAAU30B,EAAQ40B,GAI1B,OAAI50B,EAAC,OAAa40B,EAAC,QACT,EAGN50B,EAAC,OAAa40B,EAAC,OACV,EAGF,MAKPqE,GAAiB,SACrB3/B,EACA4/B,GAEI,IAEAn1B,EAHJi1B,EACG,wDACCx5B,EAAO,GAGX,IAAK,IAAIjG,KAAMD,EACbyK,EAAOzK,EAAQC,GACfiG,EAAK6E,KAAK,CACR80B,YAAap1B,EAAI,YACjBxK,GAAIA,EACJ4U,KAAMpK,EAAI,IACVjK,KAAMo/B,EACNjrB,OAAQlK,EAAI,SAMhB,OAFAg1B,GAAev5B,EAAMw5B,GAEdx5B,G,oBCtGI45B,GAAiB,SAAC,GAGH,IAFxBC,EAEuB,EAFvBA,iBACAC,EACuB,EADvBA,qBAEA,OACI,eAACC,GAAA,EAAD,CACI54B,UAAU,wBACV64B,UAAU,EACV3Q,KAAK,KACLmL,MAAOsF,EACPG,YAAY,EACZC,OAAQ,kBAAM,GANlB,UAQI,cAACH,GAAA,EAAM3e,OAAP,CAAc+e,aAAa,EAA3B,SACI,cAACJ,GAAA,EAAMK,MAAP,2BAEJ,cAACL,GAAA,EAAMpJ,KAAP,UACI,qBAAKxvB,UAAU,gBAAf,SACI,cAAC,GAAD,QAGR,cAAC44B,GAAA,EAAMznB,OAAP,UACI,eAACjR,EAAA,EAAD,CAAKF,UAAU,QAAf,UACI,eAACG,EAAA,EAAD,CAAKH,UAAU,wBAAf,qOAI2D,IACvD,cAAC,IAAD,CACIA,UAAU,uBACVkR,GAAG,WACHQ,OAAO,SAHX,+BAQJ,cAACvR,EAAA,EAAD,CAAKH,UAAU,mBAAf,SACI,cAAC6W,GAAA,EAAD,CACIqR,KAAK,KACLlO,QAAQ,UACRnF,QAAS6jB,EAHb,gCC1CXQ,GAAgB,WACzB,MAA0B36B,IAAlBR,EAAR,EAAQA,QAASV,EAAjB,EAAiBA,KACjB,EAA6B87B,aAAW,CAAC,eAAzC,mBAAOC,EAAP,KAAgBC,EAAhB,KACMC,EAAmC,SAAvBF,EAAQjxB,WAC1B,EACIvN,mBAAkB0+B,GADtB,mBAAOX,EAAP,KAA6BY,EAA7B,KAGIx7B,GAAWV,IAASs7B,GACpBY,GAAsB,GAQ1B,OACI,cAAC,GAAD,CACIb,iBAPiB,WACrBW,EAAU,aAAc,OAAQ,CAAEG,KAAM,MACxCD,GAAsB,IAMlBZ,qBAAsBA,KCT3B,SAASc,GAAT,GAO0B,IAN/BzH,EAM8B,EAN9BA,UACAp2B,EAK8B,EAL9BA,KACAq2B,EAI8B,EAJ9BA,UACAC,EAG8B,EAH9BA,eACAwH,EAE8B,EAF9BA,SACAC,EAC8B,EAD9BA,aAEM/8B,EAAQ,CACZhB,KAAMA,EACNg+B,KAAMF,EACN1H,UAAWA,EACXt5B,SAAU,CACRs5B,UAAW,CACTnzB,KAAM,CAACmzB,IAETC,UAAWA,EACXC,eAAgBA,IAIpB,OACE,qBACElyB,UAAU,+BACV6U,QAAS,kBAAM8kB,EAAa,UAF9B,SAIE,cAACxI,GAAD,CACEC,gBAAgB,EAChBC,eAAe,EACfC,SAAS,EACTX,mBAAmB,EACnB/zB,MAAOA,M,cClCFi9B,GAA8B,SAAC,GAEH,IADvCC,EACsC,EADtCA,kBAEM5wB,EAAYygB,KACZoQ,EAAqBrhB,mBACzB,kBAAM,IAAI6T,GAAKuN,KACf,CAACA,IAEK3nB,EAAkBC,eAAlBD,EACF6nB,EAAc,CAClBC,cAAe9nB,EAAE,aACjB+nB,eAAgB/nB,EAAE,aAClBgoB,gBAAiBhoB,EAAE,eAGjBioB,EAAkB,aAChBC,EAAoBN,EAAmB9/B,IAAI,sBAAuB,KACxE,GAAIogC,EAAmB,CACrB,IAAMC,EAAat5B,OAAOC,KAAKo5B,GAC5BllB,KAAI,SAAC/R,GAAD,OAAU+c,SAAS/c,MACvB4wB,MAAK,SAAC30B,EAAG40B,GAAJ,OAAW50B,EAAI40B,EAAI,GAAK,KAE1BsG,EAAeD,EAAW,GAC1BE,EAAeF,EAAWA,EAAW72B,OAAS,GAEpD,GAAI82B,GAAgBC,GAAgBD,IAAiBC,EAAc,CACjE,IAAMC,EAAwBvxB,EAAUof,OAAO,OAAQ,CACrDzkB,QAAS,CACPvK,OAAQ,CAAC,KACTkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAO29B,EACPpW,YAAa,OAETuW,EAAwBxxB,EAAUof,OAAO,OAAQ,CACrDzkB,QAAS,CACPvK,OAAQ,CAAC,KACTkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAO49B,EACPrW,YAAa,OAEfiW,EAAe,UAAMK,EAAN,YAA+BC,EAA/B,8BAInB,OACE,qBAAK16B,UAAU,4BAAf,SACE,eAACE,EAAA,EAAD,CAAKF,UAAU,MAAf,UACE,cAACG,EAAA,EAAD,CACEH,UAAU,mCACV26B,IAAK,EACLC,GAAI,EACJx6B,GAAI,GAJN,SAME,eAACy6B,GAAA,EAAD,CAAO76B,UAAU,6BAAjB,UACE,qCACE,qBAAKA,UAAU,kEACf,qBAAKA,UAAU,qEACf,qBAAKA,UAAU,sEACf,qBAAKA,UAAU,0EAEjB,gCACE,+BACE,6BACE,0CAEF,6BAAKg6B,EAAYC,gBACjB,6BAAKD,EAAYE,iBACjB,6BAAKF,EAAYG,uBAGrB,kCACE,+BACE,oBACElX,MAAO,CACL6X,SAAU,WACV1tB,IAAK,OAEP2tB,wBAAyB,CACvBC,OAAQZ,KAGZ,oBACEW,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,eAAgB,KAC9CkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,eAAgB,KAC9CkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPuhB,QAAS,WACTE,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,eAAgB,KAC9CkqB,YAAa,aAKrB,+BACE,4CACA,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IACxB,0BACA,KAEFkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IACxB,0BACA,KAEFkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPuhB,QAAS,WACTE,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IACxB,0BACA,KAEFkqB,YAAa,aAKrB,+BACE,gDACA,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,iBAAkB,KAChDkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,iBAAkB,KAChDkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPuhB,QAAS,WACTE,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,iBAAkB,KAChDkqB,YAAa,qBAQ3B,cAAChkB,EAAA,EAAD,CACEH,UAAU,mCACV26B,IAAK,EACLC,GAAI,EACJx6B,GAAI,GAJN,SAME,eAACy6B,GAAA,EAAD,CAAO76B,UAAU,6BAAjB,UACE,qCACE,qBAAKA,UAAU,kEACf,qBAAKA,UAAU,qEACf,qBAAKA,UAAU,sEACf,qBAAKA,UAAU,0EAEjB,gCACE,+BACE,6BACE,wCAEF,6BAAKg6B,EAAYC,gBACjB,6BAAKD,EAAYE,iBACjB,6BAAKF,EAAYG,uBAGrB,kCACE,+BACE,6BACE,sBAAMvlB,MAAM,8BAAZ,gCAIF,oBACEmmB,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,sBAAuB,KACrDkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,sBAAuB,KACrDkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPuhB,QAAS,WACTE,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,sBAAuB,KACrDkqB,YAAa,aAKrB,+BACE,6BACE,sBAAMvP,MAAM,6BAAZ,0CAIF,oBACEmmB,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPwgB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,cAAe,KAC7CkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPwgB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,cAAe,KAC7CkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPuhB,QAAS,WACTf,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,cAAe,KAC7CkqB,YAAa,aAKrB,+BACE,qDACA,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IACxB,yBACA,KAEFkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IACxB,yBACA,KAEFkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPuhB,QAAS,WACTE,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IACxB,yBACA,KAEFkqB,YAAa,qBAQ3B,cAAChkB,EAAA,EAAD,CACEH,UAAU,mCACV26B,IAAK,EACLC,GAAI,EACJx6B,GAAI,GAJN,SAME,eAACy6B,GAAA,EAAD,CAAO76B,UAAU,6BAAjB,UACE,qCACE,qBAAKA,UAAU,kEACf,qBAAKA,UAAU,qEACf,qBAAKA,UAAU,sEACf,qBAAKA,UAAU,0EAEjB,gCACE,+BACE,6BACE,8CAEF,6BAAKg6B,EAAYC,gBACjB,6BAAKD,EAAYE,iBACjB,6BAAKF,EAAYG,uBAGrB,kCACE,+BACE,8CACA,oBACEY,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPugB,SAAU,EACV7B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,SAAU,KACxCkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPugB,SAAU,EACV7B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,SAAU,KACxCkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPuhB,QAAS,WACThB,SAAU,EACVkB,iBAAiB,EACjB/C,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,SAAU,KACxCkqB,YAAa,aAKrB,+BACE,gDACA,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPugB,SAAU,EACV7B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,WAAY,KAC1CkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPugB,SAAU,EACV7B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,WAAY,KAC1CkqB,YAAa,UAInB,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPuhB,QAAS,WACThB,SAAU,EACVkB,iBAAiB,EACjB/C,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,WAAY,KAC1CkqB,YAAa,aAKrB,+BACE,0CACA,oBACE4W,wBAAyB,CACvBC,OAAQ9xB,EAAUof,OAAO,SAAU,CACjCzkB,QAAS,CACPwgB,cAAc,EACdiB,iBAAiB,EACjB/C,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm9B,EAAmB9/B,IAAI,sBAAuB,KACrDkqB,YAAa,UAInB,mCACA,oD,UCjnBH8W,GAAO,SAAC,GAMH,IALdnjB,EAKa,EALbA,SACA9X,EAIa,EAJbA,UACAwF,EAGa,EAHbA,QACA3B,EAEa,EAFbA,QAEa,IADbhF,YACa,MADN,GACM,EACPqK,EAAYygB,KACZuR,EAAUpnB,iBAAuB,MACjCqnB,EAAkBrnB,iBAAyB,MAE3CsnB,EAAkB1iB,mBACpB,kBACIlT,EAAQ2P,KAAsB,SAAC9R,GAAD,oBAC1Bg4B,OAAQ,SACRnyB,UAAW,SAAUoyB,EAAMC,EAAiBC,GAAa,IAAD,IACpD,OAAOtyB,EAAUR,MAAM4yB,EAAKpf,WAAY,QAAjC,2BACAof,EAAKG,WADL,IAEHtiC,KAAI,oBAAGmiC,EAAKG,iBAAR,aAAE,EAAyBtiC,YAA3B,QAAmC,aAG5CkK,QAEX,CAACmC,EAAS0D,IAuEd,OApEA5Q,qBAAU,WAGF,IAAIojC,EADR,GAAuB,MAAnBR,EAAQnnB,QAKR,GAHIlQ,IACA63B,EAAcr7B,EAAmBwD,IAEN,MAA3Bs3B,EAAgBpnB,QAAiB,CACjC,IAAM4nB,EAAkB,IAAIC,KAAUV,EAAQnnB,QAAtB,aACpB8nB,sBAAuB,SACvBr2B,QAAS41B,EACTv8B,KAAMA,EACNi9B,iBAAkB,IAElBC,OAAQ,aACRC,cAAe,SACfC,YAAY,GACTP,IAEH5jB,GACAA,EAAS6jB,GAEbR,EAAgBpnB,QAAU4nB,OAG1B,GADAR,EAAgBpnB,QAAQmoB,WAAWd,GACZ,MAAnBA,GAA2BA,EAAgB33B,OAAS,EAEpD,GADA03B,EAAgBpnB,QAAQooB,YAEL,MAAfT,GAC2B,MAA3BA,EAAYU,YAEZjB,EAAgBpnB,QAAQsoB,QACpBX,EAAYU,iBAEb,CAEH,IAAM/4B,EAAS+3B,EAAgB,GAAG11B,MACpB,MAAVrC,GACA83B,EAAgBpnB,QAAQsoB,QAAQh5B,EAAQ,UAM7D,CAACyU,EAAUjZ,EAAMu8B,EAAiBv3B,IAErCvL,qBAAU,WACN,OAAO,WACH,GAA+B,MAA3B6iC,EAAgBpnB,QAAiB,CACjC,IACIonB,EAAgBpnB,QAAQuoB,UAC1B,MAAOC,GAIL5+B,QAAQoB,MAAM,gCAAiCw9B,GAEnDpB,EAAgBpnB,QAAU,SAGnC,IAEHzb,qBAAU,WAC0B,OAA5B6iC,EAAgBpnB,SAChBonB,EAAgBpnB,QAAQyoB,YAAY39B,KAEzC,CAACA,IAGA,qBACImB,UAAS,iBAAKA,QAAL,IAAKA,IAAa,gCAC3B2U,IAAKumB,KC7FJuB,GAAoC,SAAC,GAIH,IAH7CC,EAG4C,EAH5CA,gBACA5kB,EAE4C,EAF5CA,SAGM5O,GADsC,EAD5CtN,KAEkB+tB,MACVxX,EAAkBC,eAAlBD,EAEF3M,EAA8BkT,mBAAQ,WAC1C,IAAMikB,EAAiC,SACrCrB,EACAC,EACAC,GAEA,OAAOtyB,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPwgB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,CACX7B,uBAAwB,MAKxBua,EAAwC,SAC5CvB,EACAC,EACAC,GAEA,OAAOtyB,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPuhB,QAAS,WACTf,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,CACX7B,uBAAwB,MA2B9B,MAAO,CACL,CACEwa,SAAU,QACVC,UAAW,SACXr3B,MAAO,YACPkP,MAAOzC,EAAE,QACTjJ,UAAW,SAACoyB,EAAMC,EAAiBC,GACjC,IAAM5+B,EAAQ0+B,EAAKsB,WACnB,MAAc,eAAVhgC,EACKA,EACY,YAAVA,EACF,UAGFsM,EAAUof,OAAO,OAAQ,CAC9BzkB,QAAS,CACPvK,OAAQ,CAAC,IAAK,KACdkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAOujB,SAASvjB,GAChBunB,YAAa,SAInB,CAEEvP,MAAO,sBACPpP,QAAS,CACP,CACEs3B,SAAU,QACVp3B,MAAO,sBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,uBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,mBACPkP,MAAOzC,EAAE,eACTjJ,UAxE6C,SACnDoyB,EACAC,EACAC,GAEA,IAAM38B,EAAYy8B,EAAKG,UACvB,OAAOvyB,EAAUof,OAAO,MAAO,CAC7BzkB,QAAS,CACPuhB,QAAS,WACTf,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,CACX7B,uBAAwBzjB,EAAKm+B,iCA0DjC,CAEEpoB,MAAO,eACPpP,QAAS,CACP,CACEs3B,SAAU,QACVp3B,MAAO,sBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,uBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,mBACPkP,MAAOzC,EAAE,eACTjJ,UAAW2zB,KAIjB,CAEEjoB,MAAO,wBACPpP,QAAS,CACP,CACEs3B,SAAU,QACVp3B,MAAO,qBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,sBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,kBACPkP,MAAOzC,EAAE,eACTjJ,UAAW2zB,QAKlB,CAAC3zB,EAAWiJ,IAETtO,EAAmB6U,mBAAQ,WAC/B,MAAO,CACLqjB,OAAQ,gBAET,IAEH,OAAuB,MAAnBW,EACK,iDAIP,qBAAK18B,UAAU,OAAf,SACE,cAAC,GAAD,CACEA,UAAU,eACVwF,QAASA,EACT3G,KAAM69B,EACN5kB,SAAUA,EACVjU,QAASA,OCpMJo5B,GAAsC,SAAC,GAIH,IAH/CP,EAG8C,EAH9CA,gBACA5kB,EAE8C,EAF9CA,SAGM5O,GADwC,EAD9CtN,KAEkB+tB,MACVxX,EAAkBC,eAAlBD,EAEF3M,EAA8BkT,mBAAQ,WAC1C,IAAMikB,EAAiC,SACrCrB,EACAC,EACAC,GAEA,OAAOtyB,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPwgB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,CACX7B,uBAAwB,MAKxBua,EAAwC,SAC5CvB,EACAC,EACAC,GAEA,OAAOtyB,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPuhB,QAAS,WACTf,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,CACX7B,uBAAwB,MA4B9B,MAAO,CACL,CACEwa,SAAU,QACVC,UAAW,SACXr3B,MAAO,YACPkP,MAAOzC,EAAE,QACTjJ,UAAW,SAACoyB,EAAMC,EAAiBC,GACjC,IAAM5+B,EAAQ0+B,EAAKsB,WACnB,GAAc,eAAVhgC,EACF,OAAOA,EACF,GAAc,YAAVA,EACT,MAAO,UAET,IAcI+K,EAdgBuB,EAAUof,OAAO,OAAQ,CAC3CzkB,QAAS,CACPvK,OAAQ,CAAC,IAAK,KACdkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAOujB,SAASvjB,GAChBunB,YAAa,OAEUvc,MAAM,KAE3B0X,EAAO,IAAI3f,KACbA,KAAKu9B,IAAI/c,SAASxY,EAAO,IAAKwY,SAASxY,EAAO,IAAM,EAAG,IAErDw1B,EAAU,GACd,OAAQx1B,EAAO,IACb,IAAK,KACL,IAAK,KACL,IAAK,KACHw1B,EAAU,KACV,MAEF,IAAK,KACL,IAAK,KACL,IAAK,KACHA,EAAU,KACV,MAEF,IAAK,KACL,IAAK,KACL,IAAK,KACHA,EAAU,KACV,MAEF,IAAK,KACL,IAAK,KACL,IAAK,KACHA,EAAU,KAId,OACEA,EACA,IACAj0B,EAAUof,OAAO,OAAQ,CACvBzkB,QAAS,CACPvK,OAAQ,CAAC,KACTkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAO0iB,EAAK1f,UACZukB,YAAa,SAKrB,CAEEvP,MAAO,wBACPpP,QAAS,CACP,CACEs3B,SAAU,QACVp3B,MAAO,sBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,uBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,mBACPkP,MAAOzC,EAAE,eACTjJ,UA1H6C,SACnDoyB,EACAC,EACAC,GAEA,IAAM38B,EAAYy8B,EAAKG,UACvB,OAAOvyB,EAAUof,OAAO,MAAO,CAC7BzkB,QAAS,CACPuhB,QAAS,WACTf,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,CACX7B,uBAAwBzjB,EAAKm+B,iCA4GjC,CAEEpoB,MAAO,eACPpP,QAAS,CACP,CACEs3B,SAAU,QACVp3B,MAAO,sBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,uBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,mBACPkP,MAAOzC,EAAE,eACTjJ,UAAW2zB,KAIjB,CAEEjoB,MAAO,0BACPpP,QAAS,CACP,CACEs3B,SAAU,QACVp3B,MAAO,qBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,sBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,kBACPkP,MAAOzC,EAAE,eACTjJ,UAAW2zB,QAKlB,CAAC3zB,EAAWiJ,IAETtO,EAAmB6U,mBAAQ,WAC/B,MAAO,CACLqjB,OAAQ,gBAET,IAEH,OAAuB,MAAnBW,EACK,iDAIP,qBAAK18B,UAAU,OAAf,SACE,cAAC,GAAD,CACEA,UAAU,eACVwF,QAASA,EACT3G,KAAM69B,EACN5kB,SAAUA,EACVjU,QAASA,OCtPJu5B,GAAmC,SAAC,GAIH,IAH5CV,EAG2C,EAH3CA,gBACA5kB,EAE2C,EAF3CA,SAGM5O,GADqC,EAD3CtN,KAEkB+tB,MACVxX,EAAkBC,eAAlBD,EAEF3M,EAA8BkT,mBAAQ,WAC1C,IAAMikB,EAAiC,SACrCrB,EACAC,EACAC,GAEA,OAAOtyB,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPwgB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,CACX7B,uBAAwB,MAKxBua,EAAwC,SAC5CvB,EACAC,EACAC,GAEA,OAAOtyB,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPuhB,QAAS,WACTf,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,CACX7B,uBAAwB,MA4B9B,MAAO,CACL,CACEwa,SAAU,QACVC,UAAW,SACXr3B,MAAO,YACPkP,MAAOzC,EAAE,QACTjJ,UAAW,SAACoyB,EAAMC,EAAiBC,GACjC,IAAM5+B,EAAQ0+B,EAAKsB,WACnB,MAAc,eAAVhgC,EACKA,EACY,YAAVA,EACF,UAEFsM,EAAUof,OAAO,OAAQ,CAC9BzkB,QAAS,CACPvK,OAAQ,CAAC,KACTkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,KACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAOujB,SAASvjB,GAChBunB,YAAa,SAInB,CAEEvP,MAAO,qBACPpP,QAAS,CACP,CACEs3B,SAAU,QACVp3B,MAAO,sBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,uBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,mBACPkP,MAAOzC,EAAE,eACTjJ,UAxE6C,SACnDoyB,EACAC,EACAC,GAEA,IAAM38B,EAAYy8B,EAAKG,UACvB,OAAOvyB,EAAUof,OAAO,MAAO,CAC7BzkB,QAAS,CACPuhB,QAAS,WACTf,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,CACX7B,uBAAwBzjB,EAAKm+B,iCA0DjC,CAEEpoB,MAAO,eACPpP,QAAS,CACP,CACEs3B,SAAU,QACVp3B,MAAO,sBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,uBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,mBACPkP,MAAOzC,EAAE,eACTjJ,UAAW2zB,KAIjB,CAEEjoB,MAAO,aACPpP,QAAS,CACP,CACEs3B,SAAU,QACVp3B,MAAO,qBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,sBACPkP,MAAOzC,EAAE,aACTjJ,UAAWyzB,GAEb,CACEG,SAAU,QACVp3B,MAAO,kBACPkP,MAAOzC,EAAE,eACTjJ,UAAW2zB,QAKlB,CAAC3zB,EAAWiJ,IAETtO,EAAmB6U,mBAAQ,WAC/B,MAAO,CACLqjB,OAAQ,gBAET,IAEH,OAAuB,MAAnBW,EACK,iDAIP,qBAAK18B,UAAU,OAAf,SACE,cAAC,GAAD,CACEA,UAAU,eACVwF,QAASA,EACT3G,KAAM69B,EACN5kB,SAAUA,EACVjU,QAASA,OCnLJw5B,GAA6B5M,sBACxC,WAA+D9b,GAAS,IAArEmlB,EAAoE,EAApEA,kBAAmBl+B,EAAiD,EAAjDA,KACd0hC,EAAYxpB,iBAAyB,MACrCypB,EAAazpB,iBAAyB,MACtC0pB,EAAe1pB,iBAAyB,MACxC2Y,EAAY/T,mBAChB,kBAAM,IAAI6T,GAAKuN,KACf,CAACA,IAGG2D,EAA0BvgC,uBAC9B,SAACwgC,GACC,IAAMzT,EAAsB,CAC1B0T,OAAQ,CACNC,KAAM,sBACNC,SAAU,kBACVC,IAAK,uBAEPC,UAAW,CACTH,KAAM,yBACNC,SAAU,qBACVC,IAAK,0BAEPE,QAAS,CACPJ,KAAM,uBACNC,SAAU,mBACVC,IAAK,yBAqCT,MAAO,CACLG,cAlCoBxR,EAAUxyB,IAC9BgwB,EAAeyT,GAAf,KACA,KAiCAQ,cA/BoBzR,EAAUxyB,IAC9BgwB,EAAeyT,GAAf,KACA,KA8BAS,SA5Be1R,EAAUxyB,IAAIgwB,EAAeyT,GAAf,KAAmC,KA6BhEU,kBA3BwB3R,EAAUxyB,IAClCgwB,EAAeyT,GAAf,SACA,KA0BAW,kBAxBwB5R,EAAUxyB,IAClCgwB,EAAeyT,GAAf,SACA,KAuBAY,aArBmB7R,EAAUxyB,IAC7BgwB,EAAeyT,GAAf,SACA,KAoBAa,aAjBmB9R,EAAUxyB,IAC7BgwB,EAAeyT,GAAf,IACA,KAgBAc,aAdmB/R,EAAUxyB,IAC7BgwB,EAAeyT,GAAf,IACA,KAaAe,QAXchS,EAAUxyB,IAAIgwB,EAAeyT,GAAf,IAAkC,QAclE,CAACjR,IAGGiS,EAAkBxhC,uBACtB,SAACwgC,GACC,MAUID,EAAwBC,GAT1BO,EADF,EACEA,cACAC,EAFF,EAEEA,cACAC,EAHF,EAGEA,SACAC,EAJF,EAIEA,kBACAC,EALF,EAKEA,kBACAC,EANF,EAMEA,aACAC,EAPF,EAOEA,aACAC,EARF,EAQEA,aACAC,EATF,EASEA,QAGIE,EAA8C,GAEpD,IAAK,IAAMv9B,KAAO68B,EAChBU,EAAmBj7B,KAAK,CACtBk7B,UAAWx9B,EACXy9B,oBAAqBZ,EAAc78B,GACnC09B,oBAAqBV,EAAkBh9B,GACvC29B,mBAAoBR,EAAan9B,GACjC49B,qBAAsBd,EAAc98B,GACpC69B,qBAAsBZ,EAAkBj9B,GACxC89B,oBAAqBV,EAAap9B,GAClC+9B,iBAAkBhB,EAAS/8B,GAC3Bg+B,iBAAkBd,EAAal9B,GAC/Bi+B,gBAAiBZ,EAAQr9B,GACzBk+B,SAAU,KACVtC,0BAA2B,OAS/B,OT1I+B,SACrCuC,EACAx9B,GAEA,GAAIw9B,EAAc97B,OAAQ,CACxB,IAAI9K,EAAO,aAAO4mC,GACdC,EAAS7mC,EAAQ8K,OACrB9K,EAAUA,EAAQq7B,MAAK,SAAU30B,EAAQ40B,GACvC,IAAIwL,EAAOpgC,EAAIghB,KAAKziB,IAAIyiB,KAAKuC,IAAIvjB,EAAE0C,KAAc1C,EAC7CqgC,EAAOzL,EAAI5T,KAAKziB,IAAIyiB,KAAKuC,IAAIqR,EAAElyB,KAAckyB,EAEjD,OAAIwL,EAAOC,GACD,EAEND,EAAOC,EACF,EAGF,KAUT,IAPA,IAAIC,EAAWtf,KAAK1W,IAAI61B,EAAS,EAAGnf,KAAKC,MAAO,EAAI,GAAMkf,EAAS,KAC/DI,EAAWvf,KAAKC,MAAO,EAAI,GAAMkf,EAAS,IAG1CK,EAFMlnC,EAAQgnC,GAAU59B,GAClBpJ,EAAQinC,GAAU79B,GAExBgI,EAAYsW,KAAKuC,IAAU,IAANid,GAEhBr8B,EAAI,EAAGC,EAAS87B,EAAc97B,OAAQD,EAAIC,EAAQD,IACzD+7B,EAAc/7B,GAAd,0BAAgDuG,EAIpD,OAAOw1B,ESoGkBO,CACjBnB,EACA,sBAKJ,CAAClB,IAGGsC,EAAkBrnB,mBAAQ,WAC9B,OAAOgmB,EAAgB,YACtB,CAACA,IAEEsB,EAAqBtnB,mBAAQ,WACjC,OAAOgmB,EAAgB,eACtB,CAACA,IAEEuB,EAAmBvnB,mBAAQ,WAC/B,OAAOgmB,EAAgB,aACtB,CAACA,IAEJ5N,8BAAoBnc,GAAK,iBAAO,CAC9BujB,QAD8B,WAE5Bpe,YAAW,WAAO,IAAD,MACf,UAAAwjB,EAAUvpB,eAAV,SAAmBwf,QAAO,GAC1B,UAAAgK,EAAWxpB,eAAX,SAAoBwf,QAAO,GAC3B,UAAAiK,EAAazpB,eAAb,SAAsBwf,QAAO,WAgBnC,OACE,qBAAKvzB,UAAU,YAAf,SACE,cAACC,EAAA,EAAD,CAAWmR,OAAK,EAACpR,UAAU,MAA3B,SACE,eAACkgC,GAAA,EAAIjgC,UAAL,CACErH,GAAG,wBACHunC,iBAAiB,SACjBlrB,SAjBa,SAACsa,EAAe9d,GACnCA,EAAM6C,iBACW,WAAbib,EACFzV,YAAW,kCAAMwjB,EAAUvpB,eAAhB,aAAM,EAAmBwf,QAAO,MACrB,YAAbhE,EACTzV,YAAW,kCAAMyjB,EAAWxpB,eAAjB,aAAM,EAAoBwf,QAAO,MACtB,cAAbhE,GACTzV,YAAW,kCAAM0jB,EAAazpB,eAAnB,aAAM,EAAsBwf,QAAO,OAW1C6M,YAAY,EAJd,UAME,sBAAKpgC,UAAU,4BAAf,UACE,oBAAIA,UAAU,YAAd,yBACA,eAACqgC,GAAA,EAAD,CAAKrmB,QAAQ,QAAb,UACE,cAACqmB,GAAA,EAAI/Q,KAAL,UACE,cAAC+Q,GAAA,EAAIC,KAAL,CAAU/Q,SAAS,SAAnB,sBAEF,cAAC8Q,GAAA,EAAI/Q,KAAL,UACE,cAAC+Q,GAAA,EAAIC,KAAL,CAAU/Q,SAAS,UAAnB,uBAEF,cAAC8Q,GAAA,EAAI/Q,KAAL,UACE,cAAC+Q,GAAA,EAAIC,KAAL,CAAU/Q,SAAS,YAAnB,+BAIN,cAACrvB,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,SACE,eAAC8/B,GAAA,EAAIK,QAAL,CAAavgC,UAAU,GAAvB,UACE,cAACkgC,GAAA,EAAIM,KAAL,CAAUjR,SAAS,SAAnB,SACE,cAAC,GAAD,CACEmN,gBAAiBqD,EACjBjoB,SAAU,SAAC2oB,GAAD,OACPnD,EAAUvpB,QAAU0sB,GAEvB7kC,KAAMA,MAIV,cAACskC,GAAA,EAAIM,KAAL,CAAUjR,SAAS,UAAnB,SACE,cAAC,GAAD,CACEmN,gBAAiBuD,EACjBnoB,SAAU,SAAC2oB,GAAD,OACPlD,EAAWxpB,QAAU0sB,GAExB7kC,KAAMA,MAGV,cAACskC,GAAA,EAAIM,KAAL,CAAUjR,SAAS,YAAnB,SACE,cAAC,GAAD,CACEmN,gBAAiBsD,EACjBloB,SAAU,SAAC2oB,GAAD,OACPjD,EAAazpB,QAAU0sB,GAE1B7kC,KAAMA,uBC/N5B,SAAS8kC,GACP7hC,EACA8hC,EACA/rB,EACAgsB,EACAC,EACAC,GA2JA,IAiE2B,EAhErBj9B,EAA8B,CAClCktB,MAAO,CACLmF,YAAa,EACb6K,YAAa,UACb5nC,KAAM,UAERyb,MAAO,CACLgQ,KAAM,GACNoc,UAAU,EACV/d,MAAO,CAAEwL,SAAU,SAOrB6H,QAAS,CAAEpyB,SAAS,GACpBqyB,UAAW,CAAEryB,SAAS,GACtBsyB,OAAQ,CAAEtyB,SAAS,GACnBgzB,QAAS,CACPhuB,UAAW,WAAa,IAAD,QACjBipB,EAAM,6CAAqB1wB,KAAKw/B,cAA1B,iBAAqB,EAAc,UAAnC,aAAqB,EAAkBtJ,SAAvC,QAA4C,GAA5C,eASV,OARA,UAAAl2B,KAAKw/B,cAAL,SAAaC,SAAQ,SAAC99B,GACpB+uB,GAAM,kBACJ/uB,EAAK+9B,MAAM/N,OAAO/2B,KADd,oEAGK,IAAT+G,EAAKg+B,GACL1b,QAAQ,GAJJ,kBAODyM,GAETiF,QAAQ,EACRC,SAAS,GAEXX,YAAa,CAAEtD,OAAQ,CAAE6C,WAAW,EAAOoL,eAAgB,IAC3DtL,MAAO,CACL,CACE9O,OAAQ,CACN/d,UAAW,WACT,OAAiC,IAAxBzH,KAAK7E,OAAwB8oB,QAAQ,GAAK,MAGvD4b,WAAY,EACZC,aAAc,IACdzJ,aAAa,EACb0J,WAAW,EACX5sB,MAAO,CAAEgQ,KAAM,cAAe3B,MAAO,CAAEwL,SAAU,QACjD9kB,IAjDeg3B,EAAbh3B,IAkDFD,IAlDei3B,EAARj3B,IAmDP8tB,UAAW,CAAC,CAAE56B,MAAO,EAAKmlB,MAAO,WAAYU,MAAO,MAGxD8U,MAAO,CAAEqJ,WAAYA,GACrBxN,OAAQ,CACN,CACEv0B,KAAMA,EACNkjB,MAAO,UACP5oB,KAAM,SACNkD,KAAM,eAKS,MAAjBwkC,IACF,UAAAh9B,EAAQuvB,cAAR,SAAgB1vB,KACd,CACE7E,KAAMgiC,EACN9e,MAAO,UACP5oB,KAAM,SACNkD,KAAM,aAER,CACEwC,KAAMiiC,EACN/e,MAAO,UACP5oB,KAAM,SACNkD,KAAM,gBAKZ,OAAOwH,EAGF,SAAS49B,GAAT,GAEkC,IADvC3H,EACsC,EADtCA,kBAEM4H,EAAiB5tB,iBAAO,MAG9B,EAA0ClZ,qBAA1C,mBAAO+mC,EAAP,KAAsBC,EAAtB,KAGM7H,EAAqBrhB,mBACzB,kBAAM,IAAI6T,GAAKuN,KACf,CAACA,IAEG5wB,EAAYygB,KACZoW,EAAkBrnB,mBACtB,iBAAO,CACLmU,EAAGkN,EAAmB9/B,IAAI,sBAAuB,KACjD6R,EAAGiuB,EAAmB9/B,IAAI,sBAAuB,KACjD+R,EAAG+tB,EAAmB9/B,IAAI,sBAAuB,QAEnD,CAAC8/B,IAyDH,OAtDAzhC,qBAAU,WAAO,IAAD,EAMVupC,EACAC,EACAC,EAGAnB,EACAoB,EAEJpB,EAAU,aACL5/B,OAAOC,KAAK8+B,EAAe,GAAO5qB,KAAI,SAAC/R,GAAD,OACvC8F,EAAUof,OAAO,OAAQ,CACvBzkB,QAAS,CACPvK,OAAQ,CAAC,KACTkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAOwG,EACP+gB,YAAa,WAInB0d,EAAK,aAAO7gC,OAAO6R,OAAOktB,EAAe,IAEzCiC,EAC0B,MAAxBjC,EAAe,GAC6B,OAA5C,UAAA/+B,OAAO6R,OAAOktB,EAAe,UAA7B,eAAsC,IAExC+B,EAAK,aAAO9gC,OAAO6R,OAAOktB,EAAe,IACzCgC,EAAK,aAAO/gC,OAAO6R,OAAOktB,EAAe,IAKzC,IAAMY,EAAsB,CAAEh3B,IAHxB0W,KAAK1W,IAAI0W,KAAK1W,IAAL,MAAA0W,KAAI,aAAQwhB,IAAQxhB,KAAK1W,IAAL,MAAA0W,KAAI,aAAQyhB,IAAQzhB,KAAK1W,IAAL,MAAA0W,KAAI,aAAQ0hB,KAGhCr4B,IAF7B2W,KAAK3W,IAAI2W,KAAK3W,IAAL,MAAA2W,KAAI,aAAQwhB,IAAQxhB,KAAK3W,IAAL,MAAA2W,KAAI,aAAQyhB,IAAQzhB,KAAK3W,IAAL,MAAA2W,KAAI,aAAQ0hB,MAIjEH,EADEI,EAEAtB,GAAemB,EAAOlB,EAAQ,EAAaC,EAAYkB,EAAOC,GAG/CrB,GAAemB,EAAOlB,EAAQ,EAAaC,MAE7D,CAAC13B,EAAW62B,IAGI,MAAjB4B,EAKO,6BAIP,8BACE,qBAAK3hC,UAAU,iCAAf,SACE,qBAAKA,UAAU,oCAAf,SACE,qBAAKA,UAAU,QAAf,SACE,cAAC,KAAD,CACE2U,IAAK+sB,EACL1hC,UAAU,QACV6D,QAAS89B,EACT1Q,WAAYC,eC1VnB,SAAS+Q,GAAT,GAGyC,IAF9CC,EAE6C,EAF7CA,kBACApI,EAC6C,EAD7CA,kBAEM5wB,EAAYygB,KACVwY,EAAS/vB,eAAT+vB,KACF1V,EAAY/T,mBAChB,kBAAM,IAAI6T,GAAKuN,KACf,CAACA,IAGGsI,EAAoB,SAACxlC,GACzB,OAAOsM,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,QAIXke,EAAyB,SAACzlC,GAC9B,OAAOsM,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPuhB,QAAS,WACTE,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,QAIbme,EAA6B,KAkBjC,OAjByB,MAArBJ,IACFI,EAA6Bp5B,EAAUof,OAAO,OAAQ,CACpDzkB,QAAS,CACPvK,OAA0B,UAAlB6oC,EAAKI,SAAuB,CAAC,IAAK,IAAK,KAAO,CAAC,IAAK,IAAK,KACjE/e,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAOslC,EACP/d,YAAa,QAKf,sBAAKnkB,UAAU,OAAf,UACE,oDAAuBsiC,KACvB,uBAAOtiC,UAAU,gBAAjB,SACE,kCACE,+BACE,uBAGA,yCACA,0CACA,0CACA,wCACA,0CACA,0CACA,0CACA,8CAEF,+BACE,2CAWA,6BACGoiC,EAAkB3V,EAAUxyB,IAAI,oBAAqB,QAExD,6BACGmoC,EAAkB3V,EAAUxyB,IAAI,sBAAuB,QAE1D,6BACGmoC,EAAkB3V,EAAUxyB,IAAI,oBAAqB,QAExD,6BAAKmoC,EAAkB3V,EAAUxyB,IAAI,kBAAmB,QACxD,6BACGmoC,EACC3V,EAAUxyB,IAAI,8BAA+B,QAGjD,6BACGmoC,EACC3V,EAAUxyB,IAAI,gCAAiC,QAGnD,6BACGmoC,EACC3V,EAAUxyB,IAAI,+BAAgC,QAGlD,6BACGmoC,EACC3V,EAAUxyB,IAAI,8BAA+B,WAKnD,+BACE,2CASA,6BACGmoC,EAAkB3V,EAAUxyB,IAAI,oBAAqB,QAExD,6BACGmoC,EAAkB3V,EAAUxyB,IAAI,sBAAuB,QAE1D,6BACGmoC,EAAkB3V,EAAUxyB,IAAI,oBAAqB,QAExD,6BAAKmoC,EAAkB3V,EAAUxyB,IAAI,kBAAmB,QACxD,6BACGmoC,EACC3V,EAAUxyB,IAAI,8BAA+B,QAGjD,6BACGmoC,EACC3V,EAAUxyB,IAAI,gCAAiC,QAGnD,6BACGmoC,EACC3V,EAAUxyB,IAAI,+BAAgC,QAGlD,6BACGmoC,EACC3V,EAAUxyB,IAAI,8BAA+B,WAKnD,+BACE,4CAaA,oBACE8gC,wBAAyB,CACvBC,OAAQqH,EACN5V,EAAUxyB,IAAI,oBAAqB,SAIzC,oBACE8gC,wBAAyB,CACvBC,OAAQqH,EACN5V,EAAUxyB,IAAI,sBAAuB,SAI3C,oBACE8gC,wBAAyB,CACvBC,OAAQqH,EACN5V,EAAUxyB,IAAI,oBAAqB,SAIzC,oBACE8gC,wBAAyB,CACvBC,OAAQqH,EACN5V,EAAUxyB,IAAI,kBAAmB,SAIvC,oBACE8gC,wBAAyB,CACvBC,OAAQqH,EACN5V,EAAUxyB,IAAI,8BAA+B,SAInD,oBACE8gC,wBAAyB,CACvBC,OAAQqH,EACN5V,EAAUxyB,IAAI,gCAAiC,SAIrD,oBACE8gC,wBAAyB,CACvBC,OAAQqH,EACN5V,EAAUxyB,IAAI,+BAAgC,SAIpD,6BACGmoC,EACC3V,EAAUxyB,IAAI,8BAA+B,gBAMvD,qBAAK+F,UAAU,+BAAf,yCCxOC,IAAMwiC,GAAyB/R,sBACpC,WAAyD9b,GAAS,IAA/D7R,EAA8D,EAA9DA,QAAS62B,EAAqD,EAArDA,aACJuB,EAAepnB,mBACrBgd,8BAAoBnc,GAAK,iBAAO,CAC9BujB,QAD8B,WACnB,IAAD,EACR,UAAAgD,EAAQnnB,eAAR,SAAiBmkB,eAIrB,IAAMhvB,EAAYygB,KAMd8Y,EAAa,GACXpI,EALqB3hB,mBAAQ,WACjC,OAAO,IAAI6T,GAAKzpB,EAAQg3B,qBACvB,CAACh3B,EAAQg3B,oBAGiC7/B,IAC3C,sBACA,KAEF,GAAIogC,EAAmB,CACrB,IAAMC,EAAat5B,OAAOC,KAAKo5B,GAC5BllB,KAAI,SAAC/R,GAAD,OAAU+c,SAAS/c,MACvB4wB,MAAK,SAAC30B,EAAG40B,GAAJ,OAAW50B,EAAI40B,EAAI,GAAK,KAE1BsG,EAAeD,EAAW,GAC1BE,EAAeF,EAAWA,EAAW72B,OAAS,GAEpD,GAAI82B,GAAgBC,GAAgBD,IAAiBC,EAAc,CACjE,IAAMC,EAAwBvxB,EAAUof,OAAO,OAAQ,CACrDzkB,QAAS,CACPvK,OAAQ,CAAC,KACTkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAO29B,EACPpW,YAAa,OAETuW,EAAwBxxB,EAAUof,OAAO,OAAQ,CACrDzkB,QAAS,CACPvK,OAAQ,CAAC,KACTkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAO49B,EACPrW,YAAa,OAEfse,EAAU,UAAMhI,EAAN,YAA+BC,IAI7C,OACE,sBAAK16B,UAAU,YAAf,UACE,qBAAKA,UAAU,0BAAf,SACE,cAACC,EAAA,EAAD,CAAWmR,OAAK,EAACpR,UAAU,MAA3B,SACE,cAACE,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,SACE,cAAC,GAAD,eAAiC0C,YAKzC,sBAAK9C,UAAU,mCAAf,UACE,sBAAKA,UAAU,gCAAf,UACE,sBAAKA,UAAU,uCAAf,UACE,kDACA,cAACy5B,GAAD,2BACM32B,GADN,IAEE62B,aAAcA,KAEhB,cAACsI,GAAD,eAA2Cn/B,OAE7C,sBAAK9C,UAAU,uCAAf,UACE,8CAAiByiC,KACjB,cAAChB,GAAD,eAAoC3+B,UAGxC,qBAAK9C,UAAU,+CAEjB,qBAAKA,UAAU,8BAAf,SACE,cAACq9B,GAAD,aAA4B1oB,IAAKumB,GAAap4B,Y,SCtG3C4/B,GAAgB,WACzB,IAAQxyB,EAAgBc,IAAhBd,YAER,EAAqBtV,oBAAc,WAC/B,OAAO,IAAI2G,EAAW,CAClBC,WAAY0O,EAAY1O,gBAIhC,OANA,qBCWEmhC,GAAS,kBACbpqC,OAAO0C,WAAc1C,OAAO0C,UAAkB2nC,kBAE1CC,GAAe,WAGnB,MAFW,CAAC,IAAK,KACWC,iBACJ,IAMpBC,GAAQ,SACZC,EACAxjC,EACAikB,EACAwf,GAMA,OAJezjC,EAAO,CACjBA,EAAQ2V,KAAI,SAAC+tB,GAAD,OAAiBA,EAAOzgC,UADnB,oBAC8BugC,IAChDA,GAGDlwB,QAAO,SAAC4E,GAAD,OAAOA,KACdvC,KAAI,SAACguB,GAAD,OACHA,EACGhuB,KAAI,SAACiuB,GAAD,OAjBU,SAACA,GAAD,MACF,qBAAZA,GAAuC,OAAZA,EAAmB,GAAKA,EAgB7BC,CAAeD,MACrCjuB,KACC,SAAC9R,GAAD,gBAAoB4/B,GAApB,OAAyC5/B,GAAzC,OAAkD4/B,MAEnDl7B,KAAK0b,MAET1b,KAVI,OAsDHu7B,GAAkB,SACtBC,EACAvlC,EACAwlC,GAEA,IAAKxlC,EACH,MAAO,IAGT,GAAI2kC,KACF,MAAO,IAGT,IAAMc,EAAMlrC,OAAOkrC,KAAOlrC,OAAOmrC,UAC3BvqC,EA5FN,iCAAiCoZ,KAAKtX,UAAUC,WA4FtB,kBAAoB,WAC9C,GAAmC,qBAAxBuoC,EAAIE,gBACb,MAAM,QAAN,OAAexqC,EAAf,0BAAqCqqC,EAAQ,SAAW,IAAxD,OAA6DD,GAE7D,IAAMK,EAAO,IAAIC,KAAK,CAACL,EAAQ,SAAW,GAAID,GAAM,CAAEpqC,SACtD,OAAOsqC,EAAIE,gBAAgBC,IAIlBE,GAAc,SAAC,GAOH,IANvBC,EAMsB,EANtBA,SACAllC,EAKsB,EALtBA,KACAW,EAIsB,EAJtBA,QACAwkC,EAGsB,EAHtBA,UACApvB,EAEsB,EAFtBA,MAEsB,IADtB4uB,aACsB,SACtB,EAAsB5oC,mBAAiB,IAAvC,mBAAO2oC,EAAP,KAAYU,EAAZ,KACA,EAAwBrpC,mBAAiB,KAAzC,mBAAOyzB,EAAP,KAAa6V,EAAb,KACMh7B,EAAYygB,KACZnoB,EAAakhC,KACnB,EAA2BnkC,IAAnBP,EAAR,EAAQA,SAAUX,EAAlB,EAAkBA,KACVJ,EAAgBJ,IAAhBI,YA8BR,OARA3E,qBAAU,WACR2rC,EApGa,SACfplC,EACAqK,EACA1H,GAIY,IAHZhC,EAGW,uDAHM,GACjBikB,EAEW,uDAFSof,KACpBI,EACW,uDADkB,IAE7B,GAAiB,MAAb/5B,GAAmC,MAAd1H,EAEvB,MAAO,GAGT,IANW,EAMP2iC,EAAY,GANL,eAOU3kC,GAPV,IAOX,2BAA8B,CAAC,IAApB0jC,EAAmB,QAC5BiB,EAAUzgC,KAAK,CACbjB,MAAOjB,EAAWvH,IAAIipC,GACtBnhC,SAAUmhC,KAVH,8BAcX,IAdW,EAcPF,EAAoB,GAdb,eAeSnkC,GAfT,IAeX,2BAA0B,CAAC,IAAD,EAAfgd,EAAe,QACpBuoB,EAAiB,GADG,eAEID,GAFJ,IAExB,2BAAuC,CAAC,IAA7BE,EAA4B,QACrCD,EAAK1gC,KACHwF,EAAU0b,KACRyf,EAAa,SACb,QACAxoB,EAAMwoB,EAAa,UACnBxoB,EACA,WATkB,8BAaxBmnB,EAAMt/B,KAAK0gC,IA5BF,8BA+BX,OAAOrB,GAAMC,EAAOmB,EAAW1gB,EAAWwf,GA8DjCqB,CAASzlC,EAAMqK,EAAW1H,EAAYhC,MAC5C,CAACX,EAAMqK,EAAW1J,EAASgC,IAE9BlJ,qBAAU,WACR4rC,EAAQZ,GAAgBC,EAAKvlC,EAAUwlC,MACtC,CAACD,EAAKvlC,EAAUwlC,IAGjB,oBACExjC,UAAU,0BACVquB,KAAMA,EACN0V,SAAU/lC,EAAW+lC,OAAWtpC,EAChCoa,QAjCsB,SAACpD,GACzB,IAAKzT,EAIH,OADAumC,MAAM,4CACC,EAOT,GAJAtnC,EAAY,eAAgB+mC,EAAW3mC,GAInCslC,KAAU,CACZlxB,EAAM6C,iBACN,IAAMsvB,EAAO,IAAIC,KAAK,CAACL,EAAQ,SAAW,GAAID,IAE9C,OADChrC,OAAO0C,UAAkBupC,WAAWZ,EAAMG,IACpC,IAkBPryB,OAAO,QALT,UAOE,mBAAG1R,UAAU,+BAPf,WAOkD4U,QAPlD,IAOkDA,IAAS,oB,oBChKlD6vB,GAAO,SAAC,GAA6B,IAA3B9pC,EAA0B,EAA1BA,SAGnB,OAFqB4D,IAAbP,SAGG,mCAAGrD,IAIV,cAAC+pC,GAAA,EAAD,CACIC,UAAU,OACVC,QACI,eAACC,GAAA,EAAD,CAASjsC,GAAG,iBAAZ,UACI,mBAAGoH,UAAU,oBADjB,6CAHR,SASI,qBAAKA,UAAU,WAAf,SACI,qBAAKA,UAAU,mBAAf,SAAmCrF,SClBtCmqC,GAAY,SAAC,GAAkC,IAAhCnqC,EAA+B,EAA/BA,SAG1B,OAFqB4D,IAAbP,SAGC,mCAAGrD,IAIV,sBACEqF,UAAU,mCACV6U,QAAS,kBAAMlX,QAAQC,IAAI,UAF7B,UAIE,qBAAKoC,UAAU,WAAf,SACE,qBAAKA,UAAU,iBAAf,SAAiCrF,MAEnC,qBAAKqF,UAAU,2CAAf,SACE,cAACE,EAAA,EAAD,CAAKF,UAAU,gCAAf,SACE,cAACG,EAAA,EAAD,CAAKpF,GAAI,EAAT,SACE,oBAAGiF,UAAU,cAAb,UACE,mBAAGA,UAAU,oBADf,qL,mBCXC+kC,GAA6B,SACtCC,EACAt1B,EACAkR,GAEA,IAAI/D,EAAYmoB,EAAK,KASrB,OANIA,EAAK,OAAapkB,IAGlB/D,EAFSooB,GAAaD,EAAK,OAAYt1B,GAErB,KAAW,MAAQmN,GAGlCA,GA8CEooB,GAAoB,SAApBA,EACTtkB,EACAjR,EACAw1B,GAOA,IAAIF,EAAQt1B,EALZw1B,OACsBzqC,IAAlByqC,GAAgD,MAAjBA,EACzB,EACAA,GAE4BvkB,GAEtC,YAAclmB,IAAVuqC,EACOA,EACAE,IAAkBx1B,EAAWjM,OAAS,EACtCkd,EAEAskB,EAAatkB,EAASjR,EAAYw1B,EAAgB,IC1E3DC,GAAe,SAACtmC,EAAWqR,EAAkBmoB,GACjD,GAAIx5B,EAAM,CAWR,IAVA,IAAI6Q,EAAa,CACfQ,EAAYR,WAAZ,iBACAQ,EAAYR,WAAZ,IACAQ,EAAYR,WAAZ,mBAEE01B,EAAY,GACZhiC,EAAO,KACPgjB,EAAW,KACXif,EAAmBzjB,GACnB0jB,EAAc,EACT9hC,EAAI,EAAGC,EAAS5E,EAAK4E,OAAQD,EAAIC,EAAQD,IAAK,CAErD,IAAMnH,EACU,SAFhB+G,EAAOvE,EAAK2E,IAELrK,KACD6rC,GACEA,GAAmB5hC,EAAKxK,GAAI8W,EAAY,MACxCA,EACc,UAAdtM,EAAKjK,KAAmB,SAAW,YAErC6rC,GAAmB5hC,EAAKxK,GAAI8W,EAAY,MAAxC,KACN0W,EAAWif,EAAyB,MAAbjiC,EAAKoK,KAAe4Q,OAAOhb,EAAKoK,MAAQ,KAC/D83B,GAA4BliC,EAAI,OAChCgiC,EAAU1hC,KAAK,CACbqe,MAAOsW,EAAYjS,EAAQ,WAAiB,KAC5C/pB,KAAMA,EACNkpC,YAAaniC,EACbg+B,EAAGh+B,EAAI,SAaX,OAVIkiC,EAAc,IAChBlf,EAAWif,EAAW,KACtBD,EAAU1hC,KAAK,CACbqe,MAAOsW,EAAYjS,EAAQ,WAAiB,KAC5C/pB,KAAM+pB,EAAQ,MACdmf,YAAa,KACbnE,EAAG,EAAIkE,KAIJF,IAoCEI,GAAoB,SAAC,GAMH,IAL7BC,EAK4B,EAL5BA,gBACA5mC,EAI4B,EAJ5BA,KACA6mC,EAG4B,EAH5BA,eACArN,EAE4B,EAF5BA,UACAsN,EAC4B,EAD5BA,UAEA,EAA0B/qC,qBAA1B,mBAAOo6B,EAAP,KAAc4Q,EAAd,KACA,EAAkChrC,qBAAlC,mBAAOirC,EAAP,KAAkBC,EAAlB,KACA,EAAoClrC,qBAApC,mBAAOmrC,EAAP,KAAmBC,EAAnB,KAEA,EAA8BprC,qBAA9B,mBAAOiJ,EAAP,KAAgB6tB,EAAhB,KACQxhB,EAAgBc,IAAhBd,YACFhH,EAAYygB,KAkPlB,OA/OArxB,qBAAU,WACRstC,EAAST,GAAatmC,EAAKonC,QAAS/1B,EAAamoB,IACjD2N,EAAcb,GAAatmC,EAAKqnC,aAAch2B,EAAamoB,IAC3DyN,EAAaX,GAAatmC,EAAKsnC,YAAaj2B,EAAamoB,MACxD,CAACx5B,EAAMqR,EAAamoB,IAEvB//B,qBAAU,WACR,IAAIsoC,EAAe,OAAG5L,QAAH,IAAGA,OAAH,EAAGA,EAClBliB,QAAO,SAAC1P,GAAD,OAAUA,EAAKmiC,eACvBpwB,KAAI,SAAC/R,GAAD,oBAAUA,QAAV,IAAUA,GAAV,UAAUA,EAAM/G,YAAhB,aAAU,EAAYyL,UAAU,EAAG,OAEpCs+B,EA3Da,SACrBpR,EACA6Q,EACAE,GACI,IAAD,IAyBH,OArBe,WAHE,iBACf/Q,QADe,IACfA,OADe,EACfA,EAAOliB,QAAO,SAAC1P,GAAD,OAAUA,EAAKmiC,eAAapwB,KAAI,SAAC/R,GAAD,OAAUA,EAAK/G,eAD9C,QACuD,IAG1D8Y,KAAI,SAAC1S,GACf,IAIW,IAIK,IAID,IAZX4jC,EAAM,EACNC,EAAO,EACPC,EAAQ,EAcZ,OAZIvR,IACFqR,EAAG,oBAAGrR,EAAMwR,MAAK,SAACpjC,GAAD,OAAUA,EAAK/G,OAASoG,YAAtC,aAAG,EAA2C2+B,SAA9C,QAAmD,GAGpD2E,IACFQ,EAAK,oBAAGR,EAAWS,MAAK,SAACpjC,GAAD,OAAUA,EAAK/G,OAASoG,YAA3C,aAAG,EAAgD2+B,SAAnD,QAAwD,GAG3DyE,IACFS,EAAI,oBAAGT,EAAUW,MAAK,SAACpjC,GAAD,OAAUA,EAAK/G,OAASoG,YAA1C,aAAG,EAA+C2+B,SAAlD,QAAuD,GAGtD,CAAEiF,MAAKC,OAAMC,QAAO9jC,mBAlBhB,QAmBP,GAgCYgkC,CAAezR,EAAO6Q,EAAWE,GAyC7CliC,EAA8B,CAClCktB,MAAO,CACL53B,KAAM,OAERyb,MAAO,CACLgQ,UAAMnqB,GAGR67B,QAAS,CAAEpyB,SAAS,GAEpBqzB,MAAO,CACL,CACEmP,UAAU,EACVzf,OAAQ0e,EAlCqB,CACjCgB,KAAM,EACNtP,SAAS,EACTnzB,SAAS,EACTkqB,QAAS,EACTllB,UAAW,WACT,IAEMtQ,GAFI,OAAGo8B,QAAH,IAAGA,OAAH,EAAGA,EAAOliB,QAAO,SAAC1P,GAAD,OAAUA,EAAKmiC,gBAC3B9jC,KAAKmlC,KACArB,YAAY3sC,GAC1BiuC,EAAS,2BAAuBjuC,EAAvB,QACf,MACE,0DACA6I,KAAK7E,MACL,iBACAiqC,EAHA,cA7B2B,CAC/BF,KAAM,EACNG,cAAc,EACdzP,SAAS,EACTnzB,SAAS,EACTkqB,QAAS,EACTllB,UAAW,WAST,MAAO,yBAPH03B,EAAWn9B,OAAS,GACX,OACFm9B,EAAWn9B,QAAU,GACnB,OAEA,OAE+B,MAAQhC,KAAK7E,MAAQ,SAsC/DgkC,WAAYA,IAGhB7K,MAAO,CACLnhB,MAAO,CACLgQ,KAAM,MAER2c,aAAc,IACdta,OAAQ,CACN/iB,SAAS,EACTgF,UAAW,WAKT,OAHEzH,KAAK7E,MAAQ,EACT,IAAMyjB,KAAKuC,IAA6B,IAAxBnhB,KAAK7E,OAAwB8oB,QAAQ,GAAK,IAC1DrF,KAAKuC,IAA6B,IAAxBnhB,KAAK7E,OAAwB8oB,QAAQ,GAAK,MAI9D8R,UAAW,CACT,CACEzV,MAAO,WACPU,MAAO,EACP7lB,MAAO,EACP6F,MAAO,CACLmiB,KAAM,QACNoT,cAAe,SACfjJ,UAAW,QACX2I,MAAO,OAEPC,GAAI,GACJM,SAAU,EACVhV,MAAO,CACLlB,MAAO,MACP4M,WAAY,YAIlB,CACE5M,MAAO,QACPU,MAAO,EACP7lB,MAAO,EACP6F,MAAO,CACLmiB,KAAM,OACNoT,cAAe,SACfjJ,UAAW,OACX2I,MAAO,QACPC,EAAG,GACHM,SAAU,EACVhV,MAAO,CACLlB,MAAO,QACP4M,WAAY,cAOtB6H,OAAQ,CAAEtyB,SAAS,GACnBgzB,QAAS,CACPhB,YAAa,EACb7S,gBAAiB,sBACjB0jB,aAAc,EACdrT,QAAQ,EACR2D,SAAS,EACTD,QAAQ,EACRluB,UAAW,WACT,IACM89B,EAAavlC,KAAKw/B,OAmDxB,MADE,qCAhDgB,OAAG+F,QAAH,IAAGA,OAAH,EAAGA,EAAY7xB,KAAI,SAACgsB,GACpC,IAAIvkC,EAAQ,GA2CZ,MAzCoB,UAAhBukC,EAAMpf,QACRnlB,EACEukC,EAAMxJ,EACN,UACAzG,KAAW+V,aAA2C,IAA9B5mB,KAAKuC,IAAIue,EAAMC,GAAoB,GAC3D,KAGgB,QAAhBD,EAAMpf,QACRnlB,EACE,OACAukC,EAAMxJ,EACN,YACAzG,KAAW+V,aAA2C,IAA9B5mB,KAAKuC,IAAIue,EAAMC,GAAoB,GAC3D,KApBO,YAuBPD,EAAMpf,QAENnlB,EADEukC,EAAMC,EAAI,EAEV,OACAD,EAAMxJ,EACN,UACAzG,KAAW+V,aACqB,IAA9B5mB,KAAKuC,IAAIue,EAAMC,GACf,GAEF,IAGA,OACAD,EAAMxJ,EACN,SACAzG,KAAW+V,aACqB,IAA9B5mB,KAAKuC,IAAIue,EAAMC,GACf,GAEF,KAICxkC,MAI8C,WAK3Dw2B,OAAQ,CACN,CACE8T,SAAU,SACVC,cAAe,GACfhuC,KAAM,MACN0F,KAAMunC,EAAUjxB,KACd,SAACvY,GAAD,MAA0D,CACxDwkC,EAAGxkC,EAAM0pC,KACTvkB,MAAO,aAIb,CACEmlB,SAAU,SACVC,cAAe,GACfhuC,KAAM,MACN0F,KAAMunC,EAAUjxB,KACd,SAACvY,GAAD,MAA0D,CACxDwkC,EAAGxkC,EAAM2pC,MACTxkB,MAAO,WAIb,CACEolB,cAAe,GACfhuC,KAAM,MACN0F,KAAMunC,EAAUjxB,KACd,SAACvY,GAAD,MAA0D,CACxDwkC,EAAGxkC,EAAMypC,IACTtkB,MAAO,iBAMjB2P,EAAW7tB,KACV,CACD4hC,EACAv8B,EACA8rB,EACAqD,EACAqN,EACAC,EACAI,EACAF,IAEEJ,QAA+BhrC,IAAZoJ,QACCpJ,IAAlBoJ,EAAQktB,QACVltB,EAAQktB,MAAMoF,OAAS,aAGb17B,IAAVu6B,EACK,kDAIP,qBAAKh1B,UAAU,uCAAf,SACE,cAAC,KAAD,CAAiBixB,WAAYC,KAAYrtB,QAASA,OCnV3CujC,GAAgB,SAAC,GAKH,IAJvB3B,EAIsB,EAJtBA,gBACA5mC,EAGsB,EAHtBA,KACA6mC,EAEsB,EAFtBA,eACArN,EACsB,EADtBA,UAEMzH,EAAW9c,iBAGd,MACGuzB,EAAevzB,iBAAuB,MAC5C,EAA0BlZ,qBAA1B,mBAAOo6B,EAAP,KAAc4Q,EAAd,KACA,EAA8BhrC,qBAA9B,mBAAOiJ,EAAP,KAAgB6tB,EAAhB,KAEQxhB,EAAgBc,IAAhBd,YACFhH,EAAYygB,KA4JlB,OAzJArxB,qBAAU,WAaN,IAZA,IAAIoX,EAAa,CACbQ,EAAYR,WAAZ,iBACAQ,EAAYR,WAAZ,IACAQ,EAAYR,WAAZ,mBAGA01B,EAAY,GACZhiC,EAAO,KACPgjB,EAAW,KACXif,EAAmBzjB,GACnB0jB,EAAc,EAET9hC,EAAI,EAAGC,EAAS5E,EAAK4E,OAAQD,EAAIC,EAAQD,IAAK,CAGnD,IAAMnH,EACY,SAHlB+G,EAAOvE,EAAK2E,IAGHrK,KACC6rC,GACIA,GAAmB5hC,EAAKxK,GAAI8W,EAAY,MACxCA,EACc,UAAdtM,EAAKjK,KAAmB,SAAW,YAEvC6rC,GAAmB5hC,EAAKxK,GAAI8W,EAAY,MAAxC,KAEV0W,EAAWif,EAAyB,MAAbjiC,EAAKoK,KAAe4Q,OAAOhb,EAAKoK,MAAQ,KAC/D83B,GAA4BliC,EAAI,OAChCgiC,EAAU1hC,KAAK,CACXqe,MAAOsW,EAAYjS,EAAQ,WAAiB,KAC5C/pB,KAAMA,EACNkpC,YAAaniC,EACbg+B,EAAGh+B,EAAI,SAIXkiC,EAAc,IACdlf,EAAWif,EAAW,KACtBD,EAAU1hC,KAAK,CAEXqe,MAAOqE,EAAQ,WACf/pB,KAAM+pB,EAAQ,MACdmf,YAAa,KACbnE,EAAG,EAAIkE,KAIfM,EAASR,KACV,CAACvmC,EAAMqR,EAAamoB,IAEvB//B,qBAAU,WACN,IAAIgvC,OAAS7sC,EACb,IAAkB,IAAd49B,EAAqB,CACrB,IAAMkP,EAAY,UAElBD,EAAS/mC,MAAM,IACVinC,KAAKD,GACLpyB,KAAI,SAAC/R,EAAMzB,GAAP,OACDuvB,KAAWnP,MAAMwlB,GACZE,UAAU9lC,EAAQ,GAAK,IACvB1H,SA8EjBy3B,EA1EoC,CAChCX,MAAO,CACHkF,WAAW,EACX5S,gBAAiB,cACjBoT,OAAQ,CAAC,EAAG,EAAG,EAAG,GAClBiR,QAAS,CAAC,EAAG,EAAG,EAAG,GACnBvuC,KAAM,OAEVm9B,QAAS,CAAEpyB,SAAS,GACpBqyB,UAAW,CAAEryB,SAAS,GACtBwyB,YAAa,CACTiR,IAAK,CACDrS,kBAAkB,EAClByL,YAAa,UACb7K,YAAa,EACb0R,OAAQ,CAAC,MAAO,OAChBN,OAAQA,EACR1Q,OAAQ8O,EAAiB,eAAYjrC,EACrCotC,WAAY,CAAE3jC,SAAS,GACvBi9B,MAAO,CACH1L,OAAQ,CACJqS,MAAO,SAAUr2B,GACbA,EAAMs2B,kBACKt2B,EAAM0vB,MAAMt9B,QAAQ0hC,eAS3C7R,QAAQ,EACRiC,OAAQ,CACJC,MAAO,CACH1xB,SAAS,GAEb4yB,SAAU,CACNC,QAAS,MAKzB3D,OAAQ,CACJ,CACIj6B,KAAM,MACNkD,KAAM,SACN45B,WAAW,EACXp3B,KAAMm2B,IAGdpgB,MAAO,CAAEgQ,UAAMnqB,GACfy8B,QAAS,CACLhzB,SAAS,EACTgF,UAAW,WACP,IAAItM,EAAQsM,EAAUof,OAAO,SAAU,CACnCzkB,QAAS,CACLugB,SAAU,EACVC,cAAc,EACd9B,aAAc,CACVjmB,MAAO,GACPG,OAAQ,KAGhBA,OAAQ,OACRG,MAAO6E,KAAK0/B,MAAMC,EAClBjd,YAAa,OAGjB,MAAO,WAAa1iB,KAAK0/B,MAAM9kC,KAAO,cAAgBO,GAE1DorC,SAAS,OAIlB,CAACvC,EAAiBv8B,EAAW8rB,EAAOqD,EAAWqN,IAE9CD,QAA+BhrC,IAAZoJ,SACGpJ,IAAlBoJ,EAAQktB,QACRltB,EAAQktB,MAAMoF,OAAS,aAGC17B,IAAxBoJ,EAAQ6yB,kBACoBj8B,IAA5BoJ,EAAQ6yB,YAAYiR,MAEpB9jC,EAAQ6yB,YAAYiR,IAAIzf,KAAO,OAC/BrkB,EAAQ6yB,YAAYiR,IAAIM,aAAe,SAIjCxtC,IAAVu6B,EACO,kDAKP,qBACIrgB,IAAK0yB,EACLrnC,UAAU,uCAFd,SAII,cAAC,KAAD,CACI2U,IAAKic,EACLK,WAAYC,KACZrtB,QAASA,OC5LZqkC,GAAkB,SAAC,GAMN,EALtBzC,gBAKuB,IAJvB5mC,EAIsB,EAJtBA,KACA6mC,EAGsB,EAHtBA,eACArN,EAEsB,EAFtBA,UACAl/B,EACsB,EADtBA,KAEQ+W,EAAgBc,IAAhBd,YACFhH,EAAYygB,KAEdja,EAAa,CACbQ,EAAYR,WAAZ,iBACAQ,EAAYR,WAAZ,IACAQ,EAAYR,WAAZ,mBAGEy4B,EAAc,SAAC12B,GAGjB,OAFAA,EAAM6C,iBACN3W,QAAQC,IAAI6T,IACL,GAGX,OACI,qBAAKzR,UAAU,oCAAf,SACI,uBAAOA,UAAU,sBAAjB,SACI,gCACKnB,EAAKsW,KAAI,SAAC/R,GACP,IAAMmY,EACO,QAATpiB,EACM6rC,GACIA,GACI5hC,EAAKxK,GACL8W,EACA,MAEJA,EACc,UAAdtM,EAAKjK,KACC,SACA,YAEV6rC,GAAmB5hC,EAAKxK,GAAI8W,EAAY,MAAxC,KAIV,OACI,qBAEImF,QACI6wB,OAAiBjrC,EAAY0tC,EAHrC,UAMI,qBACInoC,UAAU,yBACV4U,MAAO2G,EAFX,UAImB,UAAdnY,EAAKjK,KACF,qCACI,qBACIyhB,IAAG,2BAAsBxX,EAAKxK,GAA3B,QACHiiB,IAAKzX,EAAKxK,KAHlB,cAQA,GAEJ,sBAAMoH,UAAU,8BAAhB,SACKub,OAGR8c,EACG,oBAAIr4B,UAAU,wBAAd,SACkB,MAAboD,EAAKoK,KACAtE,EAAUk/B,IAAIhlC,EAAKoK,KAAM,QACzB,MAEV,KACJ,oBAAIxN,UAAU,2BAAd,SACKkJ,EAAUof,OAAO,SAAU,CACxBzkB,QAAS,CACLwgB,cAAc,EACd9B,aAAc,CACVjmB,MAAO,EACPG,OAAQ,IAGhBA,OAAQ,OACRG,MAAOwG,EAAKkK,OACZ6W,YAAa,WA1ChB/gB,EAAKxK,cCpCpCyvC,GAAyB,SAAC,GAEG,EAD/BC,aAEA,OAAO,qBAAKtoC,UAAU,OAAf,wBAGLuoC,GAAyB,SAAC,GAEI,IADhCD,EAC+B,EAD/BA,aAEA,OACI,yBACItoC,UAAU,mBACVgnB,aAAa,WACbxS,SAAU8zB,EAHd,UAKI,wBAAQ1rC,MAAM,WAAd,qBACA,wBAAQA,MAAM,SAAd,4BAKC4rC,GAAa,SAAC,GAOH,IANpB/C,EAMmB,EANnBA,gBACAgD,EAKmB,EALnBA,YACA/C,EAImB,EAJnBA,eACArN,EAGmB,EAHnBA,UACApd,EAEmB,EAFnBA,KACAytB,EACmB,EADnBA,UAEA,EAAwB9tC,mBAAc,CAClCqrC,QAAS,GACTE,YAAa,GACbD,aAAc,KAHlB,mBAAOrnC,EAAP,KAAa8pC,EAAb,KAKA,EAA4B/tC,mBAAS,IAArC,mBAAOkY,EAAP,KAAe81B,EAAf,KAIAtwC,qBAAU,WACO,WAAT2iB,EAEA0tB,EAAQ,CACJ1C,QAASwC,EAAYI,QACrB1C,YAAasC,EAAYK,YACzB5C,aAAcuC,EAAYM,eAEd,WAAT9tB,GAEH0tB,EADW,WAAX71B,EACQ,CACJmzB,QAASwC,EAAY3/B,OACrBq9B,YAAasC,EAAYO,WACzB9C,aAAcuC,EAAYQ,aAGtB,CACJhD,QAASwC,EAAYS,SACrB/C,YAAasC,EAAYU,aACzBjD,aAAcuC,EAAYW,kBAIvC,CAACt2B,EAAQmI,EAAMwtB,IAYlB,OACI,qBAAKzoC,UAAU,qBAAf,SACI,qBACIA,UAAWqpC,KAAW,OAAQ,CAC1B,4BAA6B3D,IAFrC,SAKI,sBAAK1lC,UAAU,yBAAf,UACI,qBAAKA,UAAU,qDAAf,SACc,WAATib,EACG,cAAC,GAAD,CACIqtB,aArBD,SAAC72B,GACxBA,EAAM6C,iBACNs0B,EAAU,cAsBU,cAAC,GAAD,CACIN,aApBD,SAAC72B,GACxBA,EAAM6C,iBACNs0B,EAAUn3B,EAAMC,OAAO9U,YAsBX,qBAAKoD,UAAU,yBAAf,SACI,qBAAKA,UAAU,MAAf,SACmB,QAAd0oC,EACG,qCACI,qBAAK1oC,UAAU,sCAAf,SACI,cAAC,GAAD,CACIylC,gBAAiBA,EACjB5mC,KAAMA,EAAKonC,QACXP,eAAgBA,EAChBrN,UAAWA,MAGnB,qBAAKr4B,UAAU,WAAf,SACI,cAAC,GAAD,CACIylC,gBAAiBA,EACjB5mC,KAAMA,EAAKonC,QACXP,eAAgBA,EAChBrN,UAAWA,EACXl/B,KAAK,eAKjB,qBAAK6G,UAAU,sCAAf,SACI,cAAC,GAAD,CACIylC,gBAAiBA,EACjB5mC,KAAMA,EACN6mC,eAAgBA,EAChBrN,UAAWA,EACXsN,UACa,WAAT1qB,kBC7H/BquB,GAAwB,SAAC,GAKH,IAJjCxmC,EAIgC,EAJhCA,QACAgV,EAGgC,EAHhCA,SAGgC,IAFhC2tB,uBAEgC,aADhCC,sBACgC,SAC1BlkC,EAAakhC,KAqBb6G,EAA4B,SAACjO,EAAMC,EAAiBC,GACxD,IAAM/4B,EAAQjB,EAAWvH,IAAIqhC,EAAKsB,YAClC,MAAM,gBAAN,OAAuBn6B,EAAvB,aAAiCA,EAAjC,YAGI+C,EAA8B,CAClC,CACEoP,MAAO,SACP20B,eAAgBA,EAChB7jC,MAAO,SACP8jC,UAAW,GAEb,CACE50B,MAAO,SACP20B,eAAgBA,EAChB7jC,MAAO,UAET,CACEkP,MAAO,OACP20B,eAAgBA,EAChB7jC,MAAO,OACP8jC,UAAW,GAEb,CACE50B,MAAO,UACP20B,eAAgBA,EAChB7jC,MAAO,WAET,CACEo3B,SAAU,SACVloB,MAAO,WACP20B,eAAgBA,EAChB7jC,MAAO,aAyBX,IAAK5C,EACH,OAAO,oDAIT,IAAQ2mC,EAAsD3mC,EAAtD2mC,SAAU7tC,EAA4CkH,EAA5ClH,KAAMy8B,EAAsCv1B,EAAtCu1B,UAAW2L,EAA2BlhC,EAA3BkhC,UAAWyE,EAAgB3lC,EAAhB2lC,YAIxCiB,EAA8B,cAAhB9tC,EAAK+tC,OAEzB,OACE,cAAC1pC,EAAA,EAAD,CAAWmR,OAAK,EAACpR,UAAU,WAA3B,SACE,eAACE,EAAA,EAAD,CAAKF,UAAU,OAAf,UACG0pC,EACC,qCACE,cAACvpC,EAAA,EAAD,CAAKpF,GAAI,EAAT,SACE,cAAC,GAAD,CACE0qC,gBAAiBA,EACjBgD,YAAaA,EACb/C,eAAgBA,EAChBrN,UAAWA,EACXpd,KAAK,SACLytB,UAAU,gBAGd,cAACvoC,EAAA,EAAD,CAAKpF,GAAI,EAAT,SACE,cAAC,GAAD,CACE0qC,gBAAiBA,EACjBgD,YAAaA,EACb/C,eAAgBA,EAChBrN,UAAWA,EACXpd,KAAK,SACLytB,UAAU,mBAKhB,qCACE,cAACvoC,EAAA,EAAD,CAAKpF,GAAI,EAAT,SACE,cAAC,GAAD,CACE0qC,gBAAiBA,EACjBgD,YAAaA,EACb/C,eAAgBA,EAChBrN,UAAWA,EACXpd,KAAK,SACLytB,UAAU,UAGd,cAACvoC,EAAA,EAAD,CAAKpF,GAAI,EAAT,SACE,cAAC,GAAD,CACE0qC,gBAAiBA,EACjBgD,YAAaA,EACb/C,eAAgBA,EAChBrN,UAAWA,EACXpd,KAAK,SACLytB,UAAU,aAKlB,cAACvoC,EAAA,EAAD,CAAKpF,GAAI,GAAT,SACe,MAAZ0uC,EACC,qCACE,qBAAKzpC,UAAU,iEAAf,SACE,cAAC,GAAD,UACE,cAAC,GAAD,CACEgkC,UAAWA,EACXnlC,KAAM4qC,EACNjqC,QA9DC,CAAC,SAAU,SAAU,OAAQ,UAAW,YA+DzCukC,SAAQ,UAAKnoC,EAAKS,KAAV,QACRuY,MAAM,2BAIZ,cAAC,GAAD,UACE,cAAC,GAAD,CACE5U,UAAU,6BACVwF,QAASA,EACT3B,QAAS,CAAEu4B,YAAa,CAAC,CAAE/4B,OAAQ,SAAUumC,IAAK,UAClD/qC,KAAM4qC,EACN3xB,SAAUA,SAKhB,kBC7KC+xB,GAAwB,SAAC,GAGH,IAAD,gBAFhCjuC,EAEgC,EAFhCA,KAGQuW,GADwB,EADhC23B,MAEc13B,eAAND,GACF43B,EAASrxB,mBAAQ,WACrB,IAAMsxB,EAA6B,GAE/BC,EAA0B,CAC5BC,QAAS,GACT/wC,KAAM,OACN0Z,OAAQ,IAgFV,OA9DAo3B,EAAIC,QAAU,UACdD,EAAIp3B,OAAS,CAACjX,EAAKgP,MAAMu/B,QAAQpiC,KAAK,OACtCkiC,EAAI9wC,KAAO,OAEX6wC,EAAKtmC,KAAL,eAAeumC,IAEXruC,EAAKgP,MAAMw/B,qBACbH,EAAIC,QAAU,sBACdD,EAAIp3B,OAASjX,EAAKgP,MAAMw/B,mBACxBH,EAAI9wC,KAAO,OAEX6wC,EAAKtmC,KAAL,eAAeumC,KAGbruC,EAAKgP,MAAMy/B,wBACbJ,EAAIC,QAAU,0BACdD,EAAIp3B,OAASjX,EAAKgP,MAAMy/B,sBACxBJ,EAAI9wC,KAAO,OAEX6wC,EAAKtmC,KAAL,eAAeumC,KAGbruC,EAAKgP,MAAM0/B,kBACbL,EAAIC,QAAU,mBACdD,EAAIp3B,OAASjX,EAAKgP,MAAM0/B,gBACxBL,EAAI9wC,KAAO,OAEX6wC,EAAKtmC,KAAL,eAAeumC,KAGbruC,EAAKgP,MAAM2/B,iBACbN,EAAIC,QAAU,kBACdD,EAAIp3B,OAASjX,EAAKgP,MAAM2/B,eACxBN,EAAI9wC,KAAO,OAEX6wC,EAAKtmC,KAAL,eAAeumC,KAGbruC,EAAKgP,MAAM4/B,eACbP,EAAIC,QAAU,gBACdD,EAAIp3B,OAASjX,EAAKgP,MAAM4/B,aACxBP,EAAI9wC,KAAO,OAEX6wC,EAAKtmC,KAAL,eAAeumC,KAGbruC,EAAKgP,MAAMonB,YACbiY,EAAIC,QAAU,YACdD,EAAIp3B,OAAS,CAACjX,EAAKgP,MAAMonB,WACzBiY,EAAI9wC,KAAO,OAEX6wC,EAAKtmC,KAAL,eAAeumC,KAGbruC,EAAKgP,MAAM6/B,YACbR,EAAIC,QAAU,YACdD,EAAIp3B,OAASjX,EAAKgP,MAAM6/B,UACxBR,EAAI9wC,KAAO,OAEX6wC,EAAKtmC,KAAL,eAAeumC,KAGVD,IACN,QACDpuC,QADC,IACDA,GADC,UACDA,EAAMgP,aADL,aACD,EAAa0/B,gBADZ,OAED1uC,QAFC,IAEDA,GAFC,UAEDA,EAAMgP,aAFL,aAED,EAAaonB,UAFZ,OAGDp2B,QAHC,IAGDA,GAHC,UAGDA,EAAMgP,aAHL,aAGD,EAAaw/B,mBAHZ,OAIDxuC,QAJC,IAIDA,GAJC,UAIDA,EAAMgP,aAJL,aAID,EAAau/B,QAJZ,OAKDvuC,QALC,IAKDA,GALC,UAKDA,EAAMgP,aALL,aAKD,EAAay/B,sBALZ,OAMDzuC,QANC,IAMDA,GANC,UAMDA,EAAMgP,aANL,aAMD,EAAa4/B,aANZ,OAOD5uC,QAPC,IAODA,GAPC,UAODA,EAAMgP,aAPL,aAOD,EAAa6/B,UAPZ,OAQD7uC,QARC,IAQDA,GARC,UAQDA,EAAMgP,aARL,aAQD,EAAa2/B,iBAEf,OACE,eAACrqC,EAAA,EAAD,CAAKF,UAAU,UAAf,UACE,cAACG,EAAA,EAAD,CAAKC,GAAI,GAAIJ,UAAU,OAAvB,SACE,qBAAKA,UAAU,OAAf,SACE,oBAAGA,UAAU,0CAAb,UACGpE,EAAKF,KACJ,uBAAMsE,UAAU,GAAhB,UACE,sBAAMA,UAAU,aAAhB,sBADF,OAGGmS,EAAE,OAAD,OAAQvW,EAAKF,IAAIuG,oBAGH,IAAnBrG,EAAKgyB,WACJ,iCACE,sBAAM5tB,UAAU,aAAhB,qBADF,OAGGpE,EAAKgyB,oBAMfmc,EAAO50B,KAAI,SAACu1B,EAAOC,GAAR,OACV,cAAC,GAAD,eAA6BD,GAATC,UA4GtBC,GAAgB,SAAC,GAAmD,IAAjDV,EAAgD,EAAhDA,QAAS/wC,EAAuC,EAAvCA,KAAM0Z,EAAiC,EAAjCA,OACtC,OACE,cAAC1S,EAAA,EAAD,CAAKC,GAAI,GAAT,SACE,sBAAKJ,UAAU,iBAAf,UACE,mBAAGA,UAAU,uBAAb,SAAqCkqC,IACrC,qBAAKlqC,UAAU,yBAAf,SACY,SAAT7G,EACC,6BACG0Z,EAAOsC,KAAI,SAAC/R,EAAMunC,GAAP,OACV,6BACE,6BAAKvnC,KADEunC,QAMb,6BAAK93B,Y,UChQJg4B,GAAgB,SAAC,GAAkD,IAAhDC,EAA+C,EAA/CA,WAAYrxC,EAAmC,EAAnCA,SACxC,OAAgB,MAAZA,EACO,6BAIP,eAACsxC,GAAA,EAAD,WACI,cAACA,GAAA,EAASC,OAAV,CAAiBhxB,QAAQ,QAAQphB,GAAG,iBAApC,8BAIA,cAACmyC,GAAA,EAASE,KAAV,UACKxxC,EAEI0b,KAAI,SAACrS,GAAD,OACDA,EAAQzG,OAASyuC,EACb,eAAC,IAAD,CAEI9qC,UAAU,gBACV/G,KAAK,SACLiY,GAAIlJ,EAAME,cAAckN,QACpB,MACAtS,EAAQzG,MANhB,UASKyG,EAAQlH,KAAKS,KACbyG,EAAQlH,KAAKgyB,UAAb,aACW9qB,EAAQlH,KAAKgyB,UADxB,WAEK,KAXD9qB,EAAQzG,MAcjB,eAAC,IAAD,CAEI2D,UAAU,uBACV/G,KAAK,SACLiY,GAAIlJ,EAAME,cAAckN,QACpB,MACAtS,EAAQzG,MANhB,UASKyG,EAAQlH,KAAKS,KACbyG,EAAQlH,KAAKgyB,UAAb,aACW9qB,EAAQlH,KAAKgyB,UADxB,WAEK,KAXD9qB,EAAQzG,eC/BvC6uC,GAAY,CAChB,EAAG,SAAC7rC,EAAQ40B,GACV,OAAI50B,EAAEzC,MAAQq3B,EAAEr3B,OACN,EAEJyC,EAAEzC,MAAQq3B,EAAEr3B,MACP,EAIJ,GAET,EAAG,SAACyC,EAAQ40B,GACV,OAAI50B,EAAEigB,KAAO2U,EAAE3U,MACL,EAEJjgB,EAAEigB,KAAO2U,EAAE3U,KACN,EAIJ,GAET,EAAG,SAACjgB,EAAQ40B,GACV,OAAI50B,EAAEzC,MAAQq3B,EAAEr3B,MACP,EAEHyC,EAAEzC,MAAQq3B,EAAEr3B,OACN,EAIL,IAIJ,SAASuuC,GAAT,GAEgC,IADrCrR,EACoC,EADpCA,kBAEM5wB,EAAYygB,KAClB,EAAkC/uB,mBAChC,gBADF,mBAAOwwC,EAAP,KAAkBC,EAAlB,KAGA,EAAwCzwC,mBAAS,GAAjD,mBAAO0wC,EAAP,KAAqBC,EAArB,KAEM3a,EAAW9c,mBAEX03B,EAAoBtuC,uBACxB,SAACN,GACC,IAcI+K,EAdgBuB,EAAUof,OAAO,OAAQ,CAC3CzkB,QAAS,CACPvK,OAAQ,CAAC,IAAK,KACdkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAOujB,SAASvjB,GAChBunB,YAAa,OAEUvc,MAAM,KAE3B0X,EAAO,IAAI3f,KACbA,KAAKu9B,IAAI/c,SAASxY,EAAO,IAAKwY,SAASxY,EAAO,IAAM,EAAG,IAErDw1B,EAAU,GACd,OAAQx1B,EAAO,IACb,IAAK,KACL,IAAK,KACL,IAAK,KACHw1B,EAAU,KACV,MAEF,IAAK,KACL,IAAK,KACL,IAAK,KACHA,EAAU,KACV,MAEF,IAAK,KACL,IAAK,KACL,IAAK,KACHA,EAAU,KACV,MAEF,IAAK,KACL,IAAK,KACL,IAAK,KACHA,EAAU,KAId,OACEA,EACA,IACAj0B,EAAUof,OAAO,OAAQ,CACvBzkB,QAAS,CACPvK,OAAQ,CAAC,KACTkqB,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAO0iB,EAAK1f,UACZukB,YAAa,SAInB,CAACjb,IAGGyzB,EAAsBz/B,uBAC1B,SAACN,GACC,OAAOsM,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPwgB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,CACX7B,uBAAwB,OAI9B,CAACpZ,IAGGujB,EAAY/T,mBAChB,kBAAM,IAAI6T,GAAKuN,KACf,CAACA,IAGG2R,EAAc/yB,mBAAQ,WAC1B,IAAMgzB,EAAiBjf,EAAUxyB,IAAI,yBAA0B,KACzD0xC,EAAiBlf,EAAUxyB,IAAI,yBAA0B,KAEzD2xC,EAAa5qC,OAAO6qC,QAAQH,GAAgBxqC,QAChD,SAAC4qC,EAAD,GAA8B,IAAD,mBAAhB1qC,EAAgB,KAAXxE,EAAW,KAM3B,OALAkvC,EAAKpoC,KAAK,CACR9G,QACA0iB,KAAMle,IAGD0qC,IAET,IAGIC,EAAa/qC,OAAO6qC,QAAQF,GAAgBzqC,QAChD,SAAC4qC,EAAD,GAA8B,IAAD,mBAAhB1qC,EAAgB,KAAXxE,EAAW,KAM3B,OALAkvC,EAAKpoC,KAAK,CACR9G,QACA0iB,KAAMle,IAGD0qC,IAET,IAMF,OAHAC,EAAW/X,KAAKkX,GAAU,IAC1BU,EAAW5X,KAAKkX,GAAU,IAEnB,CAACa,EAAYH,KACnB,CAACnf,IAEJ,EAAwB7xB,mBAAQ,OAAC6wC,QAAD,IAACA,IAAe,IAAhD,mBAAO5sC,EAAP,KAAa8pC,EAAb,KAEM/H,EAAaloB,mBAAQ,WACzB,cAAO7Z,QAAP,IAAOA,OAAP,EAAOA,EAAOysC,GAAcn2B,KAAI,SAAC/R,GAAD,OAC9BooC,EAAkBpoC,EAAKkc,WAExB,CAACksB,EAAmB3sC,EAAMysC,IAEvBU,EAAS9uC,uBAAY,SAAC+uC,GAC1BtD,GAAQ,SAACuD,GACP,IAAMC,EAAM,aAAOD,EAAY,IACzBE,EAAM,aAAOF,EAAY,IAK/B,OAHAC,EAAOnY,KAAKkX,GAAUe,IACtBG,EAAOpY,KAAKkX,GAAUe,IAEf,CAACE,EAAQC,QAEjB,IAEGC,EAAyBnvC,uBAAY,WACzCmuC,EAAa,gBACbW,EAAO,KACN,CAACA,IAEEM,EAAqBpvC,uBAAY,WACrCmuC,EAAa,YACbW,EAAO,KACN,CAACA,IAEE5Y,EAAS1a,mBAAQ,WACrB,IAD2B,EACrB6zB,EAAa,GACbC,EAAa,GAEf9iC,GAAO,KACP9M,EAAQ,KALe,eAORiC,EAAK,IAPG,IAO3B,2BAA4B,CAC1BjC,EAD0B,QACbA,MACb8M,EAAM2W,KAAK3W,IAAI2W,KAAKuC,IAAIhmB,GAAQ8M,GAEhC8iC,EAAW9oC,KAAK9G,IAXS,8BAc3B,IAd2B,EAcvB6vC,GAAW,KACXC,EAAY,KAfW,eAiBR7tC,EAAK,IAjBG,IAiB3B,2BAA4B,CAC1B6tC,EAD0B,QACT9vC,MACjB6vC,EAAUpsB,KAAK3W,IAAI2W,KAAKuC,IAAI8pB,GAAYD,GAExCF,EAAW7oC,KAAKgpC,IArBS,8BA0C3B,MAAO,CATW,CAChB9zC,GAAI,OACJyD,KAAM,WACNwC,KAAM2tC,EACNrzC,KAAM,MACN28B,QAA0B,IAAjBwV,EACT5hC,IAAKA,GAfW,CAChBrN,KAAM,WACNwC,KAAM0tC,EACNpzC,KAAM,MACN28B,QAA0B,IAAjBwV,EACT5hC,IAAK+iC,EACL7zC,GAAI,gBAaL,CAACiG,EAAMysC,IAEJznC,EAA8B6U,mBAAQ,WAC1C,IAAMi0B,EAASvZ,EACT1pB,EAAMijC,EAAErB,GAAc5hC,IAE5B,MAAO,CACLqnB,MAAO,CACL53B,KAAM,OAERyb,MAAO,CACLgQ,KAAM,yBAERgoB,SAAU,CACRhoB,KAAM,YAER2S,MAAO,CACLqJ,aACAhsB,MAAO,CACLgQ,KAAM,MAERqC,OAAQ,CACN0f,KAAM,GAERkG,cAAe,EACfpZ,UAAW,GAEbsC,MAAO,CACLnhB,MAAO,CACLgQ,KAAM,MAERkoB,WAAY,EACZhV,aAAa,EACbpuB,MACAC,KAAMD,EAENud,OAAQ,CACN/d,UAAW,WACT,OAA8B,IAArBzH,KAAK7E,OAAqB8oB,QAAQ,GAAK,KAElDqnB,SAAU,WAEZF,cAAe,GAEjB3V,QAAS,CACPhuB,UAAW,WACT,MAAM,GAAN,OAAUzH,KAAKk2B,EAAf,sBAA8BgF,EAAoBl7B,KAAK2/B,GAAvD,eAGJ1K,YAAa,CACXtD,OAAQ,CACNqC,OAAQ,CACNC,gBAAiB,SAAUjkB,GACzBA,EAAM6C,iBAEN,IAHgC,EAG1B8e,EAAS3xB,KAAKsvB,MAAMqC,OACtB/2B,EAAO,GAJqB,eAMZ+2B,GANY,IAMhC,2BAA4B,CAAC,IAAlB4B,EAAiB,QAC1BA,EAAMgY,YAAYhY,EAAMc,SAEpBd,EAAMc,UACRz5B,EAAO24B,EAAMiY,YAVe,8BAchCxrC,KAAKsvB,MAAM6b,SAASM,OAAO,CACzBtoB,KACW,aAATvoB,EAAsB,WAAa,4BAIvCkvC,EAD8B,aAATlvC,EAAsB,EAAI,MAKrD0mB,IAAK,CACH8kB,WAAY,CACV3jC,SAAS,GAEXipC,aAAc,GACdprB,MAAO,QACPqrB,cAAe,QAGnB9W,QAAS,CACPpyB,SAAS,GAEXkvB,OAAQuZ,KAET,CAAC/L,EAAYjE,EAAqBvJ,EAAQkY,IAE7C,OACE,sBAAKtrC,UAAU,uDAAf,UACE,sBAAKA,UAAU,qEAAf,UACE,qBACEA,UAAS,kCACO,iBAAdorC,EAA+B,SAAW,IAE5Cv2B,QAASw3B,EAJX,0BAQA,qBACErsC,UAAS,kCACO,aAAdorC,EAA2B,SAAW,IAExCv2B,QAASy3B,EAJX,yBASF,qBAAKtsC,UAAU,mFAAf,SACE,cAACwwB,GAAD,CACEE,gBAAgB,GAChB/b,IAAKic,EACL5wB,UAAU,QACV6D,QAASA,SCnWZ,IAAMwpC,GAAgB,WAAO,IAAD,EAC3BnkC,EAAYygB,KAClB,EAAkC/uB,mBAAiB,cAAnD,mBAAO0yC,EAAP,KAAkB3T,EAAlB,KACM4T,EAAkBrU,KACxB,EAA0B36B,IAAlBR,EAAR,EAAQA,QAASV,EAAjB,EAAiBA,KACTzE,EAAOyf,cAAPzf,GACFg4B,EAAW9c,mBACX05B,EAAe15B,mBACf25B,EAAmB35B,mBACjB5D,EAAgBc,IAAhBd,YACAiyB,EAAS/vB,eAAT+vB,KAEAllC,EAAgBJ,IAAhBI,YAIR3E,qBAAU,WAEE,MAANM,GAAsB,MAARyE,GAGlBJ,EAAY,UAAWrE,EAAIyE,KAC1B,CAACJ,EAAarE,EAAIyE,IAErB,IrCLAqwC,EqCKA,EAIIn9B,mBACF,YrCVFm9B,EqCWcx9B,EAAY7B,IAAIQ,IAAKqB,EAAY7B,IAAIc,gBrCR5C,YAAuB,EAApBw+B,SAAqB,IACvBzgB,EAAWtD,KAEjB,OAAOlrB,IAAM,GAAD,OAAIgvC,EAAUxgB,OqCAfC,EADb,EACE1c,UACO2c,EAFT,EAEEruB,MACMsuB,EAHR,EAGExuB,KAMF,EAII0R,mBACF,CAAC,UAAW,CAAE3X,KAAIy0B,iBrCTgB,SAACqgB,GACrC,OAAO,YAAwB,IAArBC,EAAoB,EAApBA,SACFt9B,EAAY1Q,KAAK2Q,MACvB,cAAiCq9B,EAAjC,MAAW/0C,EAAX,EAAWA,GAELkK,EAFN,EAAeuqB,aAEwCxuB,KAAK2nC,MAC1D,SAAC1jC,GAAD,OAAkBA,EAAQzG,OAASzD,KAGrC,GAAe,MAAXkK,EACF,MAAM,IAAI9F,MAAJ,iCAAoCpE,IAG5C,IAAMg1C,EAAG,UAAMF,EAAN,YAAiB5qC,EAAQ3J,KAAzB,YAAiCP,EAAjC,YAAuCA,EAAvC,oBAAqDyX,GAC9D,OAAO3R,IAAMkvC,IqCJbC,CAAuB39B,EAAY7B,IAAIQ,KACvC,CAEE3K,UAAWtL,KAAQy0B,IARVygB,EADb,EACEr9B,UACOs9B,EAFT,EAEEhvC,MACMivC,EAHR,EAGEnvC,KAUEpF,EAAkB,GACF,MAAhB4zB,IACF5zB,EAAQ,aACH4zB,EAAaxuB,KAAKiU,QACnB,SAAChQ,GAAD,MACmB,YAAjBA,EAAQ3J,MAAuC,qBAAjB2J,EAAQ3J,UAK9C,IAAM80C,EAAcx0C,EAAS+sC,MAAK,SAACpjC,GAAD,OAAUA,EAAK/G,OAASzD,KAEtDo1C,IACFA,EAAYnvC,KAAK1F,KAAO80C,EAAY90C,MAGtC,IAAM2J,E1BgCkB,SAAC,GAIa,IAHtCjE,EAGqC,EAHrCA,KACAmlC,EAEqC,EAFrCA,UAEqC,IADrC3L,iBACqC,SAC7Br6B,EAAaO,IAAbP,SACAkS,EAAgBc,IAAhBd,YACR,EAA8BtV,mBAAyB,MAAvD,mBAAOkI,EAAP,KAAgBorC,EAAhB,KA8KA,OA5KA51C,qBAAU,WACR,GAAY,MAARuG,EAAc,CAAC,IAAD,gBAGZmzB,EACAmc,EAEAvyC,EACAS,EAYA41B,EACAiQ,EACAhQ,EACAkc,EAEAj1C,EA0B+B,MAQD,MAcC,MAQD,MAcD,MAQD,MAjG5BswC,EAAgB,GAGhBhB,EAAmB,CACrBI,QAAS,GACTC,YAAa,GACbC,aAAc,GACdG,SAAU,GACVE,cAAe,GACfD,aAAc,GACdrgC,OAAQ,GACRmgC,YAAa,GACbD,WAAY,IASVlP,EAAoB,CACtBtM,eAAgB,GAChBE,cAAe,IAkFjB,GA7EArxB,GAFAT,EAAI,eAAQiD,EAAKjD,OAELS,KAEZlD,EAAO0F,EAAK1F,KAEZi1C,EAAavvC,EAAKwvC,MAAMntC,QAAO,SAACotC,EAAkBlrC,GAEhD,OADAkrC,EAAYlwB,OAAOhb,EAAKme,SAAWne,EAC5BkrC,IACN,IAEHtc,EAAYnzB,EAAKmzB,UAEjByW,EAAYI,QAAUvQ,GACpBz5B,EAAK0vC,SAASC,MAAMh1C,QACpB,QACA6+B,GAGEx5B,EAAK4vC,2BACPhG,EAAYM,aAAezQ,GAAc,oBACvCz5B,EAAK0vC,gBADkC,iBACvC,EAAehI,aADwB,aACvC,EAAsB/sC,eADiB,QACN,GACjC,QACA6+B,IAIAx5B,EAAK6vC,0BACPjG,EAAYK,YAAcxQ,GAAc,oBACtCz5B,EAAK0vC,gBADiC,iBACtC,EAAejI,YADuB,aACtC,EAAqB9sC,eADiB,QACN,GAChC,QACA6+B,IAIJoQ,EAAYS,SAAW5Q,GACrBz5B,EAAK0vC,SAASC,MAAMG,SACpB,OACAtW,GAGEx5B,EAAK4vC,2BACPhG,EAAYW,cAAgB9Q,GAAc,oBACxCz5B,EAAK0vC,gBADmC,iBACxC,EAAehI,aADyB,aACxC,EAAsBoI,gBADkB,QACN,GAClC,OACAtW,IAIAx5B,EAAK6vC,0BACPjG,EAAYU,aAAe7Q,GAAc,oBACvCz5B,EAAK0vC,gBADkC,iBACvC,EAAejI,YADwB,aACvC,EAAqBqI,gBADkB,QACN,GACjC,OACAtW,IAIJoQ,EAAY3/B,OAASwvB,GAAc,oBACjCz5B,EAAK0vC,gBAD4B,iBACjC,EAAeC,aADkB,aACjC,EAAsBI,cADW,QACD,GAChC,OACAvW,GAGEx5B,EAAKgwC,yBACPpG,EAAYQ,YAAc3Q,GAAc,oBACtCz5B,EAAK0vC,gBADiC,iBACtC,EAAehI,aADuB,aACtC,EAAsBqI,cADgB,QACN,GAChC,OACAvW,IAIAx5B,EAAKiwC,wBACPrG,EAAYO,WAAa1Q,GAAc,oBACrCz5B,EAAK0vC,gBADgC,iBACrC,EAAejI,YADsB,aACrC,EAAqBsI,cADgB,QACN,GAC/B,OACAvW,IAIAr6B,EACFyrC,EAAW5qC,EAAK8B,EAAEwU,KAAI,SAAC/R,GAAD,mBAAC,eAClBgrC,EAAWhrC,EAAKme,SADC,IAEpBjU,OAAQlK,EAAKkK,gBAEV,CAEL,IADA,IAAIyhC,EAAkB,GACbvrC,EAAI,EAAGA,GAAC,OAAG3E,QAAH,IAAGA,OAAH,EAAGA,EAAM8B,EAAE8C,WACtBD,EAAI,GAD0BA,IAIlCurC,EAAgBrrC,KAAK7E,EAAK8B,EAAE6C,IAG9BimC,EAAW,GAEX,cAAmBsF,EAAnB,eAAoC,CAA/B,IAAM3rC,EAAI,KACTA,EAAKme,UAAU6sB,GAAyC,MAA3BA,EAAWhrC,EAAKme,SAC/CkoB,EAAS/lC,KAAT,2BACK0qC,EAAWhrC,EAAKme,SADrB,IAEEjU,OAAQlK,EAAKkK,WAMrB6gC,EAAoBtvC,EAAKsvC,kBAEzBlc,EAAYpzB,EAAKguB,EAEjBqV,EAAiB,OAAGrjC,QAAH,IAAGA,GAAH,UAAGA,EAAMguB,SAAT,iBAAG,GAAc,OAAJhuB,QAAI,IAAJA,GAAA,UAAAA,EAAMguB,SAAN,eAASppB,QAAS,UAA/B,aAAG,EAAgCmgB,EAEpDsO,EAAiBrzB,EAAKiN,EAEtBguB,EAAkBtM,eAAlB,OAAmC3uB,QAAnC,IAAmCA,GAAnC,UAAmCA,EAAM2uB,sBAAzC,aAAmC,EAAsBC,MACzDqM,EAAkBpM,cAAlB,OAAkC7uB,QAAlC,IAAkCA,GAAlC,UAAkCA,EAAM6uB,qBAAxC,aAAkC,EAAqBD,MAKvDygB,EAAW,CACTzhB,UAtJmB,KAuJnBuF,YACAmc,oBACA1E,WACA7tC,OACAy8B,YACAh8B,OACAosC,cACAxW,YACAiQ,oBACAhQ,iBACA8R,UAAS,OAAEA,QAAF,IAAEA,IAAa,GACxBoK,aACA1U,SA7IkB,KA8IlBvgC,OACA2gC,yBAGH,CAAC5pB,EAAarR,EAAMmlC,EAAWhmC,EAAUq6B,IAErCv1B,E0BrNSksC,CAAW,CACzBnwC,KAAI,iBAAEmvC,QAAF,IAAEA,OAAF,EAAEA,EAAanvC,YAAf,QAAuB,KAC3BmlC,UAAWprC,EACXy/B,WAAW,IAqBb,GAfKt6B,GAGEkC,EAAA,EAYI,OAAPrH,EACF,OACE,eAAC,GAAD,CAAUqiB,KAAK,QAAf,UACE,qBAAKjb,UAAU,yBAAf,SACE,cAACC,EAAA,EAAD,UACE,wDAGJ,qBAAKD,UAAU,YAAf,SACE,cAACC,EAAA,EAAD,UACE,8BACE,cAAC,IAAD,CAAMD,UAAU,4BAA4BkR,GAAIlJ,EAAMC,KAAtD,6DAUZ,GAAImlB,EACF,OACE,eAAC,GAAD,CAAUnS,KAAK,QAAf,UACE,qBAAKjb,UAAU,yBAAf,SACE,cAACC,EAAA,EAAD,UACE,6BAAK,iCAGT,qBAAKD,UAAU,YAAf,SACE,cAACC,EAAA,EAAD,UACE,8BACE,cAAC,IAAD,CAAMD,UAAU,4BAA4BkR,GAAIlJ,EAAMC,KAAtD,6DAUZ,GAAI8lC,EACF,OACE,eAAC,GAAD,CAAU9yB,KAAK,QAAf,UACE,qBAAKjb,UAAU,yBAAf,SACE,cAACC,EAAA,EAAD,UACE,6BAAK,0BAA4BrH,QAGrC,qBAAKoH,UAAU,YAAf,SACE,cAACC,EAAA,EAAD,UACE,8BACE,cAAC,IAAD,CAAMD,UAAU,4BAA4BkR,GAAIlJ,EAAMC,KAAtD,6DAUZ,GAAI6lC,GAAoB3gB,IAAsBrqB,EAC5C,OACE,cAAC,GAAD,CAAUmY,KAAK,QAAf,SACE,qBAAKjb,UAAU,yBAAf,SACE,cAACC,EAAA,EAAD,UACE,8BACE,oBAAID,UAAU,mDAAd,gCAgCZ,GAAe,MAAX8C,EACF,OAAO,cAAC,GAAD,CAAUmY,KAAK,QAAf,wBAOT,IAAMre,EAAQ,CACZhB,KAAMkH,EAAQlH,KACdg+B,KAAM92B,EAAQ42B,SACd1H,UAAWlvB,EAAQkvB,UACnBt5B,SAAU,CACRs5B,UAAW,CACTnzB,KAAM,CAACiE,EAAQkvB,YAEjBC,UAAWnvB,EAAQmvB,UACnBiQ,kBAAmBp/B,EAAQo/B,kBAC3BhQ,eAAgBpvB,EAAQovB,iBAIxBoQ,EAA6B,KACA,MAA7Bx/B,EAAQo/B,oBACVI,EAA6Bp5B,EAAUof,OAAO,OAAQ,CACpDzkB,QAAS,CACPvK,OAA0B,UAAlB6oC,EAAKI,SAAuB,CAAC,IAAK,IAAK,KAAO,CAAC,IAAK,IAAK,KACjE/e,eAAe,EACfjB,aAAc,CACZjmB,MAAO,GACPG,OAAQ,IAEVgnB,UAAW,KAEbhnB,OAAQ,OACRG,MAAOkG,EAAQo/B,kBACf/d,YAAa,QAIjB,IAAI8qB,EAAiBx1C,EAErB,OACE,eAAC,GAAD,CACEwhB,KAAK,QACLD,eACE,sBAAKhb,UAAU,gCAAf,UACE,cAAC,GAAD,CAAe8qC,WAAYlyC,EAAIa,SAAUw1C,IACzC,cAAC,IAAD,CAAM/9B,GAAIlJ,EAAMlF,QAAS9C,UAAU,6BAAnC,0BALN,UAWGutC,EACD,cAACrN,GAAA,EAAIjgC,UAAL,CACEivC,cAAc,EACdt2C,GAAG,cACH00C,UAAWA,EACXr4B,SAzEe,SAACsa,EAAe9d,GAClB,aAAb8d,EACFzV,YAAW,WAAO,IAAD,EAEf,UAAA2zB,EAAiB15B,eAAjB,SAA0Bwf,QAAO,MAEb,eAAbhE,EACTzV,YAAW,kCAAM0zB,EAAaz5B,eAAnB,aAAM,EAAsBmkB,aACjB,UAAb3I,GACTzV,YAAW,kCAAM8W,EAAS7c,eAAf,aAAM,EAAkBmkB,aAErCyB,EAAapK,IA+DT6Q,YAAY,EACZ+O,eAAe,EANjB,SAQE,sBAAKnvC,UAAU,2BAAf,UACE,qBAAKA,UAAU,sDAAf,SACE,sBAAKA,UAAU,6BAAf,UACE,qBAAKA,UAAU,sGAAf,SACE,oBACEA,UAAU,uBACV4U,MACE0tB,EAA0B,UACnB0L,EAAYnvC,KAAKjD,KAAKS,KADH,kBACiBimC,GADjB,UAEnB0L,EAAYnvC,KAAKjD,KAAKS,MALjC,SAQG2xC,EAAYnvC,KAAKjD,KAAKS,SAG3B,qBAAK2D,UAAU,OAAf,SACE,qBAAKA,UAAU,4BAAf,SACE,eAACqgC,GAAA,EAAD,CAAKrmB,QAAQ,QAAQha,UAAU,yBAA/B,UACE,cAACqgC,GAAA,EAAI/Q,KAAL,UACE,cAAC+Q,GAAA,EAAIC,KAAL,CACE/Q,SAAS,aACTtM,MAAO,CAAE2L,cAAe,aAF1B,sCAOF,cAACyR,GAAA,EAAI/Q,KAAL,UACE,cAAC+Q,GAAA,EAAIC,KAAL,CACE/Q,SAAS,WACTtM,MAAO,CAAE2L,cAAe,aAF1B,wBAOF,cAACyR,GAAA,EAAI/Q,KAAL,UACE,cAAC+Q,GAAA,EAAIC,KAAL,CACE/Q,SAAS,QACTtM,MAAO,CAAE2L,cAAe,aAF1B,iCAYZ,cAAC1uB,EAAA,EAAD,CAAKF,UAAU,sDAAf,SAQE,cAACG,EAAA,EAAD,CACE8vB,GAAI,GACJl1B,GAAI,GACJiF,UAAU,sEAHZ,SAKE,sBAAKA,UAAU,uBAAf,UACE,cAACG,EAAA,EAAD,CAAK8vB,GAAI,EAAT,SACiB,UAAdqd,EACC,cAACnC,GAAD,eAAkCroC,IAElC,cAAC,GAAD,aACEgnC,MACExH,EAA0B,UACnB0L,EAAYnvC,KAAKjD,KAAKS,KADH,kBACiBimC,GADjB,UAEnB0L,EAAYnvC,KAAKjD,KAAKS,OAE3ByG,MAIV,cAAC3C,EAAA,EAAD,CAAK8vB,GAAI,EAAT,SACE,eAACiQ,GAAA,EAAIK,QAAL,CAAavgC,UAAU,QAAvB,UACE,cAACkgC,GAAA,EAAIM,KAAL,CACEjR,SAAS,aACT3a,MAAM,yBAFR,SAIE,cAAC4tB,GAAD,CACE7tB,IAAK64B,EACL1qC,QAASA,EACT62B,aAAcA,MAGlB,cAACuG,GAAA,EAAIM,KAAL,CAAUjR,SAAS,WAAnB,SACE,cAAC,GAAD,CACEkW,iBA7KE,EA8KF3tB,SA3KY,SAAC2oB,GACjCgN,EAAiB15B,QAAU0sB,GA2KP39B,QAASA,EACT4iC,gBA/KC,MAkLL,cAACxF,GAAA,EAAIM,KAAL,CAAUjR,SAAS,QAAQvvB,UAAU,QAArC,SACE,cAACmxB,GAAD,CAAcxc,IAAKic,EAAUh0B,MAAOA,2B,SCrW7CwyC,GAAoB,SAAC,GAKH,IAJ7BxyC,EAI4B,EAJ5BA,MACAkW,EAG4B,EAH5BA,OACA81B,EAE4B,EAF5BA,UACAzvC,EAC4B,EAD5BA,KAEQgZ,EAAMC,eAAND,EAiBFmJ,EAAU5C,mBACd,kCAAM5F,EAAO3Z,UAAb,aAAM,EAAc6I,SAASpF,KAC7B,CAACkW,EAAQ3Z,EAAMyD,IAGjB,OACE,sBAAMoD,UAAU,yCAAhB,SACE,qBACEA,UAAWsb,EAAU,qBAAuB,aAC5CzG,QAxBiD,SAACpD,GACtDm3B,GAAU,SAACyG,GACT,IAAIC,EAAgBD,EASpB,OARK/zB,EAGHg0B,EAAcn2C,GAAQm2C,EAAcn2C,GAAM2Z,QACxC,SAACnS,GAAD,OAAeA,IAAM/D,KAHvB0yC,EAAcn2C,GAAMuK,KAAK9G,GAOpB,eAAK0yC,OAWZ,SAIE,+BAAOn9B,EAAE,GAAD,OAAIhZ,EAAJ,YAAYyD,GAASA,UC/BxB2yC,GAAyB,SAAC,GAOH,IANlC3yC,EAMiC,EANjCA,MACAkW,EAKiC,EALjCA,OAEA81B,GAGiC,EAJjC4G,MAIiC,EAHjC5G,WAGiC,IAFjC6G,oBAEiC,SADjCt2C,EACiC,EADjCA,KAEQgZ,EAAMC,eAAND,EA4BFmJ,EAAU5C,mBACd,kCAAM5F,EAAO3Z,UAAb,aAAM,EAAc6I,SAASpF,KAC7B,CAACkW,EAAQ3Z,EAAMyD,IAGjB,OACE,sBAAMoD,UAAU,yCAAhB,SACE,qBACE6U,QAjCiD,SAACpD,GACtDm3B,GAAU,SAACyG,GACT,IAAIC,EAAgBD,EAEpB,OAAqB,IAAjBI,GACGn0B,EAGHg0B,EAAcn2C,GAAQm2C,EAAcn2C,GAAM2Z,QACxC,SAACnS,GAAD,OAAeA,IAAM/D,KAHvB0yC,EAAcn2C,GAAMuK,KAAK9G,GAOpB,eAAK0yC,IACO,QAAV1yC,GACT0yC,EAAcn2C,GAAQ,GACf,eAAKm2C,KAEZA,EAAcn2C,GAAQ,CAACyD,GAGlB,eAAK0yC,QAaVtvC,UAAWsb,EAAU,qBAAuB,aAF9C,SAIE,+BAAOnJ,EAAE,GAAD,OAAIhZ,EAAJ,YAAYyD,GAASA,UCnD/B8yC,GAAkB,SAAC9V,GAAD,OACtB,SAAUv6B,EAAW40B,GACnB,IAAI0b,EAAU/V,EAAKgW,QAAQvwC,IACV,IAAbswC,IACFA,EAAUtpB,KAEZ,IAAIwpB,EAAUjW,EAAKgW,QAAQ3b,GAI3B,OAHiB,IAAb4b,IACFA,EAAUxpB,KAERspB,EAAUE,GACJ,EACCF,EAAUE,EACZ,EAEA,IAUAC,GAAqB,SAAC,GAIH,IAH9Bh9B,EAG6B,EAH7BA,OACArZ,EAE6B,EAF7BA,SACAmvC,EAC6B,EAD7BA,UAEA,EAAsChuC,oBAAS,GAA/C,mBAAOm1C,EAAP,KAAoBC,EAApB,KAEMC,EAAwB/yC,uBAC5B,SAAC4F,GAAmC,IAAD,IAEjC,SAAI,iBAACgQ,QAAD,IAACA,GAAD,UAACA,EAAQ62B,cAAT,aAAC,EAAgBlmC,cAAjB,QAA2B,GAAK,IAC3BqP,EAAO62B,OAAO3nC,SAASc,EAAQ6mC,UAI1C,CAAC72B,IAGGo9B,EAAqBhzC,uBACzB,SAAC4F,GAAmC,IAAD,IAEjC,SAAI,iBAACgQ,QAAD,IAACA,GAAD,UAACA,EAAQpX,WAAT,aAAC,EAAa+H,cAAd,QAAwB,GAAK,IACxBqP,EAAOpX,IAAIsG,SAASc,EAAQpH,OAIvC,CAACoX,IAIGq9B,EAAoBz3B,mBAAQ,WAahC,OAZqBnY,MAAMC,KACzB,IAAIF,IACF7G,EACGqZ,OAAOm9B,GACP96B,KAAI,SAACrS,GAAD,OAAaA,EAAQpH,OACzBoX,OAAOs9B,SACPpc,KAAK0b,GAAgBW,GAAY30C,UAOvC,CAACu0C,EAAuBx2C,IAErB62C,EAAY53B,mBAChB,kBACEnY,MAAMC,KACJ,IAAIF,IACF7G,EACGqZ,OAAOm9B,GACPn9B,OAAOo9B,GACP/6B,KAAI,SAACrS,GAAD,OAAaA,EAAQuzB,SACzBvjB,OAAOs9B,SACPpc,KAAK0b,GAAgBW,GAAYha,YAG1C,CAAC6Z,EAAoBD,EAAuBx2C,IAG9CnB,qBAAU,WAGR,IAHc,EAGVi4C,GAAmB,EACnBC,EAA8B,GAJpB,eAKY19B,EAAOujB,OALnB,IAKd,2BAAwC,CAAC,IAA9Boa,EAA6B,QACjCH,EAAUtuC,SAASyuC,GAGtBD,EAAkB9sC,KAAK+sC,GAFvBF,GAAmB,EAIjBA,GACF3H,GAAU,SAACyG,GAAD,mBAAC,eACNA,GADK,IAERhZ,MAAOma,QAdC,iCAkBb,CAAC19B,EAAOujB,MAAOia,EAAW1H,IAG7B,IAAM8H,EAAah4B,mBAAQ,WACzB,IAAMi4B,EAAepwC,MAAMC,KACzB,IAAIF,IACF7G,EACG0b,KAAI,SAACrS,GAAD,OAAaA,EAAQ6mC,UACzB72B,OAAOs9B,SACPpc,KAAK0b,GAAgBW,GAAY1G,WAEtC72B,OAAOs9B,SAMT,OAJIO,EAAQltC,OAAS,GACnBktC,EAAQjtC,KAAK,OAGRitC,IACN,CAACl3C,IAiBJ,OACE,eAACyG,EAAA,EAAD,WAkBGwwC,EAAWjtC,OAAS,GACnB,eAACtD,EAAA,EAAD,CAAK8vB,GAAI,EAAGjwB,UAAU,OAAtB,UACE,oBAAIA,UAAU,OAAd,kCACA,qBAAKA,UAAU,eAAf,SACG0wC,EAAWv7B,KAAI,SAACw0B,GAAD,OACd,cAAC,GAAD,CACE72B,OAAQA,EACR28B,cAAY,EACZ7G,UAAWA,EACXhsC,MAAO+sC,EACP6F,OAAO,EAEPr2C,KAAM,UADDwwC,WAQf,cAACxpC,EAAA,EAAD,CAAK8vB,GAAI,EAAT,SAEE,eAAC/vB,EAAA,EAAD,WACE,cAACC,EAAA,EAAD,CAAKC,GAAI,GAAT,SACE,cAACF,EAAA,EAAD,UACGiwC,EAAQ1sC,OAAS,GAChB,eAACtD,EAAA,EAAD,CAAKC,GAAG,OAAOJ,UAAU,OAAzB,UACE,oBAAIA,UAAU,OAAd,kCACA,qBAAKA,UAAU,eAAf,SACGmwC,EAAQh7B,KAAI,SAACzZ,GAAD,OACX,cAAC,GAAD,CACEoX,OAAQA,EACR81B,UAAWA,EACXhsC,MAAOlB,EAEPvC,KAAM,OADDuC,eAyBnB,cAACyE,EAAA,EAAD,CAAKC,GAAI,GAAIJ,UAAU,OAAvB,SACE,wFAkBN,cAACG,EAAA,EAAD,CAAKC,GAAI,EAAGJ,UAAU,kCAAtB,SAEE,cAAC,KAAD,CACEA,UAAS,cAAS+vC,EAAc,YAAc,qBAC9Cl7B,QAAS,kBAAMm7B,GAAe,SAACY,GAAD,OAAsBA,MAFtD,0BAODb,GACC,cAAC5vC,EAAA,EAAD,CAAKC,GAAI,GAAIJ,UAAU,OAAvB,SACE,oBAAGA,UAAU,GAAb,UACE,wBAAQA,UAAU,UAAlB,oDADF,w0B,oBClPV,SAAS6wC,GACPC,EACA5nC,GACC,IAAD,8BACM6nC,EAAmB,iBACvBD,QADuB,IACvBA,GADuB,UACvBA,EAAmBrkB,iBADI,iBACvB,EAA8BukB,kBADP,iBACvB,EAA0CxC,aADnB,iBACvB,EAAiDxc,iBAD1B,aACvB,EACIif,8BAFmB,QAEO,EAC1BC,EAAoB,iBACxBJ,QADwB,IACxBA,GADwB,UACxBA,EAAmBrkB,iBADK,iBACxB,EAA8BukB,kBADN,iBACxB,EAA0CxC,aADlB,iBACxB,EAAiD2C,YADzB,aACxB,EACIF,8BAFoB,QAEM,EAC1BG,EAAmB,iBACvBN,QADuB,IACvBA,GADuB,UACvBA,EAAmBrkB,iBADI,iBACvB,EAA8BukB,kBADP,iBACvB,EAA0CxC,aADnB,iBACvB,EAAiD6C,cAD1B,aACvB,EACIJ,8BAFmB,QAEO,EAE5BK,EAnBK,gBAAW,IAAI3xC,MAAO0R,eAqB/B,MAAO,CACLjQ,IAAI,GAAD,OAAK0vC,EAAkBp1C,IAAvB,YAA8Bo1C,EAAkBza,MAAhD,YAAyDya,EAAkBnH,OAA3E,YAAqFmH,EAAkBljB,WAC1Gh1B,GAAIk4C,EAAkBl4C,GACtByD,KAAMy0C,EAAkBz0C,KACxB+G,KAAM0tC,EACNS,sBAAuB,CACrBvf,UAAW9oB,EAAUof,OAAO,SAAU,CACpCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOm0C,EACP5sB,YAAa,OAEfqtB,WAAYtoC,EAAUof,OAAO,SAAU,CACrCzkB,QAAS,CACPuhB,QAAS,WACTE,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOs0C,EACP/sB,YAAa,OAEf2J,UAAW5kB,EAAUof,OAAO,SAAU,CACpCzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOw0C,EACPjtB,YAAa,OAEfmtB,MAAOA,GAET1jB,UAAWkjB,EAAkBljB,WAS1B,IAAM6jB,GAAsB,SAAC,GAGH,IAKT,EAEf,EATP3uC,EAE8B,EAF9BA,QACA4uC,EAC8B,EAD9BA,UAEA,EAAwB92C,qBAAxB,mBAAOiE,EAAP,KAAa8pC,EAAb,KACMz/B,EAAYygB,KAEdgoB,EAAe,GACf7uC,EAAQ8uC,SACVD,EAAY,uBAAQ7uC,EAAQ+uC,WAAWC,mBAA3B,QAA0C,IAGtDH,EAAY,uBACN7uC,EAAQivC,QAAQjvC,EAAQ8qB,UAAU,IAAIkkB,mBADhC,QAC+C,IAM7D,IADA,IAAME,EAAgBN,EAAYC,EAAaluC,OACtCD,EAAI,EAAGA,EAAIwuC,EAAexuC,IACjCmuC,EAAajuC,KAAK,IA0BpB,OAvBApL,qBAAU,WACO,MAAXwK,GAIAA,EAAQ8uC,UACVjJ,EAAQ,CAACkI,GAAwB/tC,EAAQ+uC,WAAY3oC,OAetD,CAACA,EAAWpG,EAASA,EAAQ8qB,YAEpB,MAAR/uB,EACK,6BAIP,sBAAKmB,UAAU,UAAf,UACE,qBAAKA,UAAU,yBAAf,SACE,oBAAIA,UAAU,aAAd,SACG2xC,EAAax8B,KAAI,SAAC88B,EAAWtwC,GAAZ,OAChB,oBACE3B,UAAoB,KAATiyC,EAAc,UAAY,GAErClX,wBAAyB,CACvBC,OAAiB,KAATiX,EAAc,SAAWA,IAJrC,eAEenvC,EAAQpH,IAFvB,YAE8BoH,EAAQuzB,MAFtC,YAE+C10B,WAQrD,qBAAK3B,UAAU,yBAAf,SACE,qBAAKA,UAAU,mDAAf,SACGnB,EAAKsW,KAAI,SAAC0G,GAAD,iBACR,gCACE,cAAC6oB,GAAA,EAAD,CAEEC,UAAU,MACVC,QACE,eAACsN,GAAA,EAAD,CACEt5C,GAAE,UAAKijB,EAAMngB,IAAX,YAAkBmgB,EAAMwa,MAAxB,YAAiCxa,EAAM+R,UAAvC,YADJ,UAGE,eAACskB,GAAA,EAAQj4B,OAAT,CAAgBk4B,GAAG,KAAnB,mCACyB,IACgB,KAAtCt2B,EAAM01B,sBAAsBD,MAA5B,WACOz1B,EAAM01B,sBAAsBD,MADnC,KAEG,MAEN,cAACY,GAAA,EAAQ1iB,KAAT,UACE,uBAAOxvB,UAAU,kCAAjB,SACE,kCACE,qBAAIA,UAAU,OAAd,UACE,oBAAIA,UAAU,OAAd,wBACA,oBACEA,UAAU,WACV+6B,wBAAyB,CACvBC,OAAQnf,EAAM01B,sBAAsBzjB,gBAI1C,qBAAI9tB,UAAU,MAAd,UACE,qBAAIA,UAAU,OAAd,qCACM6b,QADN,IACMA,GADN,UACMA,EAAOzY,YADb,iBACM,EAAawH,aADnB,aACM,EAAoBonB,kBAD1B,QAEI,YAFJ,OAKA,oBACEhyB,UAAU,WACV+6B,wBAAyB,CACvBC,OAAQnf,EAAM01B,sBAAsBvf,gBAI1C,qBAAIhyB,UAAU,OAAd,UACE,oBAAIA,UAAU,OAAd,yBACA,oBACEA,UAAU,WACV+6B,wBAAyB,CACvBC,OAAQnf,EAAM01B,sBAAsBC,2BA3CtD,SAqDE,qBACExxC,UAAU,mCACV+6B,wBAAyB,CACvBC,OAAQnf,EAAM01B,sBAAsBzjB,cAxD1C,UACUjS,EAAMngB,IADhB,YACuBmgB,EAAMwa,MAD7B,YACsCxa,EAAM+R,UAD5C,aA4DA,cAAC,IAAD,CACE5tB,UAAU,iCACV4U,MAAOiH,EAAMxf,KACb6U,GAAIlJ,EAAME,cAAckN,QAAQ,MAAOyG,EAAMjjB,IAH/C,UAKuB,IAApBijB,EAAM+R,UAAN,UACM/R,EAAM+R,UADZ,WAEG,gBApER,UAAa/R,EAAMngB,IAAnB,YAA0BmgB,EAAMwa,MAAhC,YAAyCxa,EAAM+R,uBCpI9CwkB,GAAkB,SAAC,GAIH,IAAD,YAH1Bt/B,EAG0B,EAH1BA,OACAhQ,EAE0B,EAF1BA,QACA4uC,EAC0B,EAD1BA,UAEIW,GAAY,GACN,OAANv/B,QAAM,IAANA,GAAA,UAAAA,EAAQpX,WAAR,eAAa+H,QAAS,IACxB4uC,EAAYA,GAAav/B,EAAOpX,IAAIsG,SAASc,EAAQpH,OAE7C,OAANoX,QAAM,IAANA,GAAA,UAAAA,EAAQujB,aAAR,eAAe5yB,QAAS,IAC1B4uC,EAAYA,GAAav/B,EAAOujB,MAAMr0B,SAASc,EAAQuzB,SAE/C,OAANvjB,QAAM,IAANA,GAAA,UAAAA,EAAQ62B,cAAR,eAAgBlmC,QAAS,IAC3B4uC,EAAYA,GAAav/B,EAAO62B,OAAO3nC,SAASc,EAAQ6mC,UAEhD,OAAN72B,QAAM,IAANA,GAAA,UAAAA,EAAQ3Z,YAAR,eAAcsK,QAAS,IACzB4uC,EAAYA,GAAav/B,EAAO3Z,KAAK6I,SAASc,EAAQ3J,OAGxD,IAAMm5C,EAAcC,yBAAcF,EAAW,CAC3C7xC,KAAM,CAAEu2B,QAAS,GACjByb,MAAO,CAAEzb,QAAS,GAClB0b,MAAO,CAAE1b,QAAS,GAClB2b,QAASL,EACTM,MAAO,IACPC,OAAQ,CAAEC,KAAM,GAAKC,QAAS,IAAKC,SAAU,EAAGC,OAAO,KAGnDhZ,EAAmBl3B,EAAQ8uC,SAAR,UACrB9uC,EAAQ+uC,kBADa,QACC,GADD,UAErB/uC,EAAQivC,QAAQjvC,EAAQ8qB,UAAU,WAFb,QAEoB,GACvCqlB,EACiB,MAArBjZ,EAAYplB,MAAgBolB,EAAYplB,MAAQolB,EAAY39B,KAExDuY,EAAK,qBAAiBq+B,EAAjB,8BAAkDA,EAAlD,SAEX,OAAOX,GACL,SAACY,EAAQ9vC,GAAT,OACEA,GACE,cAAC,YAAS+vC,IAAV,CAAclwB,MAAOiwB,EAAQlzC,UAAU,oBAAvC,SACE,sBACEA,UAAS,4DAAuD8C,EAAQpH,IAAIuG,eAD9E,UAGE,qBACEjC,UAAU,wCACV+6B,wBAAyB,CAAEC,OAAQpmB,KAErC,qBAAK5U,UAAU,YAAf,SACE,cAAC,GAAD,CAAqB8C,QAASA,EAAS4uC,UAAWA,eC3DnD0B,GAAmB,SAAC,GAGH,IAF5BtgC,EAE2B,EAF3BA,OACArZ,EAC2B,EAD3BA,SAGMi4C,EAAYh5B,mBAChB,kBACEjf,EAASyH,QACP,SAACmyC,EAAmBjwC,GAApB,OACEid,KAAK3W,IAAI1I,OAAOC,KAAKmC,EAAK0uC,aAAaruC,OAAQ4vC,KACjD,KAEJ,CAAC55C,IAOG65C,EAAuB56B,mBAAQ,WACnC,GAAgB,MAAZjf,EACF,MAAO,GAGT,IALyC,EAKnC65C,EAAuB,GAoBzBC,EAAiBlzC,EAAU5G,GAzBU,eAmDrB85C,GAnDqB,IAmDzC,2BAAoC,CAAC,IAA5BzwC,EAA2B,QAC5BpH,EAAM0iB,OAAOtb,EAAQpH,KACrB26B,EAAQjY,OAAOtb,EAAQuzB,OACvBiJ,EAAWlhB,OAAOtb,EAAQw8B,UAC1BqK,EAASvrB,OAAOtb,EAAQ6mC,QAEF,MAAxB2J,EAAgB53C,KAClB43C,EAAgB53C,GAAO,IAGa,MAAlC43C,EAAgB53C,GAAK4jC,KACvBgU,EAAiB53C,GAAK4jC,GAAY,IAGS,MAAzCgU,EAAgB53C,GAAK4jC,GAAUjJ,KACjCid,EAAiB53C,GAAK4jC,GAAUjJ,GAAS,IAiBU,MAAjDid,EAAgB53C,GAAK4jC,GAAUjJ,GAAOsT,KACxC2J,EAAiB53C,GAAK4jC,GAAUjJ,GAAOsT,GAAU,IAGnD2J,EAAiB53C,GAAK4jC,GAAUjJ,GAAOsT,GAAQjmC,KAAK,CAClDZ,QAASA,KAxF4B,8BA4FzC,OAAOwwC,IACN,CAAC75C,IAEE+5C,EAAe96B,mBAAQ,WAC3B,GAAuB,MAAnB46B,EACF,OAAO,KAET,IAAM1Z,EAAY,GAmFlB,OAlFA6Z,GAAeH,EAAiB,OAAOpS,SAAQ,SAACxlC,GAAD,OAC7C+3C,GAAeH,EAAgB53C,GAAM,YAAYwlC,SAAQ,SAAC5B,GAAD,OACvDmU,GAAeH,EAAgB53C,GAAK4jC,GAAW,SAAS4B,SACtD,SAAC7K,GAAD,OACEod,GACEH,EAAgB53C,GAAK4jC,GAAUjJ,GAC/B,UACA6K,SAAQ,SAACyI,GAAW,qBAcH2J,EAAgB53C,GAAK4jC,GAAUjJ,GAAOsT,IAdnC,IAcpB,2BAAgE,CAAC,IAAxDvmC,EAAuD,QACzDA,EAAK03B,UAERlB,EAAKl2B,KAAK,CACRhI,MACA26B,QACAsT,SACArK,WACAsS,UAAU,EACVC,WAAYzuC,EAAKN,QACjB3J,KAAMiK,EAAKjK,QAxBG,2CA2EvBygC,IACN,CAAC0Z,IAkGJ,OACE,qBAAKtzC,UAAU,WAAf,SACGwzC,GACCA,EAAar+B,KAAI,SAACrS,GAChB,OACE,cAAC,GAAD,CAOEgQ,OAAQA,EACR4+B,UAAWA,EACX5uC,QAASA,GATX,UAEOA,EAAQ+uC,WAAWj5C,WC5SzB86C,GAAwB,SAAC,GAGR,IAF5B5gC,EAE2B,EAF3BA,OACArZ,EAC2B,EAD3BA,SAEMyP,EAAYygB,KACVxX,EAAkBC,eAAlBD,EACAmG,EAAYF,KAAZE,QAoBFg7B,EAAuB56B,mBAAQ,WACnC,GAAgB,MAAZjf,EACF,MAAO,GAGT,IAAM65C,EAAuB,GAmBzBC,EAAiBlzC,EAAU5G,GAC/B85C,EAAevf,MAAK,SAAC30B,EAAQ40B,GAAY,IAAD,IAClC0f,EAAS,UAAGt0C,EAAEu0C,gBAAL,QAAiBvtB,IAC1BwtB,EAAS,UAAG5f,EAAE2f,gBAAL,QAAiBvtB,IAC9B,OAAIstB,EAAYE,GACN,EACCF,EAAYE,EACd,EAEA,KAjC8B,qBAqCrBN,GArCqB,IAqCzC,2BAAoC,CAAC,IAA5BzwC,EAA2B,QAC5BpH,EAAM0iB,OAAOtb,EAAQpH,KACrB26B,EAAQjY,OAAOtb,EAAQuzB,OACvBsT,EAASvrB,OAAOtb,EAAQ6mC,QACxB7O,GACkB,IAAtBh4B,EAAQ8qB,UACJxP,OAAOtb,EAAQ8qB,WACf9qB,EAAQ8qB,UACc,MAAxB0lB,EAAgB53C,KAClB43C,EAAgB53C,GAAO,IAGU,MAA/B43C,EAAgB53C,GAAK26B,KACvBid,EAAiB53C,GAAK26B,GAAS,IAiBU,MAAvCid,EAAgB53C,GAAK26B,GAAOsT,KAC9B2J,EAAiB53C,GAAK26B,GAAOsT,GAAU,IAGzC2J,EAAiB53C,GAAK26B,GAAOsT,GAAQjmC,KAAK,CACxCo3B,SAAUA,EACVh4B,QAASA,KAzE4B,8BA6EzC,OAAOwwC,IACN,CAAC75C,IAEE+5C,EAAe96B,mBAAQ,WAC3B,GAAuB,MAAnB46B,EACF,OAAO,KAET,IAAM1Z,EAAY,GAkHlB,OAjHA6Z,GAAeH,EAAiB,OAAOpS,SAAQ,SAACxlC,GAAD,OAC7C+3C,GAAeH,EAAgB53C,GAAM,SAASwlC,SAAQ,SAAC7K,GAAD,OACpDod,GAAeH,EAAgB53C,GAAK26B,GAAQ,UAAU6K,SACpD,SAACyI,GAaC,IAbU,EAaNld,EAAY,KAbN,eAeS6mB,EAAgB53C,GAAK26B,GAAOsT,IAfrC,IAeV,2BAAwD,CAAC,IAAD,QAA7CvmC,EAA6C,QAClD0wC,EAAUzzC,EAAU+C,EAAKN,SAEzBuvC,GAAY,GACN,OAANv/B,QAAM,IAANA,GAAA,UAAAA,EAAQpX,WAAR,eAAa+H,QAAS,IACxB4uC,EAAYA,GAAav/B,EAAOpX,IAAIsG,SAAS8xC,EAAQp4C,OAE7C,OAANoX,QAAM,IAANA,GAAA,UAAAA,EAAQujB,aAAR,eAAe5yB,QAAS,IAC1B4uC,EAAYA,GAAav/B,EAAOujB,MAAMr0B,SAAS8xC,EAAQzd,SAE/C,OAANvjB,QAAM,IAANA,GAAA,UAAAA,EAAQ62B,cAAR,eAAgBlmC,QAAS,IAC3B4uC,EAAYA,GAAav/B,EAAO62B,OAAO3nC,SAAS8xC,EAAQnK,UAEhD,OAAN72B,QAAM,IAANA,GAAA,UAAAA,EAAQ3Z,YAAR,eAAcsK,QAAS,IACzB4uC,EAAYA,GAAav/B,EAAO3Z,KAAK6I,SAAS8xC,EAAQ36C,OAGnDk5C,IAIL5lB,EAAY,IAAIF,GAAKnpB,EAAKN,QAAQg3B,mBAElCga,EAAQ36C,KAAO,QAuCf26C,EAAQC,YAActnB,EAAUxyB,IAC9B,yBACA,KAEF65C,EAAQE,iBAAmBvnB,EAAUxyB,IACnC,gCACA,KAEF65C,EAAQG,eAAiBxnB,EAAUxyB,IACjC,8BACA,KAEF65C,EAAQI,oBAAsBznB,EAAUxyB,IACtC,8BACA,KAEF65C,EAAQK,YAAc1nB,EAAUxyB,IAAI,SAAU,KAC9C65C,EAAQM,qBAAuB3nB,EAAUxyB,IACvC,yBACA,KAEF65C,EAAQO,0BAA4B5nB,EAAUxyB,IAC5C,8BACA,KAEF65C,EAAQQ,WAAmC,qBAAtBlxC,EAAKN,QAAQ3J,KAElCygC,EAAKl2B,KAAKowC,KAxGF,wCA8GXla,IACN,CAAC9mB,EAAQwgC,IAENiB,EAAer3C,uBAAY,SAACo+B,EAAMC,EAAiBC,GACvD,IAAM38B,EAAYy8B,EAAKG,UAEjB+Y,EAAYj3C,SAASylB,cAAc,KACnCyxB,EAAWl3C,SAASylB,cAAc,KAEvB,CAAC,KAAM,4BACfke,SAAQ,SAAClhC,GAChBy0C,EAAS/5B,UAAUC,IAAI3a,KACtB,IACHy0C,EAAS7/B,MAAQ,sBACjB6/B,EAASxxB,MAAMwL,SAAW,QAC1BgmB,EAASxxB,MAAMlB,MAAQ,UAEvB,IAAM2yB,EAAUpsC,EAAoB+F,IAAIQ,IAClC1V,EAAO0F,EAAKy1C,WAAa,mBAAqB,UAC9CzlC,EAAG,UAAM6lC,EAAN,YAAiBv7C,EAAjB,YAAyB0F,EAAKjG,GAA9B,YAAoCiG,EAAKjG,GAAzC,kBAYT,OAVA47C,EAAUnmB,KAAOxf,EAGjB4lC,EAAS18B,iBAAiB,SAAS,SAACtG,GAClCA,EAAMs2B,qBAGRyM,EAAUrxB,YAAYsxB,GACtBD,EAAU9iC,OAAS,SAEZ8iC,IACN,IAEGhvC,EAA8BkT,mBAAQ,WAkB1C,IAAMi8B,EAA2B,SAAC/3C,GAChC,OAAOsM,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPuhB,QAAS,WACTE,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,QAIXywB,EAAe,SAACh4C,GACpB,OAAOsM,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPugB,SAAU,EACV7B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,QAIX0wB,EAAmB,SAACj4C,GAAD,OACvBsM,EAAUof,OAAO,SAAU,CACzBzkB,QAAS,CACPwgB,cAAc,EACdD,SAAU,EACV7B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,QAGjB,MAAO,CACL,CACEvP,MAAO,GACPkgC,SAAU,eACVtvC,QAAS,CACP,CAGEE,MAAO,OACPkP,MAAO,YACP40B,UAAW,EACXuL,cAAe,iBAAM,QACrB7rC,UAAW,SAACoyB,EAAMC,EAAiBC,GACjC,IAAM5+B,EAAa0+B,EAAKsB,WAClB/9B,EAAYy8B,EAAKG,UACnBp/B,EAAOO,EAQX,OAJIiC,EAAKnD,MACPW,EACE,wCAAiCwC,EAAKnD,IAAtC,cAAwDW,GAErDA,MAKf,CACEuY,MAAO,cACPkgC,SAAU,mBACVtvC,QAAS,CACP,CACEs3B,SAAU,QACVkY,eAAgB,QAChBxL,UAAW,EACXuL,cAAe,iBAAM,QAErBrvC,MAAO,cACPkP,MAAO,SACPqgC,sBAAuB,OACvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTmZ,EAAyBrZ,EAAKsB,aAChCvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,WAGtB,CACEvY,SAAU,QACVkY,eAAgB,QAChBtvC,MAAO,mBACPqvC,cAAe,iBAAM,QACrBvL,UAAW,EACX50B,MACEzC,EAAE,uBACF,wDACF8iC,sBAAuB,OAEvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTmZ,EAAyBrZ,EAAKsB,aAChCvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,WAItB,CACEvY,SAAU,QACVkY,eAAgB,QAChBxL,UAAW,EAEX9jC,MAAO,iBACPqvC,cAAe,iBAAM,QACrBngC,MACEzC,EAAE,wBACF,wDACF8iC,sBAAuB,OACvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTmZ,EAAyBrZ,EAAKsB,aAChCvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,WAGtB,CACEvY,SAAU,QACVkY,eAAgB,QAChBxL,UAAW,IAEX9jC,MAAO,sBACPqvC,cAAe,iBAAM,QACrBngC,MACE,qEAEFqgC,sBAAuB,OACvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTmZ,EAAyBrZ,EAAKsB,aAChCvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,aAK1B,CACEzgC,MAAO,GACPkgC,SAAU,eACVtvC,QAAS,CACP,CACEs3B,SAAU,QACVkY,eAAgB,QAChBxL,UAAW,IACX9jC,MAAO,cACPqvC,cAAe,iBAAM,QACrBngC,MAAOzC,EAAE,UACT8iC,sBAAuB,OAEvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACToZ,EAAatZ,EAAKsB,aACpBvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,aAK1B,CACEzgC,MAAO,WACPkgC,SAAU,mBACVtvC,QAAS,CACP,CACEs3B,SAAU,QACViY,cAAe,iBAAM,QACrBC,eAAgB,QAChBxL,UAAW,EACX9jC,MAAO,uBACPkP,MAAOzC,EAAE,gBACT8iC,sBAAuB,OAEvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTqZ,EAAiBvZ,EAAKsB,aACxBvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,WAGtB,CACEvY,SAAU,QACVkY,eAAgB,QAChBD,cAAe,iBAAM,QACrBvL,UAAW,IACX9jC,MAAO,4BACPkP,MAAOzC,EAAE,qBACT8iC,sBAAuB,OAEvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTqZ,EAAiBvZ,EAAKsB,aACxBvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,aAK1B,CACEzgC,MAAO,GACPkgC,SAAU,eACVtL,UAAW,IACXhkC,QAAS,CACP,CACEs3B,SAAU,SACVp3B,MAAO,GACPkP,MAAO,mBACP40B,UAAW,IACXtgC,UAAWqrC,QAKlB,CAACA,EAAcrrC,EAAWiJ,IAkBvBtO,EAAmB6U,mBACvB,iBAAO,CACLmjB,sBAAuB,SAEvByZ,SAAU,SAAC59B,EAAGyrB,GACZA,EAAIoS,eACJ79B,EAAEqwB,kBAGF,IAAMlpC,EAAOskC,EAAI1H,UACjB,GAAI58B,EAAKjG,GAAI,CACX,IAAM48C,EAAOxtC,EAAME,cAAckN,QAAQ,MAAOvW,EAAKjG,IACrD0f,EAAQ5U,KAAK8xC,KAGjBpZ,YAAa,CAAC,CAAE/4B,OAAQ,cAAeumC,IAAK,SAC5C3N,WAAY,KAEd,CAAC3jB,IAGH,OACE,cAACpY,EAAA,EAAD,CAAKF,UAAU,OAAf,SACE,cAACG,EAAA,EAAD,CAAKC,GAAI,GAAT,SACE,cAAC,GAAD,CACEJ,UAAU,eACVwF,QAASA,EACT3G,KAAM20C,EACN3vC,QAASA,SCnjBN4xC,GAA0B,SAAC,GAGR,IAF9B3iC,EAE6B,EAF7BA,OACArZ,EAC6B,EAD7BA,SAEMyP,EAAYygB,KACVxX,EAAkBC,eAAlBD,EACAmG,EAAYF,KAAZE,QAoBFg7B,EAAuB56B,mBAAQ,WACnC,GAAgB,MAAZjf,EACF,MAAO,GAGT,IAAM65C,EAAuB,GAmBzBC,EAAiBlzC,EAAU5G,GAC/B85C,EAAevf,MAAK,SAAC30B,EAAQ40B,GAAY,IAAD,IAClC0f,EAAS,UAAGt0C,EAAEu0C,gBAAL,QAAiBvtB,IAC1BwtB,EAAS,UAAG5f,EAAE2f,gBAAL,QAAiBvtB,IAC9B,OAAIstB,EAAYE,GACN,EACCF,EAAYE,EACd,EAEA,KAjC8B,qBAqCrBN,GArCqB,IAqCzC,2BAAoC,CAAC,IAA5BzwC,EAA2B,QAC5BpH,EAAM0iB,OAAOtb,EAAQpH,KACrB26B,EAAQjY,OAAOtb,EAAQuzB,OACvBsT,EAASvrB,OAAOtb,EAAQ6mC,QACxB7O,GACkB,IAAtBh4B,EAAQ8qB,UACJxP,OAAOtb,EAAQ8qB,WACf9qB,EAAQ8qB,UACc,MAAxB0lB,EAAgB53C,KAClB43C,EAAgB53C,GAAO,IAGU,MAA/B43C,EAAgB53C,GAAK26B,KACvBid,EAAiB53C,GAAK26B,GAAS,IAiBU,MAAvCid,EAAgB53C,GAAK26B,GAAOsT,KAC9B2J,EAAiB53C,GAAK26B,GAAOsT,GAAU,IAGzC2J,EAAiB53C,GAAK26B,GAAOsT,GAAQjmC,KAAK,CACxCo3B,SAAUA,EACVh4B,QAASA,KAzE4B,8BA6EzC,OAAOwwC,IACN,CAAC75C,IAEE+5C,EAAe96B,mBAAQ,WAC3B,GAAuB,MAAnB46B,EACF,OAAO,KAET,IAAM1Z,EAAY,GAuIlB,OAtIA6Z,GAAeH,EAAiB,OAAOpS,SAAQ,SAACxlC,GAAD,OAC7C+3C,GAAeH,EAAgB53C,GAAM,SAASwlC,SAAQ,SAAC7K,GAAD,OACpDod,GAAeH,EAAgB53C,GAAK26B,GAAQ,UAAU6K,SACpD,SAACyI,GAaC,IAbU,EAaNld,EAAY,KAbN,eAeS6mB,EAAgB53C,GAAK26B,GAAOsT,IAfrC,IAeV,2BAAwD,CAAC,IAAD,QAA7CvmC,EAA6C,QAClD0wC,EAAUzzC,EAAU+C,EAAKN,SAEzBuvC,GAAY,GACN,OAANv/B,QAAM,IAANA,GAAA,UAAAA,EAAQpX,WAAR,eAAa+H,QAAS,IACxB4uC,EAAYA,GAAav/B,EAAOpX,IAAIsG,SAAS8xC,EAAQp4C,OAE7C,OAANoX,QAAM,IAANA,GAAA,UAAAA,EAAQujB,aAAR,eAAe5yB,QAAS,IAC1B4uC,EAAYA,GAAav/B,EAAOujB,MAAMr0B,SAAS8xC,EAAQzd,SAE/C,OAANvjB,QAAM,IAANA,GAAA,UAAAA,EAAQ62B,cAAR,eAAgBlmC,QAAS,IAC3B4uC,EAAYA,GAAav/B,EAAO62B,OAAO3nC,SAAS8xC,EAAQnK,UAEhD,OAAN72B,QAAM,IAANA,GAAA,UAAAA,EAAQ3Z,YAAR,eAAcsK,QAAS,IACzB4uC,EAAYA,GAAav/B,EAAO3Z,KAAK6I,SAAS8xC,EAAQ36C,OAGnDk5C,IAIL5lB,EAAY,IAAIF,GAAKnpB,EAAKN,QAAQg3B,mBAElCga,EAAQ36C,KAAO,QAuCf26C,EAAQ4B,oBAAsBjpB,EAAUxyB,IACtC,yBACA,KAEF65C,EAAQ6B,oBAAsBlpB,EAAUxyB,IACtC,yBACA,KAEF65C,EAAQ8B,oBAAsBnpB,EAAUxyB,IACtC,yBACA,KAEF65C,EAAQ+B,uBAAyBppB,EAAUxyB,IACzC,yBACA,KAEF65C,EAAQgC,uBAAyBrpB,EAAUxyB,IACzC,yBACA,KAEF65C,EAAQiC,uBAAyBtpB,EAAUxyB,IACzC,yBACA,KAEF65C,EAAQkC,kBAAoBvpB,EAAUxyB,IACpC,yBACA,KAEF65C,EAAQmC,kBAAoBxpB,EAAUxyB,IACpC,yBACA,KAEF65C,EAAQoC,kBAAoBzpB,EAAUxyB,IACpC,yBACA,KAEF65C,EAAQqC,6BAA+B1pB,EAAUxyB,IAC/C,mCACA,KAEF65C,EAAQsC,gCAAkC3pB,EAAUxyB,IAClD,mCACA,KAEF65C,EAAQuC,2BAA6B5pB,EAAUxyB,IAC7C,mCACA,KAEF2/B,EAAKl2B,KAAKowC,KA7HF,wCAmIXla,IACN,CAAC9mB,EAAQwgC,IAEN9tC,EAA8BkT,mBAAQ,WAiB1C,IAAMi8B,EAA2B,SAAC/3C,GAChC,OAAOsM,EAAUof,OAAO,SAAU,CAChCzkB,QAAS,CACPuhB,QAAS,WACTE,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,QAIjB,MAAO,CACL,CAGEze,MAAO,OACPkP,MAAOzC,EAAE,QACTq3B,UAAW,EACXtgC,UAAW,SAACoyB,EAAMC,EAAiBC,GACjC,IAAM5+B,EAAa0+B,EAAKsB,WAClB/9B,EAAYy8B,EAAKG,UACnBp/B,EAAOO,EAOX,OANIiC,EAAK+uB,YACPvxB,GAAQ,MAAQwC,EAAK+uB,UAAY,WAE/B/uB,EAAKnD,MACPW,EAAO,wCAAiCwC,EAAKnD,IAAtC,cAAwDW,GAE1DA,IAGX,CACEygC,SAAU,QACVkY,eAAgB,QAEhBtvC,MAAO,sBACPkP,MAAOzC,EAAE,sBACT8iC,sBAAuB,OACvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTmZ,EAAyBrZ,EAAKsB,aAChCvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,WAoBtB,CACEvY,SAAU,QACVkY,eAAgB,QAChBtvC,MAAO,sBACPkP,MACEzC,EAAE,uBACF,wDACF8iC,sBAAuB,OAEvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTmZ,EAAyBrZ,EAAKsB,aAChCvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,WAoBtB,CACEvY,SAAU,QACVkY,eAAgB,QAEhBtvC,MAAO,sBACPkP,MACEzC,EAAE,uBACF,wDACF8iC,sBAAuB,OACvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTmZ,EAAyBrZ,EAAKsB,aAChCvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,WAItB,CACEvY,SAAU,QACVkY,eAAgB,QAEhBtvC,MAAO,+BACPkP,MACE,6EACFqgC,sBAAuB,OACvB/rC,UAAW,SAACoyB,EAAMC,EAAiBC,GAAxB,OACTmZ,EAAyBrZ,EAAKsB,aAChCvB,OAAQ,SACR6Z,aAAc,CACZC,kBAAmB,IACnBC,iBAAkB,IAClBC,iBAAkB,cAoBvB,CAACnsC,EAAWiJ,IAkBTtO,EAAmB6U,mBACvB,iBAAO,CACLmjB,sBAAuB,SACvBE,OAAQ,aACRuZ,SAAU,SAAC59B,EAAGyrB,GACZA,EAAIoS,eACJ79B,EAAEqwB,kBAGF,IAAMlpC,EAAOskC,EAAI1H,UACjB,GAAI58B,EAAKjG,GAAI,CACX,IAAM48C,EAAOxtC,EAAME,cAAckN,QAAQ,MAAOvW,EAAKjG,IACrD0f,EAAQ5U,KAAK8xC,KAGjBpZ,YAAa,CAAC,CAAE/4B,OAAQ,sBAAuBumC,IAAK,SACpD3N,WAAY,KAEd,CAAC3jB,IAGH,OACE,cAACpY,EAAA,EAAD,CAAKF,UAAU,OAAf,SACE,cAACG,EAAA,EAAD,CAAKC,GAAI,GAAT,SACE,cAAC,GAAD,CACEJ,UAAU,eACVwF,QAASA,EACT3G,KAAM20C,EACN3vC,QAASA,SCrdNwsC,GAAc,CACzBiG,QAAS,CAAC,KAAM,SAAU,QAC1B56C,IAAK,CAAC,KAAM,WAAY,SAAU,cAAe,QACjD26B,MAAO,CAAC,SAAU,QAAS,cAAe,SAC1CiJ,SAAU,CAAC,OAAQ,OACnBqK,OAAQ,CAAC,WAAY,aACrBxwC,KAAM,CAAC,UAAW,sBAGPu2C,GAAkB,SAACrwC,EAAW40B,EAAW2F,GACpD,IAAI+V,EAAU/V,EAAKgW,QAAQvwC,IACV,IAAbswC,IACFA,EAAUtpB,KAEZ,IAAIwpB,EAAUjW,EAAKgW,QAAQ3b,GAI3B,OAHiB,IAAb4b,IACFA,EAAUxpB,KAERspB,EAAUE,GACJ,EACCF,EAAUE,EACZ,EAEA,GAgBE4D,GAAiB,SAAC8C,EAAU39C,GACvC,GAAW,MAAP29C,EACF,MAAO,GAGT,IAAMt1C,EAAOD,OAAOC,KAAKs1C,GAEzB,OAAQ39C,GACN,IAAK,MACL,IAAK,WACL,IAAK,QACHqI,EAAK+yB,MAAK,SAAC30B,EAAG40B,GAAJ,OAAUyb,GAAgBrwC,EAAG40B,EAAGoc,GAAYz3C,OACtD,MACF,IAAK,YACHqI,EAAK+yB,MAAK,SAAC30B,EAAG40B,GAAJ,OA1BW,SAAC50B,EAAW40B,GACrC,IAAM0b,EAAUxvB,SAAS9gB,EAAG,IACtBwwC,EAAU1vB,SAAS8T,EAAG,IAC5B,OAAI0b,EAAUE,GACJ,EACCF,EAAUE,EACZ,EAEA,EAkBe2G,CAAYn3C,EAAG40B,MAIvC,OAAOhzB,GAGIw1C,GAAc,WAEzB,MAAoB77C,oBAIlB,GAJK87C,EAAP,oBAMMnJ,EAAkBrU,KAClB76B,EAAOE,IACL2R,EAAgBc,IAAhBd,YACR,EAA4BipB,aAAW,CAAC,mBAAxC,mBAAOwd,EAAP,KAAetd,EAAf,KACMpqB,EAAW1W,OAAOiF,SAASyR,SAC3By6B,EACS,8BAAbz6B,GACa,+BAAbA,EAEI2nC,EAAYl+B,mBAChB,yCACEi+B,QADF,IACEA,OADF,EACEA,EAAQE,sBADV,QAC4B,CACxBn7C,IAAK,GACLiuC,OAAQ,GACRtT,MAAO,GACPzI,UAAW,GACXz0B,KAAM,MAEV,QAACw9C,QAAD,IAACA,OAAD,EAACA,EAAQE,iBAGX,EAA4Bj8C,mBAASg8C,GAArC,mBAAO9jC,EAAP,KAAe81B,EAAf,KAEAtwC,qBAAU,WACR+gC,EAAU,iBAAkBvmB,KAC3B,CAACA,EAAQumB,IAkBUnpB,EAAY7B,IAAIc,gBAAtC,IACM+d,EAAWtD,KAEjB,EAIIrZ,mBAAqB,YAAY,WACnC,OAAO7R,IAAM,GAAD,OAAIwR,EAAY7B,IAAIQ,IAAMqe,OAJ3B4pB,EADb,EACErmC,UACOsmC,EAFT,EAEEh4C,MACMi4C,EAHR,EAGEn4C,KAKIpF,EAA0Bif,mBAAQ,WACtC,OAAgB,MAAZs+B,EACK,GAGqCA,EAASn4C,KAAKiU,QAC1D,SAAC1P,GAAD,MACgB,YAAdA,EAAKjK,MAAoC,qBAAdiK,EAAKjK,QAGZgc,KAAI,SAAC8hC,GAAqB,IAAD,oBAuB/C,MAtB6B,CAC3BxqB,UAAWwqB,EAAgBxqB,UAC3BmnB,SAAQ,UAAEqD,EAAgBr7C,KAAKg4C,gBAAvB,QAAmC,KAC3Ch7C,GAAIq+C,EAAgB56C,KACpBA,KAAM46C,EAAgBr7C,KAAKS,KAC3BX,IAAG,UAAEu7C,EAAgBr7C,KAAKF,WAAvB,aAAE,EAA0BuG,cAC/B0nC,OAAM,oBAAGsN,EAAgBr7C,KAAK+tC,cAAxB,aAAG,EAA6B1nC,qBAAhC,QACJ,WACFo0B,MAAK,UACH4gB,EAAgBr7C,KAAKy6B,aADlB,aACH,EAA4Bp0B,cAC9Bq9B,SAAQ,UACN2X,EAAgBr7C,KAAK0jC,gBADf,aACN,EAA+Br9B,cACjC2rB,UAAWqpB,EAAgBr7C,KAAKgyB,UAChCz0B,KAAM89C,EAAgB99C,KACtB24C,YAAamF,EAAgBr7C,KAAKk2C,YAClClnC,MAAOqsC,EAAgBr7C,KAAKgP,MAC5BgK,MAAOqiC,EAAgBr7C,KAAKgZ,MAC5BklB,kBAAmB,CACjBtM,eAAc,iBAAEypB,QAAF,IAAEA,GAAF,UAAEA,EAAiBzpB,sBAAnB,aAAE,EAAiCC,aAAnC,QAA4C,KAC1DC,cAAa,iBAAEupB,QAAF,IAAEA,GAAF,UAAEA,EAAiBvpB,qBAAnB,aAAE,EAAgCD,aAAlC,QAA2C,YAK7D,CAACupB,IAEJ,OAAIF,EAEA,cAAC,GAAD,UACE,qBAAK92C,UAAU,yBAAf,SACE,cAACC,EAAA,EAAD,UACE,8BACE,oBAAID,UAAU,mDAAd,gCAUR+2C,EACK,eAAC,GAAD,qBAAkBA,EAAU73C,WAGhCb,EAAKN,QAKR,eAAC,GAAD,WACGwvC,EACD,qBAAKvtC,UAAU,eAAf,SACE,cAACC,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK8vB,GAAI,GAAT,UACE,6DACA,mBAAGjwB,UAAU,OAAb,4PAUR,qBAAKA,UAAU,6BAAf,SACE,cAACC,EAAA,EAAD,UACe,MAAZxG,EACC,cAAC,GAAD,CACEqZ,OAAQA,EACR81B,UAAWA,EACXnvC,SAAUA,IAGZ,iCAIN,sBAAKuG,UAAU,eAAf,UACE,cAACC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKF,UAAU,4CAAf,UACE,cAACG,EAAA,EAAD,CAAKC,GAAI,EAAGJ,UAAU,mCAkBtB,cAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,mBAAGJ,UAAU,gBAAgBijB,MAAO,CAAE+L,aAAc,GAApD,SACE,4IAQR,cAAC/uB,EAAA,EAAD,UACe,MAAZxG,EACCi9C,EACE,oCACmB,IAAhBhN,EACC,cAAC,GAAD,CACE52B,OAAQA,EACRrZ,SAAUA,IAGZ,cAAC,GAAD,CAAuBqZ,OAAQA,EAAQrZ,SAAUA,MAIrD,cAAC,GAAD,CAAkBqZ,OAAQA,EAAQrZ,SAAUA,IAG9C,kBAlFD,cAAC,GAAD,6BCjMEy9C,GAAqB,WAC9B,OACI,gCACI,uVASA,mDAEA,wFAEA,iFAEA,oeAWA,urBAcA,mfAWA,gJAKA,+3BAkBA,qDAEA,iUAQA,iOAOA,+CAEA,qVASA,sIAGI,uBAHJ,iNAUA,qDAEA,mSAQA,kPAOA,8JAMA,mDAEA,6ZAUA,0CAEA,8SAQA,wDAEA,gwBAgBA,iJAKA,mDAEA,mZASA,2DAEA,uOAOA,qUAQA,kSAQA,2CAEA,qOAKI,uBALJ,gBAQA,uNAMA,gEAEA,2NASCC,GAAiB,WAC1B,OACI,eAAC,GAAD,WACI,qBAAKn3C,UAAU,yBAAf,SACI,cAACC,EAAA,EAAD,UACI,sDAGR,qBAAKD,UAAU,YAAf,SACI,eAACC,EAAA,EAAD,WACI,cAAC,GAAD,IACA,qBAAKD,UAAU,YAAf,SACI,cAAC,IAAD,CAAMA,UAAU,uBAAuBkR,GAAIlJ,EAAMC,KAAjD,qCCzPXmvC,GAAmB,WAC5B,IAAMr5C,EAAUgT,IACR/S,EAAaO,IAAbP,SAER,OAAKD,EAoBD,sBAAKiC,UAAS,cAAShC,EAAW,gBAAkB,IAApD,UACI,eAAC,IAAD,WACI,cAAC7F,EAAD,IACA,eAAC,IAAD,WACI,cAAC,IAAD,CAAOk/C,OAAK,EAAC7d,KAAK,IAAlB,SACI,cAAC,GAAD,MAEJ,cAAC,IAAD,CAAOA,KAAK,eAAZ,SACI,cAAC,GAAD,MAEJ,cAAC,IAAD,CAAOA,KAAK,WAAZ,SACI,cAAC,GAAD,MAEJ,cAAC,IAAD,CAAOA,KAAK,cAAZ,SACI,cAAC,GAAD,MAEJ,cAAC,IAAD,CAAOA,KAAK,WAAZ,SACI,cAAC,GAAD,MAEJ,cAAC,IAAD,CAAOA,KAAK,SAAZ,SACI,cAAC,GAAD,MAEJ,cAAC,IAAD,CAAOA,KAAK,IAAZ,SACI,cAAC,GAAD,YAIZ,cAAC,IAAD,CACIh8B,SAAS,SACT85C,WAAW,SACXC,WAAW,gBACXt0B,MAAO,CAAEu0B,WAAY,WACrBC,YAAa,CACTp0B,gBAAiB,UACjBtB,MAAO,UACP0M,SAAU,QAEdipB,QAAS,IAVb,2KA5CA,cAACz3C,EAAA,EAAD,CAAWD,UAAU,OAArB,SACI,cAACE,EAAA,EAAD,CAAKF,UAAU,OAAf,SACI,cAACG,EAAA,EAAD,UACI,qBAAKH,UAAU,qCAAf,SACI,qBAAKA,UAAU,iBAAiB/G,KAAK,SAArC,SACI,sBAAM+G,UAAU,kBAAhB,mCChBzB,SAAS23C,GAAT,GAIgB,IAHnB33C,EAGkB,EAHlBA,UACA43C,EAEkB,EAFlBA,WACAz+C,EACkB,EADlBA,KAEA,EAA8ByB,mBAA6B,IAA3D,mBAAOiJ,EAAP,KAAgB6tB,EAAhB,KA0OA,OAxOAp5B,qBAAU,WAAO,IAAD,IACR2oC,EAAgB,GAChBmN,EAAU,UACA,YAATj1C,EAAA,OACKy+C,QADL,IACKA,OADL,EACKA,EAAYC,QAAQ/kC,QAAO,SAAC1P,GAAD,OAAUA,EAAK00C,GAAK,KADpD,OAEKF,QAFL,IAEKA,OAFL,EAEKA,EAAYG,WAAWjlC,QAAO,SAAC1P,GAAD,OAAUA,EAAK00C,GAAK,YAH9C,QAGqD,GAEnE1J,EAAWpa,MAAK,SAAC30B,EAAG40B,GAAJ,OACZ50B,EAAE24C,YAAc/jB,EAAE+jB,aACX,EACD/jB,EAAE+jB,YAAc34C,EAAE24C,YAClB,EACA,KAGV,IAAM5kB,EAA2C,GAE7CzpB,EAAM,YACND,GAAO,cACX,GAAa,YAATvQ,EAAoB,CACpB,IAAK,IAAIqK,EAAI,EAAGA,EAAI4qC,EAAW3qC,OAAQD,IAAK,CACxC,IAAM49B,EAAIgN,EAAW5qC,GAAGw0C,YACxB/W,EAAOv9B,KAAK,CACR09B,EAAGA,EACHviC,KAAMuvC,EAAW5qC,GACjBue,MAAOqf,EAAI,EAAI,MAAQ,UAEvBA,EAAIz3B,IACJA,EAAMy3B,GAENA,EAAI13B,IACJA,EAAM03B,GAGd,IAAI6W,EAAY,cAChB,OAAIL,QAAJ,IAAIA,KAAYh8C,KAAKs8C,eACjBD,EAAYL,EAAWh8C,KAAKs8C,aAAe,gBAE/C9kB,EAAO1vB,KAAK,CACRvK,KAAM,SACNkD,KAAM47C,EACNp5C,KAAMoiC,EAENzL,aAAc,CACVtxB,SAAS,GAEb6d,MAAgB,YAAT5oB,EAAqB,QAAU,YAEvC,CAEH,IADA,IAAMszB,EAAY,GACTjpB,EAAI,EAAGA,EAAI4qC,EAAW3qC,OAAQD,IAAK,CACxC,IAAMmpC,EAAIyB,EAAW5qC,GAEjB20C,EAAuBxL,EAAEqL,YACzBrL,EAAEqL,YAAcrL,EAAE/O,OAClBua,EAAuBxL,EAAE/O,MAEzB+O,EAAEqL,YAAc,GAAKrL,EAAE/O,KAAO,IAC9Bua,EAAuB,GAG3B,IAAMC,EAAYzL,EAAE/O,KAAOua,EACrBE,GAAeF,EAoBrB1rB,EAAU/oB,KAAK,CACX40C,IAAK3L,EACL4L,OAAQJ,EACRva,KAAM+O,EAAE/O,KACRwa,UAAWA,EACXC,YAAaA,IAGrB5rB,EAAUuH,MAAK,SAAU30B,EAAG40B,GACxB,OAAO50B,EAAEk5C,OAAStkB,EAAEskB,OAAS,EAAItkB,EAAEskB,OAASl5C,EAAEk5C,QAAU,EAAI,KAMhE,IADA,IAAMC,EAAmB,GAChBh1C,EAAI,EAAGA,EAAIipB,EAAUhpB,OAAQD,IAAK,CACvC,IAAMmpC,EAAIlgB,EAAUjpB,GAWpBg1C,EAAiB90C,KAAK,CAClB09B,EAAGuL,EAAE0L,YACLx5C,KAAM8tC,EAAE2L,IACRv2B,MAAO4qB,EAAE0L,YAAc,EAAI,MAAQ,UAa3CjlB,EAAO1vB,KAAK,CACR7E,KAAM25C,EACNn8C,KAAM,eACNlD,KAAM,WAId,IAIM48B,EAAQ,CACV0iB,eAAe,EACf7jC,MAAO,CAAEgQ,KAAM,UACfgT,UAAU,EACV3Q,OAAQ,CACJ/d,UAAW,WACP,OAA8B,IAArBzH,KAAa7E,OAAa8oB,QAAQ,GAAK,MAGxD/b,IAAc,YAATxQ,EAAqBwQ,OAAMlP,EAChCiP,IAAc,YAATvQ,EAAqBuQ,OAAMjP,EAChCq9B,aAAa,EACb0J,WAAW,EACXkX,WAAY,EACZ5L,WAAY,EACZtV,UAAW,CACP,CACIzV,MAAO,UACPU,MAAO,EACP7lB,MACa,YAATzD,EAAA,OACMy+C,QADN,IACMA,OADN,EACMA,EAAY5G,WAAW5jC,IAAIurC,GAAGX,cAC9B,iBACIJ,QADJ,IACIA,OADJ,EACIA,EAAY5G,WAAWvlC,OAAOmtC,GACzBZ,mBAFT,QAEwB,GAElCv1C,MAAO,CACHyG,UAAW,WAAa,IAAD,gBACnB,MAAO,MAAQ0uC,GAAc,MAMa,KAJtB,YAATz+C,EAAA,iBACKy+C,QADL,IACKA,GADL,UACKA,EAAY5G,kBADjB,iBACK,EAAwB5jC,WAD7B,iBACK,EAA6BurC,UADlC,aACK,EACMX,mBAFX,QAE0B,EAF1B,iBAGKJ,QAHL,IAGKA,GAHL,UAGKA,EAAY5G,kBAHjB,iBAGK,EAAwBvlC,cAH7B,iBAGK,EAAgCmtC,UAHrC,aAGK,EACMZ,mBAJX,QAI0B,IAC7BtyB,QAAQ,GAAK,QACf,QAOpB7hB,EAA8B,CAChCktB,MAAO,CACHkF,WAAW,EACXC,YAAa,EACb6K,YAAa,UACb5K,OAAQ,IACR0iB,WAAY,GACZC,cAAe,GACf9pB,aAAc,GACd71B,KAAM,UAEVyb,MAAO,CACHgQ,KACa,YAATzrB,EACM,gCACA,gCAEdm9B,QAAS,CAAEpyB,SAAS,GACpBqyB,UAAW,CAAEryB,SAAS,GACtBsyB,OAAQ,CAAEtyB,SAAS,EAAOwiC,UAAU,GACpCzP,UAAW,CAAE/yB,SAAS,GACtBjJ,UAAW,CAAEiJ,SAAS,GACtB8yB,cAAe,CACX9yB,SAAS,GAEbgzB,QAAS,CACLE,QAAQ,EACR4Q,SAAS,EACT9+B,UAAW,SAAUrF,GACjB,IADoC,EAC9By0C,EAAO72C,KAAaw/B,OAAO,GAAGE,MAAMtiC,KACtC8tC,EAAC,aAAS2L,EAAIvlB,OAAb,gBAA2BulB,EAAIj8C,KAA/B,SAF+B,eAGfoF,KAAaw/B,QAHE,IAGpC,2BAA0C,CAAC,IAAhCE,EAA+B,QACtCwL,GAAC,eAAYxL,EAAM/N,OAAO/2B,KAAzB,cACa,IAAV8kC,EAAMC,GACR1b,QAAQ,GAFT,MAJ+B,8BAQpC,OAAOinB,IAGfjW,YAAa,CACTtD,OAAQ,CACJ6C,WAAW,EACXoL,eAAgB,EAChB1L,OAAQ,CAAEmB,SAAU,CAAEC,QAAS,MAGvChB,MAAOA,EACPwB,MA9FmC,CACnCzB,SAAS,GA8FT1C,OAAQA,GAEZ1B,EAAW7tB,KACZ,CAAC+zC,EAAYz+C,IAGZ,cAACq3B,GAAD,CACIxwB,UAAWA,EACX0wB,gBAAgB,QAChBC,mBAAmB,EACnB9sB,QAASA,ICpPd,SAASk1C,GAAT,GAAmE,IAA1CnB,EAAyC,EAAzCA,WAAYhjC,EAA6B,EAA7BA,MAAOzb,EAAsB,EAAtBA,KAC3C+P,EAAYygB,KACZkrB,EAAmB33C,uBACvB,SAACN,GAAD,OACe,MAAbsM,GACAA,EAAUof,OAAO,SAAU,CACzBzkB,QAAS,CACPyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACZjmB,MAAO,KACPG,OAAQ,KAGZA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,SAEjB,CAACjb,IAOH,OACE,qCACE,6BAAK0L,IAEL,uBAAO5U,UAAU,0BAAjB,SACE,kCACE,+BACE,2CACY,IACA,YAAT7G,EAAqB,gBAAkB,kBAF1C,cAGc,YAATA,EAAqB,OAAS,OAHnC,KAGgD,IAC7C07C,EACU,YAAT17C,EAAA,OACIy+C,QADJ,IACIA,OADJ,EACIA,EAAYh8C,KAAKwR,IADrB,OAEIwqC,QAFJ,IAEIA,OAFJ,EAEIA,EAAYh8C,KAAK6P,QACpB,IARL,WASWmsC,EAAaA,EAAWh8C,KAAKs8C,aAAe,SAEvD,oBAAIl4C,UAAU,WAAd,SACG43C,IACW,YAATz+C,EACGy+C,EAAW5G,WAAW5jC,IAAI4rC,IAAIC,KAC9BrB,EAAW5G,WAAWvlC,OAAOutC,IAAIC,WAG3C,+BACE,2CACY,IACA,YAAT9/C,EAAqB,gBAAkB,kBAF1C,SAEmE,IACvD,YAATA,EACC,qCACE,sBAAM6G,UAAU,SAAhB,eACA,sBAAMA,UAAU,SAAhB,kBAGF,qCACE,sBAAMA,UAAU,SAAhB,eACA,sBAAMA,UAAU,SAAhB,qBAIN,oBAAIA,UAAU,WAAd,SACG43C,IACW,YAATz+C,EACGy+C,EAAW5G,WAAW5jC,IAAIurC,GAAGM,KAC7BrB,EAAW5G,WAAWvlC,OAAOmtC,GAAGK,WAG1C,+BACE,6BACE,yBAAQj5C,UAAU,OAAlB,0BACgB,IACJ,YAAT7G,EAAqB,gBAAkB,uBAG5C,oBAAI6G,UAAU,WAAd,SACE,wBAAQA,UAAU,OAAlB,SACG43C,GACC/C,EACW,YAAT17C,EACIy+C,EAAW5G,WAAW5jC,IAAIurC,GAAGO,OAC7BtB,EAAW5G,WAAWvlC,OAAOmtC,GAAGO,uBCvFjD,SAASC,GAAT,GAA+D,IAAD,mJAAlCxB,GAAkC,EAAlCA,WAAYz+C,GAAsB,EAAtBA,KACrC+P,GAAYygB,KACZkrB,GAAmB33C,uBACrB,SAACN,GAAD,OACiB,MAAbsM,IACAA,GAAUof,OAAO,SAAU,CACvBzkB,QAAS,CACLyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACVjmB,MAAO,KACPG,OAAQ,KAGhBA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,SAErB,CAACjb,KAGCmwC,GAAS3gC,mBACX,yBAAMk/B,SAAN,IAAMA,QAAN,EAAMA,GAAYh8C,KAAK09C,aACvB,QAAC1B,SAAD,IAACA,QAAD,EAACA,GAAYh8C,KAAK09C,aAMtB,OACI,mCACI,wBAAOt5C,UAAU,0BAAjB,UACI,gCACI,6BACI,+BACc,YAAT7G,GACG,qCACI,sBAAM6G,UAAU,SAAhB,eACA,sBAAMA,UAAU,SAAhB,kBAGJ,qCACI,sBAAMA,UAAU,SAAhB,eACA,sBAAMA,UAAU,SAAhB,kBAEL,IAXP,sBAgBR,kCACI,+BACI,kDACA,oBAAIA,UAAU,WAAd,SACK43C,IAAuB,YAATz+C,GAAd,OACKy+C,SADL,IACKA,IADL,UACKA,GAAY2B,aADjB,iBACK,EAAmBzB,UADxB,iBACK,EAAuB0B,oBAD5B,aACK,EAAsC,GACjChhB,YAFV,OAGKof,SAHL,IAGKA,IAHL,UAGKA,GAAY2B,aAHjB,iBAGK,EAAmBzB,UAHxB,iBAGK,EAAuB0B,oBAH5B,aAGK,EAAsC,GACjChhB,iBAGnB,+BACI,2CAEc,YAATr/B,GAAqB,aAAe,aAFzC,YAKA,oBAAI6G,UAAU,WAAd,SACK43C,GACY,YAATz+C,GAAA,UACIy+C,GAAW2B,aADf,iBACI,eAAyBF,YAD7B,iBACI,EACMG,oBAFV,iBACI,EACqB,cAFzB,aACI,EAC6BhhB,YAFjC,UAIIof,GAAW2B,aAJf,iBAII,eAAyBF,YAJ7B,iBAII,EACMG,oBALV,iBAII,EACqB,cALzB,aAII,EAC6BhhB,YAGjC,kCAIZ,+BACI,sCAEc,YAATr/B,GACK,aACA,aAAc,IAJxB,YAOA,oBAAI6G,UAAU,WAAd,SACK43C,IACG/C,GACa,YAAT17C,IACM,UAAAy+C,GAAW2B,aAAX,gCAAyBF,YAAzB,mBACMG,oBADN,mBACqB,cADrB,eAEMhhB,cAFN,OAGIof,SAHJ,IAGIA,IAHJ,UAGIA,GAAY2B,aAHhB,iBAGI,EAAmBzB,UAHvB,iBAGI,EACM0B,oBAJV,aAGI,EACqB,GAChBhhB,cACT,UAAAof,GAAW2B,aAAX,gCAAyBF,YAAzB,mBACMG,oBADN,mBACqB,cADrB,eAEMhhB,cAFN,OAGIof,SAHJ,IAGIA,IAHJ,UAGIA,GAAY2B,aAHhB,iBAGI,EAAmBzB,UAHvB,iBAGI,EACM0B,oBAJV,aAGI,EACqB,GAChBhhB,mBAI/B,+BACI,+BACc,YAATr/B,GAAqB,YAAc,YAAa,IADrD,gCAIA,oBAAI6G,UAAU,WAAd,SACK43C,IACG/C,GACa,YAAT17C,GAAA,OACMy+C,SADN,IACMA,IADN,UACMA,GAAY2B,aADlB,iBACM,eAA0BF,YADhC,iBACM,EACMG,oBAFZ,iBACM,EACqB,cAF3B,aACM,YAEOH,GAFP,eADN,OAKMzB,SALN,IAKMA,IALN,UAKMA,GAAY2B,aALlB,iBAKM,eAA0BF,YALhC,iBAKM,EACMG,oBANZ,iBAKM,EACqB,cAN3B,aAKM,YAEOH,GAFP,qBAOtB,+BACI,2CACc,IACA,YAATlgD,GAAqB,YAAc,YAAa,IAFrD,YAKA,oBAAI6G,UAAU,WAAd,SACmB,MAAd43C,IAA+B,YAATz+C,GAAtB,OACKy+C,SADL,IACKA,IADL,UACKA,GAAY2B,aADjB,iBACK,eAA0BF,YAD/B,iBACK,EACMG,oBAFX,iBACK,EACqB,cAF1B,aACK,EAC6BhhB,YAFlC,OAGKof,SAHL,IAGKA,IAHL,UAGKA,GAAY2B,aAHjB,iBAGK,eAA0BF,YAH/B,iBAGK,EACMG,oBAJX,iBAGK,EACqB,cAJ1B,aAGK,EAC6BhhB,iBAG3C,+BACI,sCACS,IACK,YAATr/B,GAAqB,YAAc,YAAa,IAFrD,YAKA,oBAAI6G,UAAU,WAAd,SACK43C,IACG/C,GACa,YAAT17C,IACgB,OAAVy+C,SAAU,IAAVA,IAAA,UAAAA,GAAY2B,aAAZ,gCAA0BF,YAA1B,mBACMG,oBADN,mBACqB,cADrB,eAEMhhB,cAFN,OAGIof,SAHJ,IAGIA,IAHJ,UAGIA,GAAY2B,aAHhB,iBAGI,EAAmBzB,UAHvB,iBAGI,EACM0B,oBAJV,aAGI,EACqB,GAChBhhB,cACC,OAAVof,SAAU,IAAVA,IAAA,WAAAA,GAAY2B,aAAZ,mCAA0BF,YAA1B,sBACMG,oBADN,sBACqB,cADrB,iBAEMhhB,cAFN,OAGIof,SAHJ,IAGIA,IAHJ,WAGIA,GAAY2B,aAHhB,mBAGI,GAAmBzB,UAHvB,mBAGI,GACM0B,oBAJV,cAGI,GACqB,GAChBhhB,mBAI/B,+BACI,+BACc,YAATr/B,GAAqB,YAAc,YAAa,IADrD,gCAIA,oBAAI6G,UAAU,WAAd,SACK43C,IACG/C,GACa,YAAT17C,GAAA,OACMy+C,SADN,IACMA,IADN,WACMA,GAAY2B,aADlB,mBACM,gBAA0BF,YADhC,mBACM,GACMG,oBAFZ,mBACM,GACqB,cAF3B,cACM,aAEOH,GAFP,eADN,OAKMzB,SALN,IAKMA,IALN,WAKMA,GAAY2B,aALlB,mBAKM,gBAA0BF,YALhC,mBAKM,GACMG,oBANZ,mBAKM,GACqB,cAN3B,cAKM,aAEOH,GAFP,6BCnL3B,SAASI,GAAT,GAIgB,IAAD,EAH1Bz5C,EAG0B,EAH1BA,UACA43C,EAE0B,EAF1BA,WACAz+C,EAC0B,EAD1BA,KAEA,EAA8ByB,mBAA6B,IAA3D,mBAAOiJ,EAAP,KAAgB6tB,EAAhB,KACMhsB,EAAQgT,mBACV,2CAAMk/B,QAAN,IAAMA,GAAN,UAAMA,EAAYh8C,YAAlB,aAAM,EAAkB09C,kBAAxB,QAAsC,KACtC,QAAC1B,QAAD,IAACA,GAAD,UAACA,EAAYh8C,YAAb,aAAC,EAAkB09C,aAEjBzB,EAAiBn/B,mBACnB,mDACIk/B,QADJ,IACIA,GADJ,UACIA,EAAY2B,aADhB,iBACI,eAA0B7zC,WAD9B,iBACI,EAAoCk0B,KAAK,cAD7C,aACI,EAAiD8f,OAAjD,OACI9B,QADJ,IACIA,GADJ,UACIA,EAAY2B,aADhB,iBACI,eAA0B7zC,WAD9B,aACI,EAAoCk0B,KAAK,eAFjD,QAGS,KACT,QAACge,QAAD,IAACA,OAAD,EAACA,EAAY2B,MAAO7zC,IAElBqyC,EAAoBr/B,mBACtB,mDACIk/B,QADJ,IACIA,GADJ,UACIA,EAAY2B,aADhB,iBACI,eAA0B7zC,WAD9B,iBACI,EAAoCk0B,KAAK,cAD7C,aACI,EAAiD8f,OAAjD,OACI9B,QADJ,IACIA,GADJ,UACIA,EAAY2B,aADhB,iBACI,eAA0B7zC,WAD9B,aACI,EAAoCk0B,KAAK,eAFjD,QAGS,KACT,QAACge,QAAD,IAACA,OAAD,EAACA,EAAY2B,MAAO7zC,IAuJxB,OApJApN,qBAAU,WAAO,IAAD,MACR2oC,EAAgB,GAChBmN,EAAU,UACA,YAATj1C,EAAA,OACK0+C,QADL,IACKA,OADL,EACKA,EAAS/kC,QAAO,SAAC1P,GAAD,OAAUA,EAAK00C,GAAK,KADzC,OAEKC,QAFL,IAEKA,OAFL,EAEKA,EAAYjlC,QAAO,SAAC1P,GAAD,OAAUA,EAAK00C,GAAK,YAHnC,QAG0C,GAExD1J,EAAWpa,MAAK,SAAC30B,EAAG40B,GAAJ,OACZ50B,EAAEqG,GAASuuB,EAAEvuB,IAAU,EAAIuuB,EAAEvuB,GAASrG,EAAEqG,GAAS,EAAI,KAQzD,IALA,IAAM0tB,EAA2C,GAE7CzpB,EAAM,YACND,GAAO,cAEFlG,EAAI,EAAGA,EAAI4qC,EAAW3qC,OAAQD,IAAK,CACxC,IAAM49B,EAAIgN,EAAW5qC,GAAGkC,GACxBu7B,EAAOv9B,KAAK,CACR09B,EAAGA,EACHviC,KAAMuvC,EAAW5qC,GACjBue,MAAOqf,EAAI,EAAI,MAAQ,UAEvBA,EAAIz3B,IACJA,EAAMy3B,GAENA,EAAI13B,IACJA,EAAM03B,GAGd,IAAI6W,EAAY,cAChB,OAAIL,QAAJ,IAAIA,KAAYh8C,KAAK+9C,iBACjB1B,EAAYL,EAAWh8C,KAAK+9C,eAAiB,gBAEjDvmB,EAAO1vB,KAAK,CACRvK,KAAM,SACNkD,KAAM47C,EACNp5C,KAAMoiC,EAENzL,aAAc,CACVtxB,SAAS,GAEb6d,MAAgB,YAAT5oB,EAAqB,QAAU,QAG1C,IAIM48B,EAAQ,CACV0iB,eAAe,EACf7jC,MAAO,CAAEgQ,KAAM,UACfgT,UAAU,EACV3Q,OAAQ,CACJ/d,UAAW,WACP,OAA8B,IAArBzH,KAAa7E,OAAa8oB,QAAQ,GAAK,MAGxD/b,IAAc,YAATxQ,EAAqBwQ,OAAMlP,EAChCiP,IAAc,YAATvQ,EAAqBuQ,OAAMjP,EAChCq9B,aAAa,EACb0J,WAAW,EACXkX,WAAY,EACZ5L,WAAY,GA6BVjpC,EAA8B,CAChCktB,MAAO,CACHkF,WAAW,EACXC,YAAa,EACb6K,YAAa,UACb5K,OAAQ,IACR0iB,WAAY,GACZC,cAAe,GACf9pB,aAAc,GACd71B,KAAM,UAEVyb,MAAO,CACHyiB,SAAS,EACTzS,KACa,YAATzrB,EAAA,0GACkGy+C,QADlG,IACkGA,GADlG,UACkGA,EAAYh8C,YAD9G,aACkG,EAAkB+9C,eADpH,8HAEkG/B,QAFlG,IAEkGA,GAFlG,UAEkGA,EAAYh8C,YAF9G,aAEkG,EAAkB+9C,eAFpH,oBAIJ12B,MAAO,CAAE9Z,QAAS,SAEtBmtB,QAAS,CAAEpyB,SAAS,GACpBqyB,UAAW,CAAEryB,SAAS,GACtBsyB,OAAQ,CAAEtyB,SAAS,EAAOwiC,UAAU,GACpCzP,UAAW,CAAE/yB,SAAS,GACtBjJ,UAAW,CAAEiJ,SAAS,GACtB8yB,cAAe,CACX9yB,SAAS,GAEbgzB,QAAS,CACLE,QAAQ,EACR4Q,SAAS,EACT9+B,UAAW,SAAUrF,GACjB,IADoC,EAC9By0C,EAAO72C,KAAaw/B,OAAO,GAAGE,MAAMtiC,KACtC8tC,EAAC,aAAS2L,EAAIvlB,OAAb,gBAA2BulB,EAAIj8C,KAA/B,SAF+B,eAGfoF,KAAaw/B,QAHE,IAGpC,2BAA0C,CAAC,IAAhCE,EAA+B,QACtCwL,GAAC,eAAYxL,EAAM/N,OAAO/2B,KAAzB,cACa,IAAV8kC,EAAMC,GACR1b,QAAQ,GAFT,MAJ+B,8BAQpC,OAAOinB,IAGfjW,YAAa,CACTtD,OAAQ,CACJ6C,WAAW,EACXoL,eAAgB,EAChB1L,OAAQ,CAAEmB,SAAU,CAAEC,QAAS,MAGvChB,MAAOA,EACPwB,MAjGmC,CACnCzB,SAAS,GAiGT1C,OAAQA,GAEZ1B,EAAW7tB,KACZ,CAACk0C,EAAYH,EAAYlyC,EAAOmyC,EAAS1+C,IAGxC,cAACq3B,GAAD,CACIxwB,UAAWA,EACX0wB,gBAAgB,QAChBC,mBAAmB,EACnB9sB,QAASA,IC7KrB,IA+HM6pC,GAAUplC,EAAoB+F,IAAIQ,IAEjC,SAAS+qC,GAAT,GAA6C,EAA1Bj/C,SAA2B,IAAD,kBACxCoD,EAAYQ,IAAZR,QACR,EAAgDnD,qBAAhD,mBAAOi/C,EAAP,KAAyBC,EAAzB,KACQ78C,EAAgBJ,IAAhBI,YACFiM,EAAYygB,KAClB,EAAsC/uB,oBAAS,GAA/C,mBAAOm/C,EAAP,KAAoBC,EAApB,KACA,EAA4Cp/C,oBAAS,GAArD,mBAAOq/C,EAAP,KAAuBC,EAAvB,KACA,EAAoDt/C,oBAAS,GAA7D,mBAAOu/C,EAAP,KAA2BC,EAA3B,KACA,EAA0Dx/C,oBAAS,GAAnE,mBAAOy/C,EAAP,KAA8BC,EAA9B,KAEMC,EAA4Br9C,uBAC9B,SAACN,GAAD,OACiB,MAAbsM,GACAA,EAAUof,OAAO,SAAU,CACvBzkB,QAAS,CACLyhB,iBAAiB,EACjBjB,cAAc,EACdD,SAAU,EACV7B,aAAc,CACVjmB,MAAO,KACPG,OAAQ,KAGhBA,OAAQ,OACRG,MAAOA,EACPunB,YAAa,SAErB,CAACjb,IAIL5Q,qBAAU,WAEkB,MAApBuhD,GAGJ58C,EAAY,UAAW48C,EAAiBx9C,KAAM,QAC/C,CAACY,EAAa48C,IAEjB,IAxKoBnM,EAwKpB,EAIIn9B,mBAA8B,eA5Kdm9B,EA4K4CA,GA3KhE,uCAAO,6BAAAruC,EAAA,+DAASsuC,SAAT,SAEoBjvC,IAAM,GAAD,OACrBgvC,EADqB,gDAFzB,cAEGh1C,EAFH,yBAKIA,EAASmG,KAAKm1B,MAAK,SAAC30B,EAAQ40B,GAAT,OACtByb,GAAgBrwC,EAAEhD,KAAM43B,EAAE53B,KAAMg0C,GAAYiG,aAN7C,2CAAP,wDAwKekE,EADf,EACI/pC,UACOgqC,EAFX,EAEI17C,MACM27C,EAHV,EAGI77C,KAGJ,EAII0R,mBACA,CAAC,aAAc,CAAEspC,mBAAkBa,gBAvKjB,SAAChN,GACvB,8CAAO,uCAAAruC,EAAA,yDAASsuC,EAAT,EAASA,SAAT,cAC2CA,EAD3C,UACQkM,EADR,EACQA,iBAQO,MATf,EAC0Ba,YAE0BlU,MACnD,SAACoR,GAAD,OACIA,EAAWv7C,OAASw9C,EAAiBx9C,MACrCu7C,EAAWz+C,OAAS0gD,EAAiB1gD,QAN1C,sBAUO,IAAI6D,MAAJ,iCACwB68C,EAAiBx9C,KADzC,sBAC2Dw9C,EAAiB1gD,OAXnF,cAeGy0C,EAfH,UAeYF,EAfZ,YAeuBmM,EAAiB1gD,KAfxC,YAegD0gD,EAAiBx9C,KAfjE,YAeyEw9C,EAAiBx9C,KAf1F,kBAgBoBqC,IAAMkvC,GAhB1B,cAgBGl1C,EAhBH,yBAiBIA,EAASmG,MAjBb,4CAAP,sDAuKI87C,CAAkBjN,IAClB,CAEIxpC,UACK,OAAC21C,QAAD,IAACA,MAAkBx9C,SACnB,OAACw9C,QAAD,IAACA,MAAkB1gD,SAClBuhD,IAXCE,EADf,EACInqC,UACOoqC,EAFX,EAEI97C,MACM64C,GAHV,EAGI/4C,KAaE6G,GAAQgT,mBACV,2CAAMk/B,SAAN,IAAMA,IAAN,UAAMA,GAAYh8C,YAAlB,aAAM,EAAkB09C,kBAAxB,QAAsC,KACtC,QAAC1B,SAAD,IAACA,IAAD,UAACA,GAAYh8C,YAAb,aAAC,EAAkB09C,aAGjBwB,GAAiBpiC,mBAA2B,WAC9C,MAAO,CACHyd,OAAQ,IACRiG,YAAa,CACT,CACI/4B,OAAQqC,GACRkkC,IAAK,YAIlB,CAAClkC,KAEEq1C,GAAoBriC,mBAA2B,WACjD,MAAO,CACHyd,OAAQ,IACRiG,YAAa,CACT,CACI/4B,OAAQqC,GACRkkC,IAAK,WAIlB,CAAClkC,KAEEs1C,GAA2BtiC,mBAA2B,WACxD,MAAO,CACHyd,OAAQ,IACRiG,YAAa,CACT,CACI/4B,OAAQ,OACRumC,IAAK,WAIlB,IAEGqR,GAAwBviC,mBAA2B,WACrD,MAAO,CACHyd,OAAQ,IACRiG,YAAa,CACT,CACI/4B,OAAQ,OACRumC,IAAK,YAIlB,IAEGiO,GAAiBn/B,mBACnB,mDACIk/B,SADJ,IACIA,IADJ,UACIA,GAAY2B,aADhB,iBACI,eAA0B7zC,YAD9B,iBACI,EAAoCk0B,KAAK,cAD7C,aACI,EAAiD8f,OAAjD,OACI9B,SADJ,IACIA,IADJ,UACIA,GAAY2B,aADhB,iBACI,eAA0B7zC,YAD9B,aACI,EAAoCk0B,KAAK,eAFjD,QAGS,KACT,QAACge,SAAD,IAACA,QAAD,EAACA,GAAY2B,MAAO7zC,KAElBqyC,GAAoBr/B,mBACtB,mDACIk/B,SADJ,IACIA,IADJ,UACIA,GAAY2B,aADhB,iBACI,eAA0B7zC,YAD9B,iBACI,EAAoCk0B,KAAK,cAD7C,aACI,EAAiD8f,OAAjD,OACI9B,SADJ,IACIA,IADJ,UACIA,GAAY2B,aADhB,iBACI,eAA0B7zC,YAD9B,aACI,EAAoCk0B,KAAK,eAFjD,QAGS,KACT,QAACge,SAAD,IAACA,QAAD,EAACA,GAAY2B,MAAO7zC,KAGlBF,GAAUkT,mBAAsC,WAClD,MAAO,CACH,CACIhT,MAAO,KACPo3B,SAAU,SACVloB,MAAO,SACP20B,eAAgB,iBAAM,sCACtBlO,OAAQ,SACR4Z,sBAAuB,OACvBzL,UAAW,GAEf,CACI9jC,MAAO,SACPkP,MAAO,SACP20B,eAAgB,iBAAM,sCACtBC,UAAW,GAEf,CACI9jC,MAAO,OACPkP,MAAO,OACP20B,eAAgB,iBAAM,kCACtBC,UAAW,GAEf,CACI9jC,MAAOA,GACPwD,UAAW,SAACoyB,GAAD,OACPpyB,EAAUof,OAAO,SAAU,CACvBzkB,QAAS,CACLyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACVjmB,MAAO,KACPG,OAAQ,OAGhBA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,QAErB6wB,eAAgB,QAChBlY,SAAU,QACVloB,MAAO,QACP20B,eAAgB,2EAERqO,SAFQ,IAERA,QAFQ,EAERA,GAAYh8C,KAAK+9C,sBAFT,QAE2B,GAF3B,mBAIhBte,OAAQ,SACRmO,UAAW,QAgDpB,QAACoO,SAAD,IAACA,QAAD,EAACA,GAAYh8C,KAAK+9C,eAAgBj0C,GAAOwD,IAEtCgyC,GAAiBxiC,mBAAsC,WACzD,MAAO,CACH,CACIhT,MAAO,KACPo3B,SAAU,SACVloB,MAAO,SACP20B,eAAgB,iBAAM,sCACtBlO,OAAQ,SACR4Z,sBAAuB,OACvBzL,UAAW,GAEf,CACI9jC,MAAO,SACPkP,MAAO,SACP20B,eAAgB,iBAAM,sCACtBC,UAAW,GAEf,CACI9jC,MAAO,OACPkP,MAAO,OACP20B,eAAgB,iBAAM,kCACtBC,UAAW,GAEf,CACI9jC,MAAO,OACPwD,UAAW,SAACoyB,GAAD,OACPpyB,EAAUof,OAAO,SAAU,CACvBzkB,QAAS,CACLyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACVjmB,MAAO,KACPG,OAAQ,OAGhBA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,QAErB6wB,eAAgB,QAChBlY,SAAU,QACVloB,MAAO,QACP20B,eAAgB,2EAERqO,SAFQ,IAERA,QAFQ,EAERA,GAAYh8C,KAAK+9C,sBAFT,QAE2B,GAF3B,mBAIhBte,OAAQ,SACRmO,UAAW,KAEf,CACI9jC,MAAO,cACPwD,UAAW,SAACoyB,GAAD,OACPpyB,EAAUof,OAAO,SAAU,CACvBzkB,QAAS,CACLyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACVjmB,MAAO,KACPG,OAAQ,OAGhBA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,QAErB2Y,SAAU,QACVloB,MAAO,eACP20B,eAAgB,iBACZ,8DACJlO,OAAQ,SACRmO,UAAW,KAEf,CACI9jC,MAAO,UACPwD,UAAW,SAACoyB,GAAD,OACPpyB,EAAUof,OAAO,SAAU,CACvBzkB,QAAS,CACLyhB,iBAAiB,EACjBjB,cAAc,EACd9B,aAAc,CACVjmB,MAAO,KACPG,OAAQ,OAGhBA,OAAQ,OACRG,MAAO0+B,EAAKsB,WACZzY,YAAa,QAErB2Y,SAAU,QACVloB,MAAO,UACP20B,eAAgB,iBAAM,wCACtBlO,OAAQ,SACRmO,UAAW,QAGpB,QAACoO,SAAD,IAACA,QAAD,EAACA,GAAYh8C,KAAK+9C,eAAgBzwC,IAarC,OAXA5Q,qBAAU,WACa,MAAfoiD,GAA8C,IAAvBA,EAAYj3C,QAGvCq2C,EAAoBY,EAAY,MACjC,CAACA,KAMC38C,GAAWy8C,EACL,+CAGPC,GAAoBI,QAAmCpgD,IAAhBigD,EAChC,4DAIP,eAACz6C,EAAA,EAAD,CAAWmR,OAAK,EAACpR,UAAU,oBAA3B,UACI,cAACE,EAAA,EAAD,CAAKF,UAAU,OAAf,SACI,cAACG,EAAA,EAAD,CAAKH,UAAU,gCAAgCI,GAAI,GAAnD,SACKs6C,EAAYvlC,KAAI,SAACyiC,GAAD,aACb,eAAC/gC,GAAA,EAAD,CACItd,OAAQq+C,EAAWv7C,QAAX,OAAoBw9C,QAApB,IAAoBA,OAApB,EAAoBA,EAAkBx9C,MAC9C2D,UAAU,uBAEVga,QAAQ,kBACRnF,QAAS,kBAAMilC,EAAoBlC,IALvC,UAOKA,EAAWh8C,KAAKS,KAAM,IAP3B,UAQMu+C,GACEhD,EAAWv7C,QAAX,OAAoBw9C,QAApB,IAAoBA,OAApB,EAAoBA,EAAkBx9C,aAT9C,QAUQ,oDAPCu7C,EAAWv7C,aA2BhC,eAAC6D,EAAA,EAAD,CAAKF,UAAU,iBAAf,UACI,cAACG,EAAA,EAAD,CAAKC,GAAI,GAAT,SACI,qBAAIJ,UAAU,cAAd,+CACuC,IADvC,OAEK06C,QAFL,IAEKA,GAFL,UAEKA,EAAc,UAFnB,iBAEK,EAAkB9+C,YAFvB,aAEK,EAAwB+9C,eAF7B,uBAGY,IACR,sBAAM35C,UAAU,aAAhB,iCAGR,eAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,cAACg5C,GAAD,CAAkBxB,WAAYA,GAAYz+C,KAAK,YAC/C,cAACsgD,GAAD,CACI7B,WAAYA,GACZz+C,KAAK,YAET,qBAAK6G,UAAU,gCAAf,SACI,cAAC6W,GAAA,EAAD,CACItd,OAAQwgD,EACRllC,QAAS,kBAAMmlC,GAAgBD,IAC/B/5C,UAAU,wBACVga,QAAQ,kBAJZ,gCAUH+/B,GACG,cAAC,GAAD,CACI/5C,UAAU,OACVwF,QAASA,GACT3G,KAAMg5C,GACNh0C,QAASi3C,QAIrB,eAAC36C,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,cAACg5C,GAAD,CAAkBxB,WAAYA,GAAYz+C,KAAK,WAC/C,cAACsgD,GAAD,CACI7B,WAAYA,GACZz+C,KAAK,WAET,qBAAK6G,UAAU,gCAAf,SACI,cAAC6W,GAAA,EAAD,CACItd,OAAQ0gD,EACRplC,QAAS,kBAAMqlC,GAAmBD,IAClCj6C,UAAU,wBACVga,QAAQ,kBAJZ,gCAUHigC,GACG,cAAC,GAAD,CACIj6C,UAAU,OACVwF,QAASA,GACT3G,KAAMk5C,GACNl0C,QAASk3C,WAKzB,uBACA,cAAC76C,EAAA,EAAD,CAAKF,UAAU,iBAAf,SACI,cAACG,EAAA,EAAD,CAAKC,GAAI,GAAT,SACI,qBAAIJ,UAAU,cAAd,0CAEI,uBAFJ,kCAE0C,IAGf,OADuC,UAAA06C,EAAY,UAAZ,mBACpD9+C,YADoD,eAC9CwR,KACNmtC,EAAyB,UACrBG,EAAY,UADS,iBACrB,EAAgB9+C,YADK,aACrB,EAAsBwR,KAE1B,IATd,kCAWoC,IAXpC,OAYKstC,QAZL,IAYKA,GAZL,UAYKA,EAAc,UAZnB,iBAYK,EAAkB9+C,YAZvB,aAYK,EAAwBs8C,aAZ7B,IAaI,uBAbJ,wBAkBR,eAACh4C,EAAA,EAAD,CAAKF,UAAU,OAAf,UACI,eAACG,EAAA,EAAD,CAAKC,GAAI,EAAT,UACI,cAAC24C,GAAD,CACInB,WAAYA,GACZhjC,MAAM,gBACNzb,KAAK,YAET,cAACw+C,GAAD,CACI33C,UAAU,qBACV43C,WAAYA,GACZz+C,KAAK,YAET,qBAAK6G,UAAU,gCAAf,SACI,cAAC6W,GAAA,EAAD,CACItd,OAAQ4gD,EACRtlC,QAAS,kBACLulC,GAAuBD,IAE3Bn6C,UAAU,wBACVga,QAAQ,kBANZ,gCAWHmgC,GACG,cAAC,GAAD,CACIn6C,UAAU,OACVwF,QAAS01C,GACTr8C,KAAI,OAAE+4C,SAAF,IAAEA,QAAF,EAAEA,GAAYC,QAClBh0C,QAASo3C,QAIrB,eAAC96C,EAAA,EAAD,CAAKC,GAAI,EAAGJ,UAAU,eAAtB,UACI,cAAC+4C,GAAD,CACInB,WAAYA,GACZhjC,MAAM,kBACNzb,KAAK,WAET,cAACw+C,GAAD,CACI33C,UAAU,qBACV43C,WAAYA,GACZz+C,KAAK,WAET,qBAAK6G,UAAU,gCAAf,SACI,eAAC6W,GAAA,EAAD,CACItd,OAAQ8gD,EACRxlC,QAAS,kBACLylC,GAA0BD,IAE9Br6C,UAAU,wBACVga,QAAQ,kBANZ,6BAQqB,SAGxBqgC,GACG,cAAC,GAAD,CACIr6C,UAAU,OACVwF,QAAS01C,GACTr8C,KAAI,OAAE+4C,SAAF,IAAEA,QAAF,EAAEA,GAAYG,WAClBl0C,QAASm3C,cClpB9B,IAAMG,GAAM,WAGf,OAFgBpqC,IAsBZ,eAAC,IAAD,WACI,cAAC5Y,EAAD,IACA,eAAC,IAAD,WACI,cAAC,IAAD,CAAOqhC,KAAK,WAAZ,SACI,cAACogB,GAAD,MAEJ,cAAC,IAAD,CAAOpgB,KAAK,IAAZ,SACI,cAAC,GAAD,YAxBR,cAACv5B,EAAA,EAAD,CAAWD,UAAU,OAArB,SACI,cAACE,EAAA,EAAD,CAAKF,UAAU,OAAf,SACI,cAACG,EAAA,EAAD,UACI,qBAAKH,UAAU,qCAAf,SACI,qBAAKA,UAAU,iBAAiB/G,KAAK,SAArC,SACI,sBAAM+G,UAAU,kBAAhB,mC,sECRhCmiC,KAIKiZ,IAAIC,MAGJD,IAAIE,MAEJF,IAAIG,MAGJH,IAAII,kBACJC,KAAK,CACFC,YAAa,KACbC,OAAO,EAEPC,MAAO,CACHC,aAAa,GAGjBC,cAAe,CACXC,aAAa,KAIV5Z,UAAf,E,UChBA6Z,eAGA,WAEI,GAAkC,oBAAvBzjD,OAAO2f,YAA4B,OAAO,EAErD,SAASA,EAAYzG,EAAYhS,GAC7BA,EAASA,GAAU,CACfw8C,SAAS,EACTC,YAAY,EACZlkC,YAAQvd,GAEZ,IAAI0hD,EAAM5+C,SAAS6+C,YAAY,eAO/B,OANAD,EAAIE,gBACA5qC,EACAhS,EAAOw8C,QACPx8C,EAAOy8C,WACPz8C,EAAOuY,QAEJmkC,EAGXjkC,EAAYokC,UAAY/jD,OAAOgkD,MAAMD,UAEpC/jD,OAAe2f,YAAcA,EAtBlC,GAyBA,IC9CgCskC,GD8C1BC,GAAc,IAAIC,cAAY,CAChCC,eAAgB,CACZC,QAAS,CACLC,UAAW,EACXC,sBAAsB,MAKlCC,IAASC,OACL,cAAC,IAAMC,WAAP,UACI,cAACC,GAAA,EAAD,CAAiB/a,KAAMA,GAAvB,SACI,cAAC,sBAAD,CAAqB/mC,OAAQqhD,GAA7B,SACI,cAAC,EAAD,UACI,cAAC,EAAD,UACI,cAACr+C,EAAD,UACI,cAAC++C,GAAA,EAAD,UACI,cAAC,GAAD,kBAS5B5/C,SAAS6/C,eAAe,SCvEpBZ,IAAeA,cAAuBa,UACtC,8BAAqBz+C,MACjB,YAAkD,IAA/C0+C,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC/BJ,EAAOd,IACPe,EAAOf,IACPgB,EAAOhB,IACPiB,EAAOjB,IACPkB,EAAQlB,S","file":"static/js/main.e118deb9.chunk.js","sourcesContent":["import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport function ScrollToTop() {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n}\n","/**\n * @author Trendrating \n *\n * @module trendrating/api/accounts/Decoder\n * @summary Decode server object as UI suitable object\n *\n */\n\nimport { format } from \"date-fns\";\nimport { User } from \"../../../types/Defaults\";\n\nexport const decodeUser = (response: any) => {\n const rawData = response;\n\n const user: User = {\n //\n // TODO JSESSIONID cookies not actually used, for now\n // these cookies have the path '/trendrating-rest'\n // and are used by Web App Python API to perform session\n // validation againt Core API to protect endpoints such as send\n // emails to support and generate PDF reports\n //\n // additionalCookies: [\n // {\n // name: \"JSESSIONID\",\n // path: \"/trendrating-rest\",\n // value: response[\"data\"][\"JSESSIONID\"],\n // },\n // ],\n\n id: rawData.id,\n firstName: rawData.firstName,\n lastName: rawData.lastName,\n email: rawData.email,\n userName: rawData.userName,\n role: rawData.role,\n profile: rawData.profile,\n type: rawData.type,\n firm: rawData.firm,\n creationTime: format(rawData.creationTime, \"MM/dd/yyyy\"),\n active: rawData.active,\n country: rawData.country,\n products: rawData.products,\n contractType: rawData.contractType,\n productMax: rawData.productMax,\n billingStart: rawData.billingStart,\n conversionDate: rawData.conversionDate,\n owner: rawData.owner,\n stripeId: rawData.stripeId,\n\n // groups: [rawData.level, rawData.role],\n };\n\n return user;\n};\n","/**\n * @author Trendrating \n *\n * @module trendrating/api/account/endpoints\n * @summary Endpoints of Trendrating Account API\n *\n */\n\nexport const endpoints = {\n sessions: {\n get: \"/trendrating-rest/api/useronline/sessionInfo\",\n remove: \"/trendrating-rest/api/useronline/resetCookies\",\n },\n users: {\n register: \"/trendrating-rest/api/pendingRegistration/register\",\n login: \"/trendrating-rest/api/useronline/login\",\n logout: \"/trendrating-rest/api/useronline/logout\",\n updateFields: \"/trendrating-rest/api/useronline/updateFields\",\n },\n};\n","import KeenTracking from \"keen-tracking\";\nimport MobileDetect from \"mobile-detect\";\nimport { createContext, ReactNode, useEffect, useState } from \"react\";\n\nexport const KeenContext = createContext(\n undefined\n);\n\ntype KeenContextProviderProps = {\n children?: ReactNode;\n};\n\nexport const KeenContextProvider = ({ children }: KeenContextProviderProps) => {\n const [keen, setKeen] = useState(null);\n\n useEffect(() => {\n const md = new MobileDetect(window.navigator.userAgent);\n if (!md.is(\"bot\")) {\n const client = new KeenTracking({\n projectId: \"61696e936d011004768ba882\",\n writeKey:\n \"1bd536cd28131be2e0905199b306972874af2b1d3fbe4b175df93226434587c314e9ba66bc1d95297fa67448a0616b45c0c0606d94c9ca10de2baf224752e27c3f7d9b3b543a61023f7d3ef608f76ebafcacad085fec0738f24cb29303a96558\",\n });\n\n const helpers = (KeenTracking as any).helpers;\n // const utils = (KeenTracking as any).utils;\n\n // TODO GDPR WARNING, DO NOT ENABLE\n // const sessionCookie = utils.cookie(\"tr-portfolios\");\n // if (!sessionCookie.get(\"guest_id\")) {\n // sessionCookie.set(\"guest_id\", helpers.getUniqueId());\n // }\n\n /* eslint-disable no-template-curly-in-string */\n client.extendEvents(() => {\n return {\n geo: {\n ip_address: \"${keen.ip}\",\n info: {\n /* Enriched data from the API will be saved here */\n /* https://keen.io/docs/api/?javascript#ip-to-geo-parser */\n },\n },\n // page: {\n // title: document.title,\n // url: document.location.href,\n // info: {\n // /* Enriched */\n // },\n // },\n // referrer: {\n // url: document.referrer,\n // info: {\n // /* Enriched */\n // },\n // },\n tech: {\n browser: helpers.getBrowserProfile(),\n user_agent: \"${keen.user_agent}\",\n info: {\n /* Enriched */\n },\n device_type: md.tablet()\n ? \"tablet\"\n : md.mobile()\n ? \"mobile\"\n : \"desktop\",\n },\n // time: helpers.getDatetimeIndex(),\n // visitor: {\n // guest_id: sessionCookie.get(\"guest_id\"),\n // /* Include additional visitor info here */\n // },\n keen: {\n addons: [\n {\n name: \"keen:ip_to_geo\",\n input: {\n ip: \"geo.ip_address\",\n remove_ip_property: true,\n },\n output: \"geo.info\",\n },\n {\n name: \"keen:ua_parser\",\n input: {\n ua_string: \"tech.user_agent\",\n },\n output: \"tech.info\",\n },\n // {\n // name: \"keen:url_parser\",\n // input: {\n // url: \"page.url\",\n // },\n // output: \"page.info\",\n // },\n // {\n // name: \"keen:referrer_parser\",\n // input: {\n // referrer_url: \"referrer.url\",\n // page_url: \"page.url\",\n // },\n // output: \"referrer.info\",\n // },\n ],\n },\n };\n });\n\n setKeen(client);\n }\n }, []);\n\n return {children};\n};\n","import { useCallback, useContext } from \"react\";\nimport { KeenContext } from \"../KeenContextProvider\";\nimport { User } from \"../types/Defaults\";\n\nexport const useKeen = () => {\n const context = useContext(KeenContext);\n // context must be null or KeenTracking, not undefined\n if (context === undefined) {\n throw new Error(`useKeen must be called within KeenContextProvider`);\n }\n\n const recordEvent = useCallback(\n (action: string, actionParam: any, user: User | null) => {\n let isProduction =\n process.env.NODE_ENV === \"production\" &&\n !document.location.host.startsWith(\"develop.\");\n\n if (context === null) {\n console.log(\"Keen not ready\");\n } else {\n context.recordEvent(\n isProduction ? \"usage-prod\" : \"usage-test\",\n {\n action: action,\n action_param: actionParam,\n user: {\n active: user?.active ?? null,\n email: user?.email ?? null,\n id: user?.id ?? null,\n },\n }\n );\n }\n },\n [context]\n );\n return { keen: context, recordEvent };\n};\n","import axios from \"axios\";\nimport { createContext, useContext, useEffect, useState } from \"react\";\nimport { decodeUser } from \"../trendrating/api/account/Decoder\";\nimport { endpoints } from \"../trendrating/api/account/endpoints\";\nimport { User } from \"../types/Defaults\";\nimport { useKeen } from \"./useKeen\";\n\ntype Auth = {\n isReady: boolean;\n isLogged: boolean;\n register: any;\n signin: any;\n signout: any;\n user: any;\n editProfile: any;\n};\n\ntype RegisterProps = {\n email: string;\n firstName: string;\n lastName: string;\n profile: string;\n userName: string;\n country: string;\n firm: string;\n};\n\nconst AuthContext = createContext({\n isReady: false,\n isLogged: false,\n register: null,\n signin: null,\n signout: null,\n user: null,\n editProfile: null,\n});\n// Provider component that wraps your app and makes auth object ...\n// ... available to any child component that calls useAuth().\nexport function ProvideAuth({ children }: any) {\n const auth = useProvideAuth();\n return {children};\n}\n// Hook for child components to get the auth object ...\n// ... and re-render when it changes.\nexport const useAuth = () => {\n return useContext(AuthContext);\n};\n// Provider hook that creates auth object and handles state\nconst useProvideAuth = (): Auth => {\n const { recordEvent } = useKeen();\n const [isReady, setReady] = useState(false);\n const [user, setUser] = useState();\n\n useEffect(() => {\n // Exclude login check in special page\n if (document.location.pathname === \"/capture\") {\n setUser(null);\n setReady(true);\n return;\n }\n axios.get(endpoints.sessions.get, { withCredentials: true }).then(\n (response) => {\n if (response.data.status === \"KO\") {\n if (response.data.error === \"USER_NOT_FOUND\") {\n return Promise.reject({\n type: \"USER_NOT_FOUND\",\n message: null,\n });\n }\n return Promise.reject({\n type: \"UNKNOWN_ERROR\",\n message: null,\n });\n }\n\n const decodedUser = decodeUser(response.data.data);\n setUser(decodedUser);\n setReady(true);\n return decodedUser;\n },\n (error) => {\n setUser(null);\n setReady(true);\n // No need to return anything\n }\n );\n }, []);\n\n const register = ({\n email,\n firstName,\n lastName,\n profile,\n userName,\n country,\n firm,\n }: RegisterProps) =>\n axios\n .post(\n endpoints.users.register,\n {\n email: email,\n firstName: firstName,\n lastName: lastName,\n profile: profile,\n userName: userName,\n country: country,\n firm: firm,\n },\n {\n headers: {\n // \"Authorization\":\n // \"Basic \" + btoa(email + \":\" + password),\n \"Content-Type\": \"application/json\",\n },\n params: {\n ts: new Date().getTime(),\n },\n }\n )\n .then(\n (response) => {\n console.log(response);\n },\n (error) => {\n return Promise.reject({\n type: error,\n message: error,\n });\n }\n );\n\n const signin = (email: string, password: string) =>\n // axios.get(endpoints.sessions.remove).then(() =>\n axios\n .post(\n endpoints.users.login,\n {\n password: password,\n userName: email,\n },\n {\n headers: {\n // \"Authorization\":\n // \"Basic \" + btoa(email + \":\" + password),\n \"Content-Type\": \"application/json\",\n },\n params: {\n ts: new Date().getTime(),\n },\n }\n )\n .then(\n (response) => {\n // Manage error\n if (response.data.status === \"KO\") {\n if (response.data.error === \"USER_NOT_FOUND\") {\n return Promise.reject({\n type: \"USER_NOT_FOUND\",\n message: null,\n });\n }\n return Promise.reject({\n type: \"UNKNOWN_ERROR\",\n message: null,\n });\n }\n\n const decodedUser = decodeUser(response.data.data.user);\n\n setUser(decodedUser);\n\n recordEvent(\"login\", null, decodedUser);\n\n return decodedUser;\n },\n (error) => {\n setUser(null);\n return Promise.reject({\n type: \"USER_NOT_FOUND\",\n message: error,\n });\n }\n );\n // );\n\n const signout = () =>\n axios\n .get(endpoints.users.logout, {\n params: {\n ts: new Date().getTime(),\n },\n })\n .then(() => {\n setUser(null);\n });\n\n const editProfile = async (fieldsToUpdate: T) => {\n const res = await axios.post(\n endpoints.users.updateFields,\n fieldsToUpdate\n );\n setUser(res?.data?.data?.user ?? user);\n return res;\n };\n\n const isLogged = user != null;\n\n // Return the user object and auth methods\n return {\n isReady,\n isLogged,\n register,\n signin,\n signout,\n editProfile,\n user,\n };\n};\n","import { Col, Container, Row } from \"react-bootstrap\";\n\ntype LoaderProps = {\n message?: string;\n};\n\nexport const Loader = (props: LoaderProps) => {\n return (\n
\n \n \n \n
\n \n \n Loading...\n \n
\n
\n \n \n \n \n );\n};\n","export const deepClone = (value: T): T => {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n if (value instanceof Set) {\n return new Set(Array.from(value, deepClone)) as T;\n }\n\n if (value instanceof Map) {\n return new Map(Array.from(value, ([k, v]) => [k, deepClone(v)])) as T;\n }\n\n if (value instanceof Date) {\n return new Date(value) as T;\n }\n\n if (value instanceof RegExp) {\n return new RegExp(value.source, value.flags) as T;\n }\n\n const valueObject: any = value; // Explicity set any to deal with issue later\n return Object.keys(valueObject).reduce((acc, key) => {\n return Object.assign(acc, { [key]: deepClone(valueObject[key]) });\n }, (Array.isArray(valueObject) ? [] : {}) as T);\n};\n","/**\n * @author Trendrating \n *\n * @module trendrating/api/Properties\n * @summary Retrieves a property label\n *\n */\n\nexport class Properties {\n properties: any = null;\n\n constructor(params: any) {\n if (\n \"properties\" in params &&\n params[\"properties\"] !== undefined &&\n params[\"properties\"] != null\n ) {\n // NOTE: priority or property override is not managed\n // Should be?\n this.properties = {\n etf: {},\n index: {},\n security: {},\n stock: {},\n };\n var typeSpecificProperties = [\"ETF\", \"Index\", \"Stock\"];\n for (var property in params[\"properties\"]) {\n if (typeSpecificProperties.includes(property)) {\n this.properties[property.toLowerCase()] =\n params[\"properties\"][property];\n } else {\n this.properties[\"security\"][property] =\n params[\"properties\"][property];\n }\n }\n } else {\n throw new Error(\"Properties not specified.\");\n }\n }\n\n /**\n *\n * Get the label of the property\n *\n * @param {string} property - The property for which get the label\n * @param {number} labelIndex - the index of label to get. Default 0\n * @param {string} instrumentType - the type of instrument. If \"auto\",\n * it looks for the first available match. Default \"security\"\n *\n * @returns {string} the label\n */\n get(property: string, labelIndex: number, instrumentType: string) {\n return this._get(property, labelIndex, instrumentType, \"name\");\n }\n\n getForSecurityType(\n securityType: string,\n property: string,\n labelIndex: number\n ) {\n console.log(\n \"[TODO] getForSecurityType\",\n securityType,\n property,\n labelIndex\n );\n\n return property;\n }\n\n getTag(property: string, labelIndex: number, instrumentType: string) {\n return this._get(property, labelIndex, instrumentType, \"tags\");\n }\n\n _get(\n property: string,\n labelIndex: number,\n instrumentType: string,\n key: string\n ) {\n var defaultInstrumentType = \"security\";\n\n instrumentType =\n instrumentType != null\n ? instrumentType.toLowerCase()\n : defaultInstrumentType;\n labelIndex =\n labelIndex !== undefined && labelIndex != null ? labelIndex : 0;\n var properties = this.properties;\n\n // auto option: looks for a match. The first match is returned.\n if (instrumentType === \"auto\") {\n for (var _instrumentType in properties) {\n if (property in properties[_instrumentType]) {\n if (properties[_instrumentType][property][key] == null) {\n return null;\n }\n\n return properties[_instrumentType][property][key][\n labelIndex\n ];\n }\n }\n }\n\n var propertyType =\n instrumentType in properties\n ? instrumentType\n : defaultInstrumentType;\n\n if (propertyType == null) {\n return property;\n }\n\n if (!(property in properties[propertyType])) {\n propertyType = defaultInstrumentType;\n if (!(property in properties[propertyType])) {\n return property;\n }\n }\n\n var label = properties[propertyType][property][key][labelIndex];\n if (label === undefined) {\n throw new Error(\n \"LabelIndex \" +\n labelIndex +\n \" out of range: \" +\n JSON.stringify(properties[propertyType][property][key])\n );\n }\n\n return label;\n }\n}\n","/**\n * @author Trendrating \n *\n * @module trendrating/api/Configuration\n * @summary Parse configuration and return objects suitable for UI\n *\n */\n\nimport { deepClone } from \"../deepClone\";\nimport { Properties } from \"./Properties\";\n\nexport class Configuration {\n // parsed and ready to use configuration\n configuration: any;\n\n product: any;\n properties: any;\n\n /**\n * @constructor\n *\n * @param {object} params\n * @param {object} params.product - raw product configuration\n * @param {object} params.properties - instrument's properties\n *\n * @returns {undefined}\n */\n constructor({ configuration, product, properties }: any) {\n this.product = {\n flavourCode: product.productCode,\n flavourName: product.codeName,\n id: product.id,\n name: \"Trendrating Web App\",\n };\n this.properties = properties;\n\n this.generate(deepClone(configuration));\n }\n\n checkColumns(item: any) {\n //\n // columns available\n //\n // if the field is IGNORE, the current product does not have\n // to use the field\n //\n var column = null;\n var columnsAvailable = item[\"columns_available\"];\n var ready = [];\n for (var i = 0, length = columnsAvailable.length; i < length; i++) {\n column = columnsAvailable[i];\n if (column[\"field\"] !== \"IGNORE\") {\n ready.push(column);\n }\n }\n\n item[\"columns_available\"] = ready;\n\n return item;\n }\n\n generate(items: any) {\n // partial: only in some pages\n var configuration: any = {\n landing: {\n options: this._snakeCase2CamelCase(\n items[\"landing_page_options\"]\n ),\n page: this._snakeCase2CamelCase([items[\"landing_page\"]])[0],\n },\n pages: {\n alerts: {\n enabled: false,\n widgets: null,\n workflow: null,\n },\n analysisInstrument: {\n enabled: false,\n widgets: null,\n workflow: null,\n },\n analysisList: {\n enabled: false,\n widgets: null,\n workflow: null,\n },\n analysisPeer: {\n enabled: false,\n widgets: null,\n workflow: null,\n },\n ranking: {\n enabled: false,\n widgets: null,\n workflow: null,\n },\n screening: {\n enabled: false,\n widgets: null,\n workflow: null,\n },\n strategyBuilder: {\n enabled: false,\n widgets: null,\n workflow: null,\n },\n strategyTracker: {\n enabled: false,\n widgets: null,\n workflow: null,\n },\n systematicPortfolios: {\n enabled: false,\n widgets: null,\n workflow: null,\n },\n },\n };\n\n var page = null;\n\n if (\"alerts\" in items) {\n page = items[\"alerts\"];\n configuration[\"pages\"][\"alerts\"][\"enabled\"] = page[\"enabled\"];\n }\n\n if (\"analysis_instrument\" in items) {\n page = items[\"analysis_instrument\"];\n configuration[\"pages\"][\"analysisInstrument\"][\"enabled\"] =\n page[\"enabled\"];\n }\n\n if (\"analysis_list\" in items) {\n page = items[\"analysis_list\"];\n configuration[\"pages\"][\"analysisList\"][\"enabled\"] = page[\"enabled\"];\n configuration[\"pages\"][\"analysisList\"][\"tabs\"] = [];\n configuration[\"pages\"][\"analysisList\"][\"tabsIndex\"] = {};\n\n var item = null;\n for (\n var i = 0, length = page[\"overview_tabs\"].length;\n i < length;\n i++\n ) {\n item = page[\"overview_tabs\"][i];\n\n if (\"widgets\" in item) {\n if (\"ranking\" in item[\"widgets\"]) {\n item[\"widgets\"][\"ranking\"] = this._ranking(\n item[\"widgets\"][\"ranking\"]\n );\n }\n\n if (\"viewer\" in item[\"widgets\"]) {\n item[\"widgets\"][\"viewer\"] = this.checkColumns(\n item[\"widgets\"][\"viewer\"][\"table\"]\n );\n }\n\n if (\"viewerFilter\" in item[\"widgets\"]) {\n item[\"widgets\"][\"viewerFilter\"] =\n item[\"widgets\"][\"viewerFilter\"][\"table\"];\n }\n }\n\n configuration[\"pages\"][\"analysisList\"][\"tabs\"].push(item);\n configuration[\"pages\"][\"analysisList\"][\"tabsIndex\"][\n item[\"id\"]\n ] = i;\n }\n\n configuration[\"pages\"][\"analysisList\"][\"workflow\"] =\n page[\"workflow\"];\n }\n\n if (\"analysis_peer\" in items) {\n page = items[\"analysis_peer\"];\n configuration[\"pages\"][\"analysisPeer\"][\"enabled\"] = page[\"enabled\"];\n\n configuration[\"pages\"][\"analysisPeer\"][\"widgets\"] = {\n viewer: {\n what: null,\n where: null,\n whereWhat: null,\n },\n viewerFilter: {\n what: null,\n where: null,\n whereWhat: null,\n },\n };\n\n for (var viewer in page[\"widgets\"][\"viewer\"]) {\n switch (viewer) {\n case \"market\": {\n configuration[\"pages\"][\"analysisPeer\"][\"widgets\"][\n \"viewer\"\n ][\"where\"] = page[\"widgets\"][\"viewer\"][viewer];\n\n configuration[\"pages\"][\"analysisPeer\"][\"widgets\"][\n \"viewerFilter\"\n ][\"where\"] = page[\"widgets\"][\"viewerFilter\"][viewer];\n\n break;\n }\n case \"market_sector\": {\n configuration[\"pages\"][\"analysisPeer\"][\"widgets\"][\n \"viewer\"\n ][\"whereWhat\"] = page[\"widgets\"][\"viewer\"][viewer];\n\n configuration[\"pages\"][\"analysisPeer\"][\"widgets\"][\n \"viewerFilter\"\n ][\"whereWhat\"] =\n page[\"widgets\"][\"viewerFilter\"][viewer];\n\n break;\n }\n case \"sector\": {\n configuration[\"pages\"][\"analysisPeer\"][\"widgets\"][\n \"viewer\"\n ][\"what\"] = page[\"widgets\"][\"viewer\"][viewer];\n\n configuration[\"pages\"][\"analysisPeer\"][\"widgets\"][\n \"viewerFilter\"\n ][\"what\"] = page[\"widgets\"][\"viewerFilter\"][viewer];\n\n break;\n }\n }\n }\n }\n\n if (\"ranking\" in items) {\n page = items[\"ranking\"];\n configuration[\"pages\"][\"ranking\"][\"enabled\"] = page[\"enabled\"];\n\n if (page[\"widgets\"] != null) {\n configuration[\"pages\"][\"ranking\"][\"widgets\"] = {};\n\n if (\"ranking\" in page[\"widgets\"]) {\n configuration[\"pages\"][\"ranking\"][\"widgets\"][\"ranking\"] =\n this._ranking(page[\"widgets\"][\"ranking\"]);\n }\n\n if (\"viewer\" in page[\"widgets\"]) {\n configuration[\"pages\"][\"ranking\"][\"widgets\"][\"viewer\"] =\n page[\"widgets\"][\"viewer\"][\"table\"];\n }\n\n if (\"viewerFilter\" in page[\"widgets\"]) {\n configuration[\"pages\"][\"ranking\"][\"widgets\"][\n \"viewerFilter\"\n ] = page[\"widgets\"][\"viewerFilter\"];\n }\n }\n\n if (page[\"workflow\"] != null) {\n configuration[\"pages\"][\"ranking\"][\"workflow\"] =\n page[\"workflow\"];\n }\n }\n\n if (\"screening\" in items) {\n page = items[\"screening\"];\n configuration[\"pages\"][\"screening\"][\"enabled\"] = page[\"enabled\"];\n\n configuration[\"pages\"][\"screening\"][\"widgets\"] = {\n ranking: null,\n viewer: null,\n viewerFilter: null,\n };\n\n if (\"ranking\" in page[\"widgets\"]) {\n configuration[\"pages\"][\"screening\"][\"widgets\"][\"ranking\"] =\n this._ranking(page[\"widgets\"][\"ranking\"]);\n }\n\n if (\"viewer\" in page[\"widgets\"]) {\n configuration[\"pages\"][\"screening\"][\"widgets\"][\"viewer\"] =\n this.checkColumns(page[\"widgets\"][\"viewer\"][\"table\"]);\n }\n\n if (\"viewerFilter\" in page[\"widgets\"]) {\n configuration[\"pages\"][\"screening\"][\"widgets\"][\"viewerFilter\"] =\n page[\"widgets\"][\"viewerFilter\"][\"table\"];\n }\n }\n\n if (\"strategy_tracker\" in items) {\n page = items[\"strategy_tracker\"];\n configuration[\"pages\"][\"strategyTracker\"][\"enabled\"] =\n page[\"enabled\"];\n\n if (page[\"enabled\"] === true) {\n configuration[\"pages\"][\"strategyTracker\"][\"maxCardinality\"] =\n page[\"maxCardinality\"];\n }\n }\n\n if (\"strategy_builder\" in items) {\n page = items[\"strategy_builder\"];\n configuration[\"pages\"][\"strategyBuilder\"][\"enabled\"] =\n page[\"enabled\"];\n\n if (page[\"enabled\"] === true) {\n // shared\n configuration[\"pages\"][\"strategyBuilder\"][\"hedging\"] =\n this._selection(page[\"hedging\"]);\n configuration[\"pages\"][\"strategyBuilder\"][\"ranking\"] =\n this._ranking(page[\"ranking\"]);\n\n configuration[\"pages\"][\"strategyBuilder\"][\"selection\"] =\n this._selection(page[\"selection\"]);\n\n // form advanced\n configuration[\"pages\"][\"strategyBuilder\"][\"formAdvanced\"] = {\n enabled: page[\"form_advanced\"][\"enabled\"],\n };\n if (page[\"form_advanced\"][\"enabled\"] === true) {\n configuration[\"pages\"][\"strategyBuilder\"][\"formAdvanced\"][\n \"widgets\"\n ] = {\n // hedging:\n // \"hedging\" in page[\"form_advanced\"]\n // ? this._selection(\n // page[\"form_advanced\"][\"hedging\"]\n // )\n // : null,\n selectionUniverse:\n \"selection_universe\" in page[\"form_advanced\"]\n ? this._selection(\n page[\"form_advanced\"][\n \"selection_universe\"\n ]\n )\n : null,\n smartBeta:\n \"smartBeta\" in page[\"form_advanced\"]\n ? this._smartBeta(\n page[\"form_advanced\"][\"smartBeta\"]\n )\n : null,\n };\n }\n // form alpha\n configuration[\"pages\"][\"strategyBuilder\"][\"formAlpha\"] = {\n enabled: page[\"form_alpha\"][\"enabled\"],\n };\n // form macro rotation\n configuration[\"pages\"][\"strategyBuilder\"][\"formMacroRotation\"] =\n {\n enabled: page[\"form_macro_rotation\"][\"enabled\"],\n };\n // form smart beta\n configuration[\"pages\"][\"strategyBuilder\"][\"formSmartBeta\"] = {\n enabled: page[\"form_smart_beta\"][\"enabled\"],\n };\n // form compare\n configuration[\"pages\"][\"strategyBuilder\"][\"formCompare\"] = {\n enabled: page[\"form_compare\"][\"enabled\"],\n };\n // form long short\n configuration[\"pages\"][\"strategyBuilder\"][\"formLongShort\"] = {\n enabled: page[\"form_long_short\"][\"enabled\"],\n };\n // TODO - hard coded: at the moment used for report\n configuration[\"pages\"][\"strategyBuilder\"][\"widgets\"] = {\n viewer: {\n columns: {\n security: [\n \"weight\",\n \"ticker\",\n \"name\",\n \"currency\",\n \"rc\",\n \"country\",\n \"icb\",\n \"performance\",\n \"contribution\",\n ],\n },\n columns_available: [\n { field: \"weight\" },\n { field: \"ticker\" },\n { field: \"name\" },\n { field: \"currency\" },\n { field: \"rc\" },\n { field: \"country\" },\n { field: \"icb\" },\n { field: \"performance\" },\n { field: \"contribution\" },\n ],\n },\n viewerFilter: null,\n };\n\n configuration[\"pages\"][\"strategyBuilder\"][\"workflow\"] =\n page[\"workflow\"];\n }\n }\n\n if (\"systematic_portfolios\" in items) {\n page = items[\"systematic_portfolios\"];\n configuration[\"pages\"][\"systematicPortfolios\"][\"enabled\"] =\n page[\"enabled\"];\n\n if (page[\"enabled\"] === true) {\n configuration[\"pages\"][\"systematicPortfolios\"][\"tabs\"] = [];\n\n for (let i = 0; i < page[\"tabs\"].length; i++) {\n let item = page[\"tabs\"][i];\n\n if (\"widgets\" in item) {\n if (\"viewer\" in item[\"widgets\"]) {\n item[\"widgets\"][\"viewer\"] = this.checkColumns(\n item[\"widgets\"][\"viewer\"][\"table\"]\n );\n }\n\n if (\"viewerFilter\" in item[\"widgets\"]) {\n item[\"widgets\"][\"viewerFilter\"] =\n item[\"widgets\"][\"viewerFilter\"][\"table\"];\n }\n }\n\n configuration[\"pages\"][\"systematicPortfolios\"][\"tabs\"].push(\n item\n );\n }\n }\n }\n\n this.configuration = configuration;\n\n return configuration;\n }\n\n get(property: any) {\n var configuration: any = this.configuration;\n switch (property) {\n case \"landing\": {\n return configuration[\"landing\"];\n }\n case \"product\": {\n return this.product;\n }\n default: {\n if (property in configuration[\"pages\"]) {\n return configuration[\"pages\"][property];\n }\n\n return null;\n }\n }\n }\n\n /**\n * Convert an old snake case page ID in JS format (camelCase)\n * @param {string} pageId - String in snake_case format\n *\n * @returns {string} String in camelCase format\n */\n legacyPageId2StandardPageId(pageId: any) {\n return this._snakeCase2CamelCase([pageId])[0];\n }\n // ----------------------------------------------------- private methods\n _factorConstraint(actionItems: any) {\n var properties = this.properties;\n var label = new Properties({ properties: properties });\n\n var options = [];\n var option: any = null;\n\n var _function = null;\n var _functionName = null;\n var _functions = actionItems[\"functions\"];\n var _operator = null;\n var _operatorName = null;\n var _operators = actionItems[\"operators\"];\n var _option = null;\n var _options = actionItems[\"options\"];\n var _transformations: any = {};\n\n for (var i = 0, lengthI = _options.length; i < lengthI; i++) {\n _option = _options[i];\n\n option = {\n functions: [],\n operators: [],\n property: null,\n };\n\n // functions\n for (\n var j = 0, lengthJ = _option[\"functions\"].length;\n j < lengthJ;\n j++\n ) {\n _functionName = _option[\"functions\"][j];\n _function = _functions[_functionName];\n _function[\"value\"] = _functionName;\n option[\"functions\"].push(_function);\n }\n // property\n option[\"property\"] = {\n isRemovable:\n _option[\"isRemovable\"] == null\n ? true\n : _option[\"isRemovable\"],\n label: label.get(\n _option[\"property\"],\n _option[\"propertyLabelIndex\"],\n \"auto\" // 2021-01-04 used for fundamental properties\n ),\n tag: label.getTag(_option[\"property\"], 0, \"auto\"),\n value: _option[\"property\"],\n };\n // operators\n for (let j = 0; j < _option[\"operators\"].length; j++) {\n option[\"operators\"][j] = [];\n for (\n var k = 0, lengthK = _option[\"operators\"][j].length;\n k < lengthK;\n k++\n ) {\n _operatorName = _option[\"operators\"][j][k];\n _operator = _operators[_operatorName];\n _operator[\"value\"] = _operatorName;\n option[\"operators\"][j].push(_operator);\n }\n }\n // transformation\n _transformations[_option[\"property\"]] = null;\n if (\n \"transformation\" in _option &&\n _option[\"transformation\"] !== undefined &&\n _option[\"transformation\"] != null\n ) {\n _transformations[_option[\"property\"]] =\n _option[\"transformation\"];\n }\n // value\n option[\"value\"] = null;\n if (\"value\" in _option && _option[\"value\"] != null) {\n option[\"value\"] = _option[\"value\"];\n }\n\n options.push(option);\n }\n\n var item = {\n columnHeaders: null,\n defaultTemplate: actionItems[\"default_template\"],\n functions: _functions,\n presetTemplates: actionItems[\"preset_templates\"],\n operators: _operators,\n options: options,\n transformations: _transformations,\n };\n\n return item;\n }\n\n _ranking(items: any) {\n var item: any = {\n create: this._factorConstraint(items[\"create\"]),\n edit: this._factorConstraint(items[\"edit\"]),\n };\n\n var columnHeaders: any = {};\n var _function = null;\n var _functions = null;\n var _operator = null;\n var _operators = null;\n var _item = null;\n var _property = null;\n for (\n var i = 0, lengthI = item[\"edit\"][\"options\"].length;\n i < lengthI;\n i++\n ) {\n _item = item[\"edit\"][\"options\"][i];\n\n _functions = _item[\"functions\"];\n _operators = _item[\"operators\"];\n _property = _item[\"property\"][\"value\"];\n\n columnHeaders[_property] = {};\n\n // for each function there 1 operator\n for (var j = 0, lengthJ = _functions.length; j < lengthJ; j++) {\n _function = _functions[j];\n\n // 0 because ranking operators.length is always equal to 1\n _operator = _operators[j][0][\"widget\"][\"options\"];\n\n columnHeaders[_property][_function[\"value\"]] = {\n label: _function[\"label\"],\n };\n\n for (var k = 0, lengthK = _operator.length; k < lengthK; k++) {\n columnHeaders[_property][_function[\"value\"]][\n _operator[k][\"value\"]\n ] = _operator[k][\"label\"];\n }\n }\n }\n\n item[\"edit\"][\"columnHeaders\"] = columnHeaders;\n\n return item;\n }\n\n _selection(items: any) {\n var item = {\n create: this._factorConstraint(items[\"create\"]),\n edit: this._factorConstraint(items[\"edit\"]),\n };\n\n return item;\n }\n\n _smartBeta(items: any) {\n return this._factorConstraint(items);\n }\n\n /**\n *\n * @param {array} snakeCaseStrings\n *\n * @ignore\n */\n _snakeCase2CamelCase(snakeCaseStrings: any) {\n var converted = [];\n\n var tokens = null;\n for (var i = 0, length = snakeCaseStrings.length; i < length; i++) {\n tokens = snakeCaseStrings[i].split(\"_\");\n\n if (tokens.length > 1) {\n for (var j = 1, lengthJ = tokens.length; j < lengthJ; j++) {\n tokens[j] =\n tokens[j][0].toUpperCase() + tokens[j].substring(1);\n }\n }\n\n converted.push(tokens.join(\"\"));\n }\n\n return converted;\n }\n}\n","type AppEnvironmentApi = {\n baseEndPoint: string;\n domain: string;\n node?: string;\n};\n\nexport type AppEnvironment = {\n account: {\n product: {\n codeName: string;\n configuration: any;\n id: number;\n productCode: string;\n typeName: string;\n };\n user: any | null;\n };\n api: {\n account: AppEnvironmentApi;\n compute: AppEnvironmentApi;\n isDebug: boolean;\n report: AppEnvironmentApi;\n rest: AppEnvironmentApi;\n uri: string;\n devModeProducts: \"all\" | \"longOnly\" | \"longShort\";\n usage: {\n storeKey: string;\n storeUrl: string;\n };\n };\n configuration: any | null;\n customerCare: {\n isImpersonating: boolean;\n userId: number | null;\n };\n properties: any | null;\n taxonomies: any | null;\n};\n\nexport type EndpointMeta = {\n baseEndPoint: string;\n domain: string;\n};\n\nexport type AppRoutes = {\n home: string;\n productDetail: string;\n product: string;\n disclaimer: string;\n privacy: string;\n termsOfService: string;\n};\n\nexport const paths: AppRoutes = {\n home: \"/\",\n productDetail: \"/product/:id\",\n product: \"/product\",\n disclaimer: \"/disclaimer\",\n privacy: \"/privacy\",\n termsOfService: \"/terms\",\n};\n\nexport type KnownHostnames =\n | \"localhost\"\n | \"develop.portfolios.trendrating.com\"\n | \"portfolios.trendrating.com\"\n | \"longshortd.trendrating.com\"\n | \"longshort.trendrating.com\"\n | \"longonly.trendrating.com\";\n\nconst pathResolver = (forcedEnv?: \"test\" | \"prod\") => {\n const testPath = \"/data/tr.aws.bucket.share-test\";\n const prodPath = \"/data/tr.aws.bucket.share-prod\";\n\n if (forcedEnv != null) {\n if (forcedEnv === \"test\") {\n return testPath;\n } else if (forcedEnv === \"prod\") {\n return prodPath;\n }\n }\n\n const hostname: KnownHostnames = window.document.location\n .hostname as KnownHostnames;\n\n switch (hostname) {\n case \"localhost\":\n case \"develop.portfolios.trendrating.com\":\n case \"longshortd.trendrating.com\":\n return testPath;\n\n case \"longonly.trendrating.com\":\n case \"longshort.trendrating.com\":\n case \"portfolios.trendrating.com\":\n return prodPath;\n }\n};\n\nexport const environmentTemplate: AppEnvironment = {\n account: {\n product: {\n codeName: \"Strategy Management Solution\",\n configuration: {\n analysis_list: {\n enabled: true,\n label: \"menu_analysis_collection\",\n overview_tabs: [\n {\n enabled: true,\n id: \"overview\",\n },\n {\n enabled: true,\n id: \"holdings\",\n widgets: {\n viewer: {\n table: {\n columns: {\n security: [\n \"weight\",\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n \"marketcap\",\n \"industry\",\n ],\n Stock: [\n \"weight\",\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n \"marketcap\",\n \"industry\",\n ],\n Index: [\n \"weight\",\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n ],\n ETF: [\n \"weight\",\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n \"marketcap\",\n ],\n Sector: [\n \"weight\",\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n \"marketcap\",\n \"industry\",\n ],\n Currency: [\n \"weight\",\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"lhl\",\n \"pr\",\n \"pd\",\n \"pw\",\n ],\n },\n columns_available: [\n {\n field: \"ticker\",\n },\n {\n field: \"isin\",\n },\n {\n field: \"country\",\n },\n {\n field: \"currency\",\n },\n {\n field: \"vc\",\n },\n {\n field: \"dc\",\n },\n {\n field: \"name\",\n },\n {\n field: \"domicile\",\n },\n {\n field: \"marketcap\",\n headerIndex: 2,\n },\n {\n field: \"weight\",\n },\n {\n field: \"industry\",\n },\n {\n field: \"sector\",\n },\n {\n field: \"icb\",\n },\n {\n field: \"etfclass\",\n panelIndex: 1,\n },\n {\n field: \"etfgeo\",\n panelIndex: 1,\n },\n {\n field: \"rc\",\n },\n {\n field: \"mc\",\n },\n {\n field: \"px\",\n },\n {\n field: \"dr\",\n formatter: 1,\n },\n {\n field: \"dt\",\n formatter: 1,\n },\n {\n field: \"rrr\",\n },\n {\n field: \"lhl\",\n },\n {\n field: \"duration\",\n },\n {\n field: \"magnitude\",\n },\n {\n field: \"upi\",\n },\n {\n field: \"ts\",\n },\n {\n field: \"pd\",\n headerIndex: 2,\n },\n {\n field: \"pw\",\n },\n {\n field: \"pm\",\n },\n {\n field: \"pq\",\n },\n {\n field: \"py\",\n },\n {\n field: \"pr\",\n },\n {\n field: \"f_pe\",\n },\n {\n field: \"f_ps\",\n },\n {\n field: \"f_pb\",\n },\n {\n field: \"f_pc\",\n },\n {\n field: \"f_pd\",\n },\n {\n field: \"f_sps_CC_g_3\",\n },\n {\n field: \"f_sps_CC_g_12\",\n },\n {\n field: \"f_eps_CC_g_3\",\n },\n {\n field: \"f_eps_CC_g_12\",\n },\n ],\n },\n },\n viewerFilter: {\n table: [\n [\n {\n label: \"Rating\",\n field: \"rc\",\n display: {\n widget: \"RangeRate\",\n },\n },\n {\n label: \"Alert\",\n field: [\"lr\", \"direction\", \"px\", \"rc\"],\n display: {\n widget: \"RangeAlert\",\n },\n },\n {\n label: \"Notification\",\n field: [\"lduration\", \"lmagnitude\", \"lupi\"],\n display: {\n widget: \"RangeNotification\",\n },\n },\n ],\n ],\n },\n },\n },\n {\n enabled: true,\n id: \"allocation\",\n },\n {\n enabled: true,\n id: \"trends\",\n },\n {\n enabled: true,\n id: \"ranking\",\n widgets: {\n ranking: {\n create: {\n default_template: [],\n preset_templates: [],\n functions: {\n decile: {\n label: \"Decile\",\n widget: {\n label: \"Decile\",\n type: \"numberHidden\",\n value: 10,\n },\n },\n outlier: {\n label: \"Outlier\",\n widget: {\n constraints: {\n max: 1,\n min: 0,\n },\n label: \"Outlier\",\n type: \"number\",\n value: 0.1,\n },\n },\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n quartile: {\n label: \"Quartile\",\n widget: {\n label: \"Quartile\",\n type: \"numberHidden\",\n value: 4,\n },\n },\n quintile: {\n label: \"Quintile\",\n widget: {\n label: \"Quintile\",\n type: \"numberHidden\",\n value: 5,\n },\n },\n threshold: {\n label: \"Threshold\",\n widget: {\n constraints: {\n max: 999999,\n min: -99999,\n },\n label: \"Threshold\",\n type: \"number\",\n value: 0,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n sortByNumeric: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByOutlier: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Outlier at bottom\",\n value: \"desc\",\n },\n {\n label: \"Outlier at top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByQuantile: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Top quantile first\",\n value: \"asc\",\n },\n {\n label: \"Bottom quantile first\",\n value: \"desc\",\n },\n ],\n type: \"select\",\n value: \"asc\",\n },\n },\n sortByPerformance: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Highest to lowest \",\n value: \"desc\",\n },\n {\n label: \"Lowest to highest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRating: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"A to D\",\n value: \"desc\",\n },\n {\n label: \"D to A\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRetracement: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByThreshold: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Greatest at Top\",\n value: \"desc\",\n },\n {\n label: \"Smallest at Top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"sortByRating\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\n \"value\",\n \"quartile\",\n \"quintile\",\n \"decile\",\n \"threshold\",\n ],\n operators: [\n [\"sortByNumeric\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByThreshold\"],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\n \"value\",\n \"quartile\",\n \"quintile\",\n \"decile\",\n \"outlier\",\n ],\n operators: [\n [\"sortByRetracement\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByOutlier\"],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByNumeric\"]],\n property: \"marketcap\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"lr\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"lt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_pe\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_ps\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_pb\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_pc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_pd\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_sps_CC_g_3\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_sps_CC_g_12\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_eps_CC_g_3\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_eps_CC_g_12\",\n propertyLabelIndex: 0,\n },\n ],\n },\n edit: {\n default_template: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"quantile\",\n functionParams: {\n value: 5,\n },\n operator: \"sortByQuantile\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"mc\",\n },\n {\n function: \"outlier\",\n functionParams: {\n value: 0.1,\n },\n operator: \"sortByOutlier\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"px\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"pt\",\n },\n ],\n preset_templates: [\n {\n name: \"Value and Earnings Growth\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"f_pe\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"f_eps_CC_g_12\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Value and Sales Growth\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"f_ps\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"f_sps_CC_g_12\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Sales Growth\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"f_sps_CC_g_12\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Earnings Growth\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"f_eps_CC_g_12\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Value P/S\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"f_ps\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Value P/E\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"f_pe\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n ],\n functions: {\n outlier: {\n label: \"Outlier\",\n widget: {\n constraints: {\n max: 1,\n min: 0,\n },\n label: \"Outlier\",\n type: \"number\",\n value: 0.1,\n },\n },\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n threshold: {\n label: \"Threshold\",\n widget: {\n constraints: {\n max: 999999,\n min: -99999,\n },\n label: \"Threshold\",\n type: \"number\",\n value: 0,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n sortByNumeric: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByOutlier: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Outlier at bottom\",\n value: \"desc\",\n },\n {\n label: \"Outlier at top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByQuantile: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Top quantile first\",\n value: \"asc\",\n },\n {\n label: \"Bottom quantile first\",\n value: \"desc\",\n },\n ],\n type: \"select\",\n value: \"asc\",\n },\n },\n sortByPerformance: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Highest to lowest \",\n value: \"desc\",\n },\n {\n label: \"Lowest to highest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRating: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"A to D\",\n value: \"desc\",\n },\n {\n label: \"D to A\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRetracement: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByThreshold: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Greatest at Top\",\n value: \"desc\",\n },\n {\n label: \"Smallest at Top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"sortByRating\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\", \"threshold\"],\n operators: [\n [\"sortByNumeric\"],\n [\"sortByQuantile\"],\n [\"sortByThreshold\"],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\", \"outlier\"],\n operators: [\n [\"sortByRetracement\"],\n [\"sortByQuantile\"],\n [\"sortByOutlier\"],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByNumeric\"]],\n property: \"marketcap\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"lr\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"lt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pe\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_ps\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pb\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pd\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_sps_CC_g_3\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_sps_CC_g_12\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_eps_CC_g_3\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_eps_CC_g_12\",\n propertyLabelIndex: 0,\n },\n ],\n },\n },\n viewer: {\n table: {\n columns: {\n security: [\n \"weight\",\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n \"marketcap\",\n \"industry\",\n ],\n },\n columns_available: [\n {\n field: \"ticker\",\n },\n {\n field: \"isin\",\n },\n {\n field: \"country\",\n },\n {\n field: \"currency\",\n },\n {\n field: \"vc\",\n },\n {\n field: \"dc\",\n },\n {\n field: \"name\",\n },\n {\n field: \"domicile\",\n },\n {\n field: \"marketcap\",\n headerIndex: 2,\n },\n {\n field: \"weight\",\n },\n {\n field: \"industry\",\n },\n {\n field: \"sector\",\n },\n {\n field: \"icb\",\n },\n {\n field: \"etfclass\",\n panelIndex: 1,\n },\n {\n field: \"etfgeo\",\n panelIndex: 1,\n },\n {\n field: \"rc\",\n },\n {\n field: \"mc\",\n },\n {\n field: \"px\",\n },\n {\n field: \"dr\",\n formatter: 1,\n },\n {\n field: \"dt\",\n formatter: 1,\n },\n {\n field: \"rrr\",\n },\n {\n field: \"lhl\",\n },\n {\n field: \"duration\",\n },\n {\n field: \"magnitude\",\n },\n {\n field: \"upi\",\n },\n {\n field: \"pd\",\n headerIndex: 2,\n },\n {\n field: \"pw\",\n },\n {\n field: \"pm\",\n },\n {\n field: \"pq\",\n },\n {\n field: \"py\",\n },\n {\n field: \"pr\",\n },\n {\n field: \"f_pe\",\n },\n {\n field: \"f_ps\",\n },\n {\n field: \"f_pb\",\n },\n {\n field: \"f_pc\",\n },\n {\n field: \"f_pd\",\n },\n {\n field: \"f_sps_CC_g_3\",\n },\n {\n field: \"f_sps_CC_g_12\",\n },\n {\n field: \"f_eps_CC_g_3\",\n },\n {\n field: \"f_eps_CC_g_12\",\n },\n ],\n },\n },\n viewerFilter: {\n table: [\n [\n {\n label: \"Market\",\n field: \"country\",\n display: {\n widget: \"FilterMarket\",\n structure: [\n \"MarketsFinancial\",\n \"StockClassification\",\n ],\n },\n },\n {\n label: \"Domicile\",\n field: \"domicile\",\n display: {\n widget: \"FilterDomicile\",\n structure: \"Markets\",\n },\n },\n {\n label: \"Sector\",\n field: \"icb\",\n display: {\n widget: \"FilterSector\",\n structure: \"ui_sectors\",\n },\n },\n {\n label: \"Mkt. Cap.\",\n field: \"marketcap\",\n display: {\n widget: \"RangeMktCap\",\n },\n },\n ],\n ],\n },\n },\n },\n {\n enabled: false,\n id: \"pointInTime\",\n widgets: {\n viewer: {\n table: {\n columns: {\n security: [\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"industry\",\n \"country\",\n ],\n },\n columns_available: [\n {\n field: \"ticker\",\n },\n {\n field: \"country\",\n },\n {\n field: \"currency\",\n },\n {\n field: \"vc\",\n },\n {\n field: \"dc\",\n },\n {\n field: \"name\",\n },\n {\n field: \"domicile\",\n },\n {\n field: \"weight\",\n },\n {\n field: \"industry\",\n },\n {\n field: \"sector\",\n },\n {\n field: \"icb\",\n },\n {\n field: \"etfclass\",\n panelIndex: 1,\n },\n {\n field: \"etfgeo\",\n panelIndex: 1,\n },\n {\n field: \"rc\",\n },\n {\n field: \"mc\",\n },\n {\n field: \"fm\",\n },\n {\n field: \"fq\",\n },\n {\n field: \"fy\",\n },\n ],\n },\n },\n viewerFilter: {\n table: [\n [\n {\n label: \"Rating\",\n field: \"rc\",\n display: {\n widget: \"RangeRate\",\n },\n },\n ],\n ],\n },\n },\n },\n ],\n workflow: {\n optimize: {\n enabled: false,\n },\n rank: {\n enabled: true,\n },\n },\n },\n landing_page: \"home\",\n landing_page_options: [\"home\"],\n screening: {\n enabled: true,\n label: \"menu_screening\",\n widgets: {\n ranking: {\n create: {\n default_template: [],\n preset_templates: [],\n functions: {\n decile: {\n label: \"Decile\",\n widget: {\n label: \"Decile\",\n type: \"numberHidden\",\n value: 10,\n },\n },\n outlier: {\n label: \"Outlier\",\n widget: {\n constraints: {\n max: 1,\n min: 0,\n },\n label: \"Outlier\",\n type: \"number\",\n value: 0.1,\n },\n },\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n quartile: {\n label: \"Quartile\",\n widget: {\n label: \"Quartile\",\n type: \"numberHidden\",\n value: 4,\n },\n },\n quintile: {\n label: \"Quintile\",\n widget: {\n label: \"Quintile\",\n type: \"numberHidden\",\n value: 5,\n },\n },\n threshold: {\n label: \"Threshold\",\n widget: {\n constraints: {\n max: 999999,\n min: -99999,\n },\n label: \"Threshold\",\n type: \"number\",\n value: 0,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n sortByNumeric: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByOutlier: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Outlier at bottom\",\n value: \"desc\",\n },\n {\n label: \"Outlier at top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByQuantile: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Top quantile first\",\n value: \"asc\",\n },\n {\n label: \"Bottom quantile first\",\n value: \"desc\",\n },\n ],\n type: \"select\",\n value: \"asc\",\n },\n },\n sortByPerformance: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Highest to lowest \",\n value: \"desc\",\n },\n {\n label: \"Lowest to highest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRating: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"A to D\",\n value: \"desc\",\n },\n {\n label: \"D to A\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRetracement: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByThreshold: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Greatest at Top\",\n value: \"desc\",\n },\n {\n label: \"Smallest at Top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"sortByRating\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\n \"value\",\n \"quartile\",\n \"quintile\",\n \"decile\",\n \"threshold\",\n ],\n operators: [\n [\"sortByNumeric\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByThreshold\"],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\n \"value\",\n \"quartile\",\n \"quintile\",\n \"decile\",\n \"outlier\",\n ],\n operators: [\n [\"sortByRetracement\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByOutlier\"],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByNumeric\"]],\n property: \"marketcap\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"lr\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"lt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_pe\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_ps\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_pb\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_pc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_pd\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_sps_CC_g_3\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_sps_CC_g_12\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_eps_CC_g_3\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"sortByPerformance\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n [\"sortByQuantile\"],\n ],\n property: \"f_eps_CC_g_12\",\n propertyLabelIndex: 0,\n },\n ],\n },\n edit: {\n default_template: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"quantile\",\n functionParams: {\n value: 5,\n },\n operator: \"sortByQuantile\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"mc\",\n },\n {\n function: \"outlier\",\n functionParams: {\n value: 0.1,\n },\n operator: \"sortByOutlier\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"px\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"pt\",\n },\n ],\n preset_templates: [\n {\n name: \"Value and Earnings Growth\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"f_pe\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"f_eps_CC_g_12\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Value and Sales Growth\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"f_ps\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"f_sps_CC_g_12\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Sales Growth\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"f_sps_CC_g_12\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Earnings Growth\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"f_eps_CC_g_12\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Value P/S\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"f_ps\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n {\n name: \"Value P/E\",\n rules: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByRating\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"rc\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"asc\",\n },\n property: \"f_pe\",\n },\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByNumeric\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"mc\",\n },\n ],\n },\n ],\n functions: {\n outlier: {\n label: \"Outlier\",\n widget: {\n constraints: {\n max: 1,\n min: 0,\n },\n label: \"Outlier\",\n type: \"number\",\n value: 0.1,\n },\n },\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n threshold: {\n label: \"Threshold\",\n widget: {\n constraints: {\n max: 999999,\n min: -99999,\n },\n label: \"Threshold\",\n type: \"number\",\n value: 0,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n sortByNumeric: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByOutlier: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Outlier at bottom\",\n value: \"desc\",\n },\n {\n label: \"Outlier at top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByQuantile: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Top quantile first\",\n value: \"asc\",\n },\n {\n label: \"Bottom quantile first\",\n value: \"desc\",\n },\n ],\n type: \"select\",\n value: \"asc\",\n },\n },\n sortByPerformance: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Highest to lowest \",\n value: \"desc\",\n },\n {\n label: \"Lowest to highest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRating: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"A to D\",\n value: \"desc\",\n },\n {\n label: \"D to A\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRetracement: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByThreshold: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Greatest at Top\",\n value: \"desc\",\n },\n {\n label: \"Smallest at Top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"sortByRating\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\", \"threshold\"],\n operators: [\n [\"sortByNumeric\"],\n [\"sortByQuantile\"],\n [\"sortByThreshold\"],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\", \"outlier\"],\n operators: [\n [\"sortByRetracement\"],\n [\"sortByQuantile\"],\n [\"sortByOutlier\"],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByNumeric\"]],\n property: \"marketcap\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"lr\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"lt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pe\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_ps\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pb\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pd\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_sps_CC_g_3\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_sps_CC_g_12\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_eps_CC_g_3\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_eps_CC_g_12\",\n propertyLabelIndex: 0,\n },\n ],\n },\n },\n viewer: {\n table: {\n columns: {\n security: [\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"lhl\",\n \"pr\",\n \"pw\",\n ],\n Stock: [\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n \"marketcap\",\n \"industry\",\n ],\n Index: [\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n ],\n ETF: [\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n \"marketcap\",\n ],\n Sector: [\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"mc\",\n \"px\",\n \"lhl\",\n \"pr\",\n \"pw\",\n \"marketcap\",\n \"industry\",\n ],\n Commodity: [\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"lhl\",\n \"pr\",\n \"pw\",\n ],\n Currency: [\n \"ticker\",\n \"name\",\n \"vc\",\n \"rc\",\n \"dr\",\n \"lhl\",\n \"pr\",\n \"pd\",\n \"pw\",\n ],\n },\n columns_available: [\n {\n field: \"ticker\",\n },\n {\n field: \"isin\",\n },\n {\n field: \"country\",\n },\n {\n field: \"currency\",\n },\n {\n field: \"vc\",\n },\n {\n field: \"dc\",\n },\n {\n field: \"name\",\n },\n {\n field: \"domicile\",\n },\n {\n field: \"marketcap\",\n headerIndex: 2,\n },\n {\n field: \"industry\",\n },\n {\n field: \"sector\",\n },\n {\n field: \"icb\",\n },\n {\n field: \"etfclass\",\n panelIndex: 1,\n },\n {\n field: \"etfgeo\",\n panelIndex: 1,\n },\n {\n field: \"rc\",\n },\n {\n field: \"mc\",\n },\n {\n field: \"px\",\n },\n {\n field: \"dr\",\n formatter: 1,\n },\n {\n field: \"dt\",\n formatter: 1,\n },\n {\n field: \"rrr\",\n },\n {\n field: \"lhl\",\n },\n {\n field: \"duration\",\n },\n {\n field: \"magnitude\",\n },\n {\n field: \"upi\",\n },\n {\n field: \"ts\",\n },\n {\n field: \"pd\",\n headerIndex: 2,\n },\n {\n field: \"pw\",\n },\n {\n field: \"pm\",\n },\n {\n field: \"pq\",\n },\n {\n field: \"py\",\n },\n {\n field: \"pr\",\n },\n {\n field: \"f_pe\",\n },\n {\n field: \"f_ps\",\n },\n {\n field: \"f_pb\",\n },\n {\n field: \"f_pc\",\n },\n {\n field: \"f_pd\",\n },\n {\n field: \"f_sps_CC_g_3\",\n },\n {\n field: \"f_sps_CC_g_12\",\n },\n {\n field: \"f_eps_CC_g_3\",\n },\n {\n field: \"f_eps_CC_g_12\",\n },\n ],\n },\n },\n viewerFilter: {\n table: [\n {\n Stock: [\n {\n label: \"Universe\",\n field: null,\n display: {\n widget: \"RelationUniverse\",\n },\n },\n {\n label: \"Market\",\n field: \"country\",\n display: {\n widget: \"FilterMarket\",\n structure: [\"MarketsFinancial\", \"StockClassification\"],\n },\n },\n {\n label: \"Domicile\",\n field: \"domicile\",\n display: {\n widget: \"FilterDomicile\",\n structure: \"Markets\",\n },\n },\n {\n label: \"Sector\",\n field: \"icb\",\n display: {\n widget: \"FilterSector\",\n structure: \"ui_sectors\",\n },\n },\n {\n label: \"Mkt. Cap.\",\n field: \"marketcap\",\n display: {\n widget: \"RangeMktCap\",\n },\n },\n ],\n Commodity: [\n {\n label: \"Universe\",\n field: null,\n display: {\n widget: \"RelationUniverse\",\n },\n },\n ],\n Currency: [\n {\n label: \"Universe\",\n field: null,\n display: {\n widget: \"RelationUniverse\",\n },\n },\n ],\n Index: [\n {\n label: \"Universe\",\n field: null,\n display: {\n widget: \"RelationUniverse\",\n },\n },\n {\n label: \"Market\",\n field: \"country\",\n display: {\n widget: \"FilterMarket\",\n widgetOptions: {\n hasDomesticForeign: false,\n },\n structure: [\"MarketsFinancial\"],\n },\n },\n {\n label: \"Family\",\n field: \"subtype\",\n display: {\n widget: \"FilterFamily\",\n structure: \"Indicesclassification\",\n },\n },\n ],\n ETF: [\n {\n label: \"Universe\",\n field: null,\n display: {\n widget: \"RelationUniverse\",\n },\n },\n {\n label: \"Asset Class\",\n field: \"etfclass\",\n display: {\n widget: \"FilterETFType\",\n structure: \"ETFclassification\",\n },\n },\n {\n label: \"Investment Region\",\n field: \"etfgeo\",\n display: {\n widget: \"FilterRegion\",\n structure: \"MarketsFinancial\",\n },\n },\n {\n label: \"Issuer\",\n field: \"subtype\",\n display: {\n widget: \"FilterDomicile\",\n widgetOptions: {\n isSortEnabled: false,\n },\n structure: \"ui_etf_provider\",\n },\n },\n {\n label: \"Market\",\n field: \"country\",\n display: {\n widget: \"FilterMarket\",\n structure: [\"MarketsFinancial\"],\n },\n },\n {\n label: \"Domicile\",\n field: \"domicile\",\n display: {\n widget: \"FilterDomicile\",\n structure: \"Markets\",\n },\n },\n {\n label: \"Mkt. Cap.\",\n field: \"marketcap\",\n display: {\n widget: \"RangeMktCap\",\n },\n },\n ],\n Sector: [\n {\n label: \"Universe\",\n field: null,\n display: {\n widget: \"RelationUniverse\",\n },\n },\n {\n label: \"Market\",\n field: \"country\",\n display: {\n widget: \"FilterMarket\",\n widgetOptions: {\n hasDomesticForeign: false,\n },\n structure: [\"MarketsFinancial\"],\n },\n },\n {\n label: \"Sector\",\n field: \"icb\",\n display: {\n widget: \"FilterSector\",\n structure: \"ui_sectors\",\n },\n },\n ],\n },\n [\n {\n label: \"Rating\",\n field: \"rc\",\n display: {\n widget: \"RangeRate\",\n },\n },\n {\n label: \"Alert\",\n field: [\"lr\", \"direction\", \"px\", \"rc\"],\n display: {\n widget: \"RangeAlert\",\n },\n },\n {\n label: \"New high/low\",\n field: \"lhl\",\n display: {\n widget: \"RangeNewHL\",\n },\n },\n {\n label: \"Duration\",\n field: \"duration\",\n display: {\n widget: \"RangeDuration\",\n },\n },\n {\n label: \"Magnitude\",\n field: \"magnitude\",\n display: {\n widget: \"RangeMagnitude\",\n },\n },\n {\n label: \"UPI\",\n field: \"upi\",\n display: {\n widget: \"RangeUPI\",\n },\n },\n {\n label: \"Notification\",\n field: [\"lduration\", \"lmagnitude\", \"lupi\"],\n display: {\n widget: \"RangeNotification\",\n },\n },\n {\n label: \"Smart momentum\",\n field: \"mc\",\n display: {\n widget: \"RangeMomentum\",\n },\n },\n ],\n ],\n },\n },\n },\n strategy_builder: {\n enabled: true,\n label: \"menu_builder_strategy\",\n form_advanced: {\n enabled: true,\n selection_universe: {\n create: {\n default_template: [],\n functions: {\n decile: {\n label: \"Decile\",\n widget: {\n label: \"Decile\",\n type: \"numberHidden\",\n value: 10,\n },\n },\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n quartile: {\n label: \"Quartile\",\n widget: {\n label: \"Quartile\",\n type: \"numberHidden\",\n value: 4,\n },\n },\n quintile: {\n label: \"Quintile\",\n widget: {\n label: \"Quintile\",\n type: \"numberHidden\",\n value: 5,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n bottom: {\n label: \"Bottom\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n equalTo: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 0,\n },\n },\n equalToPercentage: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberPercentage\",\n value: 0,\n },\n },\n equalToRate: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rate\",\n value: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n },\n greaterThan: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanPercentage: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanOrEqualTo: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n greaterThanOrEqualToPercentage: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n lessThan: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanPercentage: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanOrEqualTo: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n lessThanOrEqualToPercentage: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n range: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberSingleInterval\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeDecile: {\n label: \"Decile\",\n widget: {\n constraints: null,\n label: null,\n options: [\n {\n label: \"1st decile\",\n value: \"1\",\n },\n {\n label: \"2nd decile\",\n value: \"2\",\n },\n {\n label: \"3rd decile\",\n value: \"3\",\n },\n {\n label: \"4th decile\",\n value: \"4\",\n },\n {\n label: \"5th decile\",\n value: \"5\",\n },\n {\n label: \"6th decile\",\n value: \"6\",\n },\n {\n label: \"7th decile\",\n value: \"7\",\n },\n {\n label: \"8th decile\",\n value: \"8\",\n },\n {\n label: \"9th decile\",\n value: \"9\",\n },\n {\n label: \"10th decile\",\n value: \"10\",\n },\n ],\n type: \"rangeQuantile\",\n value: [\n {\n ge: 1,\n le: 1,\n },\n ],\n },\n },\n rangePercentage: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberSingleIntervalPercentage\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeQuartile: {\n label: \"Quartile\",\n widget: {\n constraints: null,\n label: null,\n options: [\n {\n label: \"1st quartile\",\n value: \"1\",\n },\n {\n label: \"2nd quartile\",\n value: \"2\",\n },\n {\n label: \"3rd quartile\",\n value: \"3\",\n },\n {\n label: \"4th quartile\",\n value: \"4\",\n },\n ],\n type: \"rangeQuantile\",\n value: [\n {\n ge: 1,\n le: 1,\n },\n ],\n },\n },\n rangeQuintile: {\n label: \"Quintile\",\n widget: {\n constraints: null,\n label: null,\n options: [\n {\n label: \"1st quintile\",\n value: \"1\",\n },\n {\n label: \"2nd quintile\",\n value: \"2\",\n },\n {\n label: \"3rd quintile\",\n value: \"3\",\n },\n {\n label: \"4th quintile\",\n value: \"4\",\n },\n {\n label: \"5th quintile\",\n value: \"5\",\n },\n ],\n type: \"rangeQuantile\",\n value: [\n {\n ge: 1,\n le: 1,\n },\n ],\n },\n },\n rangeMarketCap: {\n label: \"Market Cap. in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeMarketCap\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeVolatility: {\n label: \"Volatility in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeVolatility\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n top: {\n label: \"Top\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"equalToRate\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n value: {\n function: \"value\",\n functionParams: null,\n operator: \"equalToRate\",\n operatorParams: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n },\n {\n functions: [\"value\"],\n operators: [\n [\n \"rangeMarketCap\",\n \"greaterThan\",\n \"lessThan\",\n \"top\",\n \"bottom\",\n ],\n ],\n property: \"marketcap\",\n propertyLabelIndex: 3,\n transformation: {\n value: {\n equalTo: 1000000,\n greaterThan: 1000000,\n greaterThanOrEqualTo: 1000000,\n lessThan: 1000000,\n lessThanOrEqualTo: 1000000,\n rangeMarketCap: 1000000,\n },\n },\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"rangeVolatility\",\n \"lessThanPercentage\",\n \"greaterThanPercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"sd\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n equalToPercentage: 100,\n greaterThanPercentage: 100,\n greaterThanOrEqualToPercentage: 100,\n lessThanPercentage: 100,\n lessThanOrEqualToPercentage: 100,\n rangeVolatility: 100,\n },\n },\n },\n {\n functions: [\"value\"],\n operators: [[\"greaterThan\"]],\n property: \"tradedvalue\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n greaterThan: 1000,\n },\n },\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pw\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pm\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pq\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"py\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"ts\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_pe\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_ps\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_pb\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_pc\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_pd\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_sps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_sps_CC_g_12\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_eps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_eps_CC_g_12\",\n },\n ],\n },\n edit: {\n default_template: [],\n functions: {\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n bottom: {\n label: \"Bottom\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n equalTo: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 0,\n },\n },\n equalToPercentage: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberPercentage\",\n value: 0,\n },\n },\n equalToRate: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rate\",\n value: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n },\n greaterThan: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanPercentage: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanOrEqualTo: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n greaterThanOrEqualToPercentage: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n lessThan: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanPercentage: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanOrEqualTo: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n lessThanOrEqualToPercentage: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n range: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberInterval\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangePercentage: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeMarketCap: {\n label: \"Market Cap. in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeMarketCap\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeVolatility: {\n label: \"Volatility in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeVolatility\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n top: {\n label: \"Top\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"equalToRate\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [\n [\n \"bottom\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"rangeMarketCap\",\n \"top\",\n ],\n ],\n property: \"marketcap\",\n propertyLabelIndex: 3,\n transformation: {\n value: {\n equalTo: 1000000,\n greaterThan: 1000000,\n greaterThanOrEqualTo: 1000000,\n lessThan: 1000000,\n lessThanOrEqualTo: 1000000,\n rangeMarketCap: 1000000,\n },\n },\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangeVolatility\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"sd\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n equalToPercentage: 100,\n greaterThanPercentage: 100,\n greaterThanOrEqualToPercentage: 100,\n lessThanPercentage: 100,\n lessThanOrEqualToPercentage: 100,\n rangeVolatility: 100,\n },\n },\n },\n {\n functions: [\"value\"],\n operators: [[\"greaterThan\"]],\n property: \"tradedvalue\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n greaterThan: 1000,\n },\n },\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pw\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pm\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pq\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"py\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"ts\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_pe\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_ps\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_pb\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_pc\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_pd\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_sps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_sps_CC_g_12\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_eps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_eps_CC_g_12\",\n },\n ],\n },\n },\n smartBeta: {\n functions: {\n weight: {\n label: \"Weight\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"Weight\",\n type: \"numberPercentage\",\n value: 1,\n },\n },\n },\n operators: {\n premium: {\n label: \"Premium\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Top\",\n value: \"top\",\n },\n {\n label: \"Middle\",\n value: \"middle\",\n },\n {\n label: \"Bottom\",\n value: \"bottom\",\n },\n ],\n type: \"select\",\n value: \"top\",\n },\n },\n rate: {\n label: \"Rating\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rate\",\n value: {\n A: 1,\n B: 1,\n C: 0,\n D: 0,\n },\n },\n },\n },\n options: [\n {\n functions: [\"weight\"],\n operators: [[\"rate\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"tradedvalue\",\n propertyLabelIndex: 1,\n transformation: {\n value: {\n weight: 1000,\n },\n },\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"py\",\n propertyLabelIndex: 1,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"pr\",\n propertyLabelIndex: 2,\n transformation: {\n value: {\n weight: 100,\n },\n },\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"pt\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"px\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"marketcap\",\n propertyLabelIndex: 2,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"mc\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"sd\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"ts\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"f_pe\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"f_ps\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"f_pb\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"f_pc\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"f_pd\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"f_sps_CC_g_3\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"f_sps_CC_g_12\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"f_eps_CC_g_3\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n {\n functions: [\"weight\"],\n operators: [[\"premium\"]],\n property: \"f_eps_CC_g_12\",\n propertyLabelIndex: 0,\n transformation: null,\n },\n ],\n },\n },\n form_alpha: {\n enabled: false,\n },\n form_compare: {\n enabled: true,\n },\n form_long_short: {\n enabled: true,\n },\n form_macro_rotation: {\n enabled: false,\n },\n form_smart_beta: {\n enabled: false,\n },\n \"//_1\": \"Hedging configuration is shared among all types of form\",\n \"//_2\": \"and used for encoding/decoding operations\",\n hedging: {\n create: {\n default_template: [],\n functions: {\n decile: {\n label: \"Decile\",\n widget: {\n label: \"Decile\",\n type: \"numberHidden\",\n value: 10,\n },\n },\n quartile: {\n label: \"Quartile\",\n widget: {\n label: \"Quartile\",\n type: \"numberHidden\",\n value: 4,\n },\n },\n quintile: {\n label: \"Quintile\",\n widget: {\n label: \"Quintile\",\n type: \"numberHidden\",\n value: 5,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n bottom: {\n label: \"Bottom\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n equalTo: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 0,\n },\n },\n equalToPercentage: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberPercentage\",\n value: 0,\n },\n },\n equalToRate: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rate\",\n value: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n },\n greaterThan: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanPercentage: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanOrEqualTo: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n greaterThanOrEqualToPercentage: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n lessThan: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanPercentage: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanOrEqualTo: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n lessThanOrEqualToPercentage: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n range: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberSingleInterval\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeDecile: {\n label: \"Decile\",\n widget: {\n constraints: null,\n label: null,\n options: [\n {\n label: \"1st decile\",\n value: \"1\",\n },\n {\n label: \"2nd decile\",\n value: \"2\",\n },\n {\n label: \"3rd decile\",\n value: \"3\",\n },\n {\n label: \"4th decile\",\n value: \"4\",\n },\n {\n label: \"5th decile\",\n value: \"5\",\n },\n {\n label: \"6th decile\",\n value: \"6\",\n },\n {\n label: \"7th decile\",\n value: \"7\",\n },\n {\n label: \"8th decile\",\n value: \"8\",\n },\n {\n label: \"9th decile\",\n value: \"9\",\n },\n {\n label: \"10th decile\",\n value: \"10\",\n },\n ],\n type: \"rangeQuantile\",\n value: [\n {\n ge: 1,\n le: 1,\n },\n ],\n },\n },\n rangePercentage: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberSingleIntervalPercentage\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeQuartile: {\n label: \"Quartile\",\n widget: {\n constraints: null,\n label: null,\n options: [\n {\n label: \"1st quartile\",\n value: \"1\",\n },\n {\n label: \"2nd quartile\",\n value: \"2\",\n },\n {\n label: \"3rd quartile\",\n value: \"3\",\n },\n {\n label: \"4th quartile\",\n value: \"4\",\n },\n ],\n type: \"rangeQuantile\",\n value: [\n {\n ge: 1,\n le: 1,\n },\n ],\n },\n },\n rangeQuintile: {\n label: \"Quintile\",\n widget: {\n constraints: null,\n label: null,\n options: [\n {\n label: \"1st quintile\",\n value: \"1\",\n },\n {\n label: \"2nd quintile\",\n value: \"2\",\n },\n {\n label: \"3rd quintile\",\n value: \"3\",\n },\n {\n label: \"4th quintile\",\n value: \"4\",\n },\n {\n label: \"5th quintile\",\n value: \"5\",\n },\n ],\n type: \"rangeQuantile\",\n value: [\n {\n ge: 1,\n le: 1,\n },\n ],\n },\n },\n rangeMarketCap: {\n label: \"Market Cap. in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeMarketCap\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeVolatility: {\n label: \"Volatility in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeVolatility\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n top: {\n label: \"Top\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"equalToRate\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n value: {\n function: \"value\",\n functionParams: null,\n operator: \"equalToRate\",\n operatorParams: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n },\n {\n functions: [\"value\"],\n operators: [\n [\n \"rangeMarketCap\",\n \"greaterThan\",\n \"lessThan\",\n \"top\",\n \"bottom\",\n ],\n ],\n property: \"marketcap\",\n propertyLabelIndex: 3,\n transformation: {\n value: {\n equalTo: 1000000,\n greaterThan: 1000000,\n greaterThanOrEqualTo: 1000000,\n lessThan: 1000000,\n lessThanOrEqualTo: 1000000,\n rangeMarketCap: 1000000,\n },\n },\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"rangeVolatility\",\n \"lessThanPercentage\",\n \"greaterThanPercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"sd\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n equalToPercentage: 100,\n greaterThanPercentage: 100,\n greaterThanOrEqualToPercentage: 100,\n lessThanPercentage: 100,\n lessThanOrEqualToPercentage: 100,\n rangeVolatility: 100,\n },\n },\n },\n {\n functions: [\"value\"],\n operators: [[\"greaterThan\"]],\n property: \"tradedvalue\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n greaterThan: 1000,\n },\n },\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pr\",\n propertyLabelIndex: 2,\n transformation: {\n value: {\n equalToPercentage: 100,\n greaterThanPercentage: 100,\n greaterThanOrEqualToPercentage: 100,\n lessThanPercentage: 100,\n lessThanOrEqualToPercentage: 100,\n rangePercentage: 100,\n },\n },\n },\n ],\n },\n edit: {\n default_template: [],\n functions: {\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n bottom: {\n label: \"Bottom\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n equalTo: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 0,\n },\n },\n equalToPercentage: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberPercentage\",\n value: 0,\n },\n },\n equalToRate: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rate\",\n value: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n },\n greaterThan: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanPercentage: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanOrEqualTo: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n greaterThanOrEqualToPercentage: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n lessThan: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanPercentage: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanOrEqualTo: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n lessThanOrEqualToPercentage: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n range: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberInterval\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangePercentage: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeMarketCap: {\n label: \"Market Cap. in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeMarketCap\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeVolatility: {\n label: \"Volatility in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeVolatility\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n top: {\n label: \"Top\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"equalToRate\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"rangeMarketCap\",\n \"top\",\n ],\n ],\n property: \"marketcap\",\n propertyLabelIndex: 3,\n transformation: {\n value: {\n equalTo: 1000000,\n greaterThan: 1000000,\n greaterThanOrEqualTo: 1000000,\n lessThan: 1000000,\n lessThanOrEqualTo: 1000000,\n rangeMarketCap: 1000000,\n },\n },\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n ],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangeVolatility\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n ],\n ],\n property: \"sd\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n equalToPercentage: 100,\n greaterThanPercentage: 100,\n greaterThanOrEqualToPercentage: 100,\n lessThanPercentage: 100,\n lessThanOrEqualToPercentage: 100,\n rangeVolatility: 100,\n },\n },\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n ],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n ],\n ],\n property: \"pr\",\n propertyLabelIndex: 2,\n transformation: {\n value: {\n equalToPercentage: 100,\n greaterThanPercentage: 100,\n greaterThanOrEqualToPercentage: 100,\n lessThanPercentage: 100,\n lessThanOrEqualToPercentage: 100,\n rangePercentage: 100,\n },\n },\n },\n ],\n },\n },\n \"//_3\": \"Ranking configuration is shared among all types of form\",\n \"//_4\": \"and used for encoding/decoding operations\",\n ranking: {\n create: {\n default_template: [],\n functions: {\n decile: {\n label: \"Decile\",\n widget: {\n label: \"Decile\",\n type: \"numberHidden\",\n value: 10,\n },\n },\n outlier: {\n label: \"Outlier\",\n widget: {\n constraints: {\n max: 1,\n min: 0,\n },\n label: \"Outlier\",\n type: \"number\",\n value: 0.1,\n },\n },\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n quartile: {\n label: \"Quartile\",\n widget: {\n label: \"Quartile\",\n type: \"numberHidden\",\n value: 4,\n },\n },\n quintile: {\n label: \"Quintile\",\n widget: {\n label: \"Quintile\",\n type: \"numberHidden\",\n value: 5,\n },\n },\n threshold: {\n label: \"Threshold\",\n widget: {\n constraints: {\n max: 999999,\n min: -99999,\n },\n label: \"Threshold\",\n type: \"number\",\n value: 0,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n sortByExists: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"At the top\",\n value: \"desc\",\n },\n {\n label: \"At the bottom\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByNumeric: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByOutlier: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Outlier at bottom\",\n value: \"desc\",\n },\n {\n label: \"Outlier at top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByQuantile: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Top quantile first\",\n value: \"asc\",\n },\n {\n label: \"Bottom quantile first\",\n value: \"desc\",\n },\n ],\n type: \"select\",\n value: \"asc\",\n },\n },\n sortByPerformance: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Highest to lowest \",\n value: \"desc\",\n },\n {\n label: \"Lowest to highest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRating: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"A to D\",\n value: \"desc\",\n },\n {\n label: \"D to A\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRetracement: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByString: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"A to Z\",\n value: \"asc\",\n },\n {\n label: \"Z to A\",\n value: \"desc\",\n },\n ],\n type: \"select\",\n value: \"asc\",\n },\n },\n sortByThreshold: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Greatest at Top\",\n value: \"desc\",\n },\n {\n label: \"Smallest at Top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"sortByExists\"]],\n property: \"exists\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByRating\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\", \"threshold\"],\n operators: [\n [\"sortByNumeric\"],\n [\"sortByQuantile\"],\n [\"sortByThreshold\"],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pw\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pm\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pq\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"py\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\", \"outlier\"],\n operators: [\n [\"sortByRetracement\"],\n [\"sortByQuantile\"],\n [\"sortByOutlier\"],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByNumeric\"]],\n property: \"marketcap\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByNumeric\"]],\n property: \"tradedvalue\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByString\"]],\n property: \"ticker\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\", \"threshold\"],\n operators: [\n [\"sortByNumeric\"],\n [\"sortByQuantile\"],\n [\"sortByThreshold\"],\n ],\n property: \"sd\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"ts\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pe\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_ps\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pb\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pc\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pd\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_sps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_sps_CC_g_12\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_eps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_eps_CC_g_12\",\n },\n ],\n },\n edit: {\n default_template: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"sortByPerformance\",\n operatorParams: {\n value: \"desc\",\n },\n property: \"pt\",\n },\n ],\n functions: {\n outlier: {\n label: \"Outlier\",\n widget: {\n constraints: {\n max: 1,\n min: 0,\n },\n label: \"Outlier\",\n type: \"number\",\n value: 0.1,\n },\n },\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n threshold: {\n label: \"Threshold\",\n widget: {\n constraints: {\n max: 999999,\n min: -99999,\n },\n label: \"Threshold\",\n type: \"number\",\n value: 0,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n sortByExists: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"At the top\",\n value: \"desc\",\n },\n {\n label: \"At the bottom\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByNumeric: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByOutlier: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Outlier at bottom\",\n value: \"desc\",\n },\n {\n label: \"Outlier at top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByQuantile: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Top quantile first\",\n value: \"asc\",\n },\n {\n label: \"Bottom quantile first\",\n value: \"desc\",\n },\n ],\n type: \"select\",\n value: \"asc\",\n },\n },\n sortByPerformance: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Highest to lowest \",\n value: \"desc\",\n },\n {\n label: \"Lowest to highest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRating: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"A to D\",\n value: \"desc\",\n },\n {\n label: \"D to A\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByRetracement: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Largest to Smallest\",\n value: \"desc\",\n },\n {\n label: \"Smallest to Largest\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n sortByString: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"A to Z\",\n value: \"asc\",\n },\n {\n label: \"Z to A\",\n value: \"desc\",\n },\n ],\n type: \"select\",\n value: \"asc\",\n },\n },\n sortByThreshold: {\n label: \"Sort by\",\n widget: {\n constraints: null,\n label: \"\",\n options: [\n {\n label: \"Greatest at Top\",\n value: \"desc\",\n },\n {\n label: \"Smallest at Top\",\n value: \"asc\",\n },\n ],\n type: \"select\",\n value: \"desc\",\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"sortByExists\"]],\n property: \"exists\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByRating\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\", \"threshold\"],\n operators: [\n [\"sortByNumeric\"],\n [\"sortByQuantile\"],\n [\"sortByThreshold\"],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pw\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pm\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"pq\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"py\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\", \"outlier\"],\n operators: [\n [\"sortByRetracement\"],\n [\"sortByQuantile\"],\n [\"sortByOutlier\"],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByNumeric\"]],\n property: \"marketcap\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByNumeric\"]],\n property: \"tradedvalue\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [[\"sortByString\"]],\n property: \"ticker\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\", \"threshold\"],\n operators: [\n [\"sortByNumeric\"],\n [\"sortByQuantile\"],\n [\"sortByThreshold\"],\n ],\n property: \"sd\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"ts\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pe\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_ps\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pb\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pc\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_pd\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_sps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_sps_CC_g_12\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_eps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [[\"sortByPerformance\"], [\"sortByQuantile\"]],\n property: \"f_eps_CC_g_12\",\n },\n ],\n },\n },\n \"//_5\": \"Selection configuration is shared among all types of form\",\n \"//_6\": \"and used for encoding/decoding operations\",\n selection: {\n create: {\n default_template: [],\n functions: {\n decile: {\n label: \"Decile\",\n widget: {\n label: \"Decile\",\n type: \"numberHidden\",\n value: 10,\n },\n },\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n quartile: {\n label: \"Quartile\",\n widget: {\n label: \"Quartile\",\n type: \"numberHidden\",\n value: 4,\n },\n },\n quintile: {\n label: \"Quintile\",\n widget: {\n label: \"Quintile\",\n type: \"numberHidden\",\n value: 5,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n bottom: {\n label: \"Bottom\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n equalTo: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 0,\n },\n },\n equalToPercentage: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberPercentage\",\n value: 0,\n },\n },\n equalToRate: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rate\",\n value: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n },\n greaterThan: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanPercentage: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanOrEqualTo: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n greaterThanOrEqualToPercentage: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n lessThan: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanPercentage: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanOrEqualTo: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperator\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n lessThanOrEqualToPercentage: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberOperatorPercentage\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n range: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberSingleInterval\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeDecile: {\n label: \"Decile\",\n widget: {\n constraints: null,\n label: null,\n options: [\n {\n label: \"1st decile\",\n value: \"1\",\n },\n {\n label: \"2nd decile\",\n value: \"2\",\n },\n {\n label: \"3rd decile\",\n value: \"3\",\n },\n {\n label: \"4th decile\",\n value: \"4\",\n },\n {\n label: \"5th decile\",\n value: \"5\",\n },\n {\n label: \"6th decile\",\n value: \"6\",\n },\n {\n label: \"7th decile\",\n value: \"7\",\n },\n {\n label: \"8th decile\",\n value: \"8\",\n },\n {\n label: \"9th decile\",\n value: \"9\",\n },\n {\n label: \"10th decile\",\n value: \"10\",\n },\n ],\n type: \"rangeQuantile\",\n value: [\n {\n ge: 1,\n le: 1,\n },\n ],\n },\n },\n rangePercentage: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberSingleIntervalPercentage\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeQuartile: {\n label: \"Quartile\",\n widget: {\n constraints: null,\n label: null,\n options: [\n {\n label: \"1st quartile\",\n value: \"1\",\n },\n {\n label: \"2nd quartile\",\n value: \"2\",\n },\n {\n label: \"3rd quartile\",\n value: \"3\",\n },\n {\n label: \"4th quartile\",\n value: \"4\",\n },\n ],\n type: \"rangeQuantile\",\n value: [\n {\n ge: 1,\n le: 1,\n },\n ],\n },\n },\n rangeQuintile: {\n label: \"Quintile\",\n widget: {\n constraints: null,\n label: null,\n options: [\n {\n label: \"1st quintile\",\n value: \"1\",\n },\n {\n label: \"2nd quintile\",\n value: \"2\",\n },\n {\n label: \"3rd quintile\",\n value: \"3\",\n },\n {\n label: \"4th quintile\",\n value: \"4\",\n },\n {\n label: \"5th quintile\",\n value: \"5\",\n },\n ],\n type: \"rangeQuantile\",\n value: [\n {\n ge: 1,\n le: 1,\n },\n ],\n },\n },\n rangeMarketCap: {\n label: \"Market Cap. in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeMarketCap\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeVolatility: {\n label: \"Volatility in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeVolatility\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n top: {\n label: \"Top\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"equalToRate\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n value: {\n function: \"value\",\n functionParams: null,\n operator: \"equalToRate\",\n operatorParams: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n },\n {\n functions: [\"value\"],\n operators: [\n [\n \"rangeMarketCap\",\n \"greaterThan\",\n \"lessThan\",\n \"top\",\n \"bottom\",\n ],\n ],\n property: \"marketcap\",\n propertyLabelIndex: 3,\n transformation: {\n value: {\n equalTo: 1000000,\n greaterThan: 1000000,\n greaterThanOrEqualTo: 1000000,\n lessThan: 1000000,\n lessThanOrEqualTo: 1000000,\n rangeMarketCap: 1000000,\n },\n },\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"rangeVolatility\",\n \"lessThanPercentage\",\n \"greaterThanPercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"sd\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n equalToPercentage: 100,\n greaterThanPercentage: 100,\n greaterThanOrEqualToPercentage: 100,\n lessThanPercentage: 100,\n lessThanOrEqualToPercentage: 100,\n rangeVolatility: 100,\n },\n },\n },\n {\n functions: [\"value\"],\n operators: [[\"greaterThan\"]],\n property: \"tradedvalue\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n greaterThan: 1000,\n },\n },\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pw\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pm\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"pq\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\n \"greaterThanPercentage\",\n \"lessThanPercentage\",\n \"rangePercentage\",\n \"top\",\n \"bottom\",\n ],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"py\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"ts\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_pe\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_ps\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_pb\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_pc\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_pd\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_sps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_sps_CC_g_12\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_eps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quartile\", \"quintile\", \"decile\"],\n operators: [\n [\"greaterThan\", \"lessThan\", \"range\", \"top\", \"bottom\"],\n [\"rangeQuartile\"],\n [\"rangeQuintile\"],\n [\"rangeDecile\"],\n ],\n property: \"f_eps_CC_g_12\",\n },\n ],\n },\n edit: {\n default_template: [\n {\n function: \"value\",\n functionParams: null,\n operator: \"equalToRate\",\n operatorParams: {\n value: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n property: \"rc\",\n },\n ],\n functions: {\n quantile: {\n label: \"Quantile\",\n widget: {\n constraints: {\n max: 100,\n min: 1,\n },\n label: \"N-iles\",\n type: \"number\",\n value: 5,\n },\n },\n value: {\n label: \"Value\",\n },\n },\n operators: {\n bottom: {\n label: \"Bottom\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n equalTo: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 0,\n },\n },\n equalToPercentage: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberPercentage\",\n value: 0,\n },\n },\n equalToRate: {\n label: \"Is equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rate\",\n value: {\n A: true,\n B: true,\n C: false,\n D: false,\n },\n },\n },\n greaterThan: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanPercentage: {\n label: \"Is greater than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n gt: 0,\n },\n ],\n },\n },\n greaterThanOrEqualTo: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n greaterThanOrEqualToPercentage: {\n label: \"Is greater than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n ge: 0,\n },\n ],\n },\n },\n lessThan: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanPercentage: {\n label: \"Is less than\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n lt: 0,\n },\n ],\n },\n },\n lessThanOrEqualTo: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberInterval\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n lessThanOrEqualToPercentage: {\n label: \"Is less than or equal to\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n le: 0,\n },\n ],\n },\n },\n range: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberInterval\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangePercentage: {\n label: \"Between\",\n widget: {\n constraints: null,\n label: \"Between\",\n type: \"numberIntervalPercentage\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeMarketCap: {\n label: \"Market Cap. in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeMarketCap\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n rangeVolatility: {\n label: \"Volatility in range\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"rangeVolatility\",\n value: [\n {\n ge: 0,\n le: 0,\n },\n ],\n },\n },\n top: {\n label: \"Top\",\n widget: {\n constraints: null,\n label: \"\",\n type: \"number\",\n value: 10,\n },\n },\n },\n options: [\n {\n functions: [\"value\"],\n operators: [[\"equalToRate\"]],\n property: \"rc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\"],\n operators: [\n [\n \"bottom\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"rangeMarketCap\",\n \"top\",\n ],\n ],\n property: \"marketcap\",\n propertyLabelIndex: 3,\n transformation: {\n value: {\n equalTo: 1000000,\n greaterThan: 1000000,\n greaterThanOrEqualTo: 1000000,\n lessThan: 1000000,\n lessThanOrEqualTo: 1000000,\n rangeMarketCap: 1000000,\n },\n },\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"mc\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangeVolatility\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"sd\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n equalToPercentage: 100,\n greaterThanPercentage: 100,\n greaterThanOrEqualToPercentage: 100,\n lessThanPercentage: 100,\n lessThanOrEqualToPercentage: 100,\n rangeVolatility: 100,\n },\n },\n },\n {\n functions: [\"value\"],\n operators: [[\"greaterThan\"]],\n property: \"tradedvalue\",\n propertyLabelIndex: 0,\n transformation: {\n value: {\n greaterThan: 1000,\n },\n },\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"px\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pr\",\n propertyLabelIndex: 2,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pt\",\n propertyLabelIndex: 0,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pw\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pm\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"pq\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalToPercentage\",\n \"greaterThanPercentage\",\n \"greaterThanOrEqualToPercentage\",\n \"lessThanPercentage\",\n \"lessThanOrEqualToPercentage\",\n \"rangePercentage\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"py\",\n propertyLabelIndex: 1,\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"ts\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_pe\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_ps\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_pb\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_pc\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_pd\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_sps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_sps_CC_g_12\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_eps_CC_g_3\",\n },\n {\n functions: [\"value\", \"quantile\"],\n operators: [\n [\n \"bottom\",\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n \"top\",\n ],\n [\n \"equalTo\",\n \"greaterThan\",\n \"greaterThanOrEqualTo\",\n \"lessThan\",\n \"lessThanOrEqualTo\",\n \"range\",\n ],\n ],\n property: \"f_eps_CC_g_12\",\n },\n ],\n },\n },\n workflow: {\n optimize: {\n enabled: false,\n },\n track: {\n enabled: true,\n },\n comparison: {\n enabled: true,\n },\n },\n },\n },\n id: 21,\n productCode: \"SYSTEMATIC_ENGINE\",\n typeName: \"SYSTEMATIC_ENGINE\",\n },\n user: null,\n },\n api: {\n account: {\n baseEndPoint: \"trendrating-rest/api\",\n domain: \"{{ info.domain }}\",\n },\n compute: {\n baseEndPoint: \"trendrating-rest/api\",\n domain: \"{{ info.domain }}\",\n node: \"{{ info.system.node }}\",\n },\n isDebug: false,\n report: {\n baseEndPoint: \"api/v1/reports\",\n domain: \"{{ info.domain }}\",\n },\n rest: {\n baseEndPoint: \"api/v1\",\n domain: \"{{ info.domain }}\",\n },\n //uri: \"/data-local\",\n // uri: window.document.location.host.startsWith(\"develop.\")\n // ? // ||\n // // window.document.location.host.startsWith(\"localhost\")\n // \"/data/tr.aws.bucket.share-test\"\n // : \"/data/tr.aws.bucket.share-prod-2\",\n\n //!Actually not forced to point on a specific api\n //! to enforce it pass \"test\" | \"prod\" as argument\n uri: pathResolver(),\n devModeProducts: \"longOnly\",\n usage: {\n storeKey: \"{{ info.keenio.WRITE_KEY }}\",\n storeUrl:\n \"/log/projects/{{ info.keenio.PROJECT_ID }}/events/{{ info.keenio.COLLECTION }}\",\n },\n },\n configuration: null,\n\n customerCare: {\n isImpersonating: false,\n userId: null,\n },\n properties: null,\n taxonomies: null,\n};\n\nexport type User = {\n active: boolean;\n billingStart: string;\n contractType: string;\n conversionDate: string;\n country: string;\n creationTime: string;\n email: string;\n firm: string;\n firstName: string;\n id: number;\n lastName: string;\n owner: string;\n productMax: number;\n products: string;\n profile: string;\n role: string;\n stripeId: string | null;\n type: string;\n userName: string;\n};\n","import axios from \"axios\";\nimport {\n Context,\n createContext,\n ReactNode,\n useEffect,\n useReducer,\n useState,\n} from \"react\";\nimport { useQuery } from \"react-query\";\nimport { Loader } from \"./components/Loader\";\nimport { Configuration } from \"./trendrating/api/Configuration\";\nimport { AppEnvironment, environmentTemplate } from \"./types/Defaults\";\n\ntype AppContextProviderProps = {\n children?: ReactNode;\n};\n\nexport const AppContext = createContext(false);\n\ntype AppConfiguration = { environment: AppEnvironment };\ntype AppEnvironmentContextValue = Context;\nexport const AppEnvironmentContext: AppEnvironmentContextValue = createContext(\n {} as any\n);\n\ntype ReducerAction = {\n type: \"ADD_PROPERTIES\" | \"ADD_TAXONOMIES\";\n payload: any;\n};\n\nconst reducer = (prevState: AppEnvironment, action: ReducerAction) => {\n const { type, payload } = action;\n switch (type) {\n case \"ADD_PROPERTIES\":\n return {\n ...prevState,\n properties: payload,\n };\n case \"ADD_TAXONOMIES\":\n return {\n ...prevState,\n taxonomies: payload,\n };\n default:\n return prevState;\n }\n};\n\nexport const AppContextProvider = ({ children }: AppContextProviderProps) => {\n const [isReady, setReady] = useState(false);\n\n const [environment, dispatch] = useReducer(reducer, environmentTemplate);\n\n const [value, setValue] = useState({\n environment: environment,\n });\n\n useEffect(() => {\n if (environment.properties != null && environment.taxonomies != null) {\n environment.configuration = new Configuration({\n configuration: environment.account.product.configuration,\n product: environment.account.product,\n properties: environment.properties,\n });\n setValue({\n environment: environment,\n });\n\n setReady(true);\n }\n }, [environment]);\n\n const timestamp = Date.now();\n\n const {\n isLoading: isLoadingFieldsConfiguration,\n error: errorFieldsConfiguration,\n data: dataFieldsConfiguration,\n } = useQuery(\"fieldsConfiguration\", () =>\n axios(`/data-local/fieldsConfiguration.json?ts=${timestamp}`)\n );\n\n const {\n isLoading: isLoadingTaxonomies,\n error: errorTaxonomies,\n data: dataTaxonomies,\n } = useQuery(\"taxonomies\", () =>\n axios(`/data-local/taxonomies.json?ts=${timestamp}`)\n );\n\n useEffect(() => {\n if (dataFieldsConfiguration != null) {\n dispatch({\n type: \"ADD_PROPERTIES\",\n payload: dataFieldsConfiguration.data,\n });\n }\n }, [dataFieldsConfiguration]);\n\n useEffect(() => {\n if (dataTaxonomies != null) {\n dispatch({\n type: \"ADD_TAXONOMIES\",\n payload: dataTaxonomies.data,\n });\n }\n }, [dataTaxonomies]);\n\n if (isLoadingFieldsConfiguration || isLoadingTaxonomies) {\n return ;\n }\n\n if (errorFieldsConfiguration) {\n return
{`Error: ${errorFieldsConfiguration.message}`}
;\n }\n\n if (errorTaxonomies) {\n return
{`Error: ${errorTaxonomies.message}`}
;\n }\n\n return (\n \n \n {children}\n \n \n );\n};\n","import { useContext } from \"react\";\nimport { AppContext, AppEnvironmentContext } from \"../AppContextProvider\";\n\nexport const useAppContext = () => {\n const context = useContext(AppContext);\n if (context === undefined) {\n throw new Error(\n `useAppContext must be called within AppContextProvider`\n );\n }\n return context;\n};\n\nexport const useEnvironment = () => {\n const context = useContext(AppEnvironmentContext);\n if (context === undefined) {\n throw new Error(\n `useEnvironment must be called within AppContextProvider`\n );\n }\n return context;\n};\n","import { ReactNode } from \"react\";\nimport { Col, Container, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { paths } from \"../types/Defaults\";\n\ntype FooterProps = {\n children?: ReactNode;\n className?: string;\n};\n\nconst FooterLinks = () => {\n return (\n
\n \n Disclaimer\n \n \n Privacy policy\n \n \n Terms of Service\n \n
\n );\n};\n\nexport const Footer = ({ children, className }: FooterProps) => {\n return (\n \n \n \n \n © {new Date().getFullYear()} Trendrating\n \n {children ? (\n <>\n {children}\n \n \n \n \n ) : (\n \n \n \n )}\n \n \n \n );\n};\n","import React, { useState } from \"react\";\n\nexport const useInput = (initialValue: string) => {\n const [value, setValue] = useState(initialValue);\n\n const handleChange = (\n event:\n | React.ChangeEvent\n | React.ChangeEvent\n ) => {\n setValue(event.target.value);\n };\n\n return {\n value,\n onchange: handleChange,\n };\n};\n","import { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useImmerReducer } from \"use-immer\";\n\ntype signUpformFields = {\n email?: string;\n firstName?: string;\n lastName?: string;\n password?: string;\n confirmPassword?: string;\n firm?: string;\n country?: string;\n role?: string;\n};\n\ntype SignInFields = {\n email: string;\n password: string;\n};\n\ntype InitialValidationStateSignUp = {\n email: { isValid: boolean; message: string };\n firstName: { isValid: boolean; message: string };\n lastName: { isValid: boolean; message: string };\n // password: { isValid: boolean; message: string };\n firm: { isValid: boolean; message: string };\n country: { isValid: boolean; message: string };\n role: { isValid: boolean; message: string };\n};\n\ntype InitialValidationStateSignIn = {\n email: { isValid: boolean; message: string };\n password: { isValid: boolean; message: string };\n};\n\ntype Action = {\n type: string;\n};\n\nexport const useSignUpValidator = (signUpInputValues: signUpformFields) => {\n const initialValidationState = {\n email: { isValid: false, message: \"\" },\n firstName: { isValid: false, message: \"\" },\n lastName: { isValid: false, message: \"\" },\n // password: { isValid: false, message: \"\" },\n firm: { isValid: false, message: \"\" },\n country: { isValid: false, message: \"\" },\n role: { isValid: false, message: \"\" },\n };\n\n const VALIDATE_EMAIL = \"VALIDATE_EMAIL\";\n const VALIDATE_FIRSTNAME = \"VALIDATE_FIRSTNAME\";\n const VALIDATE_LASTNAME = \"VALIDATE_LASTNAME\";\n // const VALIDATE_PASSWORD = \"VALIDATE_PASSWORD\";\n const VALIDATE_FIRM = \"VALIDATE_FIRM\";\n const VALIDATE_COUNTRY = \"VALIDATE_COUNTRY\";\n const VALIDATE_ROLE = \"VALIDATE_ROLE\";\n\n const { t } = useTranslation();\n\n const reducer = (draft: InitialValidationStateSignUp, action: Action) => {\n switch (action.type) {\n case VALIDATE_EMAIL:\n const emailPattern =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (emailPattern.test(signUpInputValues.email ?? \"\")) {\n draft.email = {\n isValid: true,\n message: \"\",\n };\n } else {\n draft.email = {\n isValid: false,\n message: t(\"email.required\"),\n };\n }\n break;\n\n case VALIDATE_FIRSTNAME:\n const firstNamePattern = /[A-Za-z]{1,32}/;\n if (firstNamePattern.test(signUpInputValues.firstName ?? \"\")) {\n draft.firstName = {\n isValid: true,\n message: \"\",\n };\n } else {\n draft.firstName = {\n isValid: false,\n message: t(\"firstName.error\"),\n };\n }\n break;\n\n case VALIDATE_LASTNAME:\n const lastNamePattern = /[A-Za-z]{1,32}/;\n if (lastNamePattern.test(signUpInputValues.lastName ?? \"\")) {\n draft.lastName = {\n isValid: true,\n message: \"\",\n };\n } else {\n draft.lastName = {\n isValid: false,\n message: t(\"lastName.error\"),\n };\n }\n break;\n\n // case VALIDATE_PASSWORD:\n // const password = signUpInputValues.password;\n // const confirmPassword = signUpInputValues.confirmPassword;\n // const isPasswordConfirmed =\n // password === confirmPassword ? true : false;\n // const isPasswordValid = password!.length >= 8 ? true : false;\n // if (isPasswordValid && isPasswordConfirmed) {\n // draft.password = {\n // isValid: true,\n // message: \"\",\n // };\n // } else if (isPasswordValid && !isPasswordConfirmed) {\n // draft.password = {\n // isValid: false,\n // message: t(\"password.mismatch\"),\n // };\n // } else if (!isPasswordValid && isPasswordConfirmed) {\n // draft.password = {\n // isValid: false,\n // message: t(\"password.invalid\"),\n // };\n // } else {\n // draft.password = {\n // isValid: false,\n // message: t(\"password.error\"),\n // };\n // }\n // break;\n\n case VALIDATE_FIRM:\n if (signUpInputValues.firm!.length) {\n draft.firm = {\n isValid: true,\n message: \"\",\n };\n } else {\n draft.firm = {\n isValid: false,\n message: t(\"firm.invalid\"),\n };\n }\n break;\n\n case VALIDATE_COUNTRY:\n const countryRuleValidation =\n signUpInputValues.country!.length &&\n signUpInputValues.country !== \"Choose a country\"\n ? true\n : false;\n if (countryRuleValidation) {\n draft.country = {\n isValid: true,\n message: \"\",\n };\n } else {\n draft.country = {\n isValid: false,\n message: t(\"country.invalid\"),\n };\n }\n break;\n\n case VALIDATE_ROLE:\n const roleRuleValidation =\n signUpInputValues.role!.length &&\n signUpInputValues.role !== \"Choose a role\"\n ? true\n : false;\n if (roleRuleValidation) {\n draft.role = {\n isValid: true,\n message: \"\",\n };\n } else {\n draft.role = {\n isValid: false,\n message: t(\"role.invalid\"),\n };\n }\n break;\n\n default:\n return draft;\n }\n };\n\n const [state, dispatch] = useImmerReducer(reducer, initialValidationState);\n\n useEffect(() => {\n dispatch({ type: VALIDATE_EMAIL });\n }, [signUpInputValues.email, dispatch]);\n\n useEffect(() => {\n dispatch({ type: VALIDATE_FIRSTNAME });\n }, [signUpInputValues.firstName, dispatch]);\n\n useEffect(() => {\n dispatch({ type: VALIDATE_LASTNAME });\n }, [signUpInputValues.lastName, dispatch]);\n\n // useEffect(() => {\n // dispatch({ type: VALIDATE_PASSWORD });\n // }, [\n // signUpInputValues.password,\n // signUpInputValues.confirmPassword,\n // dispatch,\n // ]);\n\n useEffect(() => {\n dispatch({ type: VALIDATE_FIRM });\n }, [signUpInputValues.firm, dispatch]);\n\n useEffect(() => {\n dispatch({ type: VALIDATE_ROLE });\n }, [signUpInputValues.role, dispatch]);\n\n useEffect(() => {\n dispatch({ type: VALIDATE_COUNTRY });\n }, [signUpInputValues.country, dispatch]);\n\n const checkFormfields = Object.values(state).filter(\n (value) => value.isValid === false\n );\n\n const isFormValid = !checkFormfields.length ? true : false;\n\n return { state, isFormValid };\n};\n\nexport const useSignInValidator = (signInInputValues: SignInFields) => {\n const initialValidationState = {\n email: { isValid: false, message: \"\" },\n password: { isValid: false, message: \"\" },\n };\n\n const VALIDATE_EMAIL = \"VALIDATE_EMAIL\";\n const VALIDATE_PASSWORD = \"VALIDATE_PASSWORD\";\n\n const { t } = useTranslation();\n\n const reducer = (draft: InitialValidationStateSignIn, action: Action) => {\n switch (action.type) {\n case VALIDATE_EMAIL:\n const emailPattern =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (emailPattern.test(signInInputValues.email ?? \"\")) {\n draft.email = {\n isValid: true,\n message: \"\",\n };\n } else {\n draft.email = {\n isValid: false,\n message: t(\"email.required\"),\n };\n }\n break;\n\n case VALIDATE_PASSWORD:\n if (signInInputValues.password.length) {\n draft.password = {\n isValid: true,\n message: \"\",\n };\n } else {\n draft.password = {\n isValid: false,\n message: t(\"password.required\"),\n };\n }\n }\n };\n\n const [state, dispatch] = useImmerReducer(reducer, initialValidationState);\n\n useEffect(() => {\n dispatch({ type: VALIDATE_EMAIL });\n }, [signInInputValues.email, dispatch]);\n\n useEffect(() => {\n dispatch({ type: VALIDATE_PASSWORD });\n }, [signInInputValues.password, dispatch]);\n\n const checkFormfields = Object.values(state).filter(\n (value) => value.isValid === false\n );\n\n const isFormValid = !checkFormfields.length ? true : false;\n\n return { state, isFormValid };\n};\n","import { FormEvent, useEffect, useRef, useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useInput } from \"../../hooks/useInput\";\nimport { useSignInValidator } from \"../../hooks/useValidator\";\n\ntype LoginProps = {\n handleLogin: Function;\n hasLoginFailed: boolean;\n loginFailedMessage: string;\n showRegisterMessage: boolean;\n navigateToRegistration: Function;\n};\n\nexport function Login({\n handleLogin,\n hasLoginFailed,\n loginFailedMessage,\n showRegisterMessage,\n navigateToRegistration,\n}: LoginProps) {\n const [checkValidation, startingCheckValidation] = useState(false);\n const email = useInput(\"\");\n const password = useInput(\"\");\n\n const paramsLogin = {\n email: email.value.trim(),\n password: password.value,\n };\n\n const { state, isFormValid } = useSignInValidator(paramsLogin);\n\n const validInputs = state;\n\n const emailInputRef = useRef(null);\n\n useEffect(() => emailInputRef.current?.focus(), []);\n\n const handleSubmit = (event: FormEvent) => {\n event.preventDefault();\n startingCheckValidation(true);\n if (isFormValid) {\n handleLogin(paramsLogin, isFormValid);\n }\n };\n\n const addErrorClass = (isInputValid: boolean) => {\n let className = \"\";\n if (checkValidation) {\n if (!isInputValid) {\n className = \"input-error-state\";\n }\n }\n return className;\n };\n\n const emailErrorClass = addErrorClass(validInputs.email.isValid);\n const passwordErrorClass = addErrorClass(validInputs.password.isValid);\n\n return (\n \n \n \n \n
\n

\n Insert your credentials to login\n

\n {hasLoginFailed ? (\n \n {loginFailedMessage}\n
\n ) : null}\n
\n \n \n \n Email address\n \n \n {checkValidation ? (\n validInputs.email.isValid ? null : (\n
\n

\n {\n validInputs.email\n .message\n }\n

\n
\n )\n ) : null}\n \n \n \n Password\n \n \n {checkValidation ? (\n validInputs.password\n .isValid ? null : (\n
\n

\n {\n validInputs.password\n .message\n }\n

\n
\n )\n ) : null}\n \n \n

\n Button\n

\n \n LOG IN\n \n \n
\n
\n \n \n
\n \n \n

Don't have an account?

\n \n
\n \n \n
\n navigateToRegistration()}\n >\n SIGN UP\n \n
\n\n {showRegisterMessage ? (\n \n Sending your registration...\n \n ) : null}\n\n {/* \n Can't remember your credentials?\n */}\n \n
\n \n
\n );\n}\n","import { ChangeEvent } from \"react\";\nimport { Form } from \"react-bootstrap\";\n\ntype Props = {\n selectTitle: string;\n options: string[];\n placeholder: string;\n selectedValue: string;\n onSelect: (event: ChangeEvent) => void;\n children?: JSX.Element;\n className?: string;\n};\n\ntype CountrySelectProps = {\n selectedValue: string;\n onSelect: (event: ChangeEvent) => void;\n children?: JSX.Element;\n className?: string;\n};\n\nexport function Select({\n selectTitle,\n options,\n placeholder,\n selectedValue,\n onSelect,\n className,\n children,\n}: Props) {\n return (\n <>\n \n \n \n {options.map((option: string, index: number) => {\n return (\n \n );\n })}\n \n {children}\n \n );\n}\n\nexport function CountrySelect({\n className,\n selectedValue,\n onSelect,\n children,\n}: CountrySelectProps) {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {children}\n \n );\n}\n","import { FormEvent, useEffect, useRef, useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useInput } from \"../../hooks/useInput\";\nimport { useSignUpValidator } from \"../../hooks/useValidator\";\nimport { CountrySelect, Select } from \"../Select\";\n\ntype LoginData = {\n email: string;\n password: string;\n confirmPassword: string;\n firstName: string;\n lastName: string;\n firm: string;\n country: string;\n role: string;\n};\n\ntype RegistrationProps = {\n handleRegister: (params: LoginData) => void;\n hasLoginFailed: boolean;\n loginFailedMessage: string;\n showRegisterMessage: boolean;\n navigateToSuccess: Function;\n navigateToLogin: Function;\n};\n\nexport function Registration({\n hasLoginFailed,\n handleRegister,\n loginFailedMessage,\n showRegisterMessage,\n navigateToLogin,\n navigateToSuccess,\n}: RegistrationProps) {\n const [checkValidation, startingCheckValidation] = useState(false);\n const email = useInput(\"\");\n const password = useInput(\"\");\n const confirmPassword = useInput(\"\");\n const firstName = useInput(\"\");\n const lastName = useInput(\"\");\n const firm = useInput(\"\");\n const country = useInput(\"\");\n const role = useInput(\"\");\n\n const paramsLogin = {\n email: email.value.trim(),\n password: password.value,\n confirmPassword: confirmPassword.value,\n firstName: firstName.value.trim(),\n lastName: lastName.value.trim(),\n firm: firm.value.trim(),\n country: country.value,\n role: role.value,\n };\n\n const { state, isFormValid } = useSignUpValidator(paramsLogin);\n\n const validInputs = state;\n\n const emailInputRef = useRef(null);\n\n useEffect(() => emailInputRef.current?.focus(), []);\n\n const handleSubmit = (event: FormEvent) => {\n event.preventDefault();\n startingCheckValidation(true);\n if (isFormValid) {\n handleRegister(paramsLogin);\n navigateToSuccess();\n }\n };\n\n const addErrorClass = (isInputValid: boolean) => {\n let className = \"\";\n if (checkValidation) {\n if (!isInputValid) {\n className = \"input-error-state\";\n }\n }\n return className;\n };\n\n const emailErrorClass = addErrorClass(validInputs.email.isValid);\n const firstNameErrorClass = addErrorClass(validInputs.firstName.isValid);\n const lastNameErrorClass = addErrorClass(validInputs.lastName.isValid);\n // const passwordErrorClass = addErrorClass(validInputs.password.isValid);\n // const confirmPasswordErrorClass = addErrorClass(\n // validInputs.password.isValid\n // );\n const firmErrorClass = addErrorClass(validInputs.firm.isValid);\n const countryErrorClass = addErrorClass(validInputs.country.isValid);\n const roleErrorClass = addErrorClass(validInputs.role.isValid);\n return (\n \n \n \n \n
\n

\n Complete the form below and get access to the list of stocks.\n

\n {hasLoginFailed ? (\n
\n {loginFailedMessage}\n
\n ) : null}\n \n \n \n \n Email address\n \n \n {checkValidation ? (\n validInputs.email.isValid ? null : (\n
\n

{validInputs.email.message}

\n
\n )\n ) : null}\n \n \n \n {checkValidation ? (\n validInputs.role.isValid ? undefined : (\n
\n

{validInputs.role.message}

\n
\n )\n ) : undefined}\n \n \n
\n \n \n \n First Name\n \n \n {checkValidation ? (\n validInputs.firstName.isValid ? null : (\n
\n

{validInputs.firstName.message}

\n
\n )\n ) : null}\n \n \n \n Last Name\n \n \n {checkValidation ? (\n validInputs.lastName.isValid ? null : (\n
\n

{validInputs.lastName.message}

\n
\n )\n ) : null}\n \n
\n \n \n \n {checkValidation ? (\n validInputs.country.isValid ? undefined : (\n
\n

{validInputs.country.message}

\n
\n )\n ) : undefined}\n \n \n \n \n Firm\n \n \n {checkValidation ? (\n validInputs.firm.isValid ? null : (\n
\n

{validInputs.firm.message}

\n
\n )\n ) : null}\n \n
\n \n
\n \n
\n \n \n
\n navigateToLogin()}\n >\n BACK\n \n \n SIGN UP\n \n
\n\n {showRegisterMessage ? (\n
\n Please wait...\n
\n ) : null}\n \n
\n \n
\n );\n}\n","import React, { ReactElement } from \"react\";\n\n// type SuccessStepProps = {};\n\nexport function SuccessStep(/*{}: SuccessStepProps*/): ReactElement {\n return (\n
\n \n
\n

Thank you, you will be contacted shortly

\n
\n
\n );\n}\n","import { FormEvent, useEffect, useState } from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport { useImmerReducer } from \"use-immer\";\nimport { useInput } from \"../hooks/useInput\";\n\ntype ChangePasswordProps = {\n userData: {\n id: number;\n firstName: string;\n lastName: string;\n email: string;\n userName: string;\n role: string;\n profile: string;\n type: string;\n firm: string;\n creationTime: Date;\n active: boolean;\n country: string;\n products: string;\n contractType: string;\n productMax: number;\n billingStart: string;\n conversionDate: string;\n owner: string;\n stripeId: string;\n };\n changeUserPassword: Function;\n};\n\ntype Action =\n | {\n type: \"VALIDATE_FORM\";\n payload: {\n password: string;\n confirmPassword: string;\n };\n }\n | {\n type: \"SET_LOADING\";\n payload: boolean;\n }\n | {\n type: \"SET_SUCCESS\";\n payload: boolean;\n }\n | {\n type: \"SET_ERROR_MESSAGE\";\n payload: string;\n }\n | { type: \"SET_SHOW_MESSAGE\"; payload: boolean };\n\ntype ValidationState = {\n password: {\n isValid: boolean;\n message: string;\n };\n confirmPassword: {\n isValid: boolean;\n message: string;\n };\n formStatus: {\n isValid: boolean;\n message: string;\n };\n loadingStatus: boolean;\n success: boolean;\n errorMessage: string;\n showMessage: boolean;\n};\n\nconst reducer = (draft: ValidationState, action: Action) => {\n switch (action.type) {\n case \"VALIDATE_FORM\":\n const {\n password: newPassword,\n confirmPassword: confirmNewPassword,\n } = action.payload;\n if (\n newPassword.length &&\n confirmNewPassword.length &&\n confirmNewPassword === newPassword\n ) {\n draft.password = {\n isValid: true,\n message: \"\",\n };\n draft.confirmPassword = {\n isValid: true,\n message: \"\",\n };\n draft.formStatus = {\n isValid: true,\n message: \"\",\n };\n draft.errorMessage = \"\";\n draft.showMessage = false;\n } else if (\n !newPassword.length ||\n !confirmNewPassword.length ||\n (!newPassword.length && !confirmNewPassword.length)\n ) {\n if (!newPassword.length && !confirmNewPassword.length) {\n draft.password = {\n isValid: false,\n message: \"This field is required\",\n };\n draft.confirmPassword = {\n isValid: false,\n message: \"This field is required\",\n };\n draft.formStatus = {\n isValid: false,\n message: \"All fields are required\",\n };\n draft.errorMessage = \"All fields are required\";\n } else if (!newPassword.length) {\n draft.password = {\n isValid: false,\n message: \"This field is required\",\n };\n draft.confirmPassword = {\n isValid: true,\n message: \"\",\n };\n draft.formStatus = {\n isValid: false,\n message: \"New password field is required\",\n };\n draft.errorMessage = \"New password field is required\";\n } else {\n draft.password = {\n isValid: true,\n message: \"\",\n };\n draft.confirmPassword = {\n isValid: false,\n message: \"This field is required\",\n };\n draft.formStatus = {\n isValid: false,\n message: \"Confirm password field is required\",\n };\n draft.errorMessage = \"Confirm password field is required\";\n }\n } else {\n draft.password = {\n isValid: true,\n message: \"\",\n };\n draft.confirmPassword = {\n isValid: false,\n message: \"Passwords do not match\",\n };\n draft.formStatus = {\n isValid: false,\n message: \"Passwords must to be equal\",\n };\n draft.errorMessage = \"Passwords must to be equal\";\n }\n break;\n case \"SET_LOADING\":\n draft.loadingStatus = action.payload;\n break;\n case \"SET_SUCCESS\":\n draft.success = action.payload;\n break;\n case \"SET_ERROR_MESSAGE\":\n draft.errorMessage = action.payload;\n break;\n case \"SET_SHOW_MESSAGE\":\n draft.showMessage = action.payload;\n break;\n default:\n return draft;\n }\n};\n\nexport function ChangePassword({\n userData,\n changeUserPassword,\n}: ChangePasswordProps) {\n const [checkValidation, startingCheckValidation] = useState(false);\n\n const { id } = userData;\n\n const componentState = {\n password: {\n isValid: false,\n message: \"\",\n },\n confirmPassword: {\n isValid: false,\n message: \"\",\n },\n formStatus: {\n isValid: false,\n message: \"\",\n },\n loadingStatus: false,\n success: false,\n errorMessage: \"\",\n showMessage: false,\n };\n\n const newPassword = useInput(\"\");\n const confirmNewPassword = useInput(\"\");\n\n const [state, dispatch] = useImmerReducer(reducer, componentState);\n\n useEffect(() => {\n dispatch({\n type: \"VALIDATE_FORM\",\n payload: {\n password: newPassword.value,\n confirmPassword: confirmNewPassword.value,\n },\n });\n }, [confirmNewPassword.value, dispatch, newPassword.value]);\n\n const handleSubmit = async (event: FormEvent) => {\n event.preventDefault();\n startingCheckValidation(true);\n dispatch({ type: \"SET_SUCCESS\", payload: false });\n dispatch({ type: \"SET_SHOW_MESSAGE\", payload: true });\n if (state.formStatus.isValid) {\n try {\n dispatch({ type: \"SET_LOADING\", payload: true });\n await changeUserPassword({\n id,\n password: confirmNewPassword.value,\n });\n dispatch({ type: \"SET_LOADING\", payload: false });\n dispatch({ type: \"SET_SUCCESS\", payload: true });\n dispatch({ type: \"SET_ERROR_MESSAGE\", payload: \"\" });\n } catch (err) {\n if (err) {\n dispatch({ type: \"SET_LOADING\", payload: false });\n dispatch({ type: \"SET_SUCCESS\", payload: false });\n dispatch({\n type: \"SET_ERROR_MESSAGE\",\n payload: \"Something goes wrong please retry later\",\n });\n }\n }\n }\n };\n\n const handleShowMessage = () => {\n if (state.loadingStatus) {\n return (\n
\n Loading ...\n
\n );\n } else {\n if (!state.success) {\n return (\n
\n {state.errorMessage}\n
\n );\n } else {\n return (\n
\n Your profile has been correctly updated\n
\n );\n }\n }\n };\n\n const showMessage = handleShowMessage();\n\n return (\n <>\n \n \n \n \n
\n

\n Change your Password\n

\n {checkValidation && state.showMessage\n ? showMessage\n : null}\n \n \n \n \n New Password\n \n \n {checkValidation\n ? !state.password.isValid && (\n
\n

\n {\n state.password\n .message\n }\n

\n
\n )\n : null}\n \n \n \n Confirm Password\n \n \n {checkValidation\n ? !state.confirmPassword\n .isValid && (\n
\n

\n {\n state\n .confirmPassword\n .message\n }\n

\n
\n )\n : null}\n \n
\n \n
\n \n
\n \n
\n \n \n \n Update password\n \n \n \n \n );\n}\n","import { FormEvent, useState } from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport { useInput } from \"../hooks/useInput\";\nimport { useSignUpValidator } from \"../hooks/useValidator\";\nimport { CountrySelect, Select } from \"./Select\";\n\ntype ProfileEditProps = {\n editHandler: Function;\n userData: {\n id: number;\n firstName: string;\n lastName: string;\n email: string;\n userName: string;\n role: string;\n profile: string;\n type: string;\n firm: string;\n creationTime: Date;\n active: boolean;\n country: string;\n products: string;\n contractType: string;\n productMax: number;\n billingStart: string;\n conversionDate: string;\n owner: string;\n stripeId: string;\n };\n};\n\nexport function ProfileEditForm({ userData, editHandler }: ProfileEditProps) {\n const [checkValidation, startingCheckValidation] = useState(false);\n const [success, setSuccess] = useState();\n const [isLoading, setIsLoading] = useState(false);\n\n const {\n id: userId,\n email: userEmail,\n profile: userInvestorProfile,\n firstName: userFirstName,\n lastName: userLastName,\n country: userCountry,\n firm: userFirm,\n } = userData;\n const email = useInput(userEmail);\n const firstName = useInput(userFirstName);\n const lastName = useInput(userLastName);\n const firm = useInput(userFirm);\n const country = useInput(userCountry);\n const role = useInput(userInvestorProfile);\n\n const paramsEdit = {\n email: userData.email,\n firstName: firstName.value,\n lastName: lastName.value,\n firm: firm.value,\n country: country.value,\n role: role.value,\n };\n\n const { state, isFormValid } = useSignUpValidator(paramsEdit);\n\n const validInputs = state;\n\n const addErrorClass = (isInputValid: boolean) => {\n let className = \"\";\n if (checkValidation) {\n if (!isInputValid) {\n className = \"input-error-state\";\n }\n }\n return className;\n };\n\n const firstNameErrorClass = addErrorClass(validInputs.firstName.isValid);\n const lastNameErrorClass = addErrorClass(validInputs.lastName.isValid);\n const firmErrorClass = addErrorClass(validInputs.firm.isValid);\n const countryErrorClass = addErrorClass(validInputs.country.isValid);\n const roleErrorClass = addErrorClass(validInputs.role.isValid);\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n startingCheckValidation(true);\n if (isFormValid) {\n setIsLoading(true);\n editHandler({\n id: userId,\n email: email.value,\n firstName: firstName.value,\n lastName: lastName.value,\n country: country.value,\n firm: firm.value,\n profile: role.value,\n })\n .then(() => {\n setIsLoading(false);\n setSuccess(true);\n })\n .catch((err: any) => {\n err && setSuccess(false);\n });\n }\n };\n\n const MessageHandler = () => {\n if (isLoading) {\n return (\n
\n Loading ...\n
\n );\n } else if (checkValidation) {\n if (success) {\n return (\n
\n Your profile has been correctly updated\n
\n );\n } else {\n return (\n
\n something went wrong the profile was not updated\n
\n );\n }\n }\n };\n\n const showMessage = MessageHandler();\n\n return (\n <>\n \n \n \n \n
\n

\n Change your profile info\n

\n {showMessage}\n \n \n \n \n Email address\n \n \n \n \n \n {checkValidation ? (\n validInputs.role\n .isValid ? undefined : (\n
\n

\n {\n validInputs\n .role\n .message\n }\n

\n
\n )\n ) : undefined}\n \n \n
\n \n \n \n First Name\n \n \n {checkValidation ? (\n validInputs.firstName\n .isValid ? null : (\n
\n

\n {\n validInputs\n .firstName\n .message\n }\n

\n
\n )\n ) : null}\n \n \n \n Last Name\n \n \n {checkValidation ? (\n validInputs.lastName\n .isValid ? null : (\n
\n

\n {\n validInputs\n .lastName\n .message\n }\n

\n
\n )\n ) : null}\n \n
\n \n \n \n {checkValidation ? (\n validInputs.country\n .isValid ? undefined : (\n
\n

\n {\n validInputs\n .country\n .message\n }\n

\n
\n )\n ) : undefined}\n \n \n \n \n Firm\n \n \n {checkValidation ? (\n validInputs.firm\n .isValid ? null : (\n
\n

\n {\n validInputs.firm\n .message\n }\n

\n
\n )\n ) : null}\n \n
\n \n
\n \n
\n \n
\n \n \n

\n * Email is not editable if you need to change it, please\n contact our customer service\n

\n \n Update Profile\n \n \n
\n \n );\n}\n","// TODO check for custom event handler\nexport type CustomEventHandler = (event: CustomEvent) => void\n\nexport const eventBus = {\n on(event: string, callback: CustomEventHandler) {\n document.addEventListener(event, (e: any) => callback(e.detail));\n },\n dispatch(event: string, data: any) {\n document.dispatchEvent(new CustomEvent(event, { detail: data }));\n },\n remove(event: string, callback: EventListener) {\n document.removeEventListener(event, callback);\n },\n};\n","import { useMemo } from \"react\";\nimport {\n useParams,\n useLocation,\n useHistory,\n useRouteMatch,\n} from \"react-router-dom\";\n\n// Hook\nexport const useRouter = () => {\n const params = useParams();\n const location = useLocation();\n const history = useHistory();\n const match = useRouteMatch();\n // Return our custom router object\n // Memoize so that a new object is only returned if something changes\n return useMemo(() => {\n return {\n // For convenience add push(), replace(), pathname at top level\n push: history.push,\n replace: history.replace,\n pathname: location.pathname,\n params: params,\n query: new URLSearchParams(location.search),\n // Include match, location, history objects so we have\n // access to extra React Router functionality if needed.\n match,\n location,\n history,\n };\n }, [params, match, location, history]);\n};\n","import { ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { Button, Col, Container, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Login } from \"../components/AuthenticationWizard/Login\";\nimport { Registration } from \"../components/AuthenticationWizard/Registration\";\nimport { SuccessStep } from \"../components/AuthenticationWizard/SuccessStep\";\nimport { ChangePassword } from \"../components/ChangePassword\";\nimport { ProfileEditForm } from \"../components/ProfileEditForm\";\nimport { eventBus } from \"../eventBus\";\nimport { useAuth } from \"../hooks/useAuth\";\nimport { useRouter } from \"../hooks/useRouter\";\nimport { paths } from \"../types/Defaults\";\n\ntype HeaderProps = {\n children?: ReactNode;\n className?: string;\n viewType: \"longOnly\" | \"longShort\" | \"portfolios\";\n};\n\ntype LoginData = {\n email: string;\n password: string;\n confirmPassword: string;\n firstName: string;\n lastName: string;\n firm: string;\n country: string;\n role: string;\n};\n\ntype HeaderUserBoxProps = {\n setShowUserBox: Function;\n initialTab?: WizardStateType;\n};\n\ntype EditProfileInfo = {\n id: number;\n email: string;\n profile: string;\n firstName: string;\n lastName: string;\n country: string;\n firm: string;\n};\n\ntype WizardStateType = \"Login\" | \"Registration\" | \"Success\";\n\nconst HeaderUserBox = ({ setShowUserBox, initialTab }: HeaderUserBoxProps) => {\n const { isReady, isLogged, register, signin, signout, user, editProfile } =\n useAuth();\n const router = useRouter();\n const [isLogging, setIsLogging] = useState(false);\n const [loginFailedMessage, setLoginFailedMessage] = useState(\"\");\n const [hasLoginFailed, setLoginFailed] = useState(false);\n const [showRegisterMessage, setShowRegisterMessage] =\n useState(false);\n const [wizardState, setWizardState] = useState(\n initialTab ?? \"Login\"\n );\n\n const wizardSteps = useMemo(\n () => ({\n login: \"Login\",\n registration: \"Registration\",\n success: \"Success\",\n goToLogin: () => setWizardState(\"Login\"),\n goToRegistration: () => setWizardState(\"Registration\"),\n goToSuccess: () => setWizardState(\"Success\"),\n }),\n []\n );\n\n const handleRegister = ({\n email,\n password,\n confirmPassword,\n firstName,\n lastName,\n firm,\n country,\n role,\n }: LoginData) => {\n setShowRegisterMessage(true);\n const registrationData = {\n email,\n firstName,\n lastName,\n profile: role,\n userName: email, // TODO check if it is ok, same as email for now\n country,\n firm,\n };\n register(registrationData).then(() =>\n setTimeout(() => {\n setShowRegisterMessage(false);\n }, 1000)\n );\n };\n\n const handleLogout = () => {\n if (isReady) {\n signout().then(() => {\n setShowUserBox(false);\n });\n }\n };\n\n const handlePasswordChange = ({\n id,\n password,\n }: {\n id: number;\n password: string;\n }) => {\n if (isReady) {\n return editProfile({\n id,\n password,\n });\n }\n };\n\n const handleEditProfile = ({\n id,\n email,\n profile,\n firstName,\n lastName,\n country,\n firm,\n }: EditProfileInfo) => {\n if (isReady) {\n return editProfile({\n id,\n email,\n profile,\n firstName,\n lastName,\n country,\n firm,\n });\n }\n };\n\n const handleLogin = ({ email, password }: LoginData) => {\n if (isReady) {\n setIsLogging(true);\n signin(email, password).then(\n (response: any) => {\n setIsLogging(false);\n setLoginFailed(false);\n if (router.pathname === \"/\") {\n // If home, redirect to product page\n setTimeout(() => router.push(\"/product\"), 300);\n }\n setShowUserBox(false);\n },\n (error: any) => {\n setIsLogging(false);\n setLoginFailed(true);\n if (error.type === \"USER_NOT_FOUND\") {\n setLoginFailedMessage(\"Your email and/or password is not correct.\");\n } else {\n if (error.message != null) {\n setLoginFailedMessage(error.message);\n } else {\n // TODO what is that?\n setLoginFailedMessage(\n \"An unknown error occurred. Please contact Trendrating.\"\n );\n }\n }\n }\n );\n }\n };\n\n const AuthWizardComponent = () => {\n switch (wizardState) {\n case wizardSteps.registration:\n return (\n \n );\n\n case wizardSteps.success:\n return ;\n\n case wizardSteps.login:\n default:\n return (\n \n );\n }\n };\n\n return (\n
\n \n \n
\n setShowUserBox(false)}\n variant=\"link\"\n >\n \n   Close\n \n
\n \n
\n \n \n \n
\n {isLogged ? (\n
\n \n \n
\n \n Logout {user.firstName} {user.lastName}\n \n
\n
\n ) : isLogging ? (\n
Logging user...
\n ) : (\n \n )}\n
\n \n
\n
\n
\n );\n};\n\nexport const Header = ({ children, className, viewType }: HeaderProps) => {\n const { isReady, isLogged, user } = useAuth();\n const [showUserBox, setShowUserBox] = useState(false);\n\n const [predefinedTab, setPredefinedTab] = useState<\n WizardStateType | undefined\n >();\n\n const busShowUserBox: any = (showBox: boolean) => {\n setShowUserBox((prevShowBox) => {\n if (prevShowBox === showBox) {\n // If the box is already open, still move the page to the top\n window.scrollTo(0, 0);\n }\n return showBox;\n });\n };\n\n useEffect(() => {\n eventBus.on(\"show-user-login-box\", busShowUserBox);\n return () => {\n eventBus.remove(\"show-user-login-box\", busShowUserBox);\n };\n }, []);\n\n useEffect(() => {\n eventBus.on(\"show-user-registration-box\", () => {\n setPredefinedTab(\"Registration\");\n busShowUserBox(true);\n });\n return () => {\n eventBus.remove(\"show-user-registration-box\", () => {\n setPredefinedTab(\"Registration\");\n busShowUserBox(true);\n });\n };\n }, []);\n\n useEffect(() => {\n window.scrollTo(0, 0);\n if (showUserBox) {\n document.body.classList.add(\"modal-open\");\n } else {\n document.body.classList.remove(\"modal-open\");\n }\n }, [showUserBox]);\n\n if (!isReady) {\n return (\n
\n \n \n \n \n \n \n \n \n \n
\n );\n }\n\n return (\n
\n \n \n \n \n \n \n \n {children ? (\n \n {children}\n \n ) : null}\n \n setShowUserBox((showUserBox) => !showUserBox)}\n variant={showUserBox ? \"primary\" : \"link\"}\n >\n {\" \"}\n {isLogged\n ? `${user.firstName} ${user.lastName}`\n : \"Log In / Sign Up\"}\n \n {showUserBox ? (\n \n ) : (\n \"\"\n )}\n \n \n \n
\n );\n};\n","import { ReactNode, useEffect, useState } from \"react\";\nimport { KnownHostnames } from \"../types/Defaults\";\nimport { Footer } from \"./Footer\";\nimport { Header } from \"./Header\";\n\ntype PageWrapMode = \"fixed\" | \"default\";\n\ntype PageWrapProps = {\n children: ReactNode;\n footerChildren?: ReactNode;\n headerChildren?: ReactNode;\n mode?: PageWrapMode;\n};\n\nexport const PageWrap = ({\n children,\n footerChildren,\n headerChildren,\n mode = \"default\",\n}: PageWrapProps) => {\n const hostname: KnownHostnames = window.location.hostname as KnownHostnames;\n const [viewType, setViewType] = useState<\n \"longOnly\" | \"longShort\" | \"portfolios\"\n >(\"longOnly\");\n\n const developementViewTypeForcing: \"longOnly\" | \"longShort\" | \"portfolios\" =\n \"portfolios\";\n\n useEffect(() => {\n switch (hostname) {\n // case \"longonly.trendrating.com\":\n // setViewType(\"longOnly\");\n\n // break;\n case \"longshort.trendrating.com\":\n case \"longshortd.trendrating.com\":\n setViewType(\"longShort\");\n\n break;\n\n case \"localhost\":\n setViewType(developementViewTypeForcing);\n\n break;\n\n case \"longonly.trendrating.com\":\n case \"develop.portfolios.trendrating.com\":\n case \"portfolios.trendrating.com\":\n default:\n setViewType(\"portfolios\");\n }\n }, [hostname]);\n\n return (\n \n
\n {headerChildren}\n
\n
{children}
\n
{footerChildren}
\n \n );\n};\n","import { Container } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { paths } from \"../types/Defaults\";\nimport { PageWrap } from \"./PageWrap\";\n\nexport const DisclaimerText = () => {\n return (\n
\n

\n Trendrating (and its content) is for INVESTMENT PROFESSIONAL USE\n ONLY and is not intended for the retail investment public.\n

\n

LIMITATION ON TRENDRATING LIABILITY

\n

\n To the extent not prohibited by law, each subscriber and\n potential subscriber agrees, prior to accessing or using\n Trendrating’s data or receiving information provided by\n Trendrating, to release and hold harmless Trendrating and its\n directors, officers, shareholders, employees, and agents from\n any and all liability in connection with accessing or using\n Trendrating’s data or receiving information provided by\n Trendrating. In all other cases, Trendrating’s liability to a\n subscriber, whether in contract, tort, negligence, or otherwise,\n shall be limited in the aggregate to direct and actual damages\n of the subscriber, not to exceed the fees received by\n Trendrating from the subscriber. Trendrating will not be liable\n for any consequential, incidental, punitive, special, exemplary,\n or indirect damages resulting directly or indirectly from the\n use of or reliance upon any material provided by Trendrating or\n derived from Trendrating’s data. Without limitation, Trendrating\n shall not be responsible or liable for any loss or damages\n related to, either directly or indirectly, (1) any decline in\n market value or loss of any investment; (2) a subscriber’s\n inability to use or any delay in accessing Trendrating data or\n any other source of material provided by Trendrating; (3) any\n absence of material on Trendrating data; (4) Trendrating’s\n failure to deliver or delay in delivering any material or (5)\n any kind of error in transmission of material. Trendrating and\n each subscriber acknowledge that, without limitation, the\n above-enumerated conditions cannot be the probable result of any\n breach of any agreement between Trendrating and the subscriber.\n

\n

DISCLAIMER OF WARRANTY

\n

\n ANY AND ALL INFORMATION PROVIDED BY TRENDRATINGOR DERIVED FROM\n TRENDRATING’S DATA IS PROVIDED “AS IS” AND TRENDRATING MAKES NO\n WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING, WITHOUT\n LIMITATION, ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A\n PARTICULAR PURPOSE.\n

\n

ACKNOWLEDGEMENT AND AGREEMENT

\n

\n Notwithstanding any other agreement or other communications\n between Trendrating and Subscriber to the contrary, receipt or\n use of any material provided by Trendrating, at any time and\n through any means, whether directly or indirectly, represents\n acknowledgement by such person of this disclaimer and agreement\n with its terms and conditions.\n

\n

BROKERS, INVESTMENT ADVICE & PORTFOLIO MANAGEMENT

\n

\n Trendrating is an Internet based subscription service (the\n “Service”) and is not affiliated with an investment advisor or\n Broker/Dealer. Neither Trendrating nor the Service is registered\n as an investment adviser with any federal or state regulatory\n agency, or in any other regulatory capacity. To the extent that\n any portion of the Service content would need to rely upon such\n an exemption, Trendrating would rely upon the “publisher’s\n exclusion” from the definition of “investment adviser” as\n provided under Section 202(a)(11) of the Investment Advisers Act\n of 1940 and corresponding state securities laws.\n

\n

\n The Service is limited to the dissemination of impersonal and\n objective investment-related information. The publication of the\n Service on the Internet or any Private Network should not be\n construed by any user and/or prospective user as Trendrating’s\n (i) solicitation to effect, or attempt to effect transactions in\n securities, or (ii) provision of any investment related advice\n or services tailored to any individual’s financial situation or\n investment objective(s).\n

\n

\n Users do not receive investment advisory, investment supervisory\n or investment management services, nor the initial or ongoing\n review or monitoring of the user’s individual investment\n portfolio or individual needs. Therefore, no user should assume\n that his/her/its use serves as a substitute for individual\n personalized advice from an investment professional of the\n user’s choosing. Rather, the Service is designed solely to\n provide impersonal information.\n

\n

\n The user maintains absolute discretion as to whether to follow\n any portion of the Service content. Trendrating does not offer\n or provide investment implementation services, nor does it offer\n or provide initial or ongoing individual personalized advice\n (neither in person nor via the Internet). It remains the user’s\n exclusive responsibility to review and evaluate the content and\n to determine whether to accept or reject any Service content.\n Trendrating expresses no opinion as to whether any of the\n Service content is appropriate for a user’s investment\n portfolio, strategy, financial situation, or investment\n objective(s).\n

\n

\n It is the user’s exclusive responsibility to determine if any\n portion of the information is suitable or appropriate for\n his/her financial situation and/or investment objectives, both\n initially and on an ongoing basis. No current or prospective\n user should assume that the future performance of any specific\n Service content will be suitable or profitable for a user’s\n portfolio, equal historical or anticipated performance level(s),\n or prove to be correct.\n

\n

\n Users do not receive investment advisory, investment supervisory\n or investment management services, nor the initial or ongoing\n review or monitoring of the user’s individual investment\n portfolio or individual needs. Therefore, no user should assume\n that any information contained on the Service serves as a\n substitute their own professional discretion.\n

\n

REPRESENTATIONS & WARRANTIES

\n

\n Trendrating makes no representations or warranties about the\n accuracy or completeness of the information contained on or\n derived from Trendrating’s data or otherwise provided by\n Trendrating. Our personnel (and affiliates) may own positions in\n and/or trade the securities mentioned in the information that we\n provide. We are not compensated in any way for publishing\n information about companies mentioned by the Service.\n

\n
\n );\n};\n\nexport const Disclaimer = () => {\n return (\n \n
\n \n

TRENDRATING DISCLOSURE AND DISCLAIMERS

\n
\n
\n
\n \n \n
\n \n Back to home\n \n
\n
\n
\n
\n );\n};\n","/**\n * @author Trendrating \n *\n * @module trendrating-widgets/form/Options\n * @summary Defines options for select widgets\n *\n */\n\nimport { AppEnvironment } from \"../../../types/Defaults\";\nimport { deepClone } from \"../../deepClone\";\n\n/*\n\n Interval definition\n ------------------------------------------------------------------------\n eq - equal to\n ge - greater than or equal to\n gt - greater than\n le - less than or equal to\n lt - less than\n\n */\n\nexport class FormOptions {\n environment: AppEnvironment;\n //user: window.App.user,\n\n constructor(environment: AppEnvironment) {\n this.environment = environment;\n }\n\n getField(field: any) {\n let options: any = [];\n //var user = this.user;\n switch (field) {\n // case \"ALERT\": {\n // options = [\n // /* { \"label\": \"Any\", \"value\": \"None\", \"labelShort\": \"Any\" },\n // { \"label\": \"Upgrades\", \"value\": null },\n // { \"label\": \"Today upgrades\", \"value\": \"1\", \"labelShort\": \"Today\" },\n // { \"label\": \"Last 5 days upgrades\", \"value\": \"5\", \"labelShort\": \"Last 5 days\" },\n // { \"label\": \"Last 20 days upgrades\", \"value\": \"20\", \"labelShort\": \"Last 20 days\" },\n // { \"label\": \"Last 60 days upgrades\", \"value\": \"60\", \"labelShort\": \"Last 60 days\" },\n // { \"label\": \"Downgrades\", \"value\": null },\n // { \"label\": \"Today downgrades\", \"value\": \"-1\", \"labelShort\": \"Today\" },\n // { \"label\": \"Last 5 days downgrades\", \"value\": \"-5\", \"labelShort\": \"Last 5 days\" },\n // { \"label\": \"Last 20 days downgrades\", \"value\": \"-20\", \"labelShort\": \"Last 20 days\" },\n // { \"label\": \"Last 60 days downgrades\", \"value\": \"-60\", \"labelShort\": \"Last 60 days\" } */\n // { \"label\": \"Any\", \"value\": \"None\", \"labelShort\": \"Any\" },\n // { \"label\": \"Upgrades\", \"value\": null },\n // { \"label\": \"Today upgrades\", \"value\": \"U_0\", \"labelShort\": \"Today\" },\n // { \"label\": \"Last 5 days upgrades\", \"value\": \"U_4\", \"labelShort\": \"Last 5 days\" },\n // { \"label\": \"Last 20 days upgrades\", \"value\": \"U_19\", \"labelShort\": \"Last 20 days\" },\n // { \"label\": \"Last 60 days upgrades\", \"value\": \"U_59\", \"labelShort\": \"Last 60 days\" },\n // { \"label\": \"Downgrades\", \"value\": null },\n // { \"label\": \"Today downgrades\", \"value\": \"D_0\", \"labelShort\": \"Today\" },\n // { \"label\": \"Last 5 days downgrades\", \"value\": \"D_4\", \"labelShort\": \"Last 5 days\" },\n // { \"label\": \"Last 20 days downgrades\", \"value\": \"D_19\", \"labelShort\": \"Last 20 days\" },\n // { \"label\": \"Last 60 days downgrades\", \"value\": \"D_59\", \"labelShort\": \"Last 60 days\" }\n // ];\n // break;\n // }\n // case \"ASSET_CLASS\": {\n // options = [\n // {\n // 'label': 'Any',\n // 'value': 'None'\n // },\n // {\n // 'label': 'Stocks',\n // 'value': 'Stock'\n // },\n // {\n // 'label': 'Sectors',\n // 'value': 'Sector'\n // },\n // {\n // 'label': 'ETFs',\n // 'value': 'ETF'\n // },\n // {\n // 'label': 'Indices',\n // 'value': 'Index'\n // },\n // {\n // 'label': 'Currencies',\n // 'value': 'Currency'\n // },\n // {\n // 'label': 'Commodities',\n // 'value': 'Commodity'\n // }\n // ];\n // break;\n // }\n // case \"HIGH_LOW\": {\n // options = [\n // { \"label\": \"Any\", \"value\": \"None\", \"labelShort\": \"Any\" },\n // { \"label\": \"New high\", \"value\": null },\n // { \"label\": \"1 month new high\", \"value\": \"20\", \"labelShort\": \"1 month\" },\n // { \"label\": \"3 months new high\", \"value\": \"60\", \"labelShort\": \"3 months\" },\n // { \"label\": \"6 months new high\", \"value\": \"120\", \"labelShort\": \"6 months\" },\n // { \"label\": \"12 months new high\", \"value\": \"260\", \"labelShort\": \"12 months\" },\n // { \"label\": \"New low\", \"value\": null },\n // { \"label\": \"1 month new low\", \"value\": \"-20\", \"labelShort\": \"1 month\" },\n // { \"label\": \"3 months new low\", \"value\": \"-60\", \"labelShort\": \"3 months\" },\n // { \"label\": \"6 months new low\", \"value\": \"-120\", \"labelShort\": \"6 months\" },\n // { \"label\": \"12 months new low\", \"value\": \"-260\", \"labelShort\": \"12 months\" }\n // ];\n // break;\n // }\n // case \"NOTIFICATION\": {\n // options = [\n // { \"label\": \"Any\", \"value\": \"None\", \"labelShort\": \"Any\" },\n // { \"label\": \"Change in duration\", \"value\": null },\n // { \"label\": \"Today change in duration\", \"value\": \"T_0_0\", \"labelShort\": \"Today\" },\n // { \"label\": \"Last week change in duration\", \"value\": \"T_0_4\", \"labelShort\": \"Last week\" },\n // { \"label\": \"Change in magnitude\", \"value\": null },\n // { \"label\": \"Today change in magnitude\", \"value\": \"P_0_0\", \"labelShort\": \"Today\" },\n // { \"label\": \"Last week change in magnitude\", \"value\": \"P_0_4\", \"labelShort\": \"Last week\" },\n // { \"label\": \"Change in UPI\", \"value\": null },\n // { \"label\": \"Today change in UPI\", \"value\": \"U_0_0\", \"labelShort\": \"Today\" },\n // { \"label\": \"Last week change in UPI\", \"value\": \"U_0_4\", \"labelShort\": \"Last week\" }\n // ];\n // break;\n // }\n case \"MARKET_CAP\": {\n options = [\n // new ??? [2019-09-26]\n {\n ge: 50,\n le: 300,\n checked: false,\n innerHTML: \"Micro\",\n label: \"Micro Cap\",\n node: null,\n title: \"Micro Cap ($50M - $300M)\",\n },\n {\n ge: 300,\n le: 2000,\n checked: false,\n innerHTML: \"Small\",\n label: \"Small Cap\",\n node: null,\n title: \"Small Cap ($300M - $2B)\",\n },\n {\n ge: 2000,\n le: 10000,\n checked: false,\n innerHTML: \"Mid\",\n label: \"Mid Cap\",\n node: null,\n title: \"Mid Cap ($2B - $10B)\",\n },\n {\n ge: 10000,\n le: 200000,\n checked: false,\n innerHTML: \"Large\",\n label: \"Large Cap\",\n node: null,\n title: \"Large Cap ($10B - $200B)\",\n },\n {\n ge: 200000,\n le: null,\n checked: false,\n innerHTML: \"Mega\",\n label: \"Mega Cap\",\n node: null,\n title: \"Mega Cap (over $200B)\",\n },\n // legacy\n /* {\n ge: 50000000,\n le: 300000000,\n checked: false,\n innerHTML: \"Micro\",\n label: \"Micro Cap\",\n node: null,\n title: \"Micro Cap ($50M - $300M)\"\n },\n {\n ge: 300000000,\n le: 2000000000,\n checked: false,\n innerHTML: \"Small\",\n label: \"Small Cap\",\n node: null,\n title: \"Small Cap ($300M - $2B)\"\n },\n {\n ge: 2000000000,\n le: 10000000000,\n checked: false,\n innerHTML: \"Mid\",\n label: \"Mid Cap\",\n node: null,\n title: \"Mid Cap ($2B - $10B)\"\n },\n {\n ge: 10000000000,\n le: 200000000000,\n checked: false,\n innerHTML: \"Large\",\n label: \"Large Cap\",\n node: null,\n title: \"Large Cap ($10B - $200B)\"\n },\n {\n ge: 200000000000,\n le: null,\n checked: false,\n innerHTML: \"Mega\",\n label: \"Mega Cap\",\n node: null,\n title: \"Mega Cap (over $200B)\"\n } */\n ];\n\n break;\n }\n case \"SIZE\": {\n // which level of nodes will be displayed and the rendering order\n var LEVEL_TO_DISPLAY = \"3 Level\";\n var LEVEL_TO_DISPLAY_ITEM_ORDER = [\n \"micro\",\n \"small\",\n \"mid\",\n \"large\",\n ];\n var LEVEL_TO_DISPLAY_ITEM_TITLE: any = {\n micro: \"Micro Cap ($50M - $300M)\",\n small: \"Small Cap ($300M - $2B)\",\n mid: \"Mid Cap ($2B - $10B)\",\n large: \"Large Cap (over $10B)\",\n };\n\n var _options = [];\n var datum = null;\n var taxonomy = this.environment.taxonomies.SizeClassification;\n for (var key in taxonomy) {\n datum = taxonomy[key];\n _options.push({\n label: datum[\"name\"],\n type: datum[\"type\"],\n value: key,\n });\n }\n\n var optionsMapAtLevel: any = {};\n for (var i = 0, length = _options.length; i < length; i++) {\n datum = _options[i];\n if (datum[\"type\"] === LEVEL_TO_DISPLAY) {\n optionsMapAtLevel[datum[\"value\"]] = datum;\n }\n }\n\n options = [];\n var optionsOrder = LEVEL_TO_DISPLAY_ITEM_ORDER;\n for (let i = 0; i < optionsOrder.length; i++) {\n datum = optionsMapAtLevel[optionsOrder[i]];\n options.push({\n label: datum[\"label\"],\n title: LEVEL_TO_DISPLAY_ITEM_TITLE[datum[\"value\"]],\n value: datum[\"value\"],\n });\n }\n\n break;\n }\n // case \"DURATION\":\n // case \"MAGNITUDE\":\n // case \"PERCENTAGE\":\n // case \"UPI\": {\n // options = [\n // { \"left\": .01, \"right\": .25, \"checked\": false, \"innerHTML\": \"25%\", \"label\": \"25%\", \"node\": null, \"title\": \"0% - 25%\" },\n // { \"left\": .25, \"right\": .50, \"checked\": false, \"innerHTML\": \"50%\", \"label\": \"50%\", \"node\": null, \"title\": \"25% - 50%\" },\n // { \"left\": .50, \"right\": .75, \"checked\": false, \"innerHTML\": \"75%\", \"label\": \"75%\", \"node\": null, \"title\": \"50% - 75%\" },\n // { \"left\": .75, \"right\": null, \"checked\": false, \"innerHTML\": \"> 75%\", \"label\": \"> 75%\", \"node\": null, \"title\": \"greater than 75%\" }\n // ];\n // break;\n // }\n // case \"SECTOR\": {\n // options = [\n // {\n // \"label\": \"Any\",\n // \"selected\": false,\n // \"value\": \"0 root\"\n // },\n // {\n // \"label\": user.product.industryClass == \"INDUSTRIES\"\n // ? \"Industries\"\n // : \"Sectors\",\n // \"selected\": true,\n // \"value\": \"1 Industry\"\n // },\n // {\n // \"label\": user.product.industryClass == \"INDUSTRIES\"\n // ? \"Sectors\"\n // : \"Industries\",\n // \"selected\": false,\n // \"value\": \"3 Sector\"\n // }\n // ];\n // break;\n // }\n // case \"SECTOR_LITE\": {\n // options = [\n // {\n // \"label\": user.product.industryClass == \"INDUSTRIES\"\n // ? \"Industries\"\n // : \"Sectors\",\n // \"selected\": true,\n // \"value\": \"1 Industry\"\n // },\n // {\n // \"label\": user.product.industryClass == \"INDUSTRIES\"\n // ? \"Sectors\"\n // : \"Industries\",\n // \"selected\": false,\n // \"value\": \"3 Sector\"\n // }\n // ];\n // break;\n // }\n case \"VOLATILITY\": {\n options = [\n {\n ge: null,\n le: 0.1,\n checked: false,\n innerHTML: \"Low\",\n label: \"Low volatility (under 10%)\",\n node: null,\n title: \"Low volatility (under 10%)\",\n },\n {\n ge: 0.1,\n le: 0.5,\n checked: false,\n innerHTML: \"Mid\",\n label: \"Medium volatility (10% - 50%)\",\n node: null,\n title: \"Medium volatility (10% - 50%)\",\n },\n {\n ge: 0.5,\n le: null,\n checked: false,\n innerHTML: \"High\",\n label: \"High volatility (over 50%)\",\n node: null,\n title: \"High volatility (over 50%)\",\n },\n ];\n\n break;\n }\n }\n return deepClone(options);\n }\n\n /**\n * Get the option that matches the value\n *\n * @param {String} field - One of ALERT, HIGH_LOW, NOTIFICATION, MARKET_CAP, DURATION, MAGNITUDE, PERCENTAGE, UPI\n * @param {Object} value - the value of the option to get\n */\n getOption(field: any, value: any) {\n var options = this.getField(field);\n switch (field) {\n // case \"ALERT\":\n // case \"HIGH_LOW\":\n // case \"NOTIFICATION\": {\n // for (var i = 0, length = options.length; i < length; i++) {\n // if (options[i].value === value.max) {\n // return options[i];\n // }\n // }\n // break;\n // }\n case \"MARKET_CAP\": {\n // used to print security info\n if (isFinite(value)) {\n if (value >= options[0].ge && value < options[0].le) {\n return options[0];\n } else if (\n value >= options[1].ge &&\n value < options[1].le\n ) {\n return options[1];\n } else if (\n value >= options[2].ge &&\n value < options[2].le\n ) {\n return options[2];\n } else if (\n value >= options[3].ge &&\n value < options[3].le\n ) {\n return options[3];\n } else if (value >= options[4].ge) {\n return options[4];\n }\n }\n // used in widgets to select marketcap range\n // 2019-09-28 - START\n var ge = null;\n var le = null;\n if (value[\"ge\"] !== undefined && value[\"le\"] !== undefined) {\n for (var i = 0, length = options.length; i < length; i++) {\n if (value.ge === options[i].ge) {\n ge = options[i];\n }\n\n if (value.le === options[i].le) {\n le = options[i];\n }\n }\n }\n\n if (le != null && ge != null) {\n return {\n ge: ge.label,\n le: le.label,\n raw_value: {\n ge: ge,\n le: le,\n },\n };\n } else {\n return {\n ge: value[\"ge\"],\n le: value[\"le\"],\n raw_value: {\n ge: ge,\n le: le,\n },\n };\n }\n\n // 2019-09-28 - END\n\n /* if (\n value[\"ge\"] !== undefined &&\n value[\"le\"] !== undefined\n ) {\n var ge = null;\n var le = null;\n for (\n var i = 0, length = options.length;\n i < length;\n i++\n ) {\n if (value.ge == options[i].ge) {\n ge = options[i];\n }\n\n if (value.le == options[i].le) {\n le = options[i];\n }\n }\n\n // custom marketcap range\n if (le && ge) {\n return {\n ge: ge.label,\n le: le.label,\n raw_value: {\n ge: ge,\n le: le\n }\n };\n }\n\n var formatOptions = {\n notAvailable: {\n input: null,\n output: \"\"\n }\n };\n\n return {\n ge: format.value(\n \"PDF\",\n \"numberBig\",\n value.ge - 0.0001, // correction (is custom or not)\n formatOptions\n ),\n le: format.value(\n \"PDF\",\n \"numberBig\",\n value.le - 0.0001, // correction (is custom or not)\n formatOptions\n ),\n raw_value: {\n ge: format.value(\n \"PDF\",\n \"numberBig\",\n value.ge - 0.0001, // correction (is custom or not)\n formatOptions\n ),\n le: format.value(\n \"PDF\",\n \"numberBig\",\n value.le - 0.0001, // correction (is custom or not)\n formatOptions\n )\n }\n };\n } */\n }\n // case \"DURATION\":\n // case \"MAGNITUDE\":\n // case \"PERCENTAGE\":\n // case \"UPI\": {\n // var option = {\n // \"max\": null,\n // \"min\": null\n // };\n // for (var i = 0, length = options.length; i < length; i++) {\n // if (value.min == options[i].ge) {\n // option.min = options[i];\n // }\n // if (value.max == options[i].le) {\n // option.max = options[i];\n // }\n // }\n // return option;\n // break;\n // }\n case \"VOLATILITY\": {\n var startIndex = null;\n var endIndex = null;\n if (value.ge || value.le) {\n for (let i = 0; i < options.length; i++) {\n if (value.ge && value.ge === options[i].ge) {\n startIndex = i;\n }\n if (value.ge == null) {\n startIndex = 0;\n }\n if (value.le && value.le === options[i].le) {\n endIndex = i;\n }\n if (value.le == null) {\n endIndex = length - 1;\n }\n }\n }\n\n var option = {\n ge:\n startIndex != null\n ? options[startIndex][\"label\"]\n : null,\n le: endIndex != null ? options[endIndex][\"label\"] : null,\n raw_value: {\n ge: startIndex != null ? options[startIndex] : value.ge,\n le: endIndex != null ? options[endIndex] : value.le,\n },\n };\n\n return option;\n }\n }\n\n return \"None\";\n }\n}\n","/**\n * @author Trendrating \n *\n * @module app/formatter/RankingSelection\n * @summary Format ranking and selection rules\n *\n */\n\nimport { Properties } from \"../../api/Properties\";\nimport { FormOptions } from \"./FormOptions\";\n\nexport class RankingSelection /* extends \"trendrating-widgets/FormatRankingSelection\" */ {\n formatType: any = null;\n label: any = null;\n\n options: any = null;\n // must be unified and have the same structure of selection\n optionsRanking: any = null;\n properties: any = null;\n\n constructor({ environment, formatType }: any) {\n this.options = new FormOptions(environment);\n\n var configurationBuilder = environment[\"configuration\"].get(\n \"strategyBuilder\"\n );\n this.optionsRanking = this._prepareOptionsRanking(\n configurationBuilder[\"ranking\"][\"edit\"][\"options\"]\n );\n\n if (formatType != null) {\n this.formatType = formatType;\n } else {\n this.formatType = \"HTML\";\n }\n\n this.properties = environment.properties;\n this.label = new Properties({\n properties: this.properties,\n });\n }\n\n function(property: string, functionName: string, functionParams: any) {\n var formatted = \"\";\n\n switch (functionName) {\n case \"outlier\": {\n formatted = \"Outlier\";\n\n break;\n }\n case \"quantile\": {\n switch (functionParams[\"value\"]) {\n case 4: {\n formatted = \"Quartile\";\n break;\n }\n case 5: {\n formatted = \"Quintile\";\n break;\n }\n case 10: {\n formatted = \"Decile\";\n break;\n }\n default: {\n formatted = `Quantile (${functionParams[\"value\"]})`;\n }\n }\n\n break;\n }\n case \"threshold\": {\n formatted = \"Threshold\";\n\n break;\n }\n case \"value\": {\n //formatted = \"Value\";\n formatted = \"\";\n\n break;\n }\n default: {\n formatted = \"#UNKNOWN\";\n }\n }\n\n return formatted;\n }\n\n operator(\n property: string,\n functionName: string,\n operatorName: string,\n operatorParams: any\n ) {\n var formatted = \"\";\n var _formatted = null; // for intermediate manipulation\n var options = this.options;\n\n switch (operatorName) {\n case \"bottom\": /* case \"bottomPercentage\": */ {\n // _formatted = operatorParams[\"value\"];\n // formatted =\n // _formatted > 0\n // ? [\n // \"Bottom\",\n // _formatted\n // ].join(\" \")\n // : \"Bottom\";\n\n formatted = this._formatBottomTop(\n operatorParams[\"value\"],\n \"Bottom\"\n );\n\n break;\n }\n // case \"bottomPercentage\": {\n // _formatted = operatorParams[\"value\"];\n // formatted =\n // _formatted > 0\n // ? [\n // \"Bottom\",\n // _formatted + \"%\"\n // ].join(\" \")\n // : \"Bottom\";\n\n // break;\n // }\n case \"equalTo\": {\n _formatted = operatorParams[\"value\"];\n formatted = [\"Is equal to\", _formatted].join(\" \");\n\n break;\n }\n case \"equalToPercentage\": {\n _formatted = operatorParams[\"value\"];\n formatted = [\"Is equal to\", _formatted + \"%\"].join(\" \");\n\n break;\n }\n case \"equalToRate\": {\n _formatted = [];\n\n if (operatorParams[\"value\"][\"A\"] === true) {\n switch (this.formatType) {\n case \"HTML\": {\n _formatted.push(\n 'A'\n );\n break;\n }\n default: {\n _formatted.push(\"A\");\n break;\n }\n }\n }\n\n if (operatorParams[\"value\"][\"B\"] === true) {\n switch (this.formatType) {\n case \"HTML\": {\n _formatted.push(\n 'B'\n );\n break;\n }\n default: {\n _formatted.push(\"B\");\n break;\n }\n }\n }\n\n if (operatorParams[\"value\"][\"C\"] === true) {\n switch (this.formatType) {\n case \"HTML\": {\n _formatted.push(\n 'C'\n );\n break;\n }\n default: {\n _formatted.push(\"C\");\n break;\n }\n }\n }\n\n if (operatorParams[\"value\"][\"D\"] === true) {\n switch (this.formatType) {\n case \"HTML\": {\n _formatted.push(\n 'D'\n );\n break;\n }\n default: {\n _formatted.push(\"D\");\n break;\n }\n }\n }\n\n if (_formatted.length === 0) {\n _formatted.push(\"Any\");\n }\n\n formatted = _formatted.join(\", \");\n\n break;\n }\n case \"greaterThan\":\n case \"greaterThanOrEqualTo\":\n case \"lessThan\":\n case \"lessThanOrEqualTo\":\n case \"range\": {\n formatted = this._formatRange(operatorParams[\"value\"]);\n\n break;\n }\n case \"greaterThanPercentage\":\n case \"greaterThanOrEqualToPercentage\":\n case \"lessThanPercentage\":\n case \"lessThanOrEqualToPercentage\":\n case \"rangePercentage\": {\n formatted = this._formatRangePercentage(\n operatorParams[\"value\"]\n );\n\n break;\n }\n case \"rangeMarketCap\": {\n _formatted = options.getOption(\n \"MARKET_CAP\",\n operatorParams[\"value\"][0]\n );\n\n if (\n _formatted[\"raw_value\"][\"ge\"] == null &&\n _formatted[\"raw_value\"][\"le\"] == null\n ) {\n formatted =\n _formatted[\"ge\"] === _formatted[\"le\"]\n ? _formatted[\"ge\"]\n : _formatted[\"le\"] == null\n ? _formatted[\"ge\"]\n : [\n \"Between\",\n _formatted[\"ge\"],\n \"and\",\n _formatted[\"le\"],\n ].join(\" \");\n } else {\n formatted =\n _formatted[\"ge\"] === _formatted[\"le\"]\n ? _formatted[\"ge\"]\n : _formatted[\"le\"] == null\n ? _formatted[\"ge\"]\n : [_formatted[\"ge\"], \"-\", _formatted[\"le\"]].join(\n \" \"\n );\n }\n\n break;\n }\n case \"rangeVolatility\": {\n _formatted = options.getOption(\n \"VOLATILITY\",\n operatorParams[\"value\"][0]\n );\n\n formatted =\n _formatted[\"ge\"] === _formatted[\"le\"]\n ? _formatted[\"ge\"]\n : _formatted[\"le\"] == null\n ? _formatted[\"ge\"]\n : [_formatted[\"ge\"], \"-\", _formatted[\"le\"]].join(\" \");\n\n break;\n }\n case \"sortByExists\":\n case \"sortByNumeric\":\n case \"sortByOutlier\":\n case \"sortByQuantile\":\n case \"sortByPerformance\":\n case \"sortByRating\":\n case \"sortByRetracement\":\n case \"sortByString\":\n case \"sortByThreshold\": {\n _formatted =\n this.optionsRanking[property][\"functions\"][functionName];\n _formatted = _formatted[\"operators\"][operatorName];\n formatted = _formatted[operatorParams[\"value\"]][\"label\"];\n\n break;\n }\n case \"top\": /* case \"topPercentage\": */ {\n // _formatted = operatorParams[\"value\"];\n // formatted =\n // _formatted > 0\n // ? [\n // \"Top\",\n // _formatted\n // ].join(\" \")\n // : \"Top\";\n\n formatted = this._formatBottomTop(\n operatorParams[\"value\"],\n \"Top\"\n );\n\n break;\n }\n // case \"topPercentage\": {\n // _formatted = operatorParams[\"value\"];\n // formatted =\n // _formatted > 0\n // ? [\n // \"Top\",\n // _formatted + \"%\"\n // ].join(\" \")\n // : \"Top\";\n\n // break;\n // }\n default: {\n formatted = `#UNKNOWN - ${operatorName}`;\n }\n }\n\n return formatted;\n }\n\n property(property: string, propertyLabel: any, labelIndex: number) {\n labelIndex =\n labelIndex === undefined || labelIndex == null ? 0 : labelIndex;\n\n if (propertyLabel === undefined || propertyLabel == null) {\n var label = this.label;\n return label.get(property, labelIndex);\n }\n\n return propertyLabel[property];\n }\n // ----------------------------------------------------- private methods\n //\n _formatBottomTop(value: string, label: string) {\n return `${label} ${value}`;\n }\n\n _formatRange(value: any[]) {\n var _formatted = value[0];\n var formatted = [];\n if (value.length > 1) {\n formatted.push(\"Between:\");\n }\n var keyCounter = 0;\n var start = null;\n var end = null;\n\n for (var key in _formatted) {\n switch (key) {\n case \"ge\":\n case \"gt\": {\n start = _formatted[key];\n\n break;\n }\n case \"le\":\n case \"lt\": {\n end = _formatted[key];\n\n break;\n }\n }\n keyCounter++;\n }\n\n if (keyCounter === 1) {\n if (\"ge\" in _formatted) {\n // is greater than or equal to\n formatted.push(\"Is greater than or equal to\", start);\n } else if (\"gt\" in _formatted) {\n // is greater than\n formatted.push(\"Is greater than\", start);\n } else if (\"le\" in _formatted) {\n // is less than or equal to\n formatted.push(\"Is less than or equal to\", end);\n } else if (\"lt\" in _formatted) {\n // is less than\n formatted.push(\"Is less than\", end);\n }\n } else {\n // range\n formatted = [\n \"Between\",\n start,\n \"and\",\n end,\n ];\n }\n\n if (value.length > 1) {\n formatted.push(\"...\");\n }\n\n return formatted.join(\" \");\n }\n\n _formatRangePercentage(value: any[]) {\n var _formatted = value[0];\n var formatted: any[] = [];\n var keyCounter = 0;\n var start = null;\n var end = null;\n\n for (var key in _formatted) {\n switch (key) {\n case \"ge\":\n case \"gt\": {\n start = _formatted[key] * 100;\n\n break;\n }\n case \"le\":\n case \"lt\": {\n end = _formatted[key] * 100;\n\n break;\n }\n }\n keyCounter++;\n }\n\n if (keyCounter === 1) {\n if (\"ge\" in _formatted) {\n // is greater than or equal to\n formatted = [\"Is greater than or equal to\", start + \"%\"];\n } else if (\"gt\" in _formatted) {\n // is greater than\n formatted = [\"Is greater than\", start + \"%\"];\n } else if (\"le\" in _formatted) {\n // is less than or equal to\n formatted = [\"Is less than or equal to\", end + \"%\"];\n } else if (\"lt\" in _formatted) {\n // is less than\n formatted = [\"Is less than\", end + \"%\"];\n }\n } else {\n // range\n formatted = [\n \"Between\",\n start + \"%\",\n \"and\",\n end + \"%\",\n value.length > 1 ? \"...\" : \"\",\n ];\n }\n\n return formatted.join(\" \");\n }\n\n // create an inverted map that is accessible using\n // raw values (e.g. rc, quantile, desc)\n _prepareOptionsRanking(options: any) {\n var itemFunction = null;\n var itemOperator = null;\n var keyFunction = null;\n var option = null;\n var optionsMap: any = {};\n var property = null;\n\n for (var i = 0, lengthI = options.length; i < lengthI; i++) {\n option = options[i];\n\n property = option[\"property\"][\"value\"];\n\n optionsMap[property] = {\n functions: {},\n };\n\n // functions and operators (sortBy) have the same length\n // and there is a one-to-one relation among items\n for (\n var j = 0, lengthJ = option[\"functions\"].length;\n j < lengthJ;\n j++\n ) {\n itemFunction = option[\"functions\"][j];\n // [0] because every function has only 1 operator\n itemOperator = option[\"operators\"][j][0];\n\n keyFunction = itemFunction[\"value\"];\n optionsMap[property][\"functions\"][keyFunction] = {\n label: itemFunction[\"label\"],\n operators: {},\n };\n\n optionsMap[property][\"functions\"][keyFunction][\"operators\"][\n itemOperator[\"value\"]\n ] = {};\n\n const key =\n optionsMap[property][\"functions\"][keyFunction][\"operators\"][\n itemOperator[\"value\"]\n ];\n for (\n var k = 0,\n lengthK = itemOperator[\"widget\"][\"options\"].length;\n k < lengthK;\n k++\n ) {\n key[itemOperator[\"widget\"][\"options\"][k][\"value\"]] = {\n label: itemOperator[\"widget\"][\"options\"][k][\"label\"],\n };\n }\n }\n }\n\n return optionsMap;\n }\n}\n","/**\n * @author Trendrating \n *\n * @module app/formatter/Strategy\n * @summary Format strategy parameters\n *\n */\n\nimport { AppEnvironment } from \"../../../types/Defaults\";\nimport { RankingSelection } from \"./RankingSelection\";\n\nexport class Strategy {\n environment: AppEnvironment;\n formatRankingSelection: any = null;\n formatType = \"HTML\";\n optionsRanking: any = null;\n optionsSelection: any = null;\n optionsSmartBeta: any = null;\n properties = null;\n taxonomyStock: Map;\n // taxonomyWhatEtf = null;\n // taxonomyWhatStock = null;\n // taxonomyWhere = null;\n // _options = null;\n // /**\n // * @param {object} params - parameters\n // */\n constructor(environment: AppEnvironment) {\n this.environment = environment;\n // if (params === undefined || params == null) {\n // throw new Error(\"Missing parameters\");\n // }\n // // formatType\n // if (\"formatType\" in params && params[\"formatType\"] != null) {\n // this.formatType = params[\"formatType\"];\n // }\n // // ranking\n var configurationBuilder =\n environment.configuration.get(\"strategyBuilder\");\n this.optionsRanking = configurationBuilder.ranking.edit.options;\n\n this.optionsSelection = configurationBuilder.selection.edit.options;\n\n // smart beta\n const optionsSmartBeta =\n configurationBuilder.formAdvanced.widgets.smartBeta.options;\n this.optionsSmartBeta = {};\n var item = null;\n for (var i = 0, length = optionsSmartBeta.length; i < length; i++) {\n item = optionsSmartBeta[i];\n this.optionsSmartBeta[item[\"property\"][\"value\"]] = item;\n }\n // // properties\n this.properties = environment.properties;\n this.formatRankingSelection = new RankingSelection({\n environment: environment,\n formatType: this.formatType,\n });\n // if (\n // !(\"taxonomies\" in params) ||\n // params[\"taxonomies\"] === undefined ||\n // params[\"taxonomies\"] == null\n // ) {\n // throw new Error(\"Missing taxonomies\");\n // }\n\n const stockClassification =\n environment.taxonomies.StockClassification.map((item: any) => {\n return [String(item.id), item];\n });\n\n this.taxonomyStock = new Map(stockClassification);\n\n // if (\n // !(\"taxonomyWhatEtf\" in params[\"taxonomies\"]) ||\n // params[\"taxonomies\"][\"taxonomyWhatEtf\"] === undefined ||\n // params[\"taxonomies\"][\"taxonomyWhatEtf\"] == null\n // ) {\n // throw new Error(\"Missing taxonomyWhatEtf\");\n // }\n // this.taxonomyWhatEtf = new Store({\n // data: params[\"taxonomies\"][\"taxonomyWhatEtf\"],\n // });\n // if (\n // !(\"taxonomyWhatStock\" in params[\"taxonomies\"]) ||\n // params[\"taxonomies\"][\"taxonomyWhatStock\"] === undefined ||\n // params[\"taxonomies\"][\"taxonomyWhatStock\"] == null\n // ) {\n // throw new Error(\"Missing taxonomyWhatStock\");\n // }\n // this.taxonomyWhatStock = new Store({\n // data: params[\"taxonomies\"][\"taxonomyWhatStock\"],\n // });\n // if (\n // !(\"taxonomyWhere\" in params[\"taxonomies\"]) ||\n // params[\"taxonomies\"][\"taxonomyWhere\"] === undefined ||\n // params[\"taxonomies\"][\"taxonomyWhere\"] == null\n // ) {\n // throw new Error(\"Missing taxonomyWhere\");\n // }\n // this.taxonomyWhere = new Store({\n // data: params[\"taxonomies\"][\"taxonomyWhere\"],\n // });\n // this._options = new Options();\n }\n\n // cappingPeer(value) {\n // var formatType = this.formatType;\n // var formatOptions = {\n // isPercentage: true,\n // notAvailable: {\n // input: null,\n // output: \"\",\n // },\n // };\n // var weightCapping = format.custom(\"number\", {\n // options: formatOptions,\n // output: formatType,\n // value: value[\"weightCappedMax\"],\n // valueHelper: null,\n // });\n // var peerLevel =\n // value[\"peerLevel\"] != null\n // ? this._options.getWeightCappingPeerLevel(\n // \"LABEL_LOOKUP\",\n // value[\"peerLevel\"]\n // )\n // : i18n[\"common_not_set\"];\n // var formatted = {\n // label: [\n // this.strong(peerLevel),\n // i18n[\"page_builder_field_weight_capping_peer_label\"],\n // ].join(\" \"),\n // value: this.strong(weightCapping),\n // };\n // return formatted;\n // }\n // cappingSecurity(value) {\n // var formatType = this.formatType;\n // var options = {\n // isPercentage: true,\n // notAvailable: {\n // input: null,\n // output: \"\",\n // },\n // };\n // var formatted = [\n // i18n[\"common_interval_min\"],\n // this.strong(\n // format.custom(\"number\", {\n // options: options,\n // output: formatType,\n // value: value[\"weightCappedMin\"],\n // valueHelper: null,\n // })\n // ),\n // i18n[\"common_interval_max\"],\n // this.strong(\n // format.custom(\"number\", {\n // options: options,\n // output: formatType,\n // value: value[\"weightCappedMax\"],\n // valueHelper: null,\n // })\n // ),\n // ].join(\" \");\n // return formatted;\n // }\n // cash(value) {\n // var formatted = i18n[\"common_unknown\"];\n // var formatType = this.formatType;\n // var options = {\n // isPercentage: true,\n // notAvailable: {\n // input: null,\n // output: \"\",\n // },\n // };\n // switch (value) {\n // case 0: {\n // formatted = i18n[\"page_builder_field_cash_label_flex\"];\n // break;\n // }\n // case 1: {\n // formatted = i18n[\"page_builder_field_cash_label_full\"];\n // break;\n // }\n // default: {\n // formatted = [\n // i18n[\"common_interval_min\"],\n // format.custom(\"number\", {\n // options: options,\n // output: formatType,\n // value: value,\n // valueHelper: null,\n // }),\n // ].join(\" \");\n // }\n // }\n // return this.strong(formatted);\n // }\n // currency(value) {\n // var formatted = i18n[\"common_unknown\"];\n // switch (value) {\n // case \"local\": {\n // formatted = i18n[\"common_currency_local\"];\n // break;\n // }\n // default: {\n // formatted = value;\n // }\n // }\n // return this.strong(formatted);\n // }\n // eligibility(value) {\n // var sortBy = this._options.getEligibility(\n // \"LABEL_LOOKUP\",\n // value[\"sortBy\"]\n // );\n // var formatted = [\n // this.strong(value[\"cardinality\"]),\n // i18n[\"common_instruments\"].toLowerCase(),\n // i18n[\"common_ordered_by\"],\n // this.strong(sortBy),\n // ].join(\" \");\n // return formatted;\n // }\n // /**\n // * Get general type from all classification codes\n // *\n // * @param {array} value - an array of ICB or ETFs classification codes\n // *\n // * @returns {string} returns a value indicating the composition of the array\n // * Valid values: STOCK, MIXED, ETF or null if empty\n // */\n // getTypeFromCodes(value) {\n // var type = null;\n // var taxonomyWhatStock = this.taxonomyWhatStock;\n // var taxonomyWhatEtf = this.taxonomyWhatEtf;\n // var id;\n // for (var i = 0, length = value.length; i < length; i++) {\n // id = value[i];\n // if (taxonomyWhatStock.get(id)) {\n // if (type == null || type == \"STOCK\") {\n // type = \"STOCK\";\n // } else {\n // return \"MIXED\";\n // }\n // } else if (taxonomyWhatEtf.get(id)) {\n // if (type == null || type == \"ETF\") {\n // type = \"ETF\";\n // } else {\n // return \"MIXED\";\n // }\n // } else {\n // return \"MIXED\";\n // }\n // }\n // return type;\n // }\n // hedgingStrategy(value) {\n // var formatted = i18n[\"common_unknown\"];\n // switch (value[\"hedgingStrategy\"]) {\n // case \"HEDGING_ADVANCED\": {\n // formatted = i18n[\"page_builder_field_hedging_advanced_label\"];\n // break;\n // }\n // case \"HEDGING_FULL\": {\n // formatted = i18n[\"page_builder_field_hedging_full_label\"];\n // break;\n // }\n // case \"HEDGING_SMART\": {\n // formatted = i18n[\"page_builder_field_hedging_smart_label\"];\n // break;\n // }\n // }\n // return this.strong(formatted);\n // }\n // holdings(value) {\n // return this.strong(value);\n // }\n // inceptionDate(value) {\n // return this.strong(value);\n // }\n // inceptionValue(value) {\n // return this.strong(value);\n // }\n // instrument(value) {\n // return this.strong(value);\n // }\n // /**\n // * Format instrument type\n // *\n // * @param {object} value - the value to be formatted\n // * @param {boolean} value.domestic - true if instruments are domestic\n // * @param {boolean} value.foreign - true if instruments are foreign\n // * @param {string} value.instrumentType - 'etf' or 'stock'\n // * @param {array} value.instrumentTypeSub - stock classification\n // *\n // * @returns {string} the formatted instrument type\n // */\n instrumentType(value: any) {\n var formatted = [];\n if (value[\"domestic\"] === true && value[\"foreign\"] === false) {\n formatted.push(this.strong(\"Domestic\"));\n }\n if (value[\"domestic\"] === false && value[\"foreign\"] === true) {\n formatted.push(this.strong(\"Foreign\"));\n }\n switch (value[\"instrumentType\"]) {\n case \"etf\": {\n formatted.push(\n this.strong(\n formatted.length === 1 ? \"ETFs\".toLowerCase() : \"ETFs\"\n )\n );\n break;\n }\n case \"stock\": {\n formatted.push(\n this.strong(\n formatted.length === 1\n ? \"Stocks\".toLowerCase()\n : \"Stocks\"\n )\n );\n break;\n }\n default: {\n formatted.push(this.strong(\"#UNKNOWN\"));\n }\n }\n var length = value[\"instrumentTypeSub\"].length;\n if (length > 0) {\n let subTypes = [];\n for (let i = 0; i < length; i++) {\n const item: any = this.taxonomyStock.get(\n value[\"instrumentTypeSub\"][i]\n );\n subTypes.push(this.strong(item.name));\n }\n formatted.push([\"(\", subTypes.join(\", \"), \")\"].join(\"\"));\n }\n return formatted.join(\" \");\n }\n // leverage(value) {\n // return this.strong(value);\n // }\n // /**\n // * Format performance (price / total return)\n // *\n // * @param {string} value - one of 'NONE' or 'REBALANCE'\n // *\n // * @returns {string} the formatted rebalance frequency\n // */\n // performance(value) {\n // var formatted = \"\";\n // switch (value) {\n // case \"NONE\": {\n // formatted = i18n[\"page_builder_field_performance_label_price\"];\n // break;\n // }\n // case \"REBALANCE\": {\n // formatted =\n // i18n[\"page_builder_field_performance_label_total_return\"];\n // break;\n // }\n // default: {\n // formatted = i18n[\"common_unknown\"];\n // }\n // }\n // return this.strong(formatted);\n // }\n // period(value) {\n // var formatted = {\n // label: i18n[\"page_builder_field_period_label\"],\n // value: \"\",\n // };\n // switch (value[\"type\"]) {\n // case \"DAY\": {\n // formatted[\"value\"] = this.strong(value[\"value\"]);\n // formatted[\"label\"] =\n // i18n[\"page_builder_field_period_from_label\"];\n // break;\n // }\n // case \"YEAR\": {\n // formatted[\"value\"] = this.strong(\n // value[\"value\"] + \" \" + i18n[\"common_years\"]\n // );\n // break;\n // }\n // default: {\n // formatted[\"value\"] = this.strong(i18n[\"common_unknown\"]);\n // }\n // }\n // return formatted;\n // }\n ranking(value: any[]) {\n return this._rankingSelection(value, this.optionsRanking);\n }\n // /**\n // * Format rebalance frequency\n // *\n // * @param {string} value - one of '05_DAYS', '20_DAYS' or '60_DAYS'\n // *\n // * @returns {string} the formatted rebalance frequency\n // */\n // rebalance(value) {\n // var formatted = \"\";\n // switch (value) {\n // case \"05_DAYS\": {\n // formatted = i18n[\"page_builder_field_rebalance_label_05_days\"];\n // break;\n // }\n // case \"20_DAYS\": {\n // formatted = i18n[\"page_builder_field_rebalance_label_20_days\"];\n // break;\n // }\n // case \"60_DAYS\": {\n // formatted = i18n[\"page_builder_field_rebalance_label_60_days\"];\n // break;\n // }\n // default: {\n // formatted = i18n[\"common_unknown\"];\n // }\n // }\n // return this.strong(formatted);\n // }\n // rotation(value) {\n // var factor = null;\n // switch (value[\"factor\"]) {\n // case \"FACTOR_MOMENTUM\": {\n // factor = i18n[\"page_builder_field_rotation_momentum_label\"];\n // break;\n // }\n // case \"FACTOR_MARKET_CAP_NEUTRAL\": {\n // factor =\n // i18n[\"page_builder_field_rotation_market_neutral_label\"];\n // break;\n // }\n // case \"FACTOR_MOMENTUM_GROWTH\": {\n // factor =\n // i18n[\"page_builder_field_rotation_momentum_growth_label\"];\n // break;\n // }\n // default: {\n // factor = i18n[\"common_unknown\"];\n // }\n // }\n // var rotate = this._options.getRotation(\"LABEL_LOOKUP\", value[\"rotate\"]);\n // var formatted = [\n // i18n[\"page_builder_field_rotation_rotate_label\"],\n // this.strong(rotate),\n // i18n[\"page_builder_field_rotation_by_label\"],\n // this.strong(factor),\n // ].join(\" \");\n // return formatted;\n // }\n selection(value: any[]) {\n return this._rankingSelection(value, this.optionsSelection);\n }\n // smartBeta(value) {\n // var formatType = this.formatType;\n // var options = {\n // decimals: 2,\n // notAvailable: {\n // input: null,\n // output: \"\",\n // },\n // };\n // var optionsSmartBeta = this.optionsSmartBeta;\n // var formatted = [];\n // var item = null;\n // for (var i = 0, length = value.length; i < length; i++) {\n // item = value[i];\n // var itemFormatted = [];\n // // weight\n // itemFormatted.push(\n // this.strong(\n // format.custom(\"number\", {\n // options: options,\n // output: formatType,\n // value: item[\"weight\"],\n // valueHelper: null,\n // })\n // )\n // );\n // // property\n // itemFormatted.push(\n // this.strong(\n // optionsSmartBeta[item[\"property\"]][\"property\"][\"label\"]\n // )\n // );\n // // operator\n // switch (item[\"property\"]) {\n // case \"rc\": {\n // itemFormatted.push({\n // A: this.strong(\n // format.custom(\"number\", {\n // options: options,\n // output: formatType,\n // value: item[\"operator\"][\"A\"],\n // valueHelper: null,\n // })\n // ),\n // B: this.strong(\n // format.custom(\"number\", {\n // options: options,\n // output: formatType,\n // value: item[\"operator\"][\"B\"],\n // valueHelper: null,\n // })\n // ),\n // C: this.strong(\n // format.custom(\"number\", {\n // options: options,\n // output: formatType,\n // value: item[\"operator\"][\"C\"],\n // valueHelper: null,\n // })\n // ),\n // D: this.strong(\n // format.custom(\"number\", {\n // options: options,\n // output: formatType,\n // value: item[\"operator\"][\"D\"],\n // valueHelper: null,\n // })\n // ),\n // });\n // break;\n // }\n // default: {\n // switch (item[\"operator\"]) {\n // case \"bottom\": {\n // itemFormatted.push(\n // this.strong(i18n[\"c_smart_beta_bottom\"])\n // );\n // break;\n // }\n // case \"middle\": {\n // itemFormatted.push(\n // this.strong(i18n[\"c_smart_beta_middle\"])\n // );\n // break;\n // }\n // case \"top\": {\n // itemFormatted.push(\n // this.strong(i18n[\"c_smart_beta_top\"])\n // );\n // break;\n // }\n // }\n // }\n // }\n // formatted.push(itemFormatted);\n // }\n // return formatted;\n // }\n // // utility function\n strong(value: string) {\n return \"\" + value + \"\";\n }\n // /**\n // * Format sectors\n // *\n // * @param {array} value - an array of ICB or ETFs classification codes\n // *\n // * @returns {string} the formatted sectors\n // */\n // what(value) {\n // var tokens = [];\n // var whatTaxonomies = [this.taxonomyWhatStock, this.taxonomyWhatEtf];\n // for (var i = 0, length = value.length; i < length; i++) {\n // tokens.push(\n // this._taxonFormat(\n // this._taxonGet(value[i], whatTaxonomies),\n // whatTaxonomies\n // )\n // );\n // }\n // if (tokens.length === 0) {\n // tokens.push(i18n[\"common_all\"]);\n // }\n // tokens.sort();\n // return this.strong(tokens.join(\", \"));\n // }\n // weightingSchema(value) {\n // var formatted = \"\";\n // switch (value) {\n // case \"WEIGHT_EQUAL\": {\n // formatted =\n // i18n[\n // \"page_builder_field_weighting_schema_label_weight_equal\"\n // ];\n // break;\n // }\n // case \"WEIGHT_MARKET_CAP\": {\n // formatted =\n // i18n[\n // \"page_builder_field_weighting_schema_label_weight_market_cap\"\n // ];\n // break;\n // }\n // default: {\n // formatted = i18n[\"common_unknown\"];\n // }\n // }\n // return this.strong(formatted);\n // }\n // weightingSchemaExistingPositions(value) {\n // var formatted = \"\";\n // switch (value) {\n // case \"WEIGHT_EXISTING_POSITIONS_KEEP\": {\n // formatted =\n // i18n[\n // \"page_builder_field_weighting_schema_existing_positions_label_keep\"\n // ];\n // break;\n // }\n // case \"WEIGHT_EXISTING_POSITIONS_REBALANCE\": {\n // formatted =\n // i18n[\n // \"page_builder_field_weighting_schema_existing_positions_label_rebalance\"\n // ];\n // break;\n // }\n // default: {\n // formatted = i18n[\"common_unknown\"];\n // }\n // }\n // return this.strong(formatted);\n // }\n // /**\n // * Format markets\n // *\n // * @param {object} value - the parameters\n // * @param {boolean} value.domestic - true if only domestic instruments\n // * must be selected, false otherwise\n // * @param {boolean} value.foreign - true if only foreign instruments\n // * must be selected, false otherwise\n // * @param {array} value.market - an array of market codes\n // * @param {array} value.stockClassification - an array of stock\n // * classification codes\n // *\n // * @returns {string} the formatted markets\n // */\n // where(value) {\n // var tokens = [];\n // for (var i = 0, length = value.length; i < length; i++) {\n // tokens.push(this.taxonomyWhere.get(value[i])[\"name\"]);\n // }\n // if (tokens.length === 0) {\n // tokens.push(i18n[\"common_all\"]);\n // }\n // tokens.sort();\n // return this.strong(tokens.join(\", \"));\n // }\n // // ------------------------------------------------- private methods\n _rankingSelection(value: any, options: any) {\n const smartFormatter: any = {\n quantile: {\n 4: {\n equalTo: { 1: \"Top Quartile\", 4: \"Bottom Quartile\" },\n lessThan: {\n 2: \"Top quartile\",\n 3: \"Top two quartiles\",\n 4: \"Top three quartiles\",\n },\n lessThanOrEqualTo: {\n 1: \"Top Quartile\",\n 2: \"Top two Quartiles\",\n 3: \"Top three Quartiles\",\n },\n greaterThan: {\n 2: \"Bottom two Quartiles\",\n 3: \"Bottom Quartile\",\n },\n greaterThanOrEqualTo: {\n 2: \"Second Quartile\",\n 3: \"Bottom two Quartiles\",\n 4: \"Bottom Quartiles\",\n },\n },\n 5: {\n equalTo: { 1: \"Top Quintile\", 5: \"Bottom Quintile\" },\n lessThan: {\n 2: \"Top Quintile\",\n 3: \"Top two Quintiles\",\n 4: \"Top three Quintiles\",\n },\n lessThanOrEqualTo: {\n 1: \"Top Quintile\",\n 2: \"Top two Quintiles\",\n 3: \"Top three Quintiles\",\n },\n greaterThan: {\n 3: \"Bottom two Quintiles\",\n 4: \"Bottom Quintile\",\n },\n greaterThanOrEqualTo: {\n 4: \"Bottom two Quintiles\",\n 5: \"Bottom Quintile\",\n },\n },\n },\n };\n\n var constraint = null;\n var formattedConstraint = null;\n var formattedConstraints = [];\n var formatRankingSelection = this.formatRankingSelection;\n var propertyLabel = this._rankingSelectionPropertyLabel(options);\n for (var i = 0, length = value.length; i < length; i++) {\n constraint = value[i];\n\n const foundFunction = smartFormatter[constraint.function];\n // console.log(\"--------------------------------\");\n // console.log(\"--------------------------------\");\n // console.log(constraint);\n // console.log(\"--------------------------------\");\n // console.log(\"foundFunction\", constraint.function, foundFunction);\n let foundOperatorParams = null;\n if (foundFunction != null && constraint.functionParams != null) {\n const foundFunctionParams =\n foundFunction[constraint.functionParams.value];\n // console.log(\n // \"foundFunctionParams\",\n // constraint.functionParams.value,\n // foundFunctionParams\n // );\n if (foundFunctionParams != null) {\n const foundOperator =\n foundFunctionParams[constraint.operator];\n // console.log(\n // \"foundOperator\",\n // constraint.operator,\n // foundOperator\n // );\n if (foundOperator != null) {\n if (constraint.operator === \"equalTo\") {\n if (constraint.operatorParams.value != null) {\n const operatorParams =\n constraint.operatorParams.value;\n if (operatorParams != null) {\n foundOperatorParams =\n foundOperator[operatorParams];\n // console.log(\n // \"foundOperatorParams\",\n // foundOperatorParams\n // );\n }\n }\n } else {\n let foundParam = null;\n switch (constraint.operator) {\n case \"greaterThan\":\n foundParam = \"gt\";\n break;\n case \"greaterThanOrEqualTo\":\n foundParam = \"ge\";\n break;\n case \"lessThan\":\n foundParam = \"lt\";\n break;\n case \"lessThanOrEqualTo\":\n foundParam = \"le\";\n break;\n }\n // console.log(foundParam);\n\n if (\n foundParam != null &&\n constraint.operatorParams.value != null &&\n constraint.operatorParams.value.length > 0\n ) {\n const operatorParams =\n constraint.operatorParams.value[0][\n foundParam\n ];\n if (operatorParams != null) {\n foundOperatorParams =\n foundOperator[operatorParams];\n // console.log(\n // \"foundOperatorParams\",\n // foundOperatorParams\n // );\n }\n }\n }\n }\n }\n }\n if (foundOperatorParams != null) {\n formattedConstraint = [];\n // property\n formattedConstraint.push(\n formatRankingSelection.property(\n constraint[\"property\"],\n propertyLabel,\n null\n )\n );\n formattedConstraint.push(foundOperatorParams);\n formattedConstraints.push(formattedConstraint);\n } else {\n formattedConstraint = [];\n // property\n formattedConstraint.push(\n formatRankingSelection.property(\n constraint[\"property\"],\n propertyLabel,\n null\n )\n );\n // function\n formattedConstraint.push(\n formatRankingSelection.function(\n constraint[\"property\"],\n constraint[\"function\"],\n constraint[\"functionParams\"]\n )\n );\n // operator: interface must be unified\n // sortBy must be an type of operator and the value\n // must be encapsulated within an operatorParams\n //\n // for selection\n if (\"operator\" in constraint) {\n formattedConstraint.push(\n formatRankingSelection.operator(\n constraint[\"property\"],\n constraint[\"function\"],\n constraint[\"operator\"],\n constraint[\"operatorParams\"]\n )\n );\n }\n // ranking\n if (\"sortBy\" in constraint) {\n formattedConstraint.push(\n formatRankingSelection.operator(\n constraint[\"property\"],\n constraint[\"function\"],\n \"sortBy\",\n {\n value: constraint[\"sortBy\"],\n }\n )\n );\n }\n // console.log(formattedConstraint);\n\n if (formattedConstraint.length > 2) {\n const [firstConstraint, ...otherConstraints] =\n formattedConstraint;\n formattedConstraint = [\n firstConstraint,\n otherConstraints.join(\" \"),\n ];\n }\n\n formattedConstraints.push(formattedConstraint);\n }\n }\n return formattedConstraints;\n }\n _rankingSelectionPropertyLabel(options: any) {\n var option = null;\n var propertyLabel: any = {};\n for (var i = 0, length = options.length; i < length; i++) {\n option = options[i][\"property\"];\n propertyLabel[option[\"value\"]] = option[\"label\"];\n }\n return propertyLabel;\n }\n // _taxonFormat(taxon, taxonomies) {\n // var formatted = taxon[\"name\"];\n // var parent;\n // if (taxon[\"type\"] == \"3 Sector\") {\n // parent = this._taxonGet(taxon[\"parent\"], taxonomies);\n // formatted = parent[\"name\"] + \" - \" + formatted;\n // }\n // return formatted;\n // }\n // _taxonGet(id, taxonomies, taxonomyIndex) {\n // taxonomyIndex =\n // taxonomyIndex === undefined || taxonomyIndex == null\n // ? 0\n // : taxonomyIndex;\n // var taxon = taxonomies[taxonomyIndex].get(id);\n // if (taxon !== undefined) {\n // return taxon;\n // } else {\n // return this._taxonGet(id, taxonomies, taxonomyIndex + 1);\n // }\n // }\n}\n","/**\n * @author Trendrating \n *\n * @module trendrating/date/TDate\n * @summary Utils to manipulate Trendrating dates based on days\n *\n */\nexport class TDate {\n /**\n * Converts a native Date object to days (UTC) managing timezone\n *\n * @param {Date} dateObject - a native Date instance\n *\n * @returns {number} days\n */\n dateToDays(dateObject) {\n var milliseconds = dateObject.getTime();\n var timezoneOffset = dateObject.getTimezoneOffset(); // minutes\n\n var value = milliseconds - timezoneOffset * 60 * 1000;\n\n return this.millisecondsToDays(value);\n }\n\n /**\n * Convert a date object in an ISO 8601 string\n *\n * @param {Date} date\n *\n * @return {string} - an ISO 8601 string\n */\n dateToIso8601(date) {\n var day = date.getDate();\n var month = date.getMonth() + 1;\n var year = date.getFullYear();\n\n var formatted = [\n year,\n this._prefixZero(month),\n this._prefixZero(day),\n ].join(\"-\");\n\n return formatted;\n }\n\n /**\n * Converts days into a native Date object\n *\n * @param {number} days - number of days\n *\n * @returns {Date} a native Date object\n */\n daysToDate(days) {\n let date = new Date(this.daysToMilliseconds(days));\n date.setHours(0, 0, 0, 0); // Reset hour, min, seconds, ms\n return date;\n }\n\n /**\n * Convert days in an ISO 8601 string\n *\n * @param {number} days\n *\n * @return {string} - an ISO 8601 string\n */\n daysToIso8601(days) {\n var milliseconds = this.daysToMilliseconds(days);\n var date = new Date(milliseconds);\n\n var day = date.getUTCDate();\n var month = date.getUTCMonth() + 1;\n var year = date.getUTCFullYear();\n\n var formatted = [\n year,\n this._prefixZero(month),\n this._prefixZero(day),\n ].join(\"-\");\n\n return formatted;\n }\n\n /**\n * Converts days in milliseconds\n *\n * @param {number} days - number of days\n *\n * @returns {number} milliseconds\n */\n daysToMilliseconds(days) {\n days = parseInt(days);\n var quotient = Math.floor(days / 5);\n var remainder = Math.floor(days % 5);\n var milliseconds = Math.floor(\n (quotient * 7 + remainder + 4) * 86400 * 1000\n );\n return milliseconds;\n }\n\n /**\n * Converts milliseconds in days excluding weekends\n *\n * @param {number} milliseconds - milliseconds\n *\n * @returns {number} days\n */\n millisecondsToDays(milliseconds) {\n milliseconds = parseInt(milliseconds);\n // http://stackoverflow.com/questions/4055633/what-does-double-tilde-do-in-javascript\n // ~ not: bitwise operator\n // ~~ -> (int)\n var seconds = milliseconds / 1000;\n var t = ~~(seconds / 86400) - 4;\n var quotient = ~~(t / 7);\n var remainder = ~~(t % 7);\n if (remainder === 6) {\n remainder = 5; // sunday as saturday\n }\n var days = quotient * 5 + remainder;\n return days;\n }\n\n /**\n * Return today as Trendrating days\n *\n * @returns {number} days\n */\n today() {\n return this.dateToDays(new Date());\n }\n\n /**\n * Return yesterday as Trendrating days\n *\n * @returns {number} days\n */\n yesterday() {\n var today = this.today();\n\n return today - 1;\n }\n // ----------------------------------------------------- private methods\n _prefixZero(value) {\n if (value < 10) {\n return \"0\" + value;\n }\n\n return value;\n }\n}\n","/**\n * @author Trendrating \n *\n * @module trendrating/formatter/Taxonomy\n * @summary Utils to manipulate taxons.\n *\n */\nexport class Taxonomy {\n //\n // taxonomy works with hashmap. It needs to be refactored\n // with trendrating/core/Store\n //\n getAncestorAtLevel(taxonomy, taxonId, taxonType) {\n if (taxonomy[taxonId] === undefined) {\n return null;\n }\n\n if (\n taxonomy[taxonId].parent == null ||\n taxonomy[taxonId].type === taxonType\n ) {\n return taxonId;\n }\n\n return this.getAncestorAtLevel(\n taxonomy,\n taxonomy[taxonId].parent,\n taxonType\n );\n }\n\n //\n // taxonomy works with hashmap. It needs to be refactored\n // with trendrating/core/Store\n //\n getAncestorByLevel(taxonomy, taxonId, taxonLevel) {\n var node = taxonomy[taxonId];\n var nodeLevelInt = parseInt(node.type.charAt(0));\n var taxonLevelInt = parseInt(taxonLevel.charAt(0));\n\n if (nodeLevelInt <= taxonLevelInt || node.parent == null) {\n return taxonId;\n }\n\n return this.getAncestorByLevel(taxonomy, node.parent, taxonLevel);\n }\n\n /**\n * ReadOnlySyncStore -> trendrating/core/Store\n *\n * @param {object} whatWhere - parameters\n * @param {string} what - taxonomy code\n * @param {ReadOnlySyncStore} whatTaxonomy - taxonomy\n * @param {string} where - country ISO code\n * @param {ReadOnlySyncStore} whereTaxonomy - markets taxonomy\n *\n * @returns {object} what and where strings\n */\n getWhatAndWhereLabel(whatWhere) {\n var value = {\n what: null,\n whatType: null,\n where: null,\n whereType: null,\n };\n // where\n var where =\n whatWhere[\"where\"] != null\n ? whatWhere[\"whereTaxonomy\"].get(whatWhere[\"where\"])\n : null;\n value[\"where\"] = where == null ? null : where[\"name\"];\n value[\"whereType\"] = where == null ? null : where[\"type\"];\n\n if (where != null && where[\"type\"] === \"Region\") {\n var whereParent = whatWhere[\"whereTaxonomy\"].get(where[\"parent\"]);\n if (whereParent != null) {\n value[\"where\"] = [whereParent[\"name\"], \":\", where[\"name\"]].join(\n \"\"\n );\n }\n }\n // what\n var what =\n whatWhere[\"what\"] != null\n ? whatWhere[\"whatTaxonomy\"].get(whatWhere[\"what\"])\n : null;\n value[\"what\"] = what == null ? null : what[\"name\"];\n value[\"whatType\"] = what == null ? null : what[\"type\"];\n\n return value;\n }\n}\n","/**\n * @author Trendrating \n *\n * @module trendrating/formatter/_currency\n * @summary Most important currency symbols\n *\n */\nexport const _currency = {\n /*\n * USD $ $ $ $ Dollar Sign\n * GBP £ £ £ £ Pound Sterling\n * JPY ¥ ¥ ¥ ¤ Yen Symbol\n * EUR € € € € Euro Symbol\n */\n symbol: {\n EUR: \"€\",\n GBP: \"£\",\n JPY: \"¥\",\n USD: \"$\",\n },\n};\n","/**\n * @author Trendrating \n *\n * @module trendrating/formatter/_rate\n * @summary Rate colors, values and labels\n *\n */\nexport const _rate = {\n // --------------------------------------------------------------------------\n // IMPORTANT\n // --------------------------------------------------------------------------\n // because of PDF report information are duplicated also in CSS.\n // If you change colors here remember to update colors in CSS file.\n\n colors: {\n A: \"#008000\",\n B: \"#8BBC00\",\n C: \"#F48400\",\n D: \"#F00000\",\n U: \"#D3D3D3\", //'#EFEFEF'\n },\n\n rating: {\n \"2\": {\n class: \"format-rate format-rate--A\",\n color: \"#008000\",\n colorChart: \"#008000\",\n label: \"A\",\n value: 2,\n },\n \"1\": {\n class: \"format-rate format-rate--B\",\n color: \"#8BBC00\",\n colorChart: \"#8BBC00\",\n label: \"B\",\n value: 1,\n },\n \"0\": {\n class: \"format-rate format-rate--U\",\n color: \"#000000\",\n colorChart: \"#D3D3D3\",\n label: \"-\",\n value: 0,\n },\n \"-1\": {\n class: \"format-rate format-rate--C\",\n color: \"#F48400\",\n colorChart: \"#F48400\",\n label: \"C\",\n value: -1,\n },\n \"-2\": {\n class: \"format-rate format-rate--D\",\n color: \"#F00000\",\n colorChart: \"#F00000\",\n label: \"D\",\n value: -2,\n },\n \"A\": {\n class: \"format-rate format-rate--A\",\n color: \"#008000\",\n colorChart: \"#008000\",\n label: \"A\",\n value: 2,\n },\n \"B\": {\n class: \"format-rate format-rate--B\",\n color: \"#8BBC00\",\n colorChart: \"#8BBC00\",\n label: \"B\",\n value: 1,\n },\n \"C\": {\n class: \"format-rate format-rate--C\",\n color: \"#F48400\",\n colorChart: \"#F48400\",\n label: \"C\",\n value: -1,\n },\n \"D\": {\n class: \"format-rate format-rate--D\",\n color: \"#F00000\",\n colorChart: \"#F00000\",\n label: \"D\",\n value: -2,\n },\n \"U\": {\n class: \"format-rate format-rate--U\",\n color: \"#000000\",\n colorChart: \"#D3D3D3\",\n label: \"-\",\n value: 0,\n },\n },\n\n // TCR\n trendCaptureRating: {\n \"4\": {\n class: \"format-rate format-rate--A\",\n color: \"#008000\",\n colorChart: \"#008000\",\n label: \"A\",\n rateClass: \"A\", // deprecated: use tcrClass\n tcrClass: \"A\",\n value: 4,\n },\n \"3\": {\n class: \"format-rate format-rate--A\",\n color: \"#008000\",\n colorChart: \"#008000\",\n label: \"A-\",\n rateClass: \"A\", // deprecated: use tcrClass\n tcrClass: \"A\",\n value: 3,\n },\n \"2\": {\n class: \"format-rate format-rate--B\",\n color: \"#8BBC00\",\n colorChart: \"#8BBC00\",\n label: \"B+\",\n rateClass: \"B\", // deprecated: use tcrClass\n tcrClass: \"B\",\n value: 2,\n },\n \"1\": {\n class: \"format-rate format-rate--B\",\n color: \"#8BBC00\",\n colorChart: \"#8BBC00\",\n label: \"B\",\n rateClass: \"B\", // deprecated: use tcrClass\n tcrClass: \"B\",\n value: 1,\n },\n \"0\": {\n class: \"format-rate format-rate--B\",\n color: \"#8BBC00\",\n colorChart: \"#8BBC00\",\n label: \"B-\",\n rateClass: \"B\", // deprecated: use tcrClass\n tcrClass: \"B\",\n value: 0,\n },\n \"-1\": {\n class: \"format-rate format-rate--C\",\n color: \"#F48400\",\n colorChart: \"#F48400\",\n label: \"C+\",\n rateClass: \"C\", // deprecated: use tcrClass\n tcrClass: \"C\",\n value: -1,\n },\n \"-2\": {\n class: \"format-rate format-rate--C\",\n color: \"#F48400\",\n colorChart: \"#F48400\",\n label: \"C\",\n rateClass: \"C\", // deprecated: use tcrClass\n tcrClass: \"C\",\n value: -2,\n },\n \"-3\": {\n class: \"format-rate format-rate--C\",\n color: \"#F48400\",\n colorChart: \"#F48400\",\n label: \"C-\",\n rateClass: \"C\", // deprecated: use tcrClass\n tcrClass: \"C\",\n value: -3,\n },\n \"-4\": {\n class: \"format-rate format-rate--D\",\n color: \"#F00000\",\n colorChart: \"#F00000\",\n label: \"D+\",\n rateClass: \"D\", // deprecated: use tcrClass\n tcrClass: \"D\",\n value: -4,\n },\n \"-5\": {\n class: \"format-rate format-rate--D\",\n color: \"#F00000\",\n colorChart: \"#F00000\",\n label: \"D\",\n rateClass: \"D\", // deprecated: use tcrClass\n tcrClass: \"D\",\n value: -5,\n },\n \"-9999\": {\n class: \"format-rate format-rate--U\",\n color: \"#000000\",\n colorChart: \"#D3D3D3\",\n label: \"-\",\n rateClass: \"U\", // deprecated: use tcrClass\n tcrClass: \"U\",\n value: null,\n },\n \"CASH\": {\n class: \"format-rate format-rate--cash\",\n color: \"#000000\",\n colorChart: \"#FFFFFF\",\n label: \"-\",\n rateClass: \"cash\",\n value: null,\n },\n \"U\": {\n class: \"format-rate format-rate--U\",\n color: \"#000000\",\n colorChart: \"#D3D3D3\",\n label: \"-\",\n rateClass: \"U\",\n value: null,\n },\n },\n};\n","/**\n * @author Trendrating \n *\n * @module trendrating/formatter/Formatter\n * @summary Trendrating data formatter. Format data suitable for HTML rendering,\n * text export (CSV, Excel) and PDF generation (ReportLab - www.reportlab.com)\n *\n */\n\nimport { TDate } from \"../date/TDate\";\nimport { Taxonomy } from \"./Taxonomy\";\nimport { _currency } from \"./_currency\";\nimport { _rate } from \"./_rate\";\n\nexport class Formatter {\n baseClass = \"format\";\n\n strategyFormatter = null;\n\n /*\n * Params object structure\n * {\n * 'value': string | number\n *\n * 'valueHelper': {} this object is different for each formatter and\n * specifies additional info that help to format the\n * value correctly\n *\n * 'options': {} this object is different for each formatter.\n * Contains optional formatting information\n *\n * 'output': HTML | PDF | TEXT\n * }\n */\n\n /**\n * Format number with additional bar\n *\n * @param {object} params - same parameters of number, but with\n * additional option and valueHelper\n *\n * @param {string} params.options.width - The width of bar in px or em.\n * Default \"4.5em\"\n * @param {object} params.valueHelper - contains the property to\n * normalize values\n * @param {number} params.valueHelper.normalizationThreshold - The\n * threshold against normalize values. Default 1\n *\n * @returns {string} a formatted string\n */\n bar(params) {\n // The threshold against normalize values\n var normalizationThreshold =\n params[\"valueHelper\"] != null &&\n params[\"valueHelper\"][\"normalizationThreshold\"] != null\n ? params[\"valueHelper\"][\"normalizationThreshold\"]\n : 1;\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", null);\n // the width of the bar\n var width = this._getOption(params, \"width\", \"4.5em\");\n\n var output = params.output;\n var value = params.value;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n var formatted = [this.number(params)];\n\n switch (output) {\n case \"HTML\": {\n var barValue = 0;\n if (Math.abs(value) > normalizationThreshold) {\n barValue = 100;\n } else {\n barValue = Math.abs(\n parseInt((value * 100) / normalizationThreshold)\n );\n }\n\n if (Math.abs(value) > 0 && barValue === 0) {\n barValue = 1;\n }\n\n barValue = (barValue * 50) / 100;\n\n var cssClassBar = this.baseClass + \"-bar\";\n var cssClassBarBlock = cssClassBar + \"Block\";\n var bar = document.createElement(\"div\");\n bar.className = cssClassBar;\n bar.style.width = width;\n if (value > 0) {\n let barSpanContent = document.createElement(\"span\");\n barSpanContent.className = cssClassBarBlock;\n barSpanContent.style.width = \"50%\";\n bar.appendChild(barSpanContent);\n\n let barSpanFill = document.createElement(\"span\");\n barSpanFill.className = cssClassBarBlock;\n barSpanFill.style.backgroundColor = \"green\";\n barSpanFill.style.width = `${barValue}%`;\n bar.appendChild(barSpanFill);\n }\n if (value < 0) {\n let barSpanFillOpposite = document.createElement(\"span\");\n barSpanFillOpposite.className = cssClassBarBlock;\n barSpanFillOpposite.style.backgroundColor = \"white\";\n barSpanFillOpposite.style.width = `${50 - barValue}%`;\n bar.appendChild(barSpanFillOpposite);\n\n let barSpanFill = document.createElement(\"span\");\n barSpanFill.className = cssClassBarBlock;\n barSpanFill.style.backgroundColor = \"red\";\n barSpanFill.style.width = `${Math.abs(barValue)}%`;\n bar.appendChild(barSpanFill);\n\n let barSpanContent = document.createElement(\"span\");\n barSpanContent.className = cssClassBarBlock;\n barSpanContent.style.width = \"50%\";\n bar.appendChild(barSpanContent);\n }\n\n formatted.push(bar.outerHTML);\n\n break;\n }\n case \"PDF\":\n case \"TEXT\":\n default: {\n // no bar to add\n }\n }\n\n return formatted.join(\" \");\n }\n\n /**\n * Format date\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - formatting options\n * @param {array} params.options.format - The format to be used. Default [\"Y\", \"m\", \"D\"]\n * @param {boolean} params.options.isMillisecond - if value unit is millisecond instead of day. Default false\n * @param {object} params.options.notAvailable - (Required) Directive to manage not available case\n * @param {any} params.options.notAvailable.input - not available value\n * @param {any} params.options.notAvailable.output - what to return if params.value === to params.options.notAvailable.input\n * @param {string} params.options.separator - The separator to be used. Default '-'\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - null or undefined\n *\n * @returns {string} a formatted string\n */\n date(params) {\n // output format\n var format = this._getOption(params, \"format\", [\"Y\", \"m\", \"D\"]);\n // value unit is millisecond: default is day\n var isMillisecond = this._getOption(params, \"isMillisecond\", false);\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", null);\n // the date separator\n var separator = this._getOption(params, \"separator\", \"-\");\n\n var output = params.output;\n var value = params.value;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n if (!isMillisecond) {\n value = new TDate().daysToMilliseconds(value);\n }\n\n var formatted = \"\";\n var rawDate = new Date(value);\n var Y = rawDate.getUTCFullYear();\n var d = rawDate.getUTCDate();\n var m = rawDate.getUTCMonth() + 1;\n var day = rawDate.getUTCDay();\n\n var M = m < 10 ? \"0\" + m : \"\" + m;\n var D = d < 10 ? \"0\" + d : \"\" + d;\n\n var days = {\n 1: \"Mon\",\n 2: \"Thu\",\n 3: \"Wed\",\n 4: \"Tue\",\n 5: \"Fri\",\n 6: \"Sat\",\n 7: \"Sun\",\n };\n\n var months = {\n \"01\": \"Jan\",\n \"02\": \"Feb\",\n \"03\": \"Mar\",\n \"04\": \"Apr\",\n \"05\": \"May\",\n \"06\": \"Jun\",\n \"07\": \"Jul\",\n \"08\": \"Aug\",\n \"09\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\",\n };\n\n switch (output) {\n case \"HTML\":\n case \"PDF\":\n case \"TEXT\":\n default: {\n var token = null;\n for (var i = 0, length = format.length; i < length; i++) {\n switch (format[i]) {\n case \"DAY\":\n case \"day\": {\n token = days[day];\n break;\n }\n case \"D\":\n case \"d\": {\n token = D;\n break;\n }\n case \"m\": {\n token = M;\n break;\n }\n case \"M\": {\n token = months[M];\n break;\n }\n case \"y\":\n case \"Y\": {\n token = Y;\n break;\n }\n default:\n break;\n }\n formatted += token;\n if (i < length - 1) {\n formatted += separator;\n }\n }\n break;\n }\n }\n\n return formatted;\n }\n\n /**\n * Format duration, magnitude and UPI\n * Special case of number with fixed constraints and icon support\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - formatting options\n * @param {boolean} params.options.hasIcon - if true it postfixes icon to value. Default true\n * @param {object} params.options.notAvailable - Directive to manage not available case\n * @param {any} params.options.notAvailable.input - (Required) not available value\n * @param {any} params.options.notAvailable.output - (Required) what to return if params.value === to params.options.notAvailable.input\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - contains the property to evalute if print out notification icon\n * @param {string} params.valueHelper.days - (Required) the value of 'lduration', 'lmagnitude' or 'lupi'\n *\n * @returns {string} a formatted string\n */\n durationMagnitudeUpi(params) {\n var hasIcon = this._getOption(params, \"hasIcon\", true);\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", {\n input: null,\n output: \"\",\n });\n\n var output = params.output;\n var value = params.value;\n var valueHelper = params.valueHelper;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n var formatted = this.number({\n options: {\n constraints: {\n max: 95,\n min: 5,\n },\n decimals: 0,\n isPercentage: true,\n notAvailable: {\n input: null,\n output: \"\",\n },\n },\n output: \"TEXT\",\n value: value,\n valueHelper: null,\n });\n\n switch (output) {\n case \"HTML\": {\n if (valueHelper[\"days\"] === 0 && hasIcon === true) {\n formatted =\n formatted + ' !';\n }\n break;\n }\n case \"PDF\":\n case \"TEXT\":\n default: {\n break;\n }\n }\n\n return formatted;\n }\n\n /**\n * Format new high new low data\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - formatting options\n * @param {boolean} params.options.hasAbbreviatedLabel - if true, prints out abbreviated labels. Default false\n * @param {object} params.options.notAvailable - (Required) Directive to manage not available case\n * @param {any} params.options.notAvailable.input - not available value\n * @param {any} params.options.notAvailable.output - what to return if params.value === to params.options.notAvailable.input\n * @param {object} params.options.template - How output string must be formatted. Default '${icon} ${label}' for both downgrade and upgrade\n * @param {string} params.options.template.downgrade - template for downgrade\n * @param {string} params.options.template.upgrade - template for upgrade\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - null or undefined\n *\n * @returns {string} a formatted string\n */\n newHighNewLow(params) {\n var hasAbbreviatedLabel = this._getOption(\n params,\n \"hasAbbreviatedLabel\",\n false\n );\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", null);\n\n var output = params.output;\n var value = params.value;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n var formatted = \"\";\n var icon = null;\n var label = null;\n var options = {\n icon: {\n html: {\n high: '',\n low: '',\n },\n pdf: {\n high: '',\n low: '',\n },\n text: {\n high: \"High\",\n low: \"Low\",\n },\n },\n label: {\n abbr: {\n \"1m\": \"1 M\",\n \"3m\": \"3 M\",\n \"6m\": \"6 M\",\n \"12m\": \"12 M\",\n },\n standard: {\n \"1m\": \"1 month\",\n \"3m\": \"3 months\",\n \"6m\": \"6 months\",\n \"12m\": \"12 months\",\n },\n },\n };\n\n value = parseInt(value); // to be sure to work on Number type\n\n var isUpgrade = true;\n switch (output) {\n case \"HTML\": {\n if (value > 0) {\n icon = options.icon.html.high;\n } else {\n icon = options.icon.html.low;\n isUpgrade = false;\n }\n break;\n }\n case \"PDF\": {\n if (value > 0) {\n icon = options.icon.pdf.high;\n } else {\n icon = options.icon.pdf.low;\n isUpgrade = false;\n }\n break;\n }\n case \"TEXT\": {\n if (value > 0) {\n icon = options.icon.text.high;\n } else {\n icon = options.icon.text.low;\n isUpgrade = false;\n }\n break;\n }\n default:\n break;\n }\n\n label = this._newHighNewLowHelper(\n value,\n hasAbbreviatedLabel === true\n ? options.label.abbr\n : options.label.standard\n );\n if (label !== \"\") {\n // template\n var template = this._getOption(params, \"template\", {\n downgrade: `${icon} ${label}`,\n upgrade: `${icon} ${label}`,\n });\n formatted = isUpgrade ? template[\"upgrade\"] : template[\"downgrade\"];\n }\n\n return formatted;\n }\n\n /**\n * Format number\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - formatting options\n * @param {string} params.options.colored - 'positive' or 'negative'.\n * If 'positive' the string has a style with a green color else if\n * 'negative' has a style with a red color. Default null\n * @param {object} params.options.contraints - interval of suitable values. Default null\n * @param {number} params.options.contraints.max - the maximum value\n * @param {number} params.options.contraints.min - the minimum value\n * @param {number} params.options.decimals - number of digits to appear after the decimal point. Default 2\n * @param {boolean} params.options.hasPositiveSign - add plus symbol before the value. Default false\n * @param {boolean} params.options.isPercentage - add percentage symbol after the value. Default false\n * @param {object} params.options.notAvailable - (Required) Directive to manage not available case\n * @param {any} params.options.notAvailable.input - not available value\n * @param {any} params.options.notAvailable.output - what to return if params.value === to params.options.notAvailable.input\n * @param {boolean} params.options.zero - if true returns 0 when value is 0, an empty string otherwise. Default true\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - null or undefined\n *\n * @returns {string} a formatted string\n */\n number(params) {\n // if positive the string has a style with a green color else\n // if negative has a style with a red color\n var colored = this._getOption(params, \"colored\", null);\n // a min a max interval of suitable values\n var contraints = this._getOption(params, \"constraints\", null);\n // how many decimals must be considered\n var decimals = this._getOption(params, \"decimals\", 2);\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", null);\n // add percentage symbol after the value\n var isPercentage = this._getOption(params, \"isPercentage\", false);\n // add plus symbol before the value\n var hasPositiveSign = this._getOption(params, \"hasPositiveSign\", false);\n // if true returns 0 when value is 0, an empty string otherwise.\n // Default true\n var zero = this._getOption(params, \"zero\", true);\n\n var output = params.output;\n var value = params.value;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n value = parseFloat(value); // to be sure to work on Number type\n\n if (isNaN(value)) {\n return notAvailable[\"output\"];\n }\n\n if (isPercentage) {\n value = value * 100;\n }\n\n if (contraints) {\n if (value > contraints.max) {\n value = contraints.max;\n }\n if (value < contraints.min) {\n value = contraints.min;\n }\n }\n\n if (zero && value === 0) {\n return (0).toFixed(decimals) + (isPercentage ? \"%\" : \"\");\n } else if (!zero && value === 0) {\n return \"\";\n }\n\n var valueFixed = Math.abs(value).toFixed(decimals);\n var zeroFixed = (0).toFixed(decimals);\n\n if (valueFixed === zeroFixed) {\n return zeroFixed + (isPercentage ? \"%\" : \"\");\n }\n\n var formatted =\n (hasPositiveSign && value > 0 ? \"+\" : \"\") +\n value.toFixed(decimals) +\n (isPercentage ? \"%\" : \"\");\n\n var color = \"\";\n switch (output) {\n case \"HTML\": {\n if (colored) {\n if (\n (colored === \"positive\" && value > 0) ||\n (colored === \"negative\" && value < 0)\n ) {\n color = \"format-number format-number--positive\";\n } else if (\n (colored === \"positive\" && value < 0) ||\n (colored === \"negative\" && value > 0)\n ) {\n color = \"format-number format-number--negative\";\n }\n }\n if (color) {\n formatted =\n '' + formatted + \"\";\n }\n break;\n }\n case \"PDF\": {\n if (colored) {\n if (\n (colored === \"positive\" && value > 0) ||\n (colored === \"negative\" && value < 0)\n ) {\n color = _rate[\"colors\"][\"A\"];\n } else if (\n (colored === \"positive\" && value < 0) ||\n (colored === \"negative\" && value > 0)\n ) {\n color = _rate[\"colors\"][\"D\"];\n }\n }\n if (color) {\n formatted =\n '' + formatted + \"\";\n }\n break;\n }\n case \"TEXT\":\n default: {\n break;\n }\n }\n\n return formatted;\n }\n\n /**\n * Format big number\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - formatting options\n * @param {number} params.options.decimals - number of digits to appear after the decimal point. Default 2\n * @param {object} params.options.notAvailable - (Required) Directive to manage not available case\n * @param {any} params.options.notAvailable.input - not available value\n * @param {any} params.options.notAvailable.output - what to return if params.value === to params.options.notAvailable.input\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - null or undefined\n *\n * @returns {string} a formatted string\n */\n numberBig(params) {\n // number of digits to appear after the decimal point: default 2\n var decimals = this._getOption(params, \"decimals\", 2);\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", null);\n\n var value = params.value;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n var abbr = \"\";\n var rounded = 0;\n\n value = parseFloat(value); // to be sure to work on Number type\n\n if (value >= 1e12) {\n abbr = \"T\";\n } else if (value >= 1e9) {\n abbr = \"B\";\n } else if (value >= 1e6) {\n abbr = \"M\";\n } else if (value >= 1e3) {\n abbr = \"K\";\n }\n\n switch (abbr) {\n case \"T\": {\n rounded = value / 1e12;\n break;\n }\n case \"B\": {\n rounded = value / 1e9;\n break;\n }\n case \"M\": {\n rounded = value / 1e6;\n break;\n }\n case \"K\": {\n rounded = value / 1e3;\n break;\n }\n default: {\n rounded = value;\n }\n }\n\n var criterion = new RegExp(\"\\\\.\\\\d{\" + (decimals + 1) + \",}$\");\n if (criterion.test(String(rounded))) {\n rounded = rounded.toFixed(decimals);\n }\n rounded = Number(rounded).toFixed(decimals);\n\n return rounded + abbr;\n }\n\n /**\n * Format security price\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - null or undefined\n * @param {object} params.options.notAvailable - (Required) Directive to manage not available case\n * @param {any} params.options.notAvailable.input - not available value\n * @param {any} params.options.notAvailable.output - what to return if params.value === to params.options.notAvailable.input\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - additional info that help to format the value correctly\n * @param {string} params.valueHelper.currency - the ISO 4217 code of currency\n * @param {string} params.valueHelper.date - date expressed in days\n *\n * @returns {string} a formatted string\n */\n price(params) {\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", null);\n\n var output = params.output;\n var value = params.value;\n var valueHelper = params.valueHelper;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n var currency = valueHelper.currency;\n var formatted = \"\";\n var formattedValue = \"\";\n\n formattedValue = this.numberBig({\n options: {\n notAvailable: {\n input: null,\n output: \"\",\n },\n },\n output: output,\n value: value,\n });\n\n switch (output) {\n case \"HTML\": {\n if (currency in _currency.symbol) {\n currency = _currency.symbol[currency];\n }\n\n formatted = [\n '',\n currency,\n \" \",\n formattedValue,\n \"\",\n ].join(\"\");\n break;\n }\n case \"PDF\":\n case \"TEXT\":\n default: {\n formatted = currency + \" \" + formattedValue;\n }\n }\n\n return formatted;\n }\n\n /**\n * Format rating (basket, portfolio, peer, instrument)\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - formatting options\n * @param {boolean} params.options.hasTrendArrow - if true it postfixes trend arrow to rating. Default true\n * @param {object} params.options.notAvailable - (Required) Directive to manage not available case\n * @param {any} params.options.notAvailable.input - not available value\n * @param {any} params.options.notAvailable.output - what to return if params.value is equal to params.options.notAvailable.input\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - additional info that help to format the value correctly\n * @param {number} params.valueHelper.rateChange - date rating change (lr, lrr)\n * @param {number} params.valueHelper.rateDate - date of rating (dr, drr)\n * @param {number} params.valueHelper.ratePrev - previuos rating (usually rrr or null)\n *\n * @returns {string} a formatted string\n */\n rating(params) {\n var hasTrendArrow = this._getOption(params, \"hasTrendArrow\", true);\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", {\n input: null,\n output: \"\",\n });\n\n var output = params.output;\n var value = params.value;\n var valueHelper = params.valueHelper;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n var className = null;\n var formatted = \"\";\n var scale = _rate[\"rating\"];\n var rateMeta = scale[value];\n\n if (rateMeta == null) {\n rateMeta = {\n class: \"format-rate format-rate--missing\",\n color: \"#FF0000\",\n colorChart: \"#FF0000\",\n label: \"-\",\n value: Infinity,\n };\n }\n\n switch (output) {\n case \"HTML\": {\n if (\n valueHelper == null ||\n !(\n \"rateChange\" in valueHelper &&\n \"rateDate\" in valueHelper &&\n \"ratePrev\" in valueHelper\n )\n ) {\n throw new Error(\n 'Missing valueHelper or one of \"rateChange\", \"rateDate\", \"ratePrev\" properties in valueHelper'\n );\n }\n\n var rateChange = valueHelper[\"rateChange\"];\n var rateDate = valueHelper[\"rateDate\"];\n var ratePrev = valueHelper[\"ratePrev\"];\n var ratePrevMeta = scale[ratePrev];\n\n if (rateChange === 0) {\n if (ratePrev !== undefined) {\n // from to\n if (ratePrev !== 0 && value !== 0) {\n formatted = [\n '',\n rateMeta[\"label\"],\n \"\",\n ];\n\n if (hasTrendArrow === true) {\n className =\n value > ratePrev\n ? \"format-alert i-upgrade\"\n : \"format-alert i-downgrade\";\n\n formatted.push(\n [\n '',\n ].join(\"\")\n );\n }\n\n formatted = formatted.join(\"\");\n }\n // first rate\n if (ratePrev === 0 && value !== 0) {\n formatted = [\n '',\n rateMeta[\"label\"],\n \"\",\n ];\n\n if (hasTrendArrow === true) {\n className = \"format-alert i-alert\";\n\n formatted.push(\n [\n '!',\n ].join(\"\")\n );\n }\n\n formatted = formatted.join(\"\");\n }\n }\n } else {\n var rateMetaTitle = null;\n // If there is no rateDate, do not generate the\n // title attribute on element\n if (rateDate != null) {\n rateMetaTitle =\n \"Rated on \" +\n this.date({\n options: {\n notAvailable: {\n input: null,\n output: \"\",\n },\n },\n output: \"TEXT\",\n value: rateDate,\n });\n }\n\n formatted = [\n '',\n rateMeta[\"label\"],\n \"\",\n ].join(\"\");\n }\n\n break;\n }\n case \"PDF\": {\n formatted = [\n '',\n rateMeta[\"label\"],\n \"\",\n ].join(\"\");\n\n break;\n }\n case \"TEXT\":\n default: {\n formatted = rateMeta.label;\n\n break;\n }\n }\n\n return formatted;\n }\n\n /**\n * Format string\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - null or undefined\n * @param {boolean} params.options.hasToEscapeXmlEntities - if true, & are\n * replaced with &. Dafault false\n * @param {object} params.options.notAvailable - (Required) Directive to manage not available case\n * @param {any} params.options.notAvailable.input - not available value\n * @param {any} params.options.notAvailable.output - what to return if params.value === to params.options.notAvailable.input\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - null or undefined\n *\n * @returns {string} a formatted string\n */\n string(params) {\n var hasToEscapeXmlEntities = this._getOption(\n params,\n \"hasToEscapeXmlEntities\",\n false\n );\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", null);\n\n var output = params.output;\n var value = params.value;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n // Set value as string, if if wasn't the case before\n // Do not do this before checking notAvailable\n value = String(value);\n\n function escapeXmlEntities(string) {\n return string.replace(/&/gi, \"&\");\n }\n\n var formatted = \"\";\n switch (output) {\n case \"HTML\": {\n formatted = [\n '',\n value,\n \"\",\n ].join(\"\");\n\n break;\n }\n case \"PDF\":\n case \"TEXT\":\n default: {\n formatted =\n hasToEscapeXmlEntities === true\n ? escapeXmlEntities(value)\n : value;\n\n break;\n }\n }\n\n return formatted;\n }\n\n /**\n * Format taxon\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - formatting options\n * @param {string} params.options.ancestorAtLevel - print ancestor\n * at the ancestorAtLevel instead of the node\n * @param {object} params.options.notAvailable - (Required) Directive to manage not available case\n * @param {any} params.options.notAvailable.input - not available value\n * @param {any} params.options.notAvailable.output - what to return if params.value === to params.options.notAvailable.input\n * @param {object} params.options.taxonomy - the taxonony to which the taxon belongs. Default null\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - null or undefined\n *\n * @returns {string} a formatted string\n */\n taxon(params) {\n // if specified, formatter get the node name up to the specified\n // level starting from value.\n var ancestorAtLevel = this._getOption(params, \"ancestorAtLevel\", null);\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", null);\n // taxonomy\n var taxonomy = this._getOption(params, \"taxonomy\", null);\n\n var output = params.output;\n var value = params.value;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n var formatted = \"\";\n\n if (taxonomy == null || !(value in taxonomy)) {\n return notAvailable[\"output\"];\n }\n\n const taxonomyUtils = new Taxonomy();\n\n switch (output) {\n case \"HTML\": {\n var _formatted = null;\n if (ancestorAtLevel != null) {\n const taxonId = taxonomyUtils.getAncestorByLevel(\n taxonomy,\n value,\n ancestorAtLevel\n );\n _formatted = taxonomy[taxonId].name;\n } else {\n _formatted = taxonomy[value].name;\n }\n\n formatted = `${_formatted}`;\n\n break;\n }\n case \"PDF\":\n case \"TEXT\":\n default: {\n if (ancestorAtLevel != null) {\n const taxonId = taxonomyUtils.getAncestorByLevel(\n taxonomy,\n value,\n ancestorAtLevel\n );\n formatted = taxonomy[taxonId].name;\n } else {\n formatted = taxonomy[value].name;\n }\n\n break;\n }\n }\n\n return formatted;\n }\n\n /**\n * Format Trend Capture Value (TCR)\n *\n * @param {object} params - value and formatting options\n * @param {object} params.options - formatting options\n * @param {object} params.options.notAvailable - (Required) Directive to manage not available case\n * @param {any} params.options.notAvailable.input - not available value\n * @param {any} params.options.notAvailable.output - what to return if params.value is equal to params.options.notAvailable.input\n * @param {string} params.output - supported outputs are: \"HTML\" | \"PDF\" | \"TEXT\"\n * @param {number} params.value - the value to be formatted\n * @param {object} params.valueHelper - null or undefined\n *\n * @returns {string} a formatted string\n */\n tcr(params) {\n // notAvailable is an object with input and output properties\n // if input to be formatted is equal to notAvailable.input\n // then notAvailable.output is returned\n var notAvailable = this._getOption(params, \"notAvailable\", {\n input: null,\n output: \"\",\n });\n\n var output = params.output;\n var value = params.value;\n\n if (value === notAvailable[\"input\"]) {\n return notAvailable[\"output\"];\n }\n\n var formatted = \"\";\n var scale = _rate[\"trendCaptureRating\"];\n var rateMeta = scale[value];\n\n switch (output) {\n case \"HTML\": {\n formatted = [\n '',\n rateMeta[\"label\"],\n \"\",\n ].join(\"\");\n\n break;\n }\n case \"PDF\": {\n formatted = [\n '',\n rateMeta[\"label\"],\n \"\",\n ].join(\"\");\n\n break;\n }\n case \"TEXT\":\n default: {\n formatted = rateMeta.label;\n\n break;\n }\n }\n\n return formatted;\n }\n // ----------------------------------------------------- private methods\n /**\n *\n * Retrieve the specified option. If not available return defaultValue.\n * If defaultValue is not specified returns null\n *\n * @param {object} params - see params structure at the top of this file\n * @param {string} option - the name of the option to be retrived\n * @param {any} defaultValue - the default value to be returned if the\n * option is not defined\n *\n * @returns the value of option\n *\n * @ignore\n */\n _getOption(params, option, defaultValue) {\n defaultValue = defaultValue !== undefined ? defaultValue : null;\n\n let _option =\n \"options\" in params &&\n params[\"options\"] !== undefined &&\n params[\"options\"] != null &&\n option in params[\"options\"] &&\n params[\"options\"][option] !== undefined &&\n params[\"options\"][option] != null\n ? params[\"options\"][option]\n : null;\n\n if (_option == null) {\n _option = defaultValue;\n }\n\n return _option;\n }\n\n /**\n *\n * Helper function to get label for new high new low data\n *\n * @param {number} value - newHL value (integer)\n * @param {object} labels - an object literal with available labels\n *\n * @ignore\n */\n _newHighNewLowHelper(value, labels) {\n var label = \"\";\n\n if (value >= 260) {\n label = labels[\"12m\"];\n } else if (value >= 120) {\n label = labels[\"6m\"];\n } else if (value >= 60) {\n label = labels[\"3m\"];\n } else if (value >= 20) {\n label = labels[\"1m\"];\n } else if (value <= -260) {\n label = labels[\"12m\"];\n } else if (value <= -120) {\n label = labels[\"6m\"];\n } else if (value <= -60) {\n label = labels[\"3m\"];\n } else if (value <= -20) {\n label = labels[\"1m\"];\n }\n\n return label;\n }\n // --------------------------------------------------- getters / setters\n}\n","/**\n * @author Trendrating \n *\n * @module app/utils/Formatter\n * @summary Application data formatter: app specific formatter\n * It uses trendrating/formatter/Formatter internally\n *\n */\n\nimport { Strategy as StrategyFormatter } from \"../app/formatter/Strategy\";\nimport { Formatter as FormatterBase } from \"../formatter/Formatter\";\nimport { Taxonomy } from \"../formatter/Taxonomy\";\n\nexport class Formatter {\n format = null;\n properties = null;\n taxonomy = null;\n taxonomies = null;\n\n // short peer names for pinned objects\n PEER_SHORT_NAMES = {\n \"Developed Markets - Americas\": \"Developed Markets - Americas\",\n \"Developed Markets - Asia Pacific\": \"Developed Markets - Asia\",\n \"Developed Markets - Europe & Middle East\":\n \"Developed Markets - Europe\",\n\n \"Emerging Markets - Asia\": \"Emerging Markets - Asia\",\n \"Emerging Markets - Americas\": \"Emerging Markets - Americas\",\n \"Emerging Markets - Europe, Middle East & Africa\":\n \"Emerging Markets - Europe and Africa\",\n\n \"Frontier Markets - Africa\": \"Frontier Markets - Africa\",\n \"Frontier Markets - Americas\": \"Frontier Markets - Americas\",\n \"Frontier Markets - Asia\": \"Frontier Markets - Asia\",\n \"Frontier Markets - Europe & CIS\": \"Frontier Markets - Europe\",\n \"Frontier Markets - Middle East\": \"Frontier Markets - Middle East\",\n };\n\n SERVER_TYPE_DEFAULT = \"instrument\";\n SERVER_TYPES = [\"Commodity\", \"Currency\", \"ETF\", \"Index\", \"Sector\", \"Stock\"];\n\n constructor(environment) {\n this.format = new FormatterBase();\n this.taxonomy = new Taxonomy();\n this.strategyFormatter = new StrategyFormatter(environment);\n\n this.setProperties(environment[\"properties\"]);\n this.setTaxonomies(environment[\"taxonomies\"]);\n }\n\n /**\n * Custom formatter for special cases\n *\n * @param {string} trendratingFormatterType\n * @param {object} params\n */\n custom(trendratingFormatterType, params) {\n return this.format[trendratingFormatterType](params);\n }\n\n /**\n * Format a value as HTML\n *\n * @param {string} property\n * @param {string} formatterName\n * @param {any} value\n * @param {object} valueHelper\n * @param {string} type\n *\n * @returns {string} a formatted string\n */\n html(property, formatterName, value, valueHelper, type) {\n return this._commonHtmlPdfText(\n property,\n formatterName,\n value,\n valueHelper,\n type,\n \"HTML\"\n );\n }\n /**\n * Format a value suitable for PDF generation\n *\n * @param {string} property\n * @param {string} formatterName\n * @param {any} value\n * @param {object} valueHelper\n * @param {string} type\n *\n * @returns {string} a formatted string\n */\n pdf(property, formatterName, value, valueHelper, type) {\n return this._commonHtmlPdfText(\n property,\n formatterName,\n value,\n valueHelper,\n type,\n \"PDF\"\n );\n }\n /**\n *\n * @param {object} params\n *\n * @param {object} params.item\n * @param {object} params.item.data\n * @param {object} params.item.idInfo\n *\n * @param {object} params.options - formatting options\n * @param {boolean} params.options.isShortened - if true, \"where\" names\n * are shortened. Default true\n * @param {object} params.options.suffixWithName - add name after ticker (instrument type)\n *\n * @param {object} params.taxonomies\n * @param {object} params.taxonomies.size - SizeClassification\n * @param {object} params.taxonomies.what - ICB or ETFclassification\n * @param {object} params.taxonomies.where - MarketsFinancial\n *\n * @returns {string} the name\n */\n pinnedName(params) {\n var isShortened =\n params[\"options\"] != null && \"isShortened\" in params[\"options\"]\n ? params[\"options\"][\"isShortened\"]\n : true;\n var suffixWithName =\n params[\"options\"] != null && \"suffixWithName\" in params[\"options\"]\n ? params[\"options\"][\"suffixWithName\"]\n : false;\n var item = params[\"item\"];\n var taxonomies = params[\"taxonomies\"];\n\n var name = [];\n\n var where = null;\n switch (item[\"idInfo\"][\"type\"]) {\n case \"instrument\": {\n name.push(item[\"data\"][\"ticker\"]);\n\n where = item[\"data\"][\"country\"];\n if (where != null && taxonomies[\"where\"][where] != null) {\n name.push(taxonomies[\"where\"][where][\"name\"]);\n }\n\n if (suffixWithName && item[\"data\"][\"name\"] != null) {\n name.push(item[\"data\"][\"name\"]);\n }\n\n break;\n }\n case \"peer\":\n default: {\n var what = item[\"idInfo\"][\"what\"];\n where = item[\"idInfo\"][\"where\"];\n var _name = this.taxonomy.getWhatAndWhereLabel({\n what: what === \"ICB\" ? null : what,\n whatTaxonomy: taxonomies[\"what\"],\n where: where === \"WWW\" ? null : where,\n whereTaxonomy: taxonomies[\"where\"],\n });\n\n var whereWhat = [];\n if (_name[\"what\"] == null && _name[\"where\"] == null) {\n name.push(\"World\");\n } else {\n // where\n where =\n _name[\"where\"] == null\n ? null\n : _name[\"where\"].replace(\":\", \" - \");\n if (\n isShortened === true &&\n where != null &&\n where in this.PEER_SHORT_NAMES\n ) {\n where = this.PEER_SHORT_NAMES[where];\n }\n\n if (where != null) {\n whereWhat.push(where);\n }\n\n // what\n if (_name[\"what\"] != null) {\n whereWhat.push(_name[\"what\"]);\n }\n\n name.push(whereWhat.join(\" - \"));\n }\n // size\n if (item[\"idInfo\"][\"size\"] != null) {\n var size = taxonomies[\"size\"].get(item[\"idInfo\"][\"size\"]);\n name.push(size[\"name\"]);\n }\n }\n }\n\n return name.join(\" - \");\n }\n\n rankingRule(syntheticRankProperty, rankingRule, instrument, output) {\n var value = instrument[syntheticRankProperty];\n var formatted = \"\";\n\n switch (output) {\n case \"HTML\":\n case \"PDF\":\n case \"TEXT\":\n default: {\n switch (syntheticRankProperty) {\n case \"rank\":\n case \"rankFromDate\": {\n formatted = String(value + 1);\n\n break;\n }\n case \"rankDelta\": {\n formatted = this.custom(\"number\", {\n options: {\n colored: \"positive\",\n decimals: 0,\n hasPositiveSign: true,\n notAvailable: {\n input: null,\n output: \"\",\n },\n },\n output: output,\n value: value,\n valueHelper: null,\n });\n\n break;\n }\n case \"rankList\": {\n formatted = value != null ? String(value + 1) : \"\";\n\n break;\n }\n default: {\n switch (rankingRule[\"function\"]) {\n //case 'inRange': {\n case \"outlier\": {\n if (value === 1) {\n formatted = \"\";\n } else {\n formatted = \"outlier\";\n }\n\n break;\n }\n case \"quantile\": {\n formatted =\n value != null\n ? //? 'q:' + value\n String(value)\n : \"\";\n\n break;\n }\n case \"threshold\": {\n if (value === 1) {\n formatted = \"over\";\n } else {\n formatted = \"under\";\n }\n\n break;\n }\n case \"value\": {\n formatted = this._commonHtmlPdfText(\n rankingRule[\"property\"],\n \"table\",\n instrument[syntheticRankProperty],\n instrument,\n instrument[\"type\"],\n output\n );\n\n break;\n }\n default: {\n formatted = value;\n }\n }\n }\n }\n\n break;\n }\n }\n\n return formatted;\n }\n\n rationale(property, propertyAlias, rationaleObject) {\n var type = rationaleObject[\"type\"].toLowerCase();\n var formatter = this._getFormatter(property, \"table\", type);\n\n var valueHelper = null;\n if (formatter[\"referenceProperties\"] != null) {\n valueHelper = {};\n\n this._resolveReferenceProperties(\n formatter,\n rationaleObject,\n valueHelper\n );\n }\n\n if (property === \"tradedvalue\") {\n return [\n \"USD\",\n this.format[formatter[\"type\"]]({\n options: formatter[\"options\"],\n output: \"HTML\",\n value: rationaleObject[propertyAlias],\n valueHelper: valueHelper,\n }),\n ].join(\" \");\n }\n\n return this.format[formatter[\"type\"]]({\n options: formatter[\"options\"],\n output: \"HTML\",\n value: rationaleObject[propertyAlias],\n valueHelper: valueHelper,\n });\n }\n\n get strategy() {\n return this.strategyFormatter;\n }\n\n /**\n * Format a value suitable for table widget\n *\n * @param {string} property\n * @param {string} formatterName\n * @param {object} instrument\n *\n * @returns {string} a formatted string\n */\n table(property, formatterName, instrument) {\n var type = instrument[\"type\"].toLowerCase();\n var formatter = this._getFormatter(property, formatterName, type);\n\n var propertyServer = formatter[\"backendProperty\"];\n\n var valueHelper = null;\n if (formatter[\"referenceProperties\"] != null) {\n valueHelper = {};\n\n this._resolveReferenceProperties(\n formatter,\n instrument,\n valueHelper\n );\n }\n\n return this.format[formatter[\"type\"]]({\n options: formatter[\"options\"],\n output: \"HTML\",\n value: instrument[propertyServer],\n valueHelper: valueHelper,\n });\n }\n\n /**\n * Format TCR for all types of output\n *\n * @param {number} value\n * @param {string} output\n */\n tcr(value, output) {\n // TODO - peers still have -9999\n if (value === -9999 || value === \"-9999\" || value == null) {\n value = null;\n }\n\n return this.format[\"tcr\"]({\n options: {\n notAvailable: {\n input: null,\n output: \"-\",\n },\n },\n output: output,\n value: value,\n valueHelper: null,\n });\n }\n\n /**\n * Format a value suitable for CSV generation\n *\n * @param {string} property\n * @param {string} formatterName\n * @param {any} value\n * @param {object} valueHelper\n * @param {string} type\n *\n * @returns {string} a formatted string\n */\n text(property, formatterName, value, valueHelper, type) {\n return this._commonHtmlPdfText(\n property,\n formatterName,\n value,\n valueHelper,\n type,\n \"TEXT\"\n );\n }\n\n // ----------------------------------------------------- private methods\n _commonHtmlPdfText(\n property,\n formatterName,\n value,\n valueHelper,\n type,\n output\n ) {\n var formatter = this._getFormatter(\n property,\n formatterName,\n type.toLowerCase()\n );\n\n if (valueHelper != null) {\n var propertyServer = formatter[\"backendProperty\"];\n\n if (propertyServer in valueHelper) {\n value = valueHelper[propertyServer];\n }\n\n this._resolveReferenceProperties(\n formatter,\n valueHelper,\n valueHelper\n );\n }\n\n return this.format[formatter[\"type\"]]({\n options: formatter[\"options\"],\n output: output,\n value: value,\n valueHelper: valueHelper,\n });\n }\n\n _getFormatter(property, formatterName, type) {\n var sourceType = type;\n if (this.properties == null || this.taxonomies == null) {\n console.warn(\"[formatter] Properties or taxonomies not set\", {\n formatterName: formatterName,\n property: property,\n type: sourceType,\n });\n\n return this._getFormatterFallback(property);\n }\n\n type =\n type == null || !(type in this.properties)\n ? this.SERVER_TYPE_DEFAULT\n : type;\n\n if (!(property in this.properties[type])) {\n type = this.SERVER_TYPE_DEFAULT;\n }\n // if property is not even defined in SERVER_TYPE_DEFAULT\n if (!(property in this.properties[type])) {\n console.warn(\n [\n \"[formatter]\",\n property,\n \"for type\",\n sourceType,\n \"not found\",\n ].join(\" \"),\n {\n formatterName: formatterName,\n property: property,\n type: sourceType,\n }\n );\n\n return this._getFormatterFallback(property);\n }\n\n var formatter = this.properties[type][property][\"formatter\"];\n\n if (formatter[formatterName] == null) {\n throw new Error(\n `Formatter ${formatterName} for ${property} is missing`\n );\n }\n\n // taxon support\n if (formatter[formatterName][\"type\"] === \"taxon\") {\n formatter[formatterName][\"options\"][\"taxonomy\"] =\n this.taxonomies[formatter[formatterName][\"taxonomyName\"]];\n }\n\n return formatter[formatterName];\n }\n\n _getFormatterFallback(property) {\n return {\n backendProperty: property,\n options: {\n notAvailable: {\n input: null,\n output: \"\",\n },\n },\n type: \"string\",\n };\n }\n /**\n * Parses a property configuration and prepare options to be\n * suitable by formatting methods\n *\n * @param {string} property\n * @param {object} sourcePropertyConfiguration - raw data from\n * fieldsConfiguration.json\n */\n _preparePropertyConfiguration(property, sourcePropertyConfiguration) {\n var propertyConfiguration = { ...sourcePropertyConfiguration };\n\n if (!propertyConfiguration.hasOwnProperty(\"notAvailable\")) {\n console.warn(\n \"[Misconfigured Property] notAvailable undefined \",\n property,\n propertyConfiguration\n );\n\n return propertyConfiguration;\n }\n\n var formatter = null;\n var formatters = propertyConfiguration[\"formatter\"];\n if (formatters == null) {\n return propertyConfiguration;\n }\n\n var notAvailable = propertyConfiguration[\"notAvailable\"];\n var options = null;\n var outputNotAvailable = null;\n\n for (var formatterName in formatters) {\n formatter = formatters[formatterName];\n options = formatter[\"options\"];\n\n formatter[\"backendProperty\"] =\n propertyConfiguration[\"backendProperty\"];\n\n outputNotAvailable = options[\"notAvailable\"][\"output\"];\n formatter[\"options\"][\"notAvailable\"] = {\n input: notAvailable,\n output: outputNotAvailable,\n };\n\n formatter[\"referenceProperties\"] =\n formatter[\"referenceProperties\"] == null\n ? null\n : formatter[\"referenceProperties\"];\n }\n\n return propertyConfiguration;\n }\n\n _resolveReferenceProperties(formatter, source, target) {\n if (target != null) {\n if (formatter[\"referenceProperties\"] != null) {\n for (var key in formatter[\"referenceProperties\"]) {\n target[key] = source[formatter[\"referenceProperties\"][key]];\n }\n }\n }\n }\n // --------------------------------------------------- getters / setters\n\n setProperties(properties) {\n var serverTypeDefault = this.SERVER_TYPE_DEFAULT;\n var serverTypes = this.SERVER_TYPES;\n\n var _properties = {};\n // specific properties for instruments (ETF, Index, Stock)\n var serverType = null;\n for (let i = 0, length = serverTypes.length; i < length; i++) {\n serverType = serverTypes[i];\n if (serverType in properties) {\n _properties[serverType.toLowerCase()] = properties[serverType];\n }\n }\n // default properties for instruments\n _properties[serverTypeDefault] = {};\n for (const property in properties) {\n if (!serverTypes.includes(property)) {\n _properties[serverTypeDefault][property] = properties[property];\n }\n }\n\n this.properties = { ..._properties };\n\n // setting up input for notAvailable\n for (const clientType in this.properties) {\n for (const property in this.properties[clientType]) {\n this.properties[clientType][property] =\n this._preparePropertyConfiguration(\n property,\n this.properties[clientType][property]\n );\n }\n }\n }\n\n setTaxonomies(taxonomies) {\n this.taxonomies = taxonomies;\n }\n}\n","import { useState } from \"react\";\nimport { Formatter } from \"../trendrating/utils/Formatter\";\nimport { useEnvironment } from \"./useEnvironment\";\n\nexport const useFormatter = () => {\n const { environment } = useEnvironment();\n\n const [formatter] = useState(() => {\n return new Formatter(environment);\n });\n\n return formatter;\n};\n","// Methods used by react-query.\n// Use currying to prepare functions with associated url\nimport axios from \"axios\";\nimport { ProductQuery } from \"../types/Product\";\nimport { environmentTemplate, KnownHostnames } from \"../types/Defaults\";\n\nexport const baseUrl = environmentTemplate.api.uri;\n\n// type getProductFromDataListQuery = {}\n\n//The param path key is needed to select the filepath whe the app is running uder the localhost domain\nexport const getFilePath = (pathKey?: \"all\" | \"longOnly\" | \"longShort\") => {\n const hostname: KnownHostnames = window.location.hostname as KnownHostnames;\n const timestamp = Date.now();\n\n const paths = {\n develop: `/dashboard/main_develop/main_develop.json?ts=${timestamp}`,\n all: `/dashboard/main/main.json?ts=${timestamp}`,\n longShort: `/dashboard/main_shortLong/main_shortLong.json?ts=${timestamp}`,\n };\n switch (hostname) {\n // case \"localhost\":\n // return paths[pathKey ?? \"all\"];\n case \"localhost\":\n case \"longonly.trendrating.com\":\n case \"develop.portfolios.trendrating.com\":\n case \"portfolios.trendrating.com\":\n return paths[\"develop\"];\n // case \"longonly.trendrating.com\":\n // return paths[\"longOnly\"];\n case \"longshortd.trendrating.com\":\n case \"longshort.trendrating.com\":\n return paths[\"longShort\"];\n\n default:\n return paths[\"all\"];\n }\n};\n\nexport const getProducts = (\n baseUrl: string,\n localhostFile: \"all\" | \"longOnly\" | \"longShort\"\n) => {\n return ({ queryKey }: any) => {\n const filepath = getFilePath(localhostFile);\n // const [, { id, dataList }] = queryKey; // ignore first element, not used\n return axios(`${baseUrl + filepath}`);\n };\n};\n\nexport const getProductFromDataList = (baseUrl: string) => {\n return ({ queryKey }: any) => {\n const timestamp = Date.now();\n const [, { id, dataProducts }] = queryKey; // ignore first element, not used\n\n const product: ProductQuery | undefined = dataProducts.data.find(\n (product: any) => product.name === id\n );\n\n if (product == null) {\n throw new Error(`Cannot find product id ${id}`);\n }\n\n const url = `${baseUrl}/${product.type}/${id}/${id}.json?ts=${timestamp}`;\n return axios(url);\n };\n};\n","type TagsUI =\n | \"total_return\"\n | \"annualized_total_return\"\n | \"last_12_months\"\n | \"max_drawdown\"\n | \"avg_yearly_drawdown\"\n | \"monthly_std\"\n | \"sharpe\"\n | \"sterling\"\n | \"beta\"\n | \"one_months_return\"\n | \"three_months_return\"\n | \"six_months_return\"\n | \"one_year_return\"\n | \"two_years_return_annualized\"\n | \"three_years_return_annualized\"\n | \"five_years_return_annualized\"\n | \"ten_years_return_annualized\"\n | \"yearly_performances\"\n | \"quarterly_performances\"\n | \"monthly_performances\"\n | \"yearly_drawdown\"\n | \"quarterly_drawdown\"\n | \"monthly_drawdown\"\n | \"yearly_standard_dev\"\n | \"quarterly_standard_dev\"\n | \"monthly_standard_dev\"\n | \"positive_quarters_perc\"\n | \"negative_quarters_perc\"\n | \"outperforming_quarters_perc\"\n | \"YTD\"\n | \"number_of_holdings\"\n | \"yearly_avg_turnover\"\n | \"performance_equity_1_Y\"\n | \"performance_equity_3_Y\"\n | \"performance_equity_5_Y\"\n | \"annualized_rate_of_Return_equity\";\n\ntype AnalyticsDict = {\n [key in TagsUI]: {\n tag: string;\n property: \"priceAnalytics\" | \"hPosAnalytics\";\n single: boolean;\n };\n};\n\nconst ANALYTICS_DICT: AnalyticsDict = {\n performance_equity_1_Y: {\n tag: \"perf#YEARLY|price#YEARLY,1,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n performance_equity_3_Y: {\n tag: \"perf#YEARLY|price#YEARLY,3,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n performance_equity_5_Y: {\n tag: \"perf#YEARLY|price#YEARLY,5,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n annualized_rate_of_Return_equity: {\n tag: \"perf#YEARLY|price#YEARLY,10,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n total_return: {\n tag: \"perf#H\",\n property: \"priceAnalytics\",\n single: true,\n },\n annualized_total_return: {\n tag: \"perf#H,YEARLY\",\n property: \"priceAnalytics\",\n single: true,\n },\n last_12_months: {\n tag: \"perf#YEARLY|price#YEARLY,1,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n max_drawdown: {\n tag: \"md#H\",\n property: \"priceAnalytics\",\n single: true,\n },\n avg_yearly_drawdown: {\n tag: \"avg|md#YEARLY,1,SOLAR,YEARLY,1,SOLAR|perf#DAILY,1,CALENDAR,DAILY,1,CALENDAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n monthly_std: {\n tag: \"sd|perf#MONTHLY,1,SOLAR,MONTHLY,1,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n sharpe: {\n tag: \"sharpe#H\",\n property: \"priceAnalytics\",\n single: true,\n },\n sterling: {\n tag: \"sterling#H\",\n property: \"priceAnalytics\",\n single: true,\n },\n beta: {\n tag: \"beta#H,B\",\n property: \"priceAnalytics\",\n single: true,\n },\n one_months_return: {\n tag: \"perf|price#MONTHLY,1,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n three_months_return: {\n tag: \"perf|price#QUARTERLY,1,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n six_months_return: {\n tag: \"perf#H|price#MONTHLY,6,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n one_year_return: {\n tag: \"perf#YEARLY|price#YEARLY,1,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n two_years_return_annualized: {\n tag: \"perf#YEARLY|price#YEARLY,2,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n three_years_return_annualized: {\n tag: \"perf#YEARLY|price#YEARLY,3,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n five_years_return_annualized: {\n tag: \"perf#YEARLY|price#YEARLY,5,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n\n ten_years_return_annualized: {\n tag: \"perf#YEARLY|price#YEARLY,10,SOLAR,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n positive_quarters_perc: {\n tag: \"winlose#H,false,1,true,QUARTERLY\",\n property: \"priceAnalytics\",\n single: true,\n },\n negative_quarters_perc: {\n tag: \"winlose#H,false,-1,true,QUARTERLY\",\n property: \"priceAnalytics\",\n single: true,\n },\n outperforming_quarters_perc: {\n tag: \"winloseX#H,false,1,true,QUARTERLY\",\n property: \"priceAnalytics\",\n single: true,\n },\n YTD: {\n tag: \"perf#YEARLY,1,TD,H\",\n property: \"priceAnalytics\",\n single: true,\n },\n\n yearly_performances: {\n tag: \"perf#YEARLY,1,CALENDAR,YEARLY,1,TD,H\",\n property: \"priceAnalytics\",\n single: false,\n },\n quarterly_performances: {\n tag: \"perf#QUARTERLY,1,CALENDAR,QUARTERLY,1,TD,H\",\n property: \"priceAnalytics\",\n single: false,\n },\n monthly_performances: {\n tag: \"perf#MONTHLY,1,CALENDAR,MONTHLY,1,TD,H\",\n property: \"priceAnalytics\",\n single: false,\n },\n yearly_drawdown: {\n tag: \"md#YEARLY,1,CALENDAR,YEARLY,1,TD,H\",\n property: \"priceAnalytics\",\n single: false,\n },\n quarterly_drawdown: {\n tag: \"md#QUARTERLY,1,CALENDAR,QUARTERLY,1,TD,H\",\n property: \"priceAnalytics\",\n single: false,\n },\n monthly_drawdown: {\n tag: \"md#MONTHLY,1,CALENDAR,MONTHLY,1,TD,H\",\n property: \"priceAnalytics\",\n single: false,\n },\n yearly_standard_dev: {\n tag: \"sd#YEARLY,1,CALENDAR,YEARLY,1,TD,H,MONTHLY\",\n property: \"priceAnalytics\",\n single: false,\n },\n quarterly_standard_dev: {\n tag: \"sd#QUARTERLY,1,CALENDAR,QUARTERLY,1,TD,H,MONTHLY\",\n property: \"priceAnalytics\",\n single: false,\n },\n monthly_standard_dev: {\n tag: \"sd#MONTHLY,1,CALENDAR,MONTHLY,1,TD,H,MONTHLY\",\n property: \"priceAnalytics\",\n single: false,\n },\n number_of_holdings: {\n tag: \"constituents#NULL,NULL,NULL,NULL,NULL,NULL,NULL,count\",\n property: \"hPosAnalytics\",\n single: false,\n },\n yearly_avg_turnover: {\n tag: \"turnover#NULL,NULL,FULL,NULL,NULL,FULL,YEARLY\",\n property: \"hPosAnalytics\",\n single: true,\n },\n};\n\nexport class PTag {\n analyticsMap: typeof ANALYTICS_DICT;\n\n constructor(\n private readonly data: Required<{ priceAnalytics: any; hPosAnalytics: any }>\n ) {\n this.analyticsMap = ANALYTICS_DICT;\n }\n\n get(analytics: TagsUI, curve: \"H\" | \"B\" | \"D\") {\n const field = this.analyticsMap?.[analytics]?.property ?? null;\n const tag = this.analyticsMap?.[analytics]?.tag ?? null;\n const isSingleReturn = this.analyticsMap?.[analytics]?.single ?? null;\n\n const curveToSerieID = {\n H: \"H\",\n B: \"B\",\n D: \"DIFF\",\n };\n\n let tagWithSerieId = \"\";\n\n if (tag.includes(\"#H\")) {\n tagWithSerieId = tag?.replace(\"H\", `${curveToSerieID[curve]}`);\n\n if (analytics === \"six_months_return\") {\n tagWithSerieId = tag?.replace(\",H\", `,${curveToSerieID[curve]}`);\n } else {\n tagWithSerieId = tagWithSerieId?.replace(\n \",H\",\n `,${curveToSerieID[curve]}`\n );\n }\n } else if (tag.includes(\",H\")) {\n tagWithSerieId = tag?.replace(\",H\", `,${curveToSerieID[curve]}`);\n } else {\n tagWithSerieId = tag;\n }\n\n if (field && tagWithSerieId && isSingleReturn != null) {\n if (isSingleReturn) {\n const v =\n Object.values(this.data?.[field]?.[tagWithSerieId] ?? [])?.[0] ?? \"\";\n return v;\n } else {\n return this.data?.[field]?.[tagWithSerieId] ?? [];\n }\n }\n }\n}\n","import axios from \"axios\";\nimport { useEffect, useState } from \"react\";\nimport Marquee from \"react-fast-marquee\";\nimport { useQuery } from \"react-query\";\nimport { useEnvironment } from \"../hooks/useEnvironment\";\nimport { useFormatter } from \"../hooks/useFormatter\";\nimport { getFilePath } from \"../queries/products\";\nimport { PTag } from \"../trendrating/api/PTag\";\n\nexport function HomePortfoliosTicker() {\n const { environment } = useEnvironment();\n const formatter = useFormatter();\n const [portfolios, setPortfolios] = useState();\n\n const localhostFile = environment.api.devModeProducts;\n const filepath = getFilePath(localhostFile);\n\n const {\n isLoading: isLoadingProducts,\n error: errorProducts,\n data: dataProducts,\n } = useQuery(\"products\", () => {\n return axios(`${environment.api.uri + filepath}`);\n });\n\n useEffect(() => {\n if (dataProducts == null) {\n return;\n }\n\n let analytics = null;\n let annualizedReturns = null;\n let isPositive = null;\n\n setPortfolios(\n dataProducts.data\n .filter(\n (product: any) =>\n product.type === \"product\" || product.type === \"combined-product\"\n )\n .map((product: any) => {\n analytics = new PTag({\n priceAnalytics: { ...product?.priceAnalytics?.stats } ?? null,\n hPosAnalytics: { ...product?.hPosAnalytics?.stats } ?? null,\n });\n\n annualizedReturns = analytics.get(\"annualized_total_return\", \"H\");\n isPositive = (annualizedReturns ?? 0) >= 0;\n\n return {\n shortName: product.info.name,\n name: `${product.info.name}${\n product.info.positions\n ? ` (${product.info.positions} Stocks)`\n : \"\"\n }`,\n isPositive,\n annualizedRateOfReturn: formatter.custom(\"number\", {\n options: {\n hasPositiveSign: true,\n isPercentage: true,\n notAvailable: {\n input: null,\n output: \"\",\n },\n },\n output: \"TEXT\",\n value: annualizedReturns,\n valueHelper: null,\n }),\n };\n })\n );\n }, [dataProducts, formatter]);\n\n if (isLoadingProducts || portfolios == null) {\n return <>Loading...;\n }\n\n if (errorProducts) {\n return <>Error: errorList;\n }\n\n const data = (\n <>\n {portfolios.map((portfolio: any) => (\n \n {portfolio.name}:\n {portfolio.isPositive ? (\n {portfolio.annualizedRateOfReturn}\n ) : (\n {portfolio.annualizedRateOfReturn}\n )}\n \n ))}\n \n );\n\n return (\n \n {data}\n \n );\n}\n","import { Col, Container, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { paths } from \"../types/Defaults\";\n\nexport function PortfolioHomeLongOnly() {\n return (\n <>\n
\n \n \n \n \n \n \n \n\n \n
\n

\n Looking for a way to boost your returns?\n

\n

\n \n \n Discover our systematic model portfolios\n \n \n

\n
\n
\n

\n Our sophisticated technology and advanced analytics select\n stocks that combine solid fundamentals with strong price\n trends designed to outperform popular benchmarks.\n

\n
\n \n
\n
\n
\n
\n \n <>\n \n \n

The challenge

\n \n \n The new stock market cycle is raising the bar to deliver\n performance.\n
The year 2022 exposed the shortfalls of conventional\n model portfolios.\n
The new market regime of lower returns and higher risks\n is here to stay for a few years.\n
It is time to upgrade the investment framework shifting\n to advanced solutions.\n
The performance dispersion across stocks provides the\n opportunity to outperform.\n
\n \n But profiting from the broad dispersion requires smarter\n strategies, based on sound, logical, well-proven rules,\n executed with rigorous coherence, and unaffected by the\n pitfalls of subjective opinions and emotions.\n \n \n
\n\n \n \n

The opportunity

\n \n \n At Trendrating we like to challenge the status quo and bring a\n fresh view by offering sophisticated, innovative solutions to\n help our clients to maximize investment returns.\n
How? The opportunity is called performance dispersion. It\n is a phenomenon working in any investment universe and it is\n there to be exploited by smart investors.\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
 USDeveloped EuropeAsia Pacific
Benchmark\n SPX +25%\n \n SXXP +25%\n \n MSCI Pacific AC -4%\n
Top 25% Performers\n +56%\n \n +45%\n \n +31%\n
Bottom 25% Performers\n -20%\n \n +6%\n \n -20%\n
\n

2024 Performance Dispersion Facts.

\n \n \n Picking the outperformers while avoiding the underperformers is\n possible only with advanced methodologies, that captures\n critical market insights and check more quality control boxes.\n \n
\n\n \n \n

The solution

\n \n \n The market is very selective and the outperforming stocks\n fulfill two key conditions:\n
\n \n High quality fundamentals + validated positive price trend.\n \n
\n Combining sound principles and pragmatic evidence.\n
\n Good fundamentals offer the foundation for the selection - first\n safety rule.\n
\n A confirmed positive trend is the confirmation that the market\n is rewarding the fundamentals - second safety rule.\n
\n If solid fundamentals are not validated by a positive price\n action then the disconnection highlights a risk, as the selling\n pressure outweighs the buyers flow.\n \n
\n\n \n \n

The advantage

\n \n \n Time tested models, using a unique combination of sound rules,\n combining company's quality parameters and actual price action.\n
\n
\n The benefits are mission critical:\n \n
\n \n \n \n
  • \n \n  Transparency and discipline.\n
  • \n
  • \n \n  Distinctive investment plan.\n
  • \n
  • \n \n  Improved performance.\n
  • \n
  • \n \n  Stronger risk control.\n
  • \n
  • \n \n  Full scalability.\n
  • \n
  • \n \n  Time saving.\n
  • \n
  • \n \n  Cost cutting.\n
  • \n \n \n \n \n \n
    \n \n
    \n
    \n\n
    \n
    \n \n \n \n
    \n
    \n Profit from the performance dispersion with a new generation\n of active model portfolios.\n
    \n
    \n \n See our catalogue, track the performance, compare and\n decide.\n \n
    \n
    \n Sign up and access for free for 30 days.\n
    \n
    \n \n Discover our Systematic model Portfolios\n \n\n \n
    \n Learn how you can use our technology to build your own model\n portfolios.\n
    \n \n \n
    \n
    \n
    \n \n );\n}\n","import { Accordion, Button, Col, Container, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { paths } from \"../types/Defaults\";\nimport { eventBus } from \"../eventBus\";\n\nconst FAQsDict = [\n {\n title:\n \"How many strategies can produce on average double-digit annual returns?\",\n html: (\n

    \n Not many and this is where we differ from other offers. Explore our\n catalog and analyze the detailed performance data across 10 years of\n market history. Compare to what you currently use and start tracking the\n returns of our systematic model portfolios vs. the benchmark.\n

    \n ),\n },\n {\n title:\n \"Why do our model portfolios outperform many active and passive products?\",\n html: (\n

    \n Because our approach is 100% rule-based and systematic. In our\n experience personal opinions, assumptions and untested methodologies\n often deliver erratic results. We believe in executing hard testing and\n objective validation of the rules governing the selection process across\n a long history covering different market cycles. We like to objectively\n assess and prove where alpha is coming from, and to check all the right\n boxes, that improve the odds to deliver superior performance\n consistently.\n

    \n ),\n },\n {\n title: \"Why are these model portfolios better than most others??\",\n html: (\n

    \n Because they combine two key elements: Careful selection of\n well-validated rules and systematic execution. Our rule-based,\n systematic methodology offers: A Transparent, pragmatic set of\n investment criteria that deliver real alpha. The Possibility to test and\n validate. A flawless, coherent execution. Exclusion of human biases,\n emotions, unproven assumptions and subjective opinions. Rigorous and\n prompt risk control. A smart process to profit from price trends.\n

    \n ),\n },\n {\n title: \"What is the rationale of the selection process?\",\n html: (\n

    \n Our rigorous selection process is checking the two key boxes to perform\n – good growth metrics (sales and earnings) and validated, actual\n positive price trends. This offers the opportunity to exploit the\n performance dispersion across stocks capturing the outperformers that\n show strong uptrends supported by sound fundamentals.\n

    \n ),\n },\n {\n title: \"Why is the turnover high in some strategies?\",\n html: (\n

    \n The market is moving fast and maximizing returns may require prompt,\n active management. The turnover is a price to pay if one wants to\n achieve superior performance consistently over time.\n

    \n ),\n },\n {\n title: \"How many stocks are in a portfolio?\",\n html: (\n

    \n Most portfolios hold 30 stocks. Sometimes the number of stocks selected\n can be lower than the maximum number if there are not enough stocks\n satisfying the quality rules of the model during a given rebalance\n period.\n

    \n ),\n },\n {\n title: \"How consistent is the outperformance of the model portfolios?\",\n html: (\n

    \n You can check the number of positive years and quarters in the tables to\n get an idea of the historical consistency in terms of outperformance vs.\n the benchmark.\n

    \n ),\n },\n {\n title: \"What is the difference from other model portfolios?\",\n html: (\n
      \n
    • \n

      \n Consistency of superior performance across all the systematic model\n portfolios. The offer from other providers is often a list of\n portfolios with a vast difference in returns over the years. One\n must be lucky to pick the right model portfolio.\n

      \n
    • \n
    • \n

      \n Full transparency with a rich set of performance data, including\n yearly, quarterly and monthly statistics and the percentage of\n winning quarters. All this information is not usually available in\n other services. We can offer a detailed disclosure of the numbers as\n we feel strongly about the true value and the consistency of our\n model portfolios across market cycles.\n

      \n
    • \n
    • \n

      \n Personal support from our team at no cost. Full assistance with the\n possibility to personalize the portfolios, accommodating different\n goals (fewer stocks, lower turnover and more)\n

      \n
    • \n
    \n ),\n },\n];\n\nexport function PortfolioHomeClassic() {\n return (\n <>\n
    \n \n
    \n
    \n

    \n \n Discover how to maximize the returns from your equity\n exposure.\n {\" \"}\n Learn the enhanced value that a rule-based, systematic\n methodology can deliver. Profit from an advanced investment\n process that consistently beats the conventional, common model\n portfolios.\n
    \n \n Our rule-based, systematic model portfolios are designed to\n outperform indices and funds across different market cycles.\n \n

    \n
    \n
    \n \n \n
    \n \n The Trendrating difference – we deliver superior performance\n with consistency across all the portfolios and across all the\n years. Examples of systematic model portfolios:\n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    Performance (Annualized Returns)
    1 Year5 Years10 Years
    Absolutevs. BenchmarkAbsolutevs. BenchmarkAbsolutevs. BenchmarkSharpe Ratio
    US Strategy 138,85%16,40%28,34%15,64%25,64%14,36%1,39
    EU Strategy 130,60%17,26%23,65%18,35%25,18%21,61%1,43
    Asia Strategy 133,32%23,14%17,13%16,71%17,43%16,83%0,89
    \n
    \n \n
    \n \n \n \n See the full directory\n \n \n \n
    \n\n
    \n
    \n

    The performance of funds and ordinary portfolios

    \n

    \n Over a 15-year horizon, more than 70% of actively managed funds\n failed to outperform their comparison index in 38 out of the 39\n categories of equity funds, according to SPIVA scorecard. Many\n managed accounts and model portfolios underperform the benchmarks\n during bull trends and record double-digit losses in the bear\n market, as it was in 2022. Why these disappointing results?
    \n
    There are multiple reasons including subjective decisions\n based on assumptions and theories not properly tested and\n validated. The protection of the status quo and personal opinions\n are the main weaknesses of discretionary portfolio management.\n

    \n
    \n
    \n
    \n\n
    \n
    \n
    \n

    The rational solution

    \n

    \n The stock market is complex and impacted by a variety of factors.\n The only way to capture the opportunities while limiting the risks\n is to find the facts that govern the price trend of stocks. A\n rigorous historical test of any rule and parameter used for stock\n picking is the only way to discover what works and what does not.\n The ability to combine different parameters, and compare the\n performance across the cycles is critical to discovering the\n winning mix.\n

    \n
    \n
    \n\n \n \n \n

    \n \n \n The systematic approach Is the future of portfolio\n management\n \n \n

    \n\n
    \n
    \n

    \n Fact-finding. Discover critical insights\n about what parameters are the best to identify outperforming\n stocks.\n

    \n

    \n \n Design, test and optimize rule-based investment\n strategies.\n {\" \"}\n Explore different combinations of selection rules and\n discover the most productive to maximize the performance and\n control risks.\n

    \n

    \n Systematically execute the strategy.{\" \"}\n Guarantee operational discipline and consistency of results.\n

    \n
    \n
    \n \n
    \n
    \n\n \n \n \n

    \n \n ADVANTAGES\n \n

    \n\n
    \n
    \n

    \n Generate higher returns. If you want to get\n more from your listed equities exposure consider our smart\n model portfolios. Go to the catalogue and analyse the\n performance across years. Compare to what you currently have\n and decide.\n

    \n

    \n Save on the fees. Stop paying rich fees for\n average products and managed accounts.\n

    \n

    \n \n Get a more robust, consistent portfolio management.\n {\" \"}\n Our systematic approach guarantees active strategies based\n on well-defined rules and extensive validation via massive\n testing. Avoid the uncertain quality of investment decisions\n based on a discretionary, subjective approach, that can\n produce inconsistent results.\n

    \n

    \n Gain full transparency. Use our model\n portfolios to get total transparency on the holdings and\n gain extra quality control for your portfolio.\n

    \n

    \n Easy execution. The model portfolios\n require a simple rebalancing at the end of the\n month/quarter. All it takes is to send the list of stocks to\n your broker/bank for execution.\n

    \n
    \n
    \n \n
    \n \n \n eventBus.dispatch(\"show-user-login-box\", true)}\n className=\"home-button-action button-zoom btn btn-lg mt-3 me-1 btn-primary px-5 fs-3 btn-rounded\"\n >\n Sign up to learn more\n \n \n \n \n \n \n Discover our Systematic Model Portfolios\n \n \n \n
    \n \n \n \n
    \n
    \n
    \n \n Systematic Approach\n
    \n \n Discretionary Approach\n
    \n
    \n\n
    \n
    \n

    \n Transparency of the selected investment rules and\n parameters for selection and allocation.\n

    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n\n
    \n
    \n

    \n Coherent, rigorous execution, consistent to the chosen\n process.\n

    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n\n
    \n
    \n

    Prompt, disciplined risk control.

    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n\n
    \n
    \n

    \n Possibility to execute historical tests across market\n cycles. Hard evidence and rigorous validation.\n

    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n \n \n \n\n
    \n
    \n \n \n \n
    \n \n How the Trendrating model works\n \n

    \n At Trendrating, we like to execute hard testing and\n objective validation of the selection process across a long\n history covering different market cycles. We like to\n objectively assess and prove where alpha is coming from, and\n to check all the right boxes, that improve the odds to\n deliver superior performance consistently.
    \n
    \n Our approach is 100% systematic, with no\n human interaction and subjective influence. The rules used\n to select stocks are massively tested across 15 years and\n are combined and weighted using our algorithmic models.{\" \"}\n Profiting from the broad performance\n dispersion across stocks requires a well-tested sequence of\n selection rules. Our Systematic Model Portfolios select\n stocks that combine the{\" \"}\n most productive fundamentals with{\" \"}\n confirmed positive price trends.\n

    \n\n
      \n
    • \n The sound fundamentals provide the\n foundation of strong expected returns.\n
    • \n
    • \n The trend validation filters out down\n trends and substantiates the market interest (selecting\n only good stocks).\n
    • \n
    \n
    \n \n \n
    \n
    \n
    \n \n
    \n \n \n eventBus.dispatch(\"show-user-login-box\", true)}\n className=\"home-button-action button-zoom btn btn-lg mt-3 me-1 btn-primary px-5 fs-3 btn-rounded\"\n >\n Sign up to learn more\n \n \n \n \n \n \n Discover our Systematic Model Portfolios\n \n \n \n
    \n
    \n
    \n\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n eventBus.dispatch(\"show-user-login-box\", true)}\n className=\"home-button-action button-zoom btn btn-lg mt-3 me-1 btn-primary px-5 fs-3 btn-rounded\"\n >\n Sign up to learn more\n \n \n \n \n \n \n Discover our Systematic Model Portfolios\n \n \n \n \n
    \n
    \n \n );\n}\n\nconst FAQ = ({\n question,\n children,\n eKey,\n}: {\n question: string;\n children: JSX.Element;\n eKey: string;\n}) => {\n return (\n \n \n

    {question}

    \n
    \n {children}\n
    \n );\n};\n\nconst FAQs = ({ FAQs }: { FAQs: { title: string; html: JSX.Element }[] }) => {\n return (\n <>\n

    FAQ

    \n \n {FAQs.map((f, i) => {\n return (\n \n );\n })}\n \n \n );\n};\n","import { Col, Container, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { paths } from \"../types/Defaults\";\nimport { useState } from \"react\";\n\nexport function PortfolioHomeLongShort() {\n const [showMore, setShowMore] = useState(false);\n\n return (\n <>\n
    \n \n \n \n \n \n \n \n\n \n
    \n

    \n

    \n A new disruptive solution for portfolio managers is here. In\n the changed stock market cycle strategies that work in a\n bull trend can disappoint. Active strategies combining long\n and short exposure on stocks are better tuned to the new\n course exploiting the trends dispersion and providing\n attractive returns and low risks. Exploit the performance\n dispersion.\n

    \n

    \n\n \n \n \n \n \n {/* */}\n \n \n \n \n \n {/* */}\n \n \n \n \n \n {/* */}\n \n {/* \n \n \n \n \n */}\n \n \n \n \n {/* */}\n \n
     USDeveloped EuropeAsia Pacific
    Benchmark\n SPX +25%\n \n SXXP +25%\n \n MSCI Pacific AC -4%\n
    Top 25% Performers\n +56%\n \n +45%\n \n +31%\n
    Mid 50% Performers\n +2.28%\n \n -7.82%\n \n -2.27%\n
    Bottom 25% Performers\n -20%\n \n +6%\n \n -20%\n
    \n

    2024 Performance Dispersion Facts.

    \n\n

    \n \n \n Discover our systematic model portfolios\n \n {/* Keep this comment \n {isLogged ? (\n \n Discover our smart model\n portfolios\n \n ) : (\n \n eventBus.dispatch(\n \"show-user-login-box\",\n true\n )\n }\n className=\"btn btn-lg btn-primary fs-2 button-zoom btn-rounded\"\n type=\"button\"\n >\n Discover our smart model\n portfolios\n \n )} */}\n \n

    \n
    \n \n
    \n
    \n
    \n\n
    \n
    \n \n \n \n
    \n
    \n Profit from the performance dispersion with a new generation\n of active model portfolios.\n
    \n
    \n \n See our catalogue, track the performance, compare and\n decide.\n \n
    \n
    \n \n\n \n {\n setShowMore(!showMore);\n }}\n className=\"knowMoreBtn button-zoom fs-2 px-5 py-2\"\n >\n {showMore ? \"Less\" : \"More\"}{\" \"}\n {showMore ? (\n \n ) : (\n \n )}\n
    \n \n\n <>\n {showMore && (\n \n
    \n \n \n The challenge\n \n
    \n \n The new market cycle is changing the game for product\n issuers. The end of the 12 years bull market will expose\n the inadequacy of many investable products that prospered\n in the good days. As investors realize that a passive\n product can be a source of repetitive losses, they will\n shift assets elsewhere. And the opportunity is filling the\n inevitable future demand of intelligent products that can\n deliver gains also in a low to negative returns cycle that\n can last years.\n \n \n
    \n \n \n The solution\n \n
    \n \n The way forward is advanced active management, profiting\n from the recurrent performance dispersion inherent in any\n investment universe across different market cycles.\n Farsighted operators launching innovative products will\n capture a significant share of the assets reallocation at\n the expense of those that will persist with a conventional\n offer range, detached from the new course. Trendrating\n solution can support the launch of long and short products\n combining fundamentals and trend capture models.\n \n \n \n )}\n \n \n \n \n
    \n \n \n \n \n Trendrating Rating Grades Helps Separate the Winners from the\n Losers\n \n \n \n \n \n \n \n \n \n (Example for illustration purpose only.)\n \n \n \n \n Our systematic model portfolios use a systematic strategy\n combining fundamentals and our trend discovery model.\n
    \n We look for a logical combination of solid foundation for\n supporting a trend and pragmatic confirmation that the right\n trend is in motion.\n
    \n \n \n \n \n {/* \n \n \n */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
     USDeveloped EuropeAsia Pacific
    Good valueLowest price/earnings and lowest price/sales \n + positive trend rating (A{\" \"}\n and\n B)\n LONG POSITIONS
    Poor valueHighest price/earnings and highest price/sales \n + negative trend rating (C{\" \"}\n and\n D)\n SHORT POSITIONS
    Strong growthHighest growth of sales and earnings \n + positive trend rating (A{\" \"}\n and\n B)\n LONG POSITIONS
    Weak growthLowest growth of sales and earnings \n + negative trend rating (C{\" \"}\n and\n D)\n SHORT POSITIONS
    \n \n
    \n
    \n
    \n\n
    \n
    \n \n \n \n
    \n Delivering superior returns on a consistent basis requires the\n adoption of advanced analytics and models that can capture the\n increasing dispersion of performance in any investment universe.\n
    \n \n
    \n
    \n
    \n\n
    \n
    \n\n \n \n \n
    \n
    \n What \n

    \n we offer long and short strategies designed to:\n

    \n \n
  • \n \n  Profit from the performance dispersion across\n stocks.\n
  • \n
  • \n \n  Maximize investment returns.\n
  • \n
  • \n \n  Reduce risks.\n
  • \n \n
    \n
    \n \n {/* --- */}\n \n
    \n
    \n Why\n

    \n Stock markets are now in a new, more challenging cycle.\n Volatility, low returns are here to stay. Long and short\n strategies are better tuned to handle the current market\n course.\n {/*
    \n The market cycles over the last 40 years: */}\n

    \n {/* \n
  • \n 1982-1999 annualized return 15.34% (\n High return\n ).\n
  • \n
  • \n 2000-2010 annualized return 0.7% (\n Low return\n ).\n
  • \n
  • \n 2011-2021 annualized return 11% (\n High return\n ).\n
  • \n
  • \n 2022 - until when ? (\n Low return\n ).\n
  • \n */}\n
    \n
    \n \n {/* --- */}\n \n
    \n
    \n How\n

    \n Trendrating Systematic Model Portfolios provides a list of\n well tested investment strategies with different risk/reward\n profiles that are easy to track, validate and execute.\n
    \n Select your strategy and capture the benefits of our unique\n solution, based on state of the art systematic models.\n

    \n
    \n
    \n \n
    \n
    \n\n \n \n \n \n

    \n \n Using a strategy that combines long and short positions can\n offer a plan to achieve interesting returns while reducing\n risks.\n \n
    \n \n Sign up and access for free for 30 days.\n \n

    \n
    \n \n
    \n
    \n
    \n\n
    \n \n \n \n Benefits\n \n \n  Full transparency and testability.\n \n \n \n  Superior performance.\n \n \n \n  Full scalability.\n \n \n \n  Save time.\n \n \n \n  Costs reduction.\n \n \n \n  Launch new products and generate additional revenues.\n \n \n \n \n
    \n
    \n
    \n \n \n \n \n Discover our Systematic Model Portfolios\n \n \n \n \n
    \n \n );\n}\n","import { ReactNode, useEffect, useState } from \"react\";\nimport { Col, Container, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { useAuth } from \"../hooks/useAuth\";\nimport { KnownHostnames, paths } from \"../types/Defaults\";\nimport { Footer } from \"./Footer\";\nimport { Header } from \"./Header\";\nimport { HomePortfoliosTicker } from \"./HomePortfoliosTicker\";\nimport { PortfolioHomeLongOnly } from \"./PortfolioHomeLongOnly\";\nimport { PortfolioHomeClassic } from \"./PortfolioHomeClassic\";\nimport { PortfolioHomeLongShort } from \"./PortfolioHomeLongShort\";\n\ntype HomeWrapProps = {\n children?: ReactNode;\n isLogged: boolean;\n viewType: \"longOnly\" | \"longShort\" | \"portfolios\";\n};\n\nconst HomeWrap = ({ children, isLogged, viewType }: HomeWrapProps) => {\n return (\n
    \n
    \n
    \n {/*
    */}\n {/*Keep this comment \n {isLogged ? (\n \n \n Go to Catalog\n \n
    \n }\n />\n ) : (\n
    \n )}*/}\n \n \n Discover our Model Portfolios\n \n
    \n }\n />\n \n {children}\n \n