{"version":3,"sources":["services/api.js","services/scanApi.js","constants/index.js","services/chainApi.js","store/reducers/tipSlice.js","store/reducers/proposalSlice.js","store/reducers/bountySlice.js","utils/index.js","store/reducers/burntSlice.js","store/reducers/chainSlice.js","store/reducers/linkSlice.js","store/reducers/accountSlice.js","store/reducers/overviewSlice.js","store/reducers/incomeSlice.js","store/reducers/menuSlice.js","store/reducers/nodeSlice.js","store/reducers/projectSlice.js","store/reducers/toastSlice.js","store/reducers/descriptionSlice.js","store/reducers/index.js","store/index.js","services/websocket.js","components/Container.js","App/components.js","components/ScrollToTop.js","pages/Header/Logo.js","components/Card.js","services/identity.js","utils/hooks.js","utils/useUpdateNodesDelay.js","components/ExternalLink.js","pages/Header/ScanHeight.js","components/Button.js","pages/Header/MenuSwitch.js","pages/Header/MainHeader.js","pages/Header/TipsMenu.js","pages/Header/ProposalsMenu.js","pages/Header/BountiesMenu.js","pages/Header/DemocracySlashMenu.js","pages/Header/StakingSlashMenu.js","pages/Header/IdentitySlashMenu.js","pages/Header/InflationMenu.js","pages/Header/OthersIncomeMenu.js","pages/Header/ProjectsMenu.js","pages/Header/TansfersSlashMenu.js","pages/Header/BreadCrumbs.js","pages/Header/SubHeader.js","pages/Header/index.js","components/Text.js","components/TextMinor.js","pages/Footer/index.js","components/Table.js","components/TableLoading.js","components/User/Username.js","components/User/Avatar.js","components/User/Badge.js","components/ExplorerLink.js","components/User/DeletedAccount.js","components/User/index.js","components/PairText.js","components/Balance.js","components/RightButton.js","components/PairTextVertical.js","pages/Tips/ReasonText.js","components/TableNoDataCell.js","components/ClickableLink.js","pages/Tips/ReasonLink.js","pages/Tips/TipsTable.js","components/Select.js","pages/Tips/Filter.js","components/pagination/leftAngel.js","components/pagination/leftAngleGrey.js","components/pagination/rightAngle.js","components/pagination/rightAngleGrey.js","components/Pagination.js","components/ResponsivePagination.js","pages/Tips/index.js","components/PolygonLabel.js","components/RelatedLinks.js","pages/Proposals/BeneficiaryContent.js","pages/Proposals/DescriptionCell.js","pages/Proposals/ProposalsTable.js","components/CountDown.js","styles/index.js","components/TimePeriod.js","components/BlocksTimeDefaultUnit.js","components/BlocksTime.js","pages/Proposals/Summary.js","pages/Proposals/Filter.js","pages/Proposals/index.js","pages/Bounties/BountiesTable.js","pages/Bounties/index.js","components/TableCell.js","pages/TipDetail/InformationTable.js","pages/Timeline/Circle.js","pages/Timeline/Label.js","pages/Timeline/Bar.js","pages/Timeline/CardItem.js","components/GrayImage.js","pages/Timeline/ImageButton.js","pages/Timeline/ButtonList.js","components/DateShow.js","pages/Timeline/Item.js","pages/Timeline/FoldableItem.js","pages/Timeline/index.js","components/LinkItem.js","components/Divider.js","pages/RelatedLinks/index.js","components/Progress.js","pages/TipDetail/TipCountDownLabel.js","components/BarProgress.js","components/TimeElapsed.js","components/Label.js","components/TimeLabel.js","components/ElapsedTimeLabel.js","pages/TipDetail/TipLifeCycleTable.js","pages/TipDetail/Funder.js","components/TimelineCommentWrapper.js","components/DetailTableWrapper.js","pages/TipDetail/index.js","pages/ProposalDetail/InformationTable.js","pages/ProposalDetail/ProposalLifeCycleTable.js","components/Voter.js","components/Proposer.js","pages/ProposalDetail/index.js","pages/BountyDetail/InformationTable.js","pages/BountyDetail/BountyLifeCycleTable.js","pages/BountyDetail/index.js","pages/Overview/Summary.js","pages/Overview/ProposerTable.js","pages/Overview/BeneficiaryTable.js","pages/Overview/CustomLabel.js","pages/Overview/CustomList.js","pages/Overview/TotalStacked/Chart.js","pages/Overview/TotalStacked/index.js","components/CustomDoughnut.js","pages/Overview/Total.js","pages/Overview/DoughnutCard.js","pages/Overview/Income.js","pages/Overview/Output.js","pages/Overview/index.js","pages/Projects/NameCell.js","pages/Projects/DateCell.js","components/ProjectProposals.js","components/ProjectExpense.js","pages/Projects/ProjectsTable.js","pages/Projects/index.js","pages/ProjectDetail/RelatedLinks.js","components/Title.js","pages/ProjectDetail/Detail.js","pages/ProjectDetail/Proposals.js","pages/ProjectDetail/InformationTable.js","pages/ProjectDetail/index.js","pages/Toast/ToastItem.js","pages/Toast/index.js","pages/DemocracySlash/SlashTable.js","pages/DemocracySlash/index.js","pages/IdentitySlash/SlashTable.js","pages/IdentitySlash/index.js","pages/StakingSlash/SlashTable.js","pages/StakingSlash/index.js","pages/Inflation/InflationTable.js","pages/Inflation/index.js","pages/OthersIncome/OthersIncomeTable.js","pages/OthersIncome/index.js","pages/TransfersSlash/TransfersSlashTable.js","pages/TransfersSlash/index.js","components/Address.js","pages/AdminLogin/index.js","App/index.js","GlobalStyle.js","index.js"],"names":["paramsKeyConvert","str","replace","s","toLowerCase","Api","endpoint","fetch","path","params","options","url","URL","Object","keys","key","searchParams","set","Promise","resolve","reject","a","window","resp","status","json","data","error","message","result","this","ScanApi","process","TEXT_DARK_MAJOR","TEXT_DARK_MINOR","PRIMARY_THEME_COLOR","SECONDARY_THEME_COLOR","TipStatus","tipStatusMap","NewTip","tip","TipRetracted","TipClosed","DEFAULT_EDGEWARE_NODES","name","CHAINS","apiInstanceMap","Map","nodeUrl","localNodeUrl","JSON","parse","localStorage","getItem","e","edgeware","find","item","getApi","queryUrl","has","ApiPromise","create","provider","WsProvider","typesBundle","spec","get","getTipCountdown","api","consts","tips","tipCountdown","toNumber","signMessage","text","address","isWeb3Injected","web3FromAddress","injector","stringToHex","signer","signRaw","type","signature","extractBlockTime","extrinsics","setTimeExtrinsic","ex","method","section","toJSON","args","now","getBlockTime","number","rpc","chain","getBlockHash","hash","getBlock","block","time","DEFAULT_TIME","BN","THRESHOLD","BN_THOUSAND","div","BN_TWO","estimateBlocksTime","blocks","blockTime","babe","expectedBlockTime","difficulty","targetBlockTime","subspace","timestamp","minimumPeriod","gte","mul","query","parachainSystem","value","bnToBn","tipSlice","createSlice","initialState","items","page","pageSize","total","loading","tipDetail","loadingTipDetail","reducers","setTips","state","payload","setLoading","setTipDetail","setLoadingTipDetail","setTipCountdown","actions","tipFinalStates","showStatusMap","normalizeTip","showTime","includes","latestState","showStatus","normalizedTipListSelector","createSelector","map","loadingSelector","tipDetailSelector","normalizedTipDetailSelector","loadingTipDetailSelector","tipCountdownSelector","tipFindersFeeSelector","tipFindersFee","proposalSlice","proposals","proposalDetail","loadingProposalDetail","proposalSummary","numOfOngoing","numOfApproved","numOfAwarded","setProposals","setProposalDetail","setLoadingProposalDetail","setProposalSummary","proposalListSelector","proposalDetailSelector","loadingProposalDetailSelector","proposalSummarySelector","bountySlice","bounties","bountyDetail","loadingBountyDetail","setBounties","setBountyDetail","setLoadingBountyDetail","bountyListSelector","bountyDetailSelector","loadingBountyDetailSelector","getPrecision","chainSymbol","str2","strEqualIgnoreCase","toPrecision","precision","paddingZero","Number","big","BigNumber","dividedBy","Math","pow","toFixed","stringCamlToWords","stringUpperFirst","dayjs","extend","duration","getLinkNameAndSrc","link","src","host","endsWith","match","m","sleep","setTimeout","toLocaleStringWithFixed","num","fixed","toLocaleString","undefined","minimumFractionDigits","abbreviateBigNumber","x","n","fmt","decimalSeparator","groupSeparator","groupSize","divideBy","bigNumbers","bigNumber","abbr","forEach","isGreaterThan","suffix","config","FORMAT","toFormat","burntSlice","treasury","free","burnPercent","setTreasury","fetchTreasury","dispatch","system","account","burn","treasurySelector","burnt","chainSlice","currentBlockHeight","scanHeight","spendPeriod","blockNumber","periodTime","restTime","restBlocks","progress","setChain","setCurrentBlockHeight","setScanHeight","setSpendPeriod","fetchSpendPeriod","derive","bestNumber","goneBlocks","mod","sub","muln","scanHeightSelector","spendPeriodSelector","chainSelector","chainSymbolSelector","toUpperCase","linkSlice","links","setLinks","TipIndex","tipIndex","Error","blockHeight","parseInt","tipHash","fetchLinks","index","pluralize","addLink","description","stringify","headers","Signature","body","removeLink","linkIndex","linksSelector","accountSlice","setAccount","removeAccount","isLoginSelector","nowAddressSelector","overviewSlice","overview","bestProposalBeneficiaries","bestTipFinders","count","bounty","unFinished","all","proposal","output","income","inflation","others","slash","slashSeats","democracy","identity","staking","statsHistory","setOverview","setStatsHistory","totalProposalCountSelector","totalTipCountSelector","totalBountyCountSelector","overviewSelector","statsHistorySelector","incomeSlice","democracySlashList","democracySlashListLoading","identitySlashList","identitySlashListLoading","stakingSlashList","stakingSlashListLoading","inflationList","inflationListLoading","transferListLoading","transferList","othersIncomeList","othersIncomeListLoading","democracySlash","identitySlash","stakingSlash","transfer","setCount","setDemocracySlashList","setDemocracySlashListLoading","setIdentitySlashList","setIdentitySlashListLoading","setStakingSlashList","setStakingSlashListLoading","setInflationList","setInflationListLoading","setOthersIncomeList","setOthersIncomeListLoading","setTransferList","setTransferListLoading","incomeCountSelector","democracySlashListSelector","democracySlashListLoadingSelector","identitySlashListSelector","identitySlashListLoadingSelector","stakingSlashListSelector","stakingSlashListLoadingSelector","inflationListSelector","inflationListLoadingSelector","othersIncomeListSelector","othersIncomeListLoadingSelector","transferListSelector","transferListLoadingSelector","menuSlice","showMenuTabs","setShowMenuTabs","showMenuTabsSelector","menu","nodeSlice","currentNode","nodes","setCurrentNode","refresh","beforeUrl","setItem","update","location","href","setNodesDelay","node","delay","currentNodeSelector","nodesSelector","projectSlice","projects","projectDetail","loadingProjectDetail","setProjects","setProjectDetail","setLoadingProjectDetail","projectsSelector","projectDetailSelector","toastSlice","toasts","addToast","toastId","unshift","id","removeToast","filter","toastsSelector","toast","descriptionSlice","setDescription","fetchDescription","descriptionSelector","combineReducers","tipsReducer","linksReducer","proposalsReducer","bountiesReducer","burntReducer","chainReducer","accountReducer","overviewReducer","toastReducer","incomeReducer","menuReducer","nodeReducer","projectsReducer","descriptionReducer","store","configureStore","reducer","rootReducer","chainStatusRoom","overviewRoom","socket","Container","styled","Wrapper","PageWrapper","withRouter","history","useEffect","unlisten","listen","scrollTo","ImgFullWrapper","ImgShortWrapper","Divider","Label","Logo","symbol","height","Card","cachedIdentities","pendingQueries","delayQuery","debounce","pending","size","chainAddresses","idNameSplits","split","push","addresses","Accept","then","identities","idName","chainOfIdName","addrOfIdName","catch","fetchIdentity","useWindowSize","useState","setSize","useLayoutEffect","updateSize","innerWidth","innerHeight","addEventListener","removeEventListener","displayCache","useIdentity","setName","badgeData","setBadgeData","isMounted","getIdentity","info","display","useQuery","URLSearchParams","useLocation","search","useIsMounted","useRef","current","useDisablePopup","disabledPopup","setDisabledPopup","width","usePreload","Image","useOutsideClick","ref","cb","handleClickOutside","event","contains","target","document","useLocalStorage","initialValue","console","storedValue","setStoredValue","valueToStore","Function","fetchApiTime","startTime","Date","endTime","timeout","ms","testNet","race","useUpdateNodesDelay","nodesSetting","useSelector","useDispatch","updateNodeDelay","intervalId","setInterval","updateNodes","length","updateNode","clearInterval","ExternalLink","children","rel","onClick","stopPropagation","NetworkWrapper","NetworkButton","button","p","isActive","css","NetworkItemWrapper","NetworkItem","ScanHeightWrapper","Icon","DarkMinorLabel","DarkMajorLabel","Button","SymbolItem","SymbolWrapper","ScanHeight","currentNodeSetting","networkOpen","setNetworkOpen","netWorkRef","symbolOpen","setSymbolOpen","symbolRef","currentNetwork","currentNetworkImg","className","nodeName","switchNetwork","isNaN","CustomButton","StyledButton","active","MenuSwitch","menuTabsName","switcher","useCallback","header","FlexWrapper","Left","Right","MenuIcon","MainHeader","menuShow","setMenuShow","pathname","startsWith","useMenuTab","menuWrap","menuIconSrc","to","style","TipsMenu","tipsCount","Menu","Item","ProposalsMenu","proposalsCount","BountiesMenu","bountiesCount","DemocracySlashMenu","incomeCount","StakingSlashMenu","IdentitySlashMenu","InflationMenu","OthersIncomeMenu","ProjectsMenu","TransfersSlashMenu","Caret","viewBox","fill","xmlns","d","stroke","strokeOpacity","strokeWidth","strokeLinecap","strokeLinejoin","BreadCrumbs","breadCrumbs","breadCrumb","WrapperBackground","TabWrapper","Tab","CustomCard","TopWrapper","OverviewWrapper","Overview","TabExampleSecondaryPointing","plural","paths","tipIds","slice","panes","menuItem","as","NavLink","content","exact","indexOf","TansfersSlashMenu","secondary","pointing","activeIndex","Header","SubHeader","Text","TextMinor","footer","FooterWrapper","IconList","ImageLogoWrapper","img","Footer","getFullYear","CustomTable","Table","StyledSegment","Segment","LoadingTable","Dimmer","inverted","TextUsername","Username","displayAddress","ellipsis","popup","popupContent","substring","displayName","Popup","disabled","trigger","Avatar","theme","statusIconMap","Badge","icon","imgSrc","ExplorerLink","base","defaultExplorerSite","baseHref","Deleted","DeletedAccount","alt","BadgeWrapper","User","React","memo","PairText","unit","reverse","horizontal","UsdtWrapper","Balance","currency","usdt","isUnitPrice","isAbbreviate","usdtNumber","localePrecision","abbreviated","RightButton","Status","detail","ReasonText","TableNoDataCell","Row","Cell","colSpan","textAlign","CustomImage","LinkWrapper","span","ClickableLink","inReasons","ReasonLink","matchAll","useLinks","CardWrapper","TableWrapper","StyledTable","TipsTable","useHistory","TableLoading","unstackable","HeaderCell","Body","proposeAtBlockHeight","beneficiary","finder","reason","medianValue","symbolPrice","PairTextVertical","format","CustomSelect","Form","Select","FormWrapper","StatusSelect","statusOptions","Array","from","Set","values","entries","join","Filter","setStatus","mounting","fluid","onChange","PrevIcon","clipPath","transform","PrevIconGrey","rx","NextIcon","NextIconGrey","CustomPagination","props","totalPages","Prev","activePage","Next","Pagination","boundaryRange","siblingRange","ellipsisItem","firstItem","lastItem","prevItem","nextItem","TextWrapper","DropdownWrapper","DropdownText","CustomDropdown","Dropdown","SelectWrapper","ResponsivePagination","onPageChange","setPageSize","selection","_","HeaderWrapper","Title","Tips","searchPage","queryPage","searchStatus","tablePage","setTablePage","filterData","setFilterData","ceil","fetchTips","filterQuery","noHover","PolygonLabel","RelatedLinks","NameWrapper","BeneficiaryContent","proposerAddress","beneficiaryAddress","proposerName","proposerBadgeData","beneficiaryName","beneficiaryBadgeData","DescriptionCell","ProposeTimeWrapper","BeneficiarySwitch","getStateWithVotingAyes","stateValue","nAyes","motionVoting","ayes","ProposalsTable","isBeneficiary","setIsBeneficiary","proposalIndex","proposeTime","proposer","curator","CircleWrapper","BackCircle","InnerCircleWrapper","InnerCircle","InnerCircleLeft","turn","InnerCircleRight","overHalf","InnerCircleMaskLeft","InnerCircleMaskRight","PercentLable","CountDown","percent","percentInt","mrgap","gap","DefaultValueWrapper","Fragment","DefaultUnitWrapper","DefaultSectionWrapper","DefaultTimeWrapper","defaultUnitMapper","y","mon","h","min","TimePeriod","maxSection","ValueWrapper","UnitWrapper","SectionWrapper","TimeWrapper","unitMapper","pluralUnitMapper","assign","nornalizedTime","sections","years","months","days","hours","minutes","i","j","sec","seconds","normalizeTimeDuration","BlocksTimeDefaultUnit","setTime","blocksTime","BlocksTime","Value","Unit","Summary","summary","Proposed","ApproveVoting","RejectVoting","Approved","Awarded","defaultValue","Proposals","fetchProposals","CapText","TableRow","BountiesTable","bountyIndex","title","Bounties","fetchBounties","TableCell","justify","justifyContent","InformationTable","findersFee","timeline","extrinsic","Circle","TipLabel","Bar","CardItem","GrayImage","ImageButton","ButtonList","extrinsicIndexer","eventIndexer","extrinsicIndex","eventSort","eventIndex","subscanLink","nValue","VerticalWrapper","TimeLableWrapper","UnfoldButton","isUnfold","TextMinorWrapper","onUnfoldBtnClick","hideButtonList","fields","HorizontalBar","VerticalBar","ItemWrapper","FoldableItem","defaultUnfold","expired","end","setIsUnfold","expiredTime","setExpiredTime","getTime","LoadingWrapper","Timeline","subTimeline","LinkText","Link","IconButton","DividerWrapper","useDeepCompareEffect","nowAddress","openAddLinkModal","setOpenAddLinkModal","openRemoveLinkModal","setOpenRemoveLinkModal","setLink","setLinkIndex","addRelatedLink","removeRelatedLink","isAdmin","queryString","admin","LinkItem","Modal","open","onClose","Content","Input","label","placeholder","onKeyDown","Actions","CustomProgress","Progress","TipCountDownLabel","closes","getCurrent","ProgressItem","TippersProgress","TimeElapsed","nFrom","diff","TimeLabel","ElapsedTimeLabel","BarWrapper","TippersLabel","TipLifeCycleTable","tippersCount","begin","closeFromBlockHeight","max","percentage","thresholdTotalCount","BarProgress","Funer","TimelineCommentWrapper","TitleWrapper","Desc","DetailTableWrapper","desc","TipDetail","tipId","useParams","timelineData","setTimelineData","fetchTipDetail","timelineItem","tipValue","tip_value","reasonText","funder","tipper","Funder","who","terminator","indexer","processTimeline","getShortTipId","getTipIndex","DescriptionWrapper","useIsAdmin","descriptionDetail","openDesModal","setOpenDesModal","setCurator","addDes","putDescription","ProposalLifeCycleTable","PassWrapper","ImageWrapper","Voter","agree","BarProgressWrapper","CustomText","AyeNayWrapper","ProposalArgsWrapper","ProposalArgsItemWrapper","Proposer","threshold","nays","timelineItemHeight","isMotion","motions","referendums","allItems","r","isReferendum","sort","b","motion","isFinal","voting","treasuryProposalIndex","votes","reduce","voter","approve","v","argItems","some","normalizeMotionTimelineItem","referendum","Finished","voteThreshold","normalizeReferendumTimelineItem","constructProposalProcessItem","ProposalDetail","fetchProposalDetail","ReturnedText","ReturnedWrapper","AlignItemWrapper","BountyStates","freeze","Rejected","Funded","CuratorProposed","Active","PendingPayout","Claimed","getBountyState","string","charAt","bond","fee","curatorDeposit","BountyLifeCycleTable","updateDueTimeLeft","setUpdateDueTimeLeft","updateDue","timeLeft","oneMinute","oneHour","oneDay","unlockAt","timelineItems","mergeExtrinsicsAndMotions","proposalArgs","val","stringCamelCase","motionInfo","caller","remark","slashed","eventData","claimer","BountyDetail","fetchBountyDetail","TextBold","TextMinorBold","StyledLink","StyledLinkMajor","symbolLowerCase","ProposerTable","fiatValue","BeneficiaryTable","IconWrapper","color","ChildTitle","clickEvent","acc","round","List","date","labels","LegendWrapper","LegendDiv","LegendTitle","LineChart","onHover","dates","hover","mode","intersect","scales","yAxes","position","ticks","stepSize","callback","xAxes","displayFormats","month","unitStepSize","gridLines","zeroLineWidth","tooltips","bodySpacing","callbacks","tooltipItems","xLabel","tooltipItem","datasets","datasetIndex","itemSort","legend","maintainAspectRatio","array","_index","chartData","lineTension","backgroundColor","secondaryColor","borderColor","primaryColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","order","ContentWrapper","ChartWrapper","ListWrapper","SecondListWrapper","TotalStacked","dateLabels","setDateLabels","incomeHistory","setIncomeHistory","outputHistory","setOutputHistory","treasuryHistory","setTreasuryHistory","showIndex","setShowIndex","incomeData","setIncomeData","outputData","setOutputData","treasuryData","setTreasuryData","statsItem","minting","stakingRemainder","treasuryBalance","statsData","Chart","DoughnutChart","doughnutData","hoverBackgroundColor","borderWidth","dataReduce","findFunc","findDisabled","cutoutPercentage","animation","animateRotate","dataset","_meta","currentValue","parseFloat","TotalText","ZindexWrapper","Total","CanvasWrapper","DoughnutWrapper","DoughnutCard","totalReduce","LinkButton","Income","slashStaking","slashDemocracy","slashIdentity","incomeStatus","setIncomeStatus","obj","child","every","Output","outputStatus","setOutputStatus","bountySpent","proposalSpent","tipSpent","burntTotal","defaults","global","defaultFontFamily","NameCell","logo","DateCell","day","isValid","ProjectProposals","ExpenseWrapper","DollarWrapper","ProjectExpense","expense","dollar","numberDollar","Projects","fetchProjects","ProjectsTable","IconImage","NameContentWrapper","NameTitle","NameContent","Detail","BoldText","NumberText","TextDollar","token","proposalId","amount","proposeTimePrice","achievements","projectData","ProjectDetail","projectId","fetchProjectDetail","detailData","previous","relatedLinks","CloseButton","TOAST_TYPES","ToastItem","tranClass","setTranClass","closeSrc","ToastList","Toast","EventID","EventWrapper","SlashTable","balance","DemocracySlash","itemList","fetchDemocracySlashList","identityKilledEventData","IdentitySlash","fetchIdentitySlashList","StakingSlash","fetchStakingSlashList","InflationTable","SubTitle","Inflation","fetchInflationList","OthersIncomeTable","OthersIncome","fetchOthersIncomeList","TransfersTable","Transfers","fetchTransferList","TransfersSlashTable","Addr","shortAddr","SignInModal","AdminLogin","noExtensionModalOpen","setNoExtensionModalOpen","accountsModalOpen","setAccountsModalOpen","accounts","setAccounts","isLogin","web3Enable","web3Accounts","extensionAccounts","meta","loginAccount","goBack","App","emit","disconnect","io","connect","on","component","TransfersSlash","GlobalStyle","createGlobalStyle","ReactDOM","render","getElementById"],"mappings":"oWAAMA,EAAmB,eAACC,EAAD,uDAAO,GAAP,OACvBA,EAAIC,QAAQ,UAAU,gBAAEC,EAAF,qCAAaA,EAAEC,mBAEjCC,E,aAGJ,WAAYC,GAAW,IAAD,gCAFtBA,SAAW,KAEW,KAItBC,MAAQ,SAACC,GAEP,IAFuC,IAA1BC,EAAyB,uDAAhB,GAAIC,EAAY,uCAChCC,EAAM,IAAIC,IAAIJ,EAAM,EAAKF,UAC/B,MAAkBO,OAAOC,KAAKL,GAA9B,eAAuC,CAAlC,IAAMM,EAAG,KACZJ,EAAIK,aAAaC,IAAIjB,EAAiBe,GAAMN,EAAOM,IAGrD,OAAO,IAAIG,QAAJ,uCAAY,WAAOC,EAASC,GAAhB,mBAAAC,EAAA,+EAEIC,OAAOf,MAAMI,EAAKD,GAFtB,UAGK,OADda,EAFS,QAGNC,OAHM,iCAIMD,EAAKE,OAJX,OAIPC,EAJO,OAKbP,EAAQ,CACNQ,MAAO,CACLH,OAAQD,EAAKC,OACbI,QAASF,EAAKE,QACdF,KAAMA,EAAKA,QATF,yCAaQH,EAAKE,OAbb,QAaPI,EAbO,OAcbV,EAAQ,CACNU,WAfW,0DAmBfV,EAAQ,CACNQ,MAAO,CACLC,QAAS,aArBE,0DAAZ,0DATPE,KAAKxB,SAAWA,KCLdyB,E,yID2CS1B,GCzCA,MAAI0B,EACjBC,+B,yFCLWC,EAAkB,UAClBC,EAAkB,sBAGlBC,EAAsB,UACtBC,EAAwB,UAiBxBC,EACF,UADEA,EAIA,YAGAC,EAAe,CAC1BC,OAAQ,UACRC,IAAK,UACLC,aAAc,YACdC,UAAW,UAaAC,EAAyB,CACpC,CACEC,KAAM,aACNjC,IAAK,8CAEP,CACEiC,KAAM,eACNjC,IAAK,6BAIIkC,EACD,MC/CNC,EAAiB,IAAIC,IAEvBC,EAAW,WAAO,IAAD,EACfC,EAAe,KACnB,IACEA,EAAeC,KAAKC,MAAMC,aAAaC,QAAQ,YAC/C,MAAOC,IAGT,MAAO,CACLC,UACE,UAAAZ,EAAuBa,MAAK,SAACC,GAAD,aAAUA,EAAK9C,OAAL,UAAasC,SAAb,aAAa,EAAcM,oBAAjE,eACI5C,MDsBR,8CChCa,GAoBF+C,EAAM,uCAAG,WAAOC,GAAP,eAAAtC,EAAA,6DACdV,EAAMgD,IAAQ,OAAIX,QAAJ,IAAIA,OAAJ,EAAIA,EAASO,UAC5BT,EAAec,IAAIjD,IACtBmC,EAAe7B,IACbN,EACAkD,IAAWC,OAAO,CAAEC,SAAU,IAAIC,IAAWrD,GAAMsD,YAAaC,OAAKD,eALrD,kBAQbnB,EAAeqB,IAAIxD,IARN,2CAAH,sDAWNyD,EAAe,uCAAG,4BAAA/C,EAAA,sEACXqC,IADW,cACvBW,EADuB,yBAEtBA,EAAIC,OAAOC,KAAKC,aAAaC,YAFP,2CAAH,qDAKfC,EAAW,uCAAG,WAAOC,EAAMC,GAAb,mBAAAvD,EAAA,yDACpBwD,KAAmBD,EADC,yCAEhB,IAFgB,uBAKFE,YAAgBF,GALd,cAKnBG,EALmB,OAOnBrD,EAAOsD,YAAYL,GAPA,SAQJI,EAASE,OAAOC,QAAQ,CAC3CC,KAAM,QACNzD,OACAkD,YAXuB,cAQnB/C,EARmB,yBAclBA,EAAOuD,WAdW,4CAAH,wDAiBlBC,EAAmB,SAACC,GACxB,IAAMC,EAAmBD,EAAW9B,MAClC,SAACgC,GAAD,MAA8B,cAAtBA,EAAGC,OAAOC,SAAgD,QAArBF,EAAGC,OAAOA,UAEzD,GAAIF,EAEF,OADiBA,EAAiBE,OAAOE,SAAjCC,KACIC,KAIHC,EAAY,uCAAG,WAAOC,GAAP,qBAAA1E,EAAA,sEACRqC,IADQ,cACpBW,EADoB,gBAEPA,EAAI2B,IAAIC,MAAMC,aAAaH,GAFpB,cAEpBI,EAFoB,gBAGN9B,EAAI2B,IAAIC,MAAMG,SAASD,GAHjB,cAGpBE,EAHoB,OAIpBC,EAAOjB,EAAiBgB,EAAMA,MAAMf,YAJhB,kBAKnBgB,GALmB,4CAAH,sDAQnBC,EAAe,IAAIC,IAAG,KACtBC,GAAYC,IAAYC,IAAIC,KAErBC,GAAkB,uCAAG,WAAOC,GAAP,2BAAAzF,EAAA,sEACdqC,IADc,cAC1BW,EAD0B,OAE1B0C,GAEJ,UAAA1C,EAAIC,OAAO0C,YAAX,eAAiBC,qBAAjB,UAEA5C,EAAIC,OAAO4C,kBAFX,aAEA,EAAuBC,mBAFvB,UAIA9C,EAAIC,OAAO8C,gBAJX,aAIA,EAAqBH,qBAEnB,UAAA5C,EAAIC,OAAO+C,iBAAX,SAAsBC,cAAcC,IAAId,IAEpCpC,EAAIC,OAAO+C,UAAUC,cAAcE,IAAIZ,KACvCvC,EAAIoD,MAAMC,gBAERnB,EAAaiB,IAAIZ,KAEjBL,GAGJoB,EAAQZ,EAAUS,IAAII,YAAOd,IAASrC,WApBZ,kBAqBzBkD,GArByB,2CAAH,sDClFzBE,GAAWC,YAAY,CAC3BlF,KAAM,OACNmF,aAAc,CACZxD,KAAM,CACJyD,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,GAETC,SAAS,EACTC,UAAW,GACXC,kBAAkB,EAClB9D,aAAc,OAEhB+D,SAAU,CACRC,QADQ,SACAC,EADA,GACqB,IAAZC,EAAW,EAAXA,QACfD,EAAMlE,KAAOmE,GAEfC,WAJQ,SAIGF,EAJH,GAIwB,IAAZC,EAAW,EAAXA,QAClBD,EAAML,QAAUM,GAElBE,aAPQ,SAOKH,EAPL,GAO0B,IAAZC,EAAW,EAAXA,QACpBD,EAAMJ,UAAYK,GAEpBG,oBAVQ,SAUYJ,EAVZ,GAUiC,IAAZC,EAAW,EAAXA,QAC3BD,EAAMH,iBAAmBI,GAE3BI,gBAbQ,SAaQL,EAbR,GAa6B,IAAZC,EAAW,EAAXA,QACvBD,EAAMjE,aAAekE,MAKpB,GAMHb,GAASkB,QALXP,GADK,GACLA,QACAG,GAFK,GAELA,WACAC,GAHK,GAGLA,aACAC,GAJK,GAILA,oBACAC,GALK,GAKLA,gBAmCIE,GAAiB,CAAC,eAAgB,aAClCC,GAAgB3G,EAEtB,SAAS4G,GAAa1G,GAAM,IAAD,IACnB2G,EAAWH,GAAeI,SAAf,UAAwB5G,EAAI6G,mBAA5B,aAAwB,EAAiBZ,OACpDa,EAAaL,GAAa,UAACzG,EAAI6G,mBAAL,aAAC,EAAiBZ,OAElD,OAAO,aACLU,WACAG,cACG9G,GAIA,IACM+G,GAA4BC,aADV,SAACf,GAAD,OAAWA,EAAMlE,KAAKA,QAGnD,SAACA,GACC,IAAMyD,EAAQzD,EAAKyD,MAAMyB,IAAIP,IAC7B,OAAO,2BACF3E,GADL,IAEEyD,aAIO0B,GAAkB,SAACjB,GAAD,OAAWA,EAAMlE,KAAK6D,SACxCuB,GAAoB,SAAClB,GAAD,OAAWA,EAAMlE,KAAK8D,WAC1CuB,GAA8BJ,YACzCG,IACA,SAACnH,GAAD,mBAAC,eACIA,GACA0G,GAAa1G,OAGPqH,GAA2B,SAACpB,GAAD,OAAWA,EAAMlE,KAAK+D,kBACjDwB,GAAuB,SAACrB,GAAD,OAAWA,EAAMlE,KAAKC,cAC7CuF,GAAwB,SAACtB,GAAD,OACnCA,EAAMlE,KAAK8D,UAAU2B,eAERnC,MAAf,QClHMoC,GAAgBnC,YAAY,CAChClF,KAAM,YACNmF,aAAc,CACZmC,UAAW,CACTlC,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,GAETC,SAAS,EACT+B,eAAgB,GAChBC,uBAAuB,EACvBC,gBAAiB,CACflC,MAAO,EACPmC,aAAc,EACdC,cAAe,EACfC,aAAc,IAGlBjC,SAAU,CACRkC,aADQ,SACKhC,EADL,GAC0B,IAAZC,EAAW,EAAXA,QACpBD,EAAMyB,UAAYxB,GAEpBC,WAJQ,SAIGF,EAJH,GAIwB,IAAZC,EAAW,EAAXA,QAClBD,EAAML,QAAUM,GAElBgC,kBAPQ,SAOUjC,EAPV,GAO+B,IAAZC,EAAW,EAAXA,QACzBD,EAAM0B,eAAiBzB,GAEzBiC,yBAVQ,SAUiBlC,EAVjB,GAUsC,IAAZC,EAAW,EAAXA,QAChCD,EAAM2B,sBAAwB1B,GAEhCkC,mBAbQ,SAaWnC,EAbX,GAagC,IAAZC,EAAW,EAAXA,QAC1BD,EAAM4B,gBAAkB3B,MAKvB,GAMHuB,GAAclB,QALhB0B,GADK,GACLA,aACA9B,GAFK,GAELA,WACA+B,GAHK,GAGLA,kBACAC,GAJK,GAILA,yBACAC,GALK,GAKLA,mBAmDWC,GAAuB,SAACpC,GAAD,OAAWA,EAAMyB,UAAUA,WAClDR,GAAkB,SAACjB,GAAD,OAAWA,EAAMyB,UAAU9B,SAC7C0C,GAAyB,SAACrC,GAAD,OAAWA,EAAMyB,UAAUC,gBACpDY,GAAgC,SAACtC,GAAD,OAC3CA,EAAMyB,UAAUE,uBACLY,GAA0B,SAACvC,GAAD,OACrCA,EAAMyB,UAAUG,iBAEHJ,MAAf,QCtGMgB,GAAcnD,YAAY,CAC9BlF,KAAM,WACNmF,aAAc,CACZmD,SAAU,CACRlD,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,GAETC,SAAS,EACT+C,aAAc,GACdC,qBAAqB,GAEvB7C,SAAU,CACR8C,YADQ,SACI5C,EADJ,GACyB,IAAZC,EAAW,EAAXA,QACnBD,EAAMyC,SAAWxC,GAEnBC,WAJQ,SAIGF,EAJH,GAIwB,IAAZC,EAAW,EAAXA,QAClBD,EAAML,QAAUM,GAElB4C,gBAPQ,SAOQ7C,EAPR,GAO6B,IAAZC,EAAW,EAAXA,QACvBD,EAAM0C,aAAezC,GAEvB6C,uBAVQ,SAUe9C,EAVf,GAUoC,IAAZC,EAAW,EAAXA,QAC9BD,EAAM2C,oBAAsB1C,MAK3B,GAKHuC,GAAYlC,QAJdsC,GADK,GACLA,YACA1C,GAFK,GAELA,WACA2C,GAHK,GAGLA,gBACAC,GAJK,GAILA,uBA0BWC,GAAqB,SAAC/C,GAAD,OAAWA,EAAMyC,SAASA,UAC/CxB,GAAkB,SAACjB,GAAD,OAAWA,EAAMyC,SAAS9C,SAC5CqD,GAAuB,SAAChD,GAAD,OAAWA,EAAMyC,SAASC,cACjDO,GAA8B,SAACjD,GAAD,OACzCA,EAAMyC,SAASE,qBAEFH,MAAf,Q,wFCvDO,SAASU,GAAaC,GAC3B,OALF,WAAmD,IAAZC,EAAW,uDAAJ,IAAI,uDAAf,IACrBzL,cAAkByL,EAAKzL,cAI/B0L,CAAmBjJ,EAAiB+I,GAC/B,GAMJ,SAASG,GAAYpE,GAA2C,IAApCqE,EAAmC,uDAAvB,EAAGC,IAAoB,yDACpED,EAAYE,OAAOF,GACnB,IAAMG,EAAM,IAAIC,KAAUzE,GAAO0E,UAAUC,KAAKC,IAAI,GAAIP,IAExD,OAAIC,EACKE,EAAIK,QAAQR,GAEZG,EAAI1H,WAIR,SAASgI,GAAkBxM,GAChC,OAAOyM,aAAiBzM,GAAKC,QAAQ,cAAe,SA1BtDyM,KAAMC,OAAOC,MAiCN,IAEMC,GAAoB,SAACC,GAChC,IACE,IAAMpM,EAAM,IAAIC,IAAImM,GAEhBC,EAAM,GACNpK,EAAO,GA4CX,GA1CEjC,EAAIsM,KAAKC,SAAS,oBAClBvM,EAAIsM,KAAKC,SAAS,kBAElBF,EAAM,yBACNpK,EAAO,gBACEjC,EAAIsM,KAAKC,SAAS,gBAAkBvM,EAAIsM,KAAKC,SAAS,aAC/DF,EAAM,yBACNpK,EAAO,WAEPjC,EAAIsM,KAAKC,SAAS,eAClBvM,EAAIsM,KAAKC,SAAS,cAElBF,EAAM,wBACNpK,EAAO,UACEjC,EAAIsM,KAAKC,SAAS,eAC3BF,EAAM,wBACNpK,EAAO,UACEjC,EAAIsM,KAAKC,SAAS,oBAC3BF,EAAM,8BACNpK,EAAO,gBACEjC,EAAIsM,KAAKC,SAAS,gBAC3BF,EAAM,yBACNpK,EAAO,WACe,SAAbjC,EAAIsM,MACbD,EAAM,0BACNpK,EAAO,YACEjC,EAAIsM,KAAKC,SAAS,oBAC3BF,EAAM,2BACNpK,EAAO,eACEjC,EAAIsM,KAAKC,SAAS,qBAC3BF,EAAM,6BACNpK,EAAO,gBACEjC,EAAIsM,KAAKC,SAAS,uBAC3BF,EAAM,iCACNpK,EAAO,cACEjC,EAAIsM,KAAKC,SAAS,mBAC3BF,EAAM,4BACNpK,EAAO,cAEPoK,EAAM,uBAGHpK,EAAM,CAAC,IAAD,EACEjC,EAAIsM,KAAKE,MAAM,yBAC1B,GADGvK,EADM,oBAEL,CAAC,KAAM,OAAOwG,SAASxG,GAAO,CAChC,IAAMwK,EAAIzM,EAAIsM,KAAKE,MAAM,2BACzB,GAAIC,EACCxK,EADE,YACMwK,EADN,MAITxK,EAAO8J,aAAiB9J,GAG1B,MAAO,CAACA,EAAMoK,GACd,MAAO1J,GAEP,MAAO,KAwCJ,IAAM+J,GAAQ,SAAC/G,GACpB,OAAO,IAAIpF,SAAQ,SAACC,GAClBmM,WAAWnM,EAASmF,OAoCjB,SAASiH,KAA6C,IAArBC,EAAoB,uDAAd,EAAGC,EAAW,uDAAH,EACvD,OAAOD,EAAIE,oBAAeC,EAAW,CAAEC,sBAAuBH,IAGzD,SAASI,GAAoBC,GAAe,IAAZL,EAAW,uDAAH,EACvCM,EAAI,IAAI3B,KAAU0B,GAClBE,EAAM,CACVC,iBAAkB,IAClBC,eAAgB,IAChBC,UAAW,GAETC,EAAW,IAAIhC,KAAU,KACvBiC,EAAa,CACjB,CAAEC,UAAW,IAAIlC,KAAU,QAASmC,KAAM,KAC1C,CAAED,UAAW,IAAIlC,KAAU,WAAYmC,KAAM,KAC7C,CAAED,UAAW,IAAIlC,KAAU,cAAemC,KAAM,KAChD,CAAED,UAAW,IAAIlC,KAAU,iBAAkBmC,KAAM,KACnD,CAAED,UAAW,IAAIlC,KAAU,oBAAqBmC,KAAM,MASxD,OAPAF,EAAWG,SAAQ,SAAC9M,GACdqM,EAAEU,cAAc/M,EAAK4M,aACvBF,EAAW1M,EAAK4M,UAChBN,EAAIU,OAAShN,EAAK6M,SAGtBnC,KAAUuC,OAAO,CAAEC,OAAQZ,IACpB,IAAI5B,KAAU2B,EAAE1B,UAAU+B,GAAU5B,QAAQiB,IAAQoB,WC5M7D,IAAMC,GAAahH,YAAY,CAC7BlF,KAAM,QACNmF,aAAc,CACZgH,SAAU,CACRC,KAAM,EACNC,YAAa,IAGjB1G,SAAU,CACR2G,YADQ,SACIzG,EADJ,GACyB,IAAZC,EAAW,EAAXA,QACnBD,EAAMsG,SAAWrG,MAMrBwG,GACEJ,GAAW/F,QADbmG,YAIWC,GAAgB,yDAAM,WAAOC,GAAP,mBAAA/N,EAAA,sEACfqC,IADe,cAC3BW,EAD2B,gBAEVA,EAAIoD,MAAM4H,OAAOC,QNexC,mDMjBiC,OAE3BA,EAF2B,OAEiC3J,SAC5D9D,EAAS,CACbmN,KAAMM,EACFvD,GACEuD,EAAQ5N,KAAKsN,KACbrD,GAAa9I,IACb,GAEF,EACJoM,YAAalD,GAAY1H,EAAIC,OAAOyK,SAASQ,KAAM,GAAG,IAExDH,EAASF,GAAYrN,IAbY,2CAAN,uDAgBhB2N,GAAmB,SAAC/G,GAAD,OAAWA,EAAMgH,MAAMV,UAExCD,MAAf,QCrCMY,GAAa5H,YAAY,CAC7BlF,KAAM,QACNmF,aAAc,CACZ9B,MALU,MAMV0J,mBAAoB,EACpBC,WAAY,EACZC,YAAa,CACXC,YAAa,EACbC,WAAY,EACZC,SAAU,EACVC,WAAY,EACZC,SAAU,IAGd3H,SAAU,CACR4H,SADQ,SACC1H,EADD,GACqB,EAAXC,SAClB0H,sBAFQ,SAEc3H,EAFd,GAEmC,IAAZC,EAAW,EAAXA,QAC7BD,EAAMkH,mBAAqBjH,GAE7B2H,cALQ,SAKM5H,EALN,GAK2B,IAAZC,EAAW,EAAXA,QACrBD,EAAMmH,WAAalH,GAErB4H,eARQ,SAQO7H,EARP,GAQ4B,IAAZC,EAAW,EAAXA,QACtBD,EAAMoH,YAAcnH,MAKnB,GAKHgH,GAAW3G,QAFbsH,IAHK,GACLF,SADK,GAELC,sBAFK,GAGLC,eACAC,GAJK,GAILA,eAGWC,GAAmB,yDAAM,WAAOnB,GAAP,qBAAA/N,EAAA,sEAClBqC,IADkB,cAC9BW,EAD8B,gBAEXA,EAAImM,OAAOvK,MAAMwK,aAFN,cAE9BA,EAF8B,OAG9BZ,EAAcxL,EAAIC,OAAOyK,SAASc,YAClCa,EAAaD,EAAWE,IAAId,GAJE,KAKpCT,EALoC,KAMlCkB,GANkC,KAOnBT,EAAYpL,WAPO,UAQdoC,GAAmBgJ,GARL,gCASpBA,EAAYe,IAAIF,GAAYjM,WATR,UAUhBoC,GAAmBgJ,EAAYe,IAAIF,IAVnB,yBAWtBA,EAAWG,KAAK,KAAKlK,IAAIkJ,GAAapL,WAXhB,MAOhCqL,YAPgC,KAQhCC,WARgC,KAShCE,WATgC,KAUhCD,SAVgC,KAWhCE,SAXgC,qFAAN,uDAkBnBY,GAAqB,SAACrI,GAAD,OAAWA,EAAMxC,MAAM2J,YAC5CmB,GAAsB,SAACtI,GAAD,OAAWA,EAAMxC,MAAM4J,aAE7CmB,GAAgB,SAACvI,GAAD,OAA6BA,EAAMxC,MAAMA,MFqGzD7F,gBAAkByC,EACpB,WAEA,MEvGEoO,GAAsB,SAACxI,GAAD,OAChCA,EAAMxC,MAAMA,OAAS,IAAIiL,eAEbxB,MAAf,Q,qBC7DMyB,GAAYrJ,YAAY,CAC5BlF,KAAM,QACNmF,aAAc,CACZqJ,MAAO,IAET7I,SAAU,CACR8I,SADQ,SACC5I,EADD,GACsB,IAAZC,EAAW,EAAXA,QAChBD,EAAM2I,MAAQ1I,MAKL2I,GAAaF,GAAUpI,QAAvBsI,SAEFC,GAAb,WACE,WAAYC,GAAW,oBACrB,IAAMpE,EAAQoE,EAASpE,MAAM,yBAC7B,IAAKA,EACH,MAAM,IAAIqE,MAAM,qBAGlB1P,KAAK2P,YAAcC,SAASvE,EAAM,IAClCrL,KAAK6P,QAAUxE,EAAM,GARzB,4CAWE,WACE,MAAM,GAAN,OAAUrL,KAAK2P,YAAf,YAA8B3P,KAAK6P,aAZvC,KAgBaC,GAAa,SAACzM,EAAM0M,GAAP,8CAAiB,WAAOzC,GAAP,iBAAA/N,EAAA,sEAChBgD,EAAI9D,MAAJ,WAAcuR,KAAU3M,GAAxB,YAAiC0M,EAAjC,WADgB,gBACjChQ,EADiC,EACjCA,OACRuN,EAASiC,GAASxP,GAAU,KAFa,2CAAjB,uDAKbkQ,GACX,SAAC5M,EAAM0M,EAAO9E,EAAMiF,EAAapN,GAAjC,8CAA6C,WAAOwK,GAAP,eAAA/N,EAAA,sEACnBqD,EACtBxB,KAAK+O,UAAU,CACb9M,OACA0M,QACA9E,OACAiF,gBAEFpN,GARyC,cACrCQ,EADqC,gBAWrCf,EAAI9D,MAAJ,WACAuR,KAAU3M,GADV,YACmB0M,EADnB,UAEJ,GACA,CACEpM,OAAQ,OACRyM,QAAS,CACP,eAAgB,mBAChBC,UAAWvN,EAAO,UAAMA,EAAN,YAAiBQ,GAAc,IAEnDgN,KAAMlP,KAAK+O,UAAU,CAAElF,OAAMiF,kBApBU,OAuB3C5C,EAASwC,GAAWzM,EAAM0M,IAvBiB,2CAA7C,uDA0BWQ,GACX,SAAClN,EAAM0M,EAAOS,EAAW1N,GAAzB,8CAAqC,WAAOwK,GAAP,eAAA/N,EAAA,sEACXqD,EACtBxB,KAAK+O,UAAU,CACb9M,OACA0M,QACAS,cAEF1N,GAPiC,cAC7BQ,EAD6B,gBAU7Bf,EAAI9D,MAAJ,WACAuR,KAAU3M,GADV,YACmB0M,EADnB,kBACkCS,GACtC,GACA,CACE7M,OAAQ,SACRyM,QAAS,CACPC,UAAWvN,EAAO,UAAMA,EAAN,YAAiBQ,GAAc,MAhBpB,OAoBnCgK,EAASwC,GAAWzM,EAAM0M,IApBS,2CAArC,uDAuBWU,GAAgB,SAAC9J,GAAD,OAAWA,EAAM2I,MAAMA,OAErCD,MAAf,QC3FMqB,GAAe1K,YAAY,CAC/BlF,KAAM,UACNmF,aAAc,CACZuH,QAAS,MAEX/G,SAAU,CACRkK,WADQ,SACGhK,EADH,GACwB,IAAZC,EAAW,EAAXA,QAClBD,EAAM6G,QAAU5G,GAElBgK,cAJQ,SAIMjK,GACZA,EAAM6G,QAAU,SAKf,GAGHkD,GAAazJ,QAFf0J,GADK,GACLA,WAKWE,IANN,GAELD,cAI6BlJ,aADA,SAAAf,GAAK,OAAIA,EAAM6G,QAAQA,WACS,SAAAA,GAAO,QAAMA,MAC/DsD,GAAqB,SAAAnK,GAAK,uBAAIA,EAAM6G,QAAQA,eAAlB,aAAI,EAAuB1K,SAEnD4N,MAAf,QCvBMK,GAAgB/K,YAAY,CAChClF,KAAM,WACNmF,aAAc,CACZ+K,SAAU,CACRC,0BAA2B,GAC3BC,eAAgB,GAChBC,MAAO,CACLC,OAAQ,CACNC,WAAY,EACZC,IAAK,GAEPC,SAAU,CACRF,WAAY,EACZC,IAAK,GAEP5Q,IAAK,CACH2Q,WAAY,EACZC,IAAK,IAGTE,OAAQ,CACNJ,OAAQ,EACRG,SAAU,EACV7Q,IAAK,GAEP+Q,OAAQ,CACNC,UAAW,EACXC,OAAQ,EACRC,MAAO,EACPC,WAAY,CACVC,UAAW,EACXC,SAAU,EACVC,QAAS,KAIfC,aAAc,IAEhBxL,SAAU,CACRyL,YADQ,SACIvL,EADJ,GACyB,IAAZC,EAAW,EAAXA,QACnBD,EAAMqK,SAAWpK,GAEnBuL,gBAJQ,SAIQxL,EAJR,GAI6B,IAAZC,EAAW,EAAXA,QACvBD,EAAMsL,aAAerL,MAKpB,GAAyCmK,GAAc9J,QAA/CiL,GAAR,GAAQA,YAAaC,GAArB,GAAqBA,gBAOfC,GAA6B,SAACzL,GAAD,OACxCA,EAAMqK,SAASA,SAASG,MAAMI,SAASD,KAC5Be,GAAwB,SAAC1L,GAAD,OACnCA,EAAMqK,SAASA,SAASG,MAAMzQ,IAAI4Q,KACvBgB,GAA2B,SAAC3L,GAAD,OACtCA,EAAMqK,SAASA,SAASG,MAAMC,OAAOE,KAC1BiB,GAAmB,SAAC5L,GAAD,OAAWA,EAAMqK,SAASA,UAC7CwB,GAAuB,SAAC7L,GAAD,OAAWA,EAAMqK,SAASiB,cAE/ClB,MAAf,QChEM0B,GAAczM,YAAY,CAC9BlF,KAAM,SACNmF,aAAc,CACZyM,mBAAoB,CAClBxM,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,GAETsM,2BAA2B,EAC3BC,kBAAmB,CACjB1M,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,GAETwM,0BAA0B,EAC1BC,iBAAkB,CAChB5M,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,GAET0M,yBAAyB,EACzBC,cAAe,CACb9M,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,GAET4M,sBAAsB,EACtBC,qBAAqB,EACrBC,aAAc,CACZjN,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,GAET+M,iBAAkB,CAChBlN,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,GAETgN,yBAAyB,EACzBlC,MAAO,CACLmC,eAAgB,EAChBC,cAAe,EACfC,aAAc,EACd9B,UAAW,EACXC,OAAQ,EACR8B,SAAU,IAGdhN,SAAU,CACRiN,SADQ,SACC/M,EADD,GACsB,IAAZC,EAAW,EAAXA,QAChBD,EAAMwK,MAAQvK,GAEhB+M,sBAJQ,SAIchN,EAJd,GAImC,IAAZC,EAAW,EAAXA,QAC7BD,EAAM+L,mBAAqB9L,GAE7BgN,6BAPQ,SAOqBjN,EAPrB,GAO0C,IAAZC,EAAW,EAAXA,QACpCD,EAAMgM,0BAA4B/L,GAEpCiN,qBAVQ,SAUalN,EAVb,GAUkC,IAAZC,EAAW,EAAXA,QAC5BD,EAAMiM,kBAAoBhM,GAE5BkN,4BAbQ,SAaoBnN,EAbpB,GAayC,IAAZC,EAAW,EAAXA,QACnCD,EAAMkM,yBAA2BjM,GAEnCmN,oBAhBQ,SAgBYpN,EAhBZ,GAgBiC,IAAZC,EAAW,EAAXA,QAC3BD,EAAMmM,iBAAmBlM,GAE3BoN,2BAnBQ,SAmBmBrN,EAnBnB,GAmBwC,IAAZC,EAAW,EAAXA,QAClCD,EAAMoM,wBAA0BnM,GAElCqN,iBAtBQ,SAsBStN,EAtBT,GAsB8B,IAAZC,EAAW,EAAXA,QACxBD,EAAMqM,cAAgBpM,GAExBsN,wBAzBQ,SAyBgBvN,EAzBhB,GAyBqC,IAAZC,EAAW,EAAXA,QAC/BD,EAAMsM,qBAAuBrM,GAE/BuN,oBA5BQ,SA4BYxN,EA5BZ,GA4BiC,IAAZC,EAAW,EAAXA,QAC3BD,EAAMyM,iBAAmBxM,GAE3BwN,2BA/BQ,SA+BmBzN,EA/BnB,GA+BwC,IAAZC,EAAW,EAAXA,QAClCD,EAAM0M,wBAA0BzM,GAElCyN,gBAlCQ,SAkCQ1N,EAlCR,GAkC6B,IAAZC,EAAW,EAAXA,QACvBD,EAAMwM,aAAevM,GAEvB0N,uBArCQ,SAqCe3N,EArCf,GAqCoC,IAAZC,EAAW,EAAXA,QAC9BD,EAAMuM,oBAAsBtM,MAK3B,GAcH6L,GAAYxL,QAbdyM,GADK,GACLA,SACAC,GAFK,GAELA,sBACAC,GAHK,GAGLA,6BACAC,GAJK,GAILA,qBACAC,GALK,GAKLA,4BACAC,GANK,GAMLA,oBACAC,GAPK,GAOLA,2BACAC,GARK,GAQLA,iBACAC,GATK,GASLA,wBACAC,GAVK,GAULA,oBACAC,GAXK,GAWLA,2BACAC,GAZK,GAYLA,gBACAC,GAbK,GAaLA,uBA0KWC,GAAsB,SAAC5N,GAAD,OAAWA,EAAM8K,OAAON,OAC9CqD,GAA6B,SAAC7N,GAAD,OACxCA,EAAM8K,OAAOiB,oBACF+B,GAAoC,SAAC9N,GAAD,OAC/CA,EAAM8K,OAAOkB,2BACF+B,GAA4B,SAAC/N,GAAD,OACvCA,EAAM8K,OAAOmB,mBACF+B,GAAmC,SAAChO,GAAD,OAC9CA,EAAM8K,OAAOoB,0BACF+B,GAA2B,SAACjO,GAAD,OACtCA,EAAM8K,OAAOqB,kBACF+B,GAAkC,SAAClO,GAAD,OAC7CA,EAAM8K,OAAOsB,yBACF+B,GAAwB,SAACnO,GAAD,OAAWA,EAAM8K,OAAOuB,eAChD+B,GAA+B,SAACpO,GAAD,OAC1CA,EAAM8K,OAAOwB,sBACF+B,GAA2B,SAACrO,GAAD,OACtCA,EAAM8K,OAAO2B,kBACF6B,GAAkC,SAACtO,GAAD,OAC7CA,EAAM8K,OAAO4B,yBACF6B,GAAuB,SAACvO,GAAD,OAAWA,EAAM8K,OAAO0B,cAC/CgC,GAA8B,SAACxO,GAAD,OACzCA,EAAM8K,OAAOyB,qBAEAT,MAAf,QCjTM2C,GAAYpP,YAAY,CAC5BlF,KAAM,OACNmF,aAAc,CACZoP,aAAc,QAEhB5O,SAAU,CACR6O,gBADQ,SACQ3O,EADR,GAC6B,IAAZC,EAAW,EAAXA,QACvBD,EAAM0O,aAAezO,MAKZ0O,GAAoBF,GAAUnO,QAA9BqO,gBAEFC,GAAuB,SAAC5O,GAAD,OAAWA,EAAM6O,KAAKH,cAE3CD,MAAf,Q,SCfMK,GAAYzP,YAAY,CAC5BlF,KAAM,OACNmF,aAAc,CACZyP,YZqB4BxU,EYpB5ByU,MZsB2B,CAC7BlU,SAAUZ,IYrBV4F,SAAU,CACRmP,eADQ,SACOjP,EADP,GAC4B,IAAD,IAAXC,EAAW,EAAXA,QACdzC,EAAwByC,EAAxBzC,MAAOtF,EAAiB+H,EAAjB/H,IAAKgX,EAAYjP,EAAZiP,QACdC,EAAS,UAAGnP,EAAM+O,mBAAT,aAAG,EAAoBvR,GAElCjD,EAAU,KACd,IACEA,EAAUE,KAAKC,MAAMC,aAAaC,QAAQ,YAC1C,MAAOC,IAGTN,EAAO,2BAAQA,GAAR,mBAAkBiD,EAAQtF,IACjCyC,aAAayU,QAAQ,UAAW3U,KAAK+O,UAAUjP,IAE/CyF,EAAMgP,MAAMxR,KAAU,UAAAwC,EAAMgP,aAAN,eAAcxR,KAAU,IAAIwD,KAAI,SAAChG,GACrD,OAAIA,EAAK9C,MAAQiX,EACR,2BAAKnU,GAAZ,IAAkBqU,QAAQ,IAEnBrU,KAGXgF,EAAM+O,YAAcxU,EAEhB2U,IACFrW,OAAOyW,SAASC,KAAhB,MAGJC,cA3BQ,SA2BMxP,EA3BN,IA2B0B,EAAXC,SACT,IAAI8F,SAAQ,SAAC/K,GAAU,IAAD,EAC1ByU,EAAI,UAAGzP,EAAMgP,MAAMhU,EAAKwC,cAApB,aAAG,EAAyBzC,MACpC,SAAC0U,GAAD,OAAUzU,EAAK9C,MAAQuX,EAAKvX,OAE1BuX,IAAMA,EAAKC,MAAQ1U,EAAK0U,cAMvBC,GAAsB,SAAC3P,GAAD,OAAWA,EAAMyP,KAAKV,aAC5Ca,GAAgB,SAAC5P,GAAD,OAAWA,EAAMyP,KAAKT,OAE5C,GAA0CF,GAAUxO,QAA5C2O,GAAR,GAAQA,eAAgBO,GAAxB,GAAwBA,cAEhBV,MAAf,QCjDMe,GAAexQ,YAAY,CAC/BlF,KAAM,WACNmF,aAAc,CACZwQ,SAAU,CACRvQ,MAAO,IAETI,SAAS,EACToQ,cAAe,GACfC,sBAAsB,GAExBlQ,SAAU,CACRmQ,YADQ,SACIjQ,EADJ,GACyB,IAAZC,EAAW,EAAXA,QACnBD,EAAM8P,SAAW7P,GAEnBC,WAJQ,SAIGF,EAJH,GAIwB,IAAZC,EAAW,EAAXA,QAClBD,EAAML,QAAUM,GAElBiQ,iBAPQ,SAOSlQ,EAPT,GAO8B,IAAZC,EAAW,EAAXA,QACxBD,EAAM+P,cAAgB9P,GAExBkQ,wBAVQ,SAUgBnQ,EAVhB,GAUqC,IAAZC,EAAW,EAAXA,QAC/BD,EAAMgQ,qBAAuB/P,MAK5B,GAKH4P,GAAavP,QAJf2P,GADK,GACLA,YACA/P,GAFK,GAELA,WACAgQ,GAHK,GAGLA,iBACAC,GAJK,GAILA,wBA6BWC,GAAmB,SAACpQ,GAAD,OAAWA,EAAM8P,SAASA,UAC7C7O,GAAkB,SAACjB,GAAD,OAAWA,EAAM8P,SAASnQ,SAC5C0Q,GAAwB,SAACrQ,GAAD,OAAWA,EAAM8P,SAASC,eAIhDF,MAAf,QClEIrF,GAAQ,EAEN8F,GAAajR,YAAY,CAC7BlF,KAAM,QACNmF,aAAc,CACZiR,OAAQ,IAEVzQ,SAAU,CACR0Q,SADQ,SACCxQ,EADD,GACsB,IAAZC,EAAW,EAAXA,QACVwQ,EAAUjG,KAChBxK,EAAMuQ,OAAOG,QAAb,aAAsBC,GAAIF,GAAYxQ,KAExC2Q,YALQ,SAKI5Q,EALJ,GAKyB,IAAZC,EAAW,EAAXA,QACnBD,EAAMuQ,OAASvQ,EAAMuQ,OAAOM,QAAO,SAAA7V,GAAI,OAAIA,EAAK2V,KAAO1Q,SAKhD6Q,GAAiB,SAAC9Q,GAAD,OAAWA,EAAM+Q,MAAMR,QAE9C,GAAkCD,GAAWhQ,QAArCkQ,GAAR,GAAQA,SAAUI,GAAlB,GAAkBA,YAEVN,MAAf,QCnBMU,GAAmB3R,YAAY,CACnClF,KAAM,cACNmF,aAAc,CACZiK,YAAa,IAEfzJ,SAAU,CACRmR,eADQ,SACOjR,EADP,GAC4B,IAAZC,EAAW,EAAXA,QACtBD,EAAMuJ,YAActJ,MAKXgR,GAAmBD,GAAiB1Q,QAApC2Q,eAEFC,GACX,eAACxU,EAAD,uDAAQ,GAAI0M,EAAZ,qFACA,WAAOzC,GAAP,iBAAA/N,EAAA,sEAC2BgD,EAAI9D,MAAJ,WACnBuR,KAAU3M,GADS,YACA0M,EADA,iBAD3B,gBACUhQ,EADV,EACUA,OAGRuN,EAASsK,GAAe7X,GAAU,KAJpC,2CADA,uDAmCW+X,GAAsB,SAACnR,GAAD,OAAWA,EAAMuJ,YAAYA,aAEjDyH,MAAf,QCzCeI,eAAgB,CAC7BtV,KAAMuV,GACN1I,MAAO2I,GACP7P,UAAW8P,GACX9O,SAAU+O,GACVxK,MAAOyK,GACPjU,MAAOkU,GACP7K,QAAS8K,GACTtH,SAAUuH,GACVb,MAAOc,GACP/G,OAAQgH,GACRjD,KAAMkD,GACNtC,KAAMuC,GACNlC,SAAUmC,GACV1I,YAAa2I,KC1BAC,GADDC,YAAe,CAAEC,QAASC,KCElCC,GAAkB,oBAClBC,GAAe,gBAEjBC,GAAS,K,6BCgBEC,GAtBGC,KAAOzU,IAAV,iZCAF0U,GAAUD,KAAOzU,IAAV,kGAMP2U,GAAcF,KAAO1V,QAAV,8GCQT6V,I,kBAAAA,gBAbf,YAAmC,IAAZC,EAAW,EAAXA,QAUrB,OATAC,qBAAU,WACR,IAAMC,EAAWF,EAAQG,QAAO,WAC9Bra,OAAOsa,SAAS,EAAG,MAErB,OAAO,WACLF,OAED,CAACF,IAEI,Q,kBCTJH,GAAUD,KAAOzU,IAAV,0FAMPkV,GAAiBT,KAAOzU,IAAV,qHAOdmV,GAAkBV,KAAOzU,IAAV,qHAOfoV,GAAUX,KAAOzU,IAAV,0GAOPqV,GAAQZ,KAAOzU,IAAV,iHAoBIsV,GAbF,SAAC,GAAD,EAAGC,OAAH,OACX,gBAAC,GAAD,WACE,eAACL,GAAD,UACE,eAAC,KAAD,CAAO7O,IAAI,kCAEb,eAAC8O,GAAD,UACE,eAAC,KAAD,CAAO9O,IAAI,0BAA0BmP,OAAQ,OAE/C,eAACJ,GAAD,IACA,eAAC,GAAD,2BCrCWK,GARFhB,KAAOzU,IAAV,mN,4DCAJ0V,GAAmB,IAAItZ,IACzBuZ,GAAiB,IAAIvZ,IAEnBwZ,GAAaC,MAAS,WAC1B,IAAMC,EAAUH,GAChB,KAAIG,EAAQC,KAAO,GAAnB,CAGAJ,GAAiB,IAAIvZ,IAErB,IAPgC,EAO1B4Z,EAAiB,GAEjBC,EADO,aAAOH,EAAQ3b,QACC2I,KAAI,SAAChG,GAAD,OAAUA,EAAKoZ,MAAM,QATtB,eAUDD,GAVC,IAUhC,2BAA6C,CAAC,IAAD,yBAAjC3W,EAAiC,KAA1BrB,EAA0B,KACtC+X,EAAe1W,KAClB0W,EAAe1W,GAAS,IAE1B0W,EAAe1W,GAAO6W,KAAKlY,IAdG,6CAiBrBqB,GACT,IAAM8W,EAAYJ,EAAe1W,GAEjC3E,OACGf,MADH,UAEOyB,0BAFP,YAEqDiE,EAFrD,cAGI,CACER,OAAQ,OACRyM,QAAS,CACP8K,OAAQ,mBACR,eAAgB,oBAElB5K,KAAMlP,KAAK+O,UAAU,CAAE8K,gBAG1BE,MAAK,SAAC1b,GAAD,OAAUA,EAAKE,UACpBwb,MAAK,SAACvb,GACL,IADc,EACRwb,EAAa,IAAIna,IAAIrB,EAAK+H,KAAI,SAAChG,GAAD,MAAU,CAACA,EAAKmB,QAASnB,OAD/C,eAGsBgZ,GAHtB,IAGd,2BAA6C,CAAC,IAAD,yBAAjCU,EAAiC,KAAtBhc,EAAsB,uBAC3C,EAAsCgc,EAAON,MAAM,KAAnD,mBAAOO,EAAP,KAAsBC,EAAtB,KACA,GAAID,IAAkBnX,EAAtB,CAGA,IAAM4N,EAAWqJ,EAAW/Y,IAAIkZ,IAAiB,KAC7CxJ,GACFwI,GAAiBpb,IAAIkc,EAAQtJ,GAE3B1S,GACFA,EAAQ0S,KAbE,kCAiBfyJ,OAAM,gBAjCX,IAAK,IAAMrX,KAAS0W,EAAiB,EAA1B1W,MAmCV,GAEI,SAASsX,GAActX,EAAOrB,GACnC,IAAMuY,EAAM,UAAMlX,EAAN,YAAerB,GAC3B,GAAIyX,GAAiBzY,IAAIuZ,GACvB,OAAOjc,QAAQC,QAAQkb,GAAiBlY,IAAIgZ,IAG9C,IAAMV,EAAUH,GAchB,OAZKG,EAAQ7Y,IAAIuZ,IACfV,EAAQxb,IAAIkc,EAAQ,CAClB,IAAIjc,SAAQ,SAACC,EAASC,GAAV,OACVkM,YAAW,WACOmP,EAAQtY,IAAIgZ,GACpBL,KAAK3b,EAASC,GACtBmb,OACC,QAKFE,EAAQtY,IAAIgZ,GAAQ,GCtEtB,IAAMK,GAAgB,WAC3B,MAAwBC,mBAAS,CAAC,EAAG,IAArC,mBAAOf,EAAP,KAAagB,EAAb,KASA,OARAC,2BAAgB,WACd,SAASC,IACPF,EAAQ,CAACpc,OAAOuc,WAAYvc,OAAOwc,cAIrC,OAFAxc,OAAOyc,iBAAiB,SAAUH,GAClCA,IACO,kBAAMtc,OAAO0c,oBAAoB,SAAUJ,MACjD,IACIlB,GAGHuB,GAAe,IAAIlb,IAEZmb,GAAc,SAACtZ,EAAS6E,GACnC,MAAwBgU,mBAAS,MAAjC,mBAAO7a,EAAP,KAAaub,EAAb,KACA,EAAkCV,mBAAS,MAA3C,mBAAOW,EAAP,KAAkBC,EAAlB,KAyBA,OAxBA5C,qBAAU,WACR,IAAI6C,GAAY,EACVf,EAAa,uCAAG,gCAAAlc,EAAA,0DAEhB4c,GAAara,IAAb,mBAA6BgB,IAFb,gBAGlBiP,EAAWoK,GAAa9Z,IAAb,mBAA6BS,IAHtB,sCAKD2Z,GAAY,WAAY3Z,GALvB,OAKlBiP,EALkB,OAMlBoK,GAAahd,IAAb,mBAA6B2D,GAAWiP,GANtB,OAQhByK,GAAazK,IACfsK,EAAO,UAACtK,EAAS2K,YAAV,aAAC,EAAeC,SACvBJ,EAAa,CACX7c,OAAM,UAAEqS,EAAS2K,YAAX,aAAE,EAAehd,UAXP,2CAAH,qDAkBnB,OAHA2c,EAAQ,MACRE,EAAa,MACbd,IACO,WACLe,GAAY,KAEb,CAAC1Z,IACG,CAAEhC,OAAMwb,cAGV,SAASM,KACd,OAAO,IAAIC,gBAAgBC,cAAcC,QAepC,SAASC,KACd,IAAMR,EAAYS,kBAAO,GAQzB,OANAtD,qBAAU,WACR,OAAO,WACL6C,EAAUU,SAAU,KAErB,IAEIV,EAGF,IAAMW,GAAkB,WAC7B,MAA0CxB,oBAAS,GAAnD,mBAAOyB,EAAP,KAAsBC,EAAtB,KACA,EAAgB3B,KAAT4B,EAAP,oBAIA,OAHA3D,qBAAU,WACR0D,EAAiBC,EAAQ,QACxB,CAACA,IACGF,GAGIG,GAAa,WACxB5D,qBAAU,WACe,CAAC,qBAOTjN,SAAQ,SAAC/K,GALxB,IAA2B9C,IAMP8C,GALR,IAAI6b,OACVtS,IAAMrM,OAMX,KAkBE,SAAS4e,GAAgBC,EAAKC,GACnChE,qBAAU,WACR,SAASiE,EAAmBC,GACtBH,EAAIR,UAAYQ,EAAIR,QAAQY,SAASD,EAAME,SAC7CJ,IAIJ,OADAK,SAAS/B,iBAAiB,YAAa2B,GAChC,WACLI,SAAS9B,oBAAoB,YAAa0B,MAE3C,CAACF,EAAKC,IAGJ,SAASM,GAAgBhf,EAAKif,GACnC,MAAsCvC,oBAAS,WAC7C,IACE,IAAMha,EAAOnC,OAAO8B,aAAaC,QAAQtC,GACzC,OAAO0C,EAAOP,KAAKC,MAAMM,GAAQuc,EACjC,MAAOre,GAEP,OADAse,QAAQte,MAAMA,GACPqe,MANX,mBAAOE,EAAP,KAAoBC,EAApB,KAmBA,MAAO,CAACD,EAVS,SAACvY,GAChB,IACE,IAAMyY,EACJzY,aAAiB0Y,SAAW1Y,EAAMuY,GAAevY,EACnDwY,EAAeC,GACf9e,OAAO8B,aAAayU,QAAQ9W,EAAKmC,KAAK+O,UAAUmO,IAChD,MAAOze,GACPse,QAAQte,MAAMA,MC5IpB,I,4DACIsR,GAAQ,EAENqN,GAAY,uCAAG,WAAOjc,GAAP,iBAAAhD,EAAA,6DACbkf,EAAYC,KAAK3a,MADJ,kBAGXxB,EAAI2B,IAAIqJ,OAAOpJ,QAHJ,+EAKV,SALU,cAQbwa,EAAUD,KAAK3a,MARF,kBASZ4a,EAAUF,GATE,yDAAH,sDAYZG,GAAO,uCAAG,WAAOC,GAAP,SAAAtf,EAAA,sEACRgM,GAAMsT,GADE,gCAEP,WAFO,2CAAH,sDAKPC,GAAO,uCAAG,WAAOvc,GAAP,SAAAhD,EAAA,sEACDH,QAAQ2f,KAAK,CAACP,GAAajc,GAAMqc,GArBhC,OAoBA,mFAAH,sDAkCEI,GA9Ba,WAC1B,IAAMC,EAAeC,YAAY3I,IAC3BpS,EAAQ+a,YAAYhQ,IACpBwG,EAAcwJ,YAAY5I,IAC1BhJ,EAAW6R,cACjBxF,qBAAU,WACR,IAAMyF,EAAe,uCAAG,WAAOvgB,GAAP,iBAAAU,EAAA,+EAEFqC,EAAO/C,GAFL,cAEd0D,EAFc,gBAGAuc,GAAQvc,GAHR,cAGd8T,EAHc,yBAIbA,GAJa,2DAMb,IANa,0DAAH,sDASfgJ,EAAaC,YAAW,sBAAC,gCAAA/f,EAAA,4DACvBggB,GAAeN,EAAa9a,IAAU,IAAIqT,QAC9C,SAAC7V,GAAD,OAAUA,EAAK9C,OAAL,OAAa6W,QAAb,IAAaA,OAAb,EAAaA,EAAcvR,KAAUxC,EAAKqU,YAEnCuJ,EAAYC,OAAS,GAJX,uBAKrBC,EAAaF,EAAYpO,GAAQoO,EAAYC,QALxB,SAMPJ,EAAgBK,EAAW5gB,KANpB,OAMrBwX,EANqB,OAO3B/I,EAAS6I,GAAc,CAAC,CAAEhS,QAAOtF,IAAK4gB,EAAW5gB,IAAKwX,YAP3B,OAS7BlF,KAT6B,2CAU5B,KACH,OAAO,kBAAMuO,cAAcL,MAC1B,CAAC/R,EAAU2R,EAAc9a,EAAOuR,KC7DtB,SAASiK,GAAT,GAA2C,IAAnBzJ,EAAkB,EAAlBA,KAAM0J,EAAY,EAAZA,SAC3C,OACE,oBACE1J,KAAMA,EACN6H,OAAO,SACP8B,IAAI,sBACJC,QAAS,SAACte,GAAQA,EAAEue,mBAJtB,SAMGH,ICUP,I,2BAAMI,GAAiB1G,KAAOzU,IAAV,8IAQdob,GAAgB3G,KAAO4G,OAAV,yNAUf,SAACC,GAAD,OACAA,EAAEC,UACFC,aADA,kEAMEC,GAAqBhH,aAAOgB,GAAPhB,CAAH,6RAgBlBiH,GAAcjH,KAAOzU,IAAV,yUAON1E,GAIP,SAACggB,GAAD,OACAA,EAAEC,UACFC,aADA,kEAIA,SAACF,GAAD,OACAA,EAAE9J,OACiB,kBAAZ8J,EAAE9J,OACT8J,EAAE9J,OAAS,GACXgK,aAHA,0FAQA,SAACF,GAAD,OACAA,EAAE9J,OACiB,kBAAZ8J,EAAE9J,OACT8J,EAAE9J,OAAS,KACXgK,aAHA,0FAQA,SAACF,GAAD,OACAA,EAAE9J,OACiB,kBAAZ8J,EAAE9J,OACT8J,EAAE9J,OAAS,KACXgK,aAHA,0FAaE9G,GAAUD,KAAOzU,IAAV,4RAcP2b,GAAoBlH,KAAOzU,IAAV,kSAgBjB4b,GAAOnH,aAAOkE,KAAPlE,CAAH,0GAOJY,GAAQZ,KAAOzU,IAAV,6JAQL6b,GAAiBpH,aAAOY,GAAPZ,CAAH,2JACTlZ,GAQLugB,GAAiBrH,aAAOY,GAAPZ,CAAH,sIAETnZ,GAMLygB,GAAStH,KAAO4G,OAAV,kNAUR,SAACC,GAAD,OACAA,EAAEC,UACFC,aADA,kEAMEQ,GAAavH,KAAOzU,IAAV,4aAML1E,GAYP,SAACggB,GAAD,OACAA,EAAEC,UACFC,aADA,kEASES,GAAgBxH,aAAOgB,GAAPhB,CAAH,4RAkKJyH,GAlJI,WAAO,IAAD,EACvB/B,KACA,IAAM1R,EAAW6R,cACXhb,EAAQ+a,YAAYhQ,IACpB8R,EAAqB9B,YAAY5I,IACjC2I,EAAeC,YAAY3I,IACjC,EAAsCoF,oBAAS,GAA/C,mBAAOsF,EAAP,KAAoBC,EAApB,KACMC,EAAalE,iBAAO,MAC1B,EAAoCtB,oBAAS,GAA7C,mBAAOyF,EAAP,KAAmBC,EAAnB,KACMvT,EAAaoR,YAAYlQ,IACzBsS,EAAYrE,iBAAO,MAEnBsE,EAAc,OAAGtC,QAAH,IAAGA,GAAH,UAAGA,EAAe9a,UAAlB,aAAG,EAAuBzC,MAC5C,SAACC,GAAD,OAAUA,EAAK9C,OAAL,OAAamiB,QAAb,IAAaA,OAAb,EAAaA,EAAqB7c,OAE1Cqd,EAAoB,iCACpBD,GAAkBA,EAAelL,QAC/BkL,EAAelL,OAAS,IAC1BmL,EAAoB,6BACXD,EAAelL,OAAS,IACjCmL,EAAoB,+BACXD,EAAelL,OAAS,IACjCmL,EAAoB,+BAIxB/D,GAAgB6D,GAAW,WACzBD,GAAc,MAEhB5D,GAAgB0D,GAAY,WAC1BD,GAAe,MAoBjB,OACE,gBAAClB,GAAD,WACE,eAAC,GAAD,UACE,gBAACQ,GAAD,CAAmBV,QAAS,WAC1BuB,GAAeD,IAEjB1D,IAAK4D,EAHL,UAKE,uBAAKG,UAAU,kBAAf,UACE,eAAChB,GAAD,CAAMvV,IAAI,kCACV,eAACwV,GAAD,qBACA,eAACC,GAAD,qBAAqB7S,EAAWlC,uBAElC,gBAACgV,GAAD,CACER,SAAUgB,EADZ,UAGE,eAAC,KAAD,CACElW,IAAG,UACDkW,EACI,6BACA,kCAGPA,GACC,gBAACN,GAAD,WACE,gBAACD,GAAD,CACET,UAAU,EACVN,QAAS,WACPuB,GAAc,IAHlB,UAME,eAAC,KAAD,CAAOnW,IAAI,kCACX,4CACA,sBAAKuW,UAAU,OAAf,oBAEF,eAAC9B,GAAD,CAAczJ,KAAK,iCAAnB,SACE,gBAAC2K,GAAD,CACET,UAAU,EACVN,QAAS,WACPuB,GAAc,IAHlB,UAME,eAAC,KAAD,CAAOnW,IAAI,4BACX,4CACA,sBAAKuW,UAAU,OAAf,sBAGJ,eAAC9B,GAAD,CAAczJ,KAAK,iCAAnB,SACE,gBAAC2K,GAAD,CACET,UAAU,EACVN,QAAS,WACPuB,GAAc,IAHlB,UAME,eAAC,KAAD,CAAOnW,IAAI,0BACX,0CACA,sBAAKuW,UAAU,OAAf,iCAQd,gBAACxB,GAAD,CACEG,SAAUa,EACVvD,IAAKyD,EACLrB,QAAS,WACPoB,GAAgBD,IAJpB,UAOE,eAAC,KAAD,CAAO/V,IAAKsW,IACXP,GACC,eAACX,GAAD,YACgB,OAAZrB,QAAY,IAAZA,OAAA,EAAAA,EAAe9a,KAAU,IAAIwD,KAAI,SAAChG,EAAMoO,GAAP,OACjC,gBAACwQ,GAAD,CAEElK,MAAO1U,EAAK0U,MACZyJ,QAAS,kBA/FD,SAACjhB,GAAS,IAAD,EAC7B,IAAIA,GAAOA,KAAG,OAAK0iB,QAAL,IAAKA,OAAL,EAAKA,EAAgB1iB,KAAnC,CACAyO,EACEsI,GAAe,CACbzR,QACAtF,SAGJ,IAAM6iB,EAAQ,UAAGzC,EAAa9a,GAAOzC,MAAK,SAACC,GAAD,OAAUA,EAAK9C,MAAQA,YAAnD,aAAG,EAAsDiC,KACvEwM,EACE6J,GAAS,CACP9T,KAAM,UACNvD,QAAQ,oBAAD,OAAsB4hB,EAAtB,SAmFgBC,CAAchgB,EAAK9C,MAClCuhB,SAAUze,EAAKb,QAAL,OAAcygB,QAAd,IAAcA,OAAd,EAAcA,EAAgBzgB,MAJ1C,UAME,8CAAgBa,EAAKb,QACL,OAAfa,EAAK0U,YACWxK,IAAflK,EAAK0U,QACJuL,MAAMjgB,EAAK0U,QACV,uBAAKoL,UAAU,QAAf,UAAwB9f,EAAK0U,MAA7B,WATCtG,e,UC3UN8R,GAtBMvI,aAAOsH,KAAPtH,CAAH,wjBAKPnZ,GCALoZ,GAAUD,KAAOzU,IAAV,6BAEPid,GAAexI,aAAOsH,GAAPtH,CAAH,iQAOd,SAAC6G,GAAD,OACAA,EAAE4B,QACF1B,aADA,gEAEWhgB,KAGFA,GAqBE2hB,GAjBI,SAAC,GAA+B,IAAD,IAA5BC,oBAA4B,MAAb,OAAa,EAC1C3U,EAAW6R,cACX9J,EAAe6J,YAAY3J,IAE3B2M,EAAWC,uBAAY,WAC3B7U,EAASgI,GAAgB2M,MACxB,CAAC3U,EAAU2U,IAEd,OACE,eAAC,GAAD,UACE,eAACH,GAAD,CAAcC,OAAQ1M,IAAiB4M,EAAcnC,QAASoC,EAA9D,SACGD,OC5BH1I,GAAUD,KAAO8I,OAAV,yNAWPC,GAAc/I,KAAOzU,IAAV,yEAKXyd,GAAOhJ,KAAOzU,IAAV,4FAMJ0d,GAAQjJ,KAAOzU,IAAV,inCA0DL2d,GAAWlJ,KAAOzU,IAAV,kSA2DC4d,GA7CI,WAAO,IAAD,EACjBrI,EAAM,UAAG8E,YAAY/P,WAAf,aAAG,EAAkC7Q,cACjD,EAAgCqd,oBAAS,GAAzC,mBAAO+G,EAAP,KAAiBC,EAAjB,MNDwB,WAAO,IAAD,EACxBrV,EAAW6R,cACX/E,EAAM,UAAG8E,YAAY/P,WAAf,aAAG,EAAkC7Q,cACzCskB,EAAa9F,cAAb8F,SACRjJ,qBAAU,WACR,IAAMsI,EAAeW,EAASC,WAAT,WACjB,SACAD,EAASC,WAAT,aACA,WACA,OACJvV,EAASgI,GAAgB2M,MACxB,CAACW,EAAUtV,EAAU8M,IMTxB0I,GAEA,IAAMC,EAAW9F,mBAMb+F,EAAc,2BAIlB,OAHIN,IACFM,EAAc,mCAGd,gBAAC,GAAD,WACE,eAACV,GAAD,UACE,eAAC,IAAD,CAASW,GAAG,IAAZ,SACE,eAAC,GAAD,QAGJ,gBAACZ,GAAD,WACE,gBAACE,GAAD,CACEnI,OAAQA,EACR8I,MAAO,CAAEvG,QAAS+F,EAAW,OAAS,IACtC5C,QApBU,SAACte,GACbA,EAAEuc,SAAWgF,EAAS7F,SACxByF,GAAY,IAmBRjF,IAAKqF,EAJP,UAME,eAAC,IAAD,CAASE,GAAE,UAAX,SACE,eAAC,GAAD,CAAYhB,aAAa,aAE3B,eAAC,IAAD,CAASgB,GAAE,YAAX,SACE,eAAC,GAAD,CAAYhB,aAAa,kBAG7B,eAAC,GAAD,IACA,eAACO,GAAD,CAAU1C,QAAS,kBAAM6C,GAAaD,IAAtC,SACE,eAAC,KAAD,CAAOxX,IAAK8X,a,8BCjIPG,OAVf,WACE,IAAMC,EAAYlE,YAAY7M,IAE9B,OACE,gBAACgR,GAAA,EAAKC,KAAN,kBACM,eAAC,KAAD,UAAQF,MADC,SCMJG,OAVf,WACE,IAAMC,EAAiBtE,YAAY9M,IAEnC,OACE,gBAACiR,GAAA,EAAKC,KAAN,uBACW,eAAC,KAAD,UAAQE,MADJ,cCMJC,OAVf,WACE,IAAMC,EAAgBxE,YAAY5M,IAElC,OACE,gBAAC+Q,GAAA,EAAKC,KAAN,sBACU,eAAC,KAAD,UAAQI,MADH,aCMJC,OAVf,WACE,IAAMC,EAAc1E,YAAY3K,IAEhC,OACE,gBAAC8O,GAAA,EAAKC,KAAN,uBACW,eAAC,KAAD,UAAQM,EAAYtQ,mBADhB,mBCMJuQ,I,GAAAA,GAVf,WACE,IAAMD,EAAc1E,YAAY3K,IAEhC,OACE,gBAAC8O,GAAA,EAAKC,KAAN,qBACS,eAAC,KAAD,UAAQM,EAAYpQ,iBADd,iBCHbyG,GAAUX,KAAOzU,IAAV,6HAmBEif,I,GAAAA,GAXf,WACE,IAAMF,EAAc1E,YAAY3K,IAEhC,OACE,gBAAC8O,GAAA,EAAKC,KAAN,sBACU,eAAC,KAAD,UAAQM,EAAYrQ,gBAC5B,eAAC,GAAD,MAFa,kBCZb0G,GAAUX,KAAOzU,IAAV,6HAmBEkf,OAXf,WACE,IAAMH,EAAc1E,YAAY3K,IAEhC,OACE,gBAAC8O,GAAA,EAAKC,KAAN,uBACW,eAAC,KAAD,UAAQM,EAAYlS,YAC7B,eAAC,GAAD,MAFa,cCHJsS,OAVf,WACE,IAAMJ,EAAc1E,YAAY3K,IAEhC,OACE,gBAAC8O,GAAA,EAAKC,KAAN,wBACY,eAAC,KAAD,UAAQM,EAAYjS,WADjB,iBCMJsS,I,GAAAA,GAVf,WAAyB,IAAD,EAChBxN,EAAWyI,YAAYnI,IAE7B,OACE,gBAACsM,GAAA,EAAKC,KAAN,sBACU,eAAC,KAAD,2BAAQ7M,QAAR,IAAQA,OAAR,EAAQA,EAAUpQ,aAAlB,QAA2B,MADtB,aCHb4T,GAAUX,KAAOzU,IAAV,6HAmBEqf,I,qBAAAA,GAXf,WACE,IAAMN,EAAc1E,YAAY3K,IAEhC,OACE,gBAAC8O,GAAA,EAAKC,KAAN,uBACW,eAAC,KAAD,UAAQM,EAAYnQ,WAC7B,eAAC,GAAD,MAFa,aCfb0Q,GACJ,sBACE7G,MAAM,KACNjD,OAAO,KACP+J,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,SAOE,uBACEC,EAAE,oCACFC,OAAO,QACPC,cAAc,OACdC,YAAY,MACZC,cAAc,QACdC,eAAe,YAKN,SAASC,GAAT,GAA2C,IAAD,IAAnBC,mBAAmB,MAAL,GAAK,EACvD,OAAO,uCACL,eAAC,IAAD,CAAS7B,GAAE,GAAX,kBACC6B,EAAYnd,KAAI,SAACod,EAAYhV,GAC5B,OAAO,iCACJoU,GACD,eAAC,IAAD,CAASlB,GAAI8B,EAAW9B,GAAxB,SAA6B8B,EAAWjkB,SAFzBiP,SCFvB,I,uCAAMwJ,GAAUD,KAAOzU,IAAV,sDAIPmgB,GAAoB1L,KAAOzU,IAAV,8HASjBogB,GAAa3L,aAAO4L,KAAP5L,CAAH,isCAoBHlZ,EAOEA,EAIKE,EAMLD,EAMAF,EACOE,GAQhB8kB,GAAa7L,aAAOgB,GAAPhB,CAAH,yHAOV8L,GAAa9L,KAAOzU,IAAV,8UAaDzE,GAOTilB,GAAkB/L,KAAOzU,IAAV,gEAIfoV,GAAUX,KAAOzU,IAAV,6HAQPygB,GAAW,WACf,OACE,gBAACD,GAAD,CAAiB5D,UAAU,OAA3B,qBAEE,eAAC,GAAD,QA4OS8D,GA9NqB,WAAO,IAAD,EATrBC,EAUX5C,EAAa9F,cAAb8F,SACF6C,EAAQ7C,EAAS7H,MAAM,KACvBzN,EAAW6R,cACX9J,EAAe6J,YAAY3J,IAC3B6E,EAAM,UAAG8E,YAAY/P,WAAf,aAAG,EAAkC7Q,cAC3CwmB,EAAc,GAMpB,GAJsB,CAAC,YAAD,WAA0B,SAAU,OAAQ,YAChDxd,SAASme,EAAM,KAC/BX,EAAY9J,KAAK,CAACla,KAAK2kB,EAAM,GAAIxC,GAAG,IAAD,OAAKwC,EAAM,MAE7CA,EAAMjG,OAAS,EAAG,CACnB,GAAI,cAAAiG,EAAM,IAAsB,aAAAA,EAAM,IAAqB,SAAAA,EAAM,GAAe,CAC9E,IAAI1V,EAAQ0V,EAAM,GAClB,GAAiB,SAAbA,EAAM,GAAe,CAAC,IAAD,EACjBC,EAAM,UAAGD,EAAM,UAAT,aAAG,EAAU1K,MAAM,QAC1B,OAAL0K,QAAK,IAALA,OAAA,EAAAA,EAAOjG,QAAS,IAAMzP,EAAK,UAAM2V,EAAO,GAAGC,MAAM,EAAG,KAEtDb,EAAY9J,KAAK,CAACla,KAAK,GAAD,QA5BP0kB,EA4BwBC,EAAM,GA3B9CD,EAAOle,SAAS,OACVke,EAAOpnB,QAAQ,MAAO,KAExBonB,EAAOG,MAAM,GAAI,IAwBE,aAA+B5V,GAASkT,GAAIL,IAEjE,aAAA6C,EAAM,IACPX,EAAY9J,KAAK,CAACla,KAAM2kB,EAAM,GAAIxC,GAAIL,IAEvB,WAAb6C,EAAM,IACRX,EAAY9J,KAAK,CACfla,KAAK,GAAD,OAAiB,UAAb2kB,EAAM,GAAiB,SAAWA,EAAM,GAAKA,EAAM,IAC3DxC,GAAGL,IAKTjJ,qBAAU,WACRrM,EjC/D4B,uCAAM,WAAOA,GAAP,iBAAA/N,EAAA,sEACXgD,EAAI9D,MAAJ,iBADW,gBAC5BsB,EAD4B,EAC5BA,OACRuN,EACEoG,GACE3T,GAAU,CACRuT,eAAgB,EAChBC,cAAe,EACfC,aAAc,EACd9B,UAAW,EACXC,OAAQ,EACR8B,SAAU,KAVoB,2CAAN,yDiCgE3B,CAACnG,IAEJ,IAAIsY,EACe,SAAjBvQ,EACI,CACE,CACEwQ,SAAU,CACRC,GAAIC,IACJzO,GAAI,UACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,GACHgD,OAAO,EACPhnB,IAAK,OACL8iB,OAAQ,KAAOa,IAGnB,CACEiD,SAAU,CACRC,GAAIC,IACJzO,GAAI,eACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,aACHgD,OAAO,EACPhnB,IAAK,YACL8iB,OACE,eAAiBa,GACkB,IAAnCA,EAASsD,QAAT,gBAGN,CACEL,SAAU,CACRC,GAAIC,IACJzO,GAAI,UACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,QACHgD,OAAO,EACPhnB,IAAK,OACL8iB,OAAQ,UAAYa,GAA0C,IAA9BA,EAASsD,QAAT,WAGpC,CACEL,SAAU,CACRC,GAAIC,IACJzO,GAAI,cACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,YACHgD,OAAO,EACPhnB,IAAK,WACL8iB,OACE,cAAgBa,GAA8C,IAAlCA,EAASsD,QAAT,gBAInB,WAAjB7Q,EACA,CACE,CACEwQ,SAAU,CACRC,GAAIC,IACJzO,GAAI,eACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,UACHgD,OAAO,EACPhnB,IAAK,YACL8iB,OAAQ,YAAca,IAG1B,CACEiD,SAAU,CACRC,GAAIC,IACJzO,GAAI,kBACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,wBACHgD,OAAO,EACPhnB,IAAK,eACL8iB,OACE,UAAG3H,EAAH,2BAAqCwI,GACkB,IAAvDA,EAASsD,QAAT,UAAoB9L,EAApB,4BAGN,CACEyL,SAAU,CACRC,GAAIC,IACJzO,GAAI,oBACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,0BACHgD,OAAO,EACPhnB,IAAK,iBACL8iB,OACE,4BAA8Ba,GACkB,IAAhDA,EAASsD,QAAT,6BAGN,CACEL,SAAU,CACRC,GAAIC,IACJzO,GAAI,mBACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,yBACHgD,OAAO,EACPhnB,IAAK,gBACL8iB,OACE,2BAA6Ba,GACkB,IAA/CA,EAASsD,QAAT,4BAGN,CACEL,SAAU,CACRC,GAAIC,IACJzO,GAAI,oBACJ0O,QAAS,eAACG,GAAD,IACTlD,GAAG,oBACHgD,OAAO,EACPhnB,IAAK,iBACL8iB,OACE,sBAAwBa,GACkB,IAA1CA,EAASsD,QAAT,uBAGN,CACEL,SAAU,CACRC,GAAIC,IACJzO,GAAI,kBACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,iBACHgD,OAAO,EACPhnB,IAAK,eACL8iB,OACE,mBAAqBa,GACkB,IAAvCA,EAASsD,QAAT,qBAIS,aAAjB7Q,EACA,CACE,CACEwQ,SAAU,CACRC,GAAIC,IACJzO,GAAI,cACJ0O,QAAS,eAAC,GAAD,IACT/C,GAAG,YACHgD,OAAO,EACPhnB,IAAK,WACL8iB,OACE,cAAgBa,GAA8C,IAAlCA,EAASsD,QAAT,gBAIpC,GAsBN,OArBGtD,EAAStb,SAAS,gBACjBsb,EAAStb,SAAS,eAClBsb,EAAStb,SAAS,eAClBsb,EAAStb,SAAS,aACpBse,EAAQ,CACN,CACEC,SAAU,CACRC,GAAIC,IACJzO,GAAI,YACJ0O,QAAS,eAAC3C,GAAA,EAAKC,KAAN,oBAAe,UAGxBL,GAAG,IACHgD,OAAO,EACPhnB,IAAK,SACL8iB,QAAO,MAOb,gBAAC,GAAD,WACE,eAACiD,GAAD,CAAmB5K,OAAQA,IAC3B,eAAC,GAAD,UACE,gBAAC+K,GAAD,WACE,eAACC,GAAD,UACE,eAACP,GAAD,CAAaC,YAAaA,MAE5B,eAACG,GAAD,CACEzP,KAAM,CAAE4Q,WAAW,EAAMC,UAAU,GACnCT,MAAOA,EACPU,YAAa,qBCjWnB/M,GAAUD,KAAO8I,OAAV,kLAqBEmE,GAbA,WACb,OACE,uCACE,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAAC,GAAD,QAGJ,eAACC,GAAD,QCTSC,GAVFnN,KAAO6G,EAAV,6KAMChgB,GCDIumB,GAJGpN,aAAOmN,GAAPnN,CAAH,6CACJlZ,GCELmZ,GAAUD,KAAOqN,OAAV,wDAIPC,GAAgBtN,KAAOzU,IAAV,wtBAYJ1E,GA6BT0mB,GAAWvN,KAAOzU,IAAV,yTAeCzE,GAKT0mB,GAAmBxN,KAAOzU,IAAV,6RAehB4b,GAAOnH,KAAOyN,IAAV,gEA4CKC,GAvCA,WACb,OACE,eAAC,GAAD,UACE,eAAC,GAAD,UACE,gBAACJ,GAAD,WACE,gBAACE,GAAD,WACE,gBAAC,GAAD,sCACuB,IAAIpI,MAAOuI,cADlC,mBAGA,oBACE/Q,KAAK,kCACL6H,OAAO,SACP8B,IAAI,sBAHN,SAKE,eAAC,KAAD,CAAO3U,IAAI,mCAGf,gBAAC2b,GAAD,WACE,oBACE3Q,KAAK,qBACL6H,OAAO,SACP8B,IAAI,sBAHN,SAKE,eAAC,GAAD,CAAM3U,IAAI,8BAEZ,oBACEgL,KAAK,wCACL6H,OAAO,SACP8B,IAAI,sBAHN,SAKE,eAAC,GAAD,CAAM3U,IAAI,uC,UC9BTgc,GA1FK5N,aAAO6N,KAAP7N,CAAH,u8D,oBCCXC,GAAUD,KAAOzU,IAAV,2OAYPuiB,GAAgB9N,aAAO+N,KAAP/N,CAAH,iEAiBJgO,GAbM,SAAC,GAAyB,IAAxB1H,EAAuB,EAAvBA,SAAUtZ,EAAa,EAAbA,QAC/B,OACE,eAAC,GAAD,UACE,gBAAC8gB,GAAD,WACE,eAACG,GAAA,EAAD,CAAQxF,OAAQzb,EAASkhB,UAAQ,EAAjC,SACE,eAAC,KAAD,CAAOtc,IAAI,wBAEZ0U,Q,UCpBH6H,GAAenO,aAAOoN,GAAPpN,CAAH,mRAoDHoO,GAvCE,SAAC,GAAsD,IAElEC,EAFc7kB,EAAmD,EAAnDA,QAAShC,EAA0C,EAA1CA,KAAM8mB,EAAoC,EAApCA,SAAUC,EAA0B,EAA1BA,MAAOC,EAAmB,EAAnBA,aAC5C1K,EAAgBD,KAEC,kBAAZra,EAEP6kB,EADEC,EACY,UAAM9kB,EAAQilB,UAAU,EAAG,GAA3B,cAAmCjlB,EAAQilB,UACvDjlB,EAAQ0c,OAAS,EACjB1c,EAAQ0c,SAGO1c,EAES,kBAAZA,IAEd6kB,EADEC,EACY,UAAM9kB,EAAQwU,GAAGyQ,UAAU,EAAG,GAA9B,cAAsCjlB,EAAQwU,GAAGyQ,UAC7DjlB,EAAQwU,GAAGkI,OAAS,EACpB1c,EAAQwU,GAAGkI,SAGI1c,EAAQwU,IAG7B,IAAI0Q,EAAclnB,EAKlB,OAJG8mB,GAAY9mB,IAAY,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM0e,QAAS,KACpCwI,GAAkB,OAAJlnB,QAAI,IAAJA,OAAA,EAAAA,EAAM6kB,MAAM,EAAG,KAAM,OAInC,eAACsC,GAAA,EAAD,CACEjC,QACE8B,IAA8BhnB,EAAI,UAAMA,EAAN,YAAcgC,GAAYA,GAE9D8X,KAAK,OACLsN,UAAWL,GAASzK,EACpB+K,QAAS,eAACV,GAAD,UAAeO,GAAeL,O,UCnD9B,SAASS,GAAT,GAAyC,IAAvBtlB,EAAsB,EAAtBA,QAAsB,IAAb8X,YAAa,MAAN,GAAM,EAGrD,OAAO,eAAC,KAAD,CAAW/U,MAAO/C,EAAS8X,KAAMA,EAAMyN,MAFhC,aCAhB,I,SAAM9O,GAAUD,KAAOzU,IAAV,4GAQPyjB,GAAgB,IAAIrnB,IAAI,CAC5B,CAAC,eAAgB,cACjB,CAAC,WAAY,QACb,CAAC,YAAa,SACd,CAAC,kBAAmB,kBACpB,CAAC,SAAU,YACX,CAAC,mBAAoB,aAiBRsnB,GAdD,SAAC,GAAgB,IAAd7oB,EAAa,EAAbA,OACf,GAAe,UAAXA,EACF,OAAO,KAGT,IAAM8oB,EAAOF,GAAcjmB,IAAI3C,GAC/B,IAAK8oB,EACH,OAAO,KAGT,IAAMC,EAAM,4BAAwBD,EAAxB,QACZ,OAAO,eAAC,GAAD,UAAUA,GAAQ,eAAC,KAAD,CAAOtd,IAAKud,OC3BxB,SAASC,GAAT,GAAiD,IAAzBxS,EAAwB,EAAxBA,KAAMyS,EAAkB,EAAlBA,KAAM/I,EAAY,EAAZA,SAC3Czb,EAAQ+a,YAAYhQ,IACpB0Z,EAAmB,kBAAczkB,EAAd,gBACnB0kB,EAAQ,OAAGF,QAAH,IAAGA,IAAQC,EACzB,OACE,eAACjJ,GAAD,CAAczJ,KAAM,IAAIpX,IAAIoX,EAAM2S,GAAU3S,KAA5C,SAAmD0J,ICPvD,I,2KAAMrG,GAAUD,KAAOzU,IAAV,8FAMPujB,GAAS9O,KAAOyN,IAAV,sFAMN+B,GAAUxP,KAAOzU,IAAV,+KAkBEkkB,GATQ,WACrB,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAQ7d,IAAI,2BAA2B8d,IAAI,KAC3C,eAACF,GAAD,4BClBAvP,GAAUD,KAAOzU,IAAV,+IASPokB,GAAe3P,KAAOzU,IAAV,yEAKZqkB,GAAO,SAAC,GAA8D,IAA5DpmB,EAA2D,EAA3DA,QAA2D,IAAlD8kB,gBAAkD,aAAjCC,aAAiC,SAAnBC,EAAmB,EAAnBA,aACtD,EAA4B1L,GAAYtZ,GAAhChC,EAAR,EAAQA,KAAMwb,EAAd,EAAcA,UACd,EAAgBZ,KAAT4B,EAAP,oBAEA,OACE,qCACGxa,EACC,gBAAC,GAAD,WACE,eAACslB,GAAD,CAAQtlB,QAASA,EAAS8X,KAAM,KAChC,gBAACqO,GAAD,WACE,eAAC,GAAD,eAAW3M,IACX,eAACoM,GAAD,CAAcxS,KAAI,mBAAcpT,GAAhC,SACE,eAAC,GAAD,CACEhC,KAAMA,EACNgC,QAASA,EACT8kB,SAAUA,GAAatK,GAAS,IAChCuK,MAAOA,EACPC,aAAcA,YAMtB,eAAC,GAAD,OAMOqB,OAAMC,KAAKF,IC/CpB3P,GAAUD,KAAOzU,IAAV,oHAkBEwkB,GATE,SAAC,GAAqB,IAAnBxjB,EAAkB,EAAlBA,MAAOyjB,EAAW,EAAXA,KACzB,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,UAAOzjB,IACP,eAAC,GAAD,UAAYyjB,QCVZ/P,GAAUD,KAAOzU,IAAV,oHAIT,SAACsb,GAAD,OACAA,EAAEoJ,SACFlJ,aADA,qUAcA,SAACF,GAAD,OACAA,EAAEqJ,YACFnJ,aADA,iKAUEoJ,GAAcnQ,KAAOzU,IAAV,sIAKb,SAACsb,GAAD,OACAA,EAAEqJ,YACFnJ,aADA,iEAqCWqJ,GA/BC,SAAC,GAQV,IAAD,IAPJ7jB,aAOI,MAPI,EAOJ,EANJ8jB,EAMI,EANJA,SACAC,EAKI,EALJA,KAKI,IAJJL,eAII,aAHJM,mBAGI,aAFJL,kBAEI,aADJM,oBACI,SACE1P,EAAS8E,YAAY/P,IACvB4a,EAAa3f,OAAOwf,GACV,OAAV/jB,QAA4BgG,IAAVhG,IAAqBA,EAAQ,GACnD,IAAMqE,EAAYD,GAAYpE,EAAOgE,GAAa8f,GAAYvP,IAAS,GACjE4P,EAAkB5f,OAAOF,GAAW0B,iBACpCqe,EAAcle,GAAoB7B,GAExC,OADI2f,IAAaE,GAA0B7f,GAEzC,gBAAC,GAAD,CAASqf,QAASA,EAASC,WAAYA,EAAvC,UACE,eAAC,GAAD,CACE3jB,MAAOikB,EAAeG,EAAcD,EACpCV,KAAMK,GAAYvP,IAEnBwP,IAAShI,MAAMmI,IACd,eAACN,GAAD,CAAaD,WAAYA,EAAzB,mBACiB,IAAfO,EAAmB,GAAK,UAD1B,YAEIte,GAAwBse,EAAY,UCxE1CxQ,GAAUD,KAAOzU,IAAV,mDAYEqlB,GARK,WAClB,OACE,eAAC,GAAD,UACE,eAAC,KAAD,CAAOhf,IAAI,wBAAwBoS,MAAO,OAAQjD,OAAQ,YCL1Dd,GAAUD,KAAOzU,IAAV,yLAqBEslB,GATA,SAAC,GAAuB,IAArBtkB,EAAoB,EAApBA,MAAOukB,EAAa,EAAbA,OACvB,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,UAAOvkB,IACP,eAAC,GAAD,UAAYukB,QCLHC,GAbI/Q,KAAOzU,IAAV,uPASL1E,GCAImqB,GAVS,WACtB,OACE,eAACnD,GAAA,EAAMoD,IAAP,UACE,eAACpD,GAAA,EAAMqD,KAAP,CAAY/I,UAAU,UAAUgJ,QAAQ,KAAKC,UAAU,SAAvD,wBCAAC,GAAcrR,KAAOyN,IAAV,mFAMX6D,GAActR,KAAOuR,KAAV,qJASXtR,GAAUD,KAAOzU,IAAV,yDAyBEimB,GArBO,SAAC,GAAyB,IAAvBlL,EAAsB,EAAtBA,SAAUtQ,EAAY,EAAZA,MACjC,OACE,gBAAC,GAAD,WACGsQ,EACAtQ,GACCA,EACGkI,QAAO,SAAC7V,GAAD,OAAUA,EAAKopB,aACtBpjB,KAAI,SAAChG,EAAMoO,GACV,MAAgB/E,GAAkBrJ,EAAKsJ,MAA9BC,EAAT,oBACA,OACE,eAAC0f,GAAD,UACE,eAACjL,GAAD,CAAczJ,KAAMvU,EAAKsJ,KAAzB,SACE,eAAC0f,GAAD,CAAazf,IAAKA,OAFJ6E,UClBjBib,GAZI,SAAC,GAAY,IAAXnoB,EAAU,EAAVA,KACbyM,EtCoDgB,SAACzM,GACvB,OAAIA,GAAwB,kBAATA,EACN,aACNA,EAAKooB,SACN,yGAGStjB,KAAI,SAAChG,GAAD,MAAW,CAAEopB,WAAW,EAAM9f,KAAMtJ,EAAK,OAErD,KsC7DOupB,CAASroB,GAEvB,OACE,qCACE,eAAC,GAAD,CAAeyM,MAAOA,EAAtB,SACGzM,OCSHsoB,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAiHFgS,GAvGG,SAAC,GAAuC,IAArC1rB,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OACpCjN,EAAU6R,cACVnR,EAAS8E,YAAY/P,IAU3B,OACE,gBAACgc,GAAD,WACG/I,EACD,eAAC,GAAD,UACE,eAACgJ,GAAD,UACE,eAACI,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC+kB,GAAD,CAAaI,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,0BACA,eAAC,GAAMA,WAAP,CAAkBjK,UAAU,SAA5B,oBACA,eAAC,GAAMiK,WAAP,qBACA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,mBACA,eAAC,GAAMgB,WAAP,CAAkBhB,UAAW,QAA7B,oBAGA,eAAC,GAAMgB,WAAP,CAAkBjK,UAAU,gBAGhC,eAAC,GAAMkK,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAMwa,IAAP,CAEEzK,QAAS,kBAjCTzF,EAkCa1Y,EAAKiqB,qBAlCVvnB,EAkCgC1C,EAAK0C,UAjC3DgW,GAAUhW,GACR7E,OAAOuc,WAAa,MACtBrC,EAAQsB,KAAR,gBAAsBX,EAAtB,YAAgChW,KAHnB,IAACgW,EAAQhW,GA+BV,UAME,eAAC,GAAMmmB,KAAP,CAAY/I,UAAU,YAAtB,SACE,eAAC,GAAD,CAAM3e,QAASnB,EAAKkqB,gBAEtB,eAAC,GAAMrB,KAAP,CAAY/I,UAAU,mBAAtB,SACE,eAAC,GAAD,CAAM3e,QAASnB,EAAKmqB,WAEtB,eAAC,GAAMtB,KAAP,UACE,eAAC,GAAD,UACE,eAAC,GAAD,CAAY3nB,KAAMlB,EAAKoqB,aAG3B,eAAC,GAAMvB,KAAP,CAAY/I,UAAU,eAAeiJ,UAAW,QAAhD,SACG/oB,EAAK6F,aAAejH,EACnB,KAEA,eAAC,GAAD,CACEsF,MAAOlE,EAAKqqB,YACZrC,SAAUvP,EACVwP,KAAMjoB,EAAKsqB,gBAIjB,eAAC,GAAMzB,KAAP,CACE/I,UAAS,sBACP9f,EAAK0F,SAAW,gBAAkB,IAEpCqjB,UAAW,QAJb,SAMG/oB,EAAK0F,SACJ,eAAC6kB,GAAD,CACErmB,MAAOlE,EAAK6F,WACZ4iB,OAAQvf,KACN+E,SAASjO,EAAK4F,YAAY/C,OAC1B2nB,OAAO,sBAETxqB,EAAK6F,aAAejH,EAApB,UACCoB,EAAK6F,WADN,aACqB7F,EAAKyhB,UAD1B,KAGFzhB,EAAK6F,aAGT,eAAC,GAAMgjB,KAAP,CAAY/I,UAAU,mBAAtB,SACE,eAAC,IAAD,CACEwB,GAAE,gBACAthB,EAAKiqB,qBADL,YAEEjqB,EAAK0C,MAHX,SAKE,eAAC,GAAD,UApDC0L,OAwDF,eAAC,GAAD,eAMlB4W,M,UC3GQyF,GAtCM9S,aAAO+S,KAAKC,OAAZhT,CAAH,q4BCIZiT,GAAcjT,aAAO+S,KAAP/S,CAAH,+EAIXkT,GAAelT,aAAOgT,GAAPhT,CAAH,gDAIZmT,GAAa,CACjB,CAAExtB,IAAK,MAAO4G,MAAO,KAAMhD,KAAM,eADhB,oBAEd6pB,MAAMC,KAAK,IAAIC,IAAI7tB,OAAO8tB,OAAOrsB,KAAgBmH,KAAI,SAAC1I,GAAD,MAAU,CAChEA,MACA4G,MAAO9G,OAAO+tB,QAAQtsB,GACnBgX,QAAO,yCAAiBvY,KACxB0I,KAAI,0CACJolB,KAAK,MACRlqB,KAAM5D,QAsCK+tB,GAlCA,SAAC,GAAsB,IAApBnnB,EAAmB,EAAnBA,MAAOF,EAAY,EAAZA,MACvB,EAA4BgW,mBAAS,IAArC,mBAAOjc,EAAP,KAAeutB,EAAf,KAGMC,EAAWjQ,kBAAO,GAiBxB,OAhBAtD,qBAAU,WACR,GAAIuT,EAAShQ,QACXgQ,EAAShQ,SAAU,MADrB,CAIA,IAAMtd,EAAO,CACXF,UAEF,IAAK,IAAIT,KAAOW,EACI,KAAdA,EAAKX,IAA6B,OAAdW,EAAKX,WACpBW,EAAKX,GAGhB0G,EAAM/F,MACL,CAACF,EAAQiG,IAGV,eAAC4mB,GAAD,UACE,eAACC,GAAD,CACE1rB,KAAK,SACLqsB,OAAK,EACLvuB,QAAS6tB,GACT5mB,MAAOA,EACPunB,SAAU,SAAC5rB,EAAD,OAAMqE,EAAN,EAAMA,MAAN,OAAkBonB,EAAUpnB,S,oBCvC/BwnB,GAdE,WACf,OAAO,uBAAK/P,MAAM,KAAKjD,OAAO,KAAK+J,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,UACL,oBAAGgJ,SAAS,yBAAZ,SACE,uBAAM/I,EAAE,wCAAwCC,OAAO,QAAQC,cAAc,OAAOC,YAAY,MAC1FC,cAAc,QAAQC,eAAe,YAE7C,gCACE,2BAAUtN,GAAG,mBAAb,SACE,uBAAMgG,MAAM,KAAKjD,OAAO,KAAKgK,KAAK,QAAQkJ,UAAU,2BCO7CC,GAfM,WACnB,OAAO,uBAAKlQ,MAAM,KAAKjD,OAAO,KAAK+J,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,UACL,uBAAMhH,MAAM,KAAKjD,OAAO,KAAKoT,GAAG,IAAIpJ,KAAK,YACzC,oBAAGiJ,SAAS,wBAAZ,SACE,uBAAM/I,EAAE,wCAAwCC,OAAO,QAAQC,cAAc,OAAOC,YAAY,MAC1FC,cAAc,QAAQC,eAAe,YAE7C,gCACE,2BAAUtN,GAAG,kBAAb,SACE,uBAAMgG,MAAM,KAAKjD,OAAO,KAAKgK,KAAK,QAAQkJ,UAAU,2BCF7CG,GAPE,WACf,OAAO,sBAAKpQ,MAAM,KAAKjD,OAAO,KAAK+J,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,SACL,uBAAMC,EAAE,wCAAwCC,OAAO,QAAQC,cAAc,OAAOC,YAAY,MAC1FC,cAAc,QAAQC,eAAe,aCKhC+I,GARM,WACnB,OAAO,uBAAKrQ,MAAM,KAAKjD,OAAO,KAAK+J,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,UACL,uBAAMhH,MAAM,KAAKjD,OAAO,KAAKoT,GAAG,IAAIpJ,KAAK,YACzC,uBAAME,EAAE,wCAAwCC,OAAO,QAAQC,cAAc,OAAOC,YAAY,MAC1FC,cAAc,QAAQC,eAAe,cCKzCrL,GAAUD,KAAOzU,IAAV,g7BAUExE,EACKC,GA0DLstB,GAxBU,SAACC,GAExB,IADmBA,EAAMC,WACR,OAAO,KACxB,IAAMC,EAA4B,IAArBF,EAAMG,WAAmBR,GAAeH,GAC/CY,EAAOJ,EAAMG,aAAeH,EAAMC,WAAaH,GAAeD,GACpE,OACE,eAAC,GAAD,UACE,eAACQ,GAAA,EAAD,aACEC,cAAe,EACfC,aAAc,EACdC,aAAc,CACZrI,QAAS,eAAC,KAAD,CAAMllB,KAAK,wBACpB0nB,MAAM,GAER8F,UAAW,KACXC,SAAU,KACVC,SAAU,CAACxI,QAAS,eAAC+H,EAAD,IAAUvF,MAAM,GACpCiG,SAAU,CAACzI,QAAS,eAACiI,EAAD,IAAUzF,MAAM,IAChCqF,O,UCrENxU,GAAYC,KAAOzU,IAAV,4fA4BT6pB,GAAcpV,KAAOzU,IAAV,iEAKX8pB,GAAkBrV,KAAOzU,IAAV,oFAMf+pB,GAAetV,KAAOzU,IAAV,qJAQZgqB,GAAiBvV,aAAOwV,KAAPxV,CAAH,k3CAsDdyV,GAAgBzV,KAAOzU,IAAV,mEAKbjG,GAAU,CACd,CAAEK,IAAK,EAAG4D,KAAM,KAAMgD,MAAO,IAC7B,CAAE5G,IAAK,EAAG4D,KAAM,KAAMgD,MAAO,IAC7B,CAAE5G,IAAK,EAAG4D,KAAM,MAAOgD,MAAO,MA8CjBmpB,GA3Cc,SAAC,GAMvB,IALLhB,EAKI,EALJA,WACAF,EAII,EAJJA,WACAmB,EAGI,EAHJA,aACA7oB,EAEI,EAFJA,SACA8oB,EACI,EADJA,YAEA,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,CACElB,WAAYA,EACZF,WAAYA,EACZmB,aAAcA,IAEhB,eAAC,GAAD,CACEjB,WAAYA,EACZF,WAAYA,EACZQ,UAAW,KACXC,SAAU,KACVH,aAAc,EACda,aAAcA,IAEfnB,EAAa,GACZ,gBAACiB,GAAD,WACE,eAACL,GAAD,CAAajN,UAAU,SAAvB,SACE,eAACmN,GAAD,0BAEF,eAACD,GAAD,UACE,eAACE,GAAD,CACEhpB,MAAOO,EACPxH,QAASA,GACTuwB,WAAS,EACT/B,SAAU,SAACgC,EAAD,GAAmB,IAAbvpB,EAAY,EAAZA,MACdqpB,EAAYrpB,eCvItBwpB,GAAgB/V,KAAOzU,IAAV,mIAObyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FA0FIiW,GAjFF,WAAO,IAAD,EACXC,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQnBE,EAAe9S,KAAWva,IAAI,UAEpC,EAAkCsZ,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,eAbsB,IAYxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAIA,EAAoCvT,mBAClC+T,EACI,CACEhwB,OAAQgwB,GAEV,IALN,mBAAOG,EAAP,KAAmBC,EAAnB,KAQMxiB,EAAW6R,cACXzF,EAAU6R,cAChB,EAA+BrM,YAAYzX,IAA5BhF,EAAf,EAAQyD,MAAaG,EAArB,EAAqBA,MACfC,EAAU4Y,YAAYtX,IACtBkmB,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAErCuT,qBAAU,WACRrM,ExEZF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAIypB,EAA1B,uDAAuC,GAAvC,8CACA,WAAOviB,GAAP,iBAAA/N,EAAA,6DACE+N,EAASzG,IAAW,IADtB,kBAI6BtE,EAAI9D,MAAJ,qBACvB0H,OACAC,YACGypB,IAPT,gBAIY9vB,EAJZ,EAIYA,OAKRuN,EAAS5G,GAAQ3G,GAAU,KAT/B,uBAWIuN,EAASzG,IAAW,IAXxB,yEADA,sDwEYWmpB,CAAUL,EAAY,EAAGvpB,EAAUypB,MAC3C,CAACviB,EAAUqiB,EAAWvpB,EAAUypB,IAEnC,IAAMI,EAAc9N,uBAClB,SAACviB,GACCkwB,EAAclwB,GACdgwB,EAAa,GACblW,EAAQsB,KAAK,CACX+B,OAAQnd,EAAKF,OAAL,iBAAwBE,EAAKF,QAAW,SAGpD,CAACga,IAGH,OACE,qCACE,eAAC,GAAD,CACE9Z,KAAM6C,EACN6D,QAASA,EACT8b,OACE,gBAACiN,GAAD,WACE,eAACC,GAAD,mBACA,eAAC,GAAD,CAAQzpB,MAAK,UAAEgqB,EAAWnwB,cAAb,QAAuB,KAAMiG,MAAOsqB,OAGrDtJ,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EA7Da,GA8DbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OArEW,IAsETiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,WCjGrBzU,GAAUD,KAAOzU,IAAV,yEAKPqV,GAAQZ,KAAOuR,KAAV,2LAOAzqB,GACP,SAAC+f,GAAD,OACCA,EAAE+P,SACH7P,aADA,2HAGalgB,MAeFgwB,GATM,SAAC,GAAwB,IAAtBtqB,EAAqB,EAArBA,MAAOqqB,EAAc,EAAdA,QAC7B,OACE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOhlB,IAAK,sBACZ,eAAC,GAAD,CAAOglB,QAASA,EAAhB,SAA0BrqB,QCzB1B0T,GAAUD,KAAOzU,IAAV,gNAaP8lB,GAAcrR,aAAOkE,KAAPlE,CAAH,+CA8BF8W,GA1BM,SAAC,GAAe,IAAb9gB,EAAY,EAAZA,MAChB8N,EAAgBD,KACtB,OACE,eAAC,GAAD,WACI7N,GAAS,IAAI3H,KAAI,SAAChG,EAAMoO,GACxB,MAAgB/E,GAAkBrJ,EAAKsJ,MAA9BC,EAAT,oBACA,OACE,eAAC+c,GAAA,EAAD,CACEjC,QAASrkB,EAAKuO,YACd0K,KAAK,OACLsN,SAAU9K,IAAkBzb,EAAKuO,YACjCiY,QACE,+BACE,eAACxI,GAAD,CAAczJ,KAAMvU,EAAKsJ,KAAzB,SACE,eAAC,GAAD,CAAaC,IAAKA,SAInB6E,SCrCXwJ,GAAUD,KAAOzU,IAAV,uGAMPyqB,GAAQhW,KAAOzU,IAAV,qDAILwrB,GAAc/W,KAAOzU,IAAV,2EAiCFyrB,GA5BY,SAAC,GAA6C,IAA3CC,EAA0C,EAA1CA,gBAAiBC,EAAyB,EAAzBA,mBAC7C,EACEpU,GAAYmU,GADAE,EAAd,EAAQ3vB,KAA+B4vB,EAAvC,EAA4BpU,UAE5B,EACEF,GAAYoU,GADAG,EAAd,EAAQ7vB,KAAkC8vB,EAA1C,EAA+BtU,UAG/B,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,uBACCmU,GACC,gBAACJ,GAAD,WACE,eAAC,GAAD,eAAWK,IACX,+BAAMD,OAGV,+BAAMF,IACN,eAAC,GAAD,0BACCI,GACC,gBAACN,GAAD,WACE,eAAC,GAAD,eAAWO,IACX,+BAAMD,OAGV,+BAAMH,QCzCNjX,GAAUD,KAAOzU,IAAV,uJAiBEgsB,GARS,SAAC,GAAqB,IAAnB3gB,EAAkB,EAAlBA,YACzB,OACE,eAAC,GAAD,UACE,+BAAMA,OCQNib,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAUXwX,GAAqBxX,KAAOzU,IAAV,gcAwBlBksB,GAAoBzX,KAAOzU,IAAV,0JAQjBmsB,GAAyB,SAACrvB,GAC9B,MAAoCA,EAAK4F,YAA1B0pB,EAAf,EAAQtqB,MAAmB7F,EAA3B,EAA2BA,KACrB6F,EAAQsqB,GAAcnwB,EAG5B,GAFyB,CAAC,gBAAiB,gBAAgBwG,SAASX,GAE9C,CAAC,IAAD,IACduqB,EAAK,UAAGvvB,EAAK4F,YAAY4pB,oBAApB,iBAAG,EAA+BC,YAAlC,aAAG,EAAqC5R,OACnD,QAAc3T,IAAVqlB,EACF,OAAOvqB,EAAK,YAAQuqB,EAAR,KAIhB,OAAOvqB,GA0IM0qB,GAvIQ,SAAC,GAAuC,IAArCzxB,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OACzCjN,EAAU6R,cACVnR,EAAS8E,YAAY/P,IAC3B,EAA0CwM,oBAAS,GAAnD,mBAAO2V,EAAP,KAAsBC,EAAtB,KAQA,OACE,gBAAC,GAAD,WACGnP,EACD,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAACoJ,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,oBACA,eAAC,GAAMA,WAAP,2BACA,eAAC,GAAMA,WAAP,UACE,eAACqF,GAAD,CACEjR,QAAS,kBAAMyR,GAAkBD,IADnC,SAGGA,EAAgB,cAAgB,eAGrC,eAAC,GAAM5F,WAAP,sBACA,eAAC,GAAMA,WAAP,0BACA,eAAC,GAAMA,WAAP,4BACA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,mBACA,eAAC,GAAMgB,WAAP,CAAkBhB,UAAW,QAA7B,oBAGA,eAAC,GAAMgB,WAAP,CAAkBjK,UAAU,gBAGhC,eAAC,GAAMkK,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAMwa,IAAP,CAEEzK,QAAS,kBAxCT0R,EAwC0B7vB,EAAK6vB,mBAvC7ChyB,OAAOuc,WAAa,MACtBrC,EAAQsB,KAAR,qBAA2BwW,KAFZ,IAACA,GAsCF,UAIE,eAAC,GAAMhH,KAAP,CAAY/I,UAAU,aAAtB,SACE,eAAC,GAAD,qBAAgB9f,EAAK6vB,mBAEvB,eAAC,GAAMhH,KAAP,CAAY/I,UAAU,wBAAtB,SACE,gBAACqP,GAAD,WACE,eAAC,GAAD,UACGjmB,KAAM+E,SAASjO,EAAK8vB,cAActF,OACjC,yBAGJ,eAACzD,GAAD,CACExS,KAAI,iBAAYvU,EAAKiqB,sBADvB,SAGE,eAAC,GAAD,CAAc/lB,MAAOlE,EAAKiqB,8BAIhC,eAAC,GAAMpB,KAAP,CAAY/I,UAAU,qBAAtB,SACG6P,EACC,eAAC,GAAD,CACExuB,QAASnB,EAAKkqB,YACd/D,aACE,eAAC,GAAD,CACEyI,gBAAiB5uB,EAAK+vB,SACtBlB,mBAAoB7uB,EAAKkqB,gBAK/B,eAAC,GAAD,CACE/oB,QAASnB,EAAK+vB,SACd5J,aACE,eAAC,GAAD,CACEyI,gBAAiB5uB,EAAK+vB,SACtBlB,mBAAoB7uB,EAAKkqB,kBAMnC,eAAC,GAAMrB,KAAP,CAAY/I,UAAU,qBAAtB,SACG9f,EAAKgwB,SAAW,eAAC,GAAD,CAAM7uB,QAASnB,EAAKgwB,YAEvC,eAAC,GAAMnH,KAAP,CAAY/I,UAAU,4BAAtB,SACE,eAAC,GAAD,CAAiBvR,YAAavO,EAAKuO,gBAErC,eAAC,GAAMsa,KAAP,CAAY/I,UAAU,8BAAtB,SACE,eAAC,GAAD,CAAcnS,MAAO3N,EAAK2N,UAE5B,eAAC,GAAMkb,KAAP,CACE/I,UAAU,sBACViJ,UAAW,QAFb,SAIE,eAAC,GAAD,CACE7kB,MAAOlE,EAAKkE,MACZ8jB,SAAUvP,EACVwP,KAAMjoB,EAAKsqB,YACXnC,cAAc,MAGlB,eAAC,GAAMU,KAAP,CACE/I,UAAU,uBACViJ,UAAW,QAFb,SAIE,eAACwB,GAAD,CACErmB,MAAOmrB,GAAuBrvB,GAC9ByoB,OAAQvf,KAAM+E,SAASjO,EAAK4F,YAAY/C,OAAO2nB,OAC7C,wBAIN,eAAC,GAAM3B,KAAP,CAAY/I,UAAU,mBAAtB,SACE,eAAC,IAAD,CAASwB,GAAE,qBAAgBthB,EAAK6vB,eAAhC,SACE,eAAC,GAAD,UA5ECzhB,OAgFF,eAAC,GAAD,eAMlB4W,MChODiL,GAAgBtY,KAAOzU,IAAV,uFAMbgtB,GAAavY,KAAOzU,IAAV,6JAKMvE,GAIhBwxB,GAAqBxY,KAAOzU,IAAV,uFAMlBktB,GAAczY,KAAOzU,IAAV,wLAQKxE,GAGhB2xB,GAAkB1Y,aAAOyY,GAAPzY,CAAH,yHAEC,SAAC6G,GAAD,OAAOA,EAAE8R,QAEzBC,GAAmB5Y,aAAOyY,GAAPzY,CAAH,kHAEN,SAAC6G,GAAD,OAAQA,EAAEgS,SAAW,UAAY,YAG3CC,GAAsB9Y,aAAOuY,GAAPvY,CAAH,8GAET,SAAC6G,GAAD,OAAQA,EAAEgS,SAAW,SAAW,aAG1CE,GAAuB/Y,aAAOuY,GAAPvY,CAAH,kHAEV,SAAC6G,GAAD,OAAQA,EAAEgS,SAAW,UAAY,YAG3CG,GAAehZ,aAAOmN,GAAPnN,CAAH,0IAgCHiZ,GAxBG,SAAC,GAAqB,IAAD,IAAlBC,QACfC,EAAa7iB,cADoB,MAAR,EAAQ,IAEjCgS,MAAM6Q,IAAeA,EAAa,KACpCA,EAAa,GAEf,IAAIR,EAAOQ,EAAa,IACpBA,EAAa,MACfR,EAAO,GAET,IAAME,EAAWM,EAAa,GAC9B,OACE,gBAACb,GAAD,CAAenQ,UAAU,OAAzB,UACE,eAACoQ,GAAD,IACA,gBAACC,GAAD,WACE,eAACE,GAAD,CAAiBC,KAAMA,EAAME,SAAUA,IACvC,eAACC,GAAD,CAAqBD,SAAUA,IAC/B,eAACE,GAAD,CAAsBF,SAAUA,IAChC,eAACD,GAAD,CAAkBC,SAAUA,OAE9B,eAACG,GAAD,oBAAkBG,EAAlB,W,UCpFOC,GAAQ,SAACC,GAAD,yFAGKA,EAHL,4CAIMA,EAJN,2EAOMA,EAPN,yEAUKA,EAVL,sBCKfC,GAAsBC,WAEtBC,GAAqBD,WAErBE,GAAwBzZ,KAAOuR,KAAV,+BAErBmI,GAAqB1Z,KAAOzU,IAAV,uDAEpBwb,aAFoB,+BAEdqS,GAAM,SAEVO,GAAoB,CAAEC,EAAG,IAAKC,IAAK,MAAO5O,EAAG,IAAK6O,EAAG,IAAKC,IAAK,MAAOh1B,EAAG,KAEhE,SAASi1B,GAAT,GASX,IARF9uB,EAQC,EARDA,KAQC,IAPD+uB,kBAOC,MAPY,EAOZ,MANDC,oBAMC,MANcZ,GAMd,MALDa,mBAKC,MALaX,GAKb,MAJDY,sBAIC,MAJgBX,GAIhB,MAHDY,mBAGC,MAHaX,GAGb,MAFDY,kBAEC,MAFY,GAEZ,MADDC,wBACC,MADkB,GAClB,EACDD,EAAa70B,OAAO+0B,OAAO,GAAIb,GAAmBW,GAClD,IAAMG,E7EiFD,SAA+BvvB,GAYpC,IAZ2D,IAAjB+uB,EAAgB,uDAAH,EACjDxoB,EAAWF,KAAME,SAASvG,GAE1BzE,EAAS,GAETi0B,EAAW,CACfjpB,EAASkpB,SAAW,CAAClpB,EAASkpB,QAAS,KACvClpB,EAASmpB,UAAY,CAACnpB,EAASmpB,SAAU,OACzCnpB,EAASopB,QAAU,CAACppB,EAASopB,OAAQ,KACrCppB,EAASqpB,SAAW,CAACrpB,EAASqpB,QAAS,KACvCrpB,EAASspB,WAAa,CAACtpB,EAASspB,UAAW,QAEpCC,EAAI,EAAGC,EAAI,EAAGD,EAAIN,EAASxU,QAAU+U,EAAIhB,EAAYe,IAAK,CACjE,IAAME,EAAMR,EAASM,IAChBE,GAAQD,KAITC,GACFz0B,EAAOib,KAAKwZ,GAGdD,KAOF,OAJsB,IAAlBx0B,EAAOyf,QACTzf,EAAOib,KAAK,CAACjQ,EAAS0pB,UAAW,MAG5B10B,E6E9GgB20B,CAAsBlwB,EAAM+uB,GACnD,OACE,eAACI,EAAD,UACGI,EAAepsB,KAAI,SAAA6sB,GAAG,OACrB,gBAACd,EAAD,WACE,eAACF,EAAD,UAAegB,EAAI,KACnB,eAACf,EAAD,UAAee,EAAI,GAAK,GAAKX,EAAiBW,EAAI,KAAQZ,EAAWY,EAAI,QAFtDA,EAAI,S,kBC3BlB,SAASG,GAAT,GAAuD,IAAtB3vB,EAAqB,EAArBA,OAAW2M,EAAU,mBACnE,EAAwBgK,mBAAS,GAAjC,mBAAOnX,EAAP,KAAaowB,EAAb,KACMpY,EAAYQ,KAUlB,OARArD,qBAAU,WACR5U,GAAmBC,GAAQmW,MAAK,SAAC0Z,GAC3BrY,EAAUU,SACZ0X,EAAQC,QAGX,CAAC7vB,EAAQwX,IAEL,eAAC8W,GAAD,aAAY9uB,KAAMA,GAAUmN,I,uECdtB,SAASmjB,GAAT,GAKX,IAJF9vB,EAIC,EAJDA,OAIC,IAHD4uB,kBAGC,MAHY,GAGZ,MAFDC,wBAEC,MAFkB,GAElB,EADEliB,EACF,mBACD,OACE,eAACgjB,GAAD,aACE3vB,OAAQA,EACR4uB,WAAY70B,OAAO+0B,OACjB,CAAEZ,EAAG,KAAM3O,EAAG,MAAO6O,EAAG,KAAM/0B,EAAG,OACjCu1B,GAEFC,iBAAkB90B,OAAO+0B,OACvB,CAAEZ,EAAG,MAAOC,IAAK,OAAQ5O,EAAG,OAAQ6O,EAAG,MAAOC,IAAK,OAAQh1B,EAAG,QAC9Dw1B,IAEEliB,ICCV,I,8KAAM4H,GAAUD,aAAOgB,GAAPhB,CAAH,4QAcPgK,GAAOhK,KAAOzU,IAAV,spBA0CJyqB,GAAQhW,aAAOoN,GAAPpN,CAAH,8ErF3EwB,sBqFgF7Byb,GAAQzb,aAAOmN,GAAPnN,CAAH,+FAML0b,GAAO1b,aAAOoN,GAAPpN,CAAH,+FAMJka,GAAela,KAAOzU,IAAV,uDAEdwb,aAFc,yCAGZqS,GAAM,SAuEGuC,GAnEC,WACd,IAAM3nB,EAAW6R,cAEjBxF,qBAAU,WACRrM,ElF5BiC,uCAAM,WAAOA,GAAP,mBAAA/N,EAAA,sEAChBgD,EAAI9D,MAAJ,sBADgB,gBACjCsB,EADiC,EACjCA,OACFm1B,EAAU,CACd7uB,MAAO,EACPmC,aAAc,EACdC,cAAe,EACfC,aAAc,GAEZ3I,IACFm1B,EAAQ7uB,MAAQtG,EAAOsG,MACvB6uB,EAAQ1sB,cACLzI,EAAOo1B,UAAY,IACnBp1B,EAAOq1B,eAAiB,IACxBr1B,EAAOs1B,cAAgB,GAC1BH,EAAQzsB,cAAgB1I,EAAOu1B,UAAY,EAC3CJ,EAAQxsB,aAAe3I,EAAOw1B,SAAW,GAE3CjoB,EAASxE,GAAmBosB,IAjBa,2CAAN,uDkF6BjC5nB,EAASmB,MACTnB,EAASD,QACR,CAACC,IAEJ,IAAM4nB,EAAUhW,YAAYhW,IACtB6E,EAAcmR,YAAYjQ,IAC1BhC,EAAWiS,YAAYxR,IACvB0M,EAAS8E,YAAY/P,IAE3B,OACE,gBAAC,GAAD,WACE,gBAAC,GAAD,WACE,eAAC,GAAD,sBACA,eAAC4lB,GAAD,UAAQG,EAAQ1sB,kBAElB,gBAAC,GAAD,WACE,eAAC,GAAD,uBACA,eAACusB,GAAD,UAAQG,EAAQzsB,mBAElB,gBAAC,GAAD,WACE,eAAC,GAAD,sBACA,eAACssB,GAAD,UAAQG,EAAQxsB,kBAElB,gBAAC,GAAD,CAAM+Y,UAAU,OAAhB,UACE,eAAC,GAAD,oBACA,eAACsT,GAAD,UAAQG,EAAQ7uB,WAElB,gBAAC,GAAD,CAAMob,UAAU,YAAhB,UACE,eAAC,GAAD,wBACA,gBAAC,GAAD,WACE,eAACsT,GAAD,UAAQhpB,GAAoBkB,EAASC,KAAM,KAC3C,eAAC8nB,GAAD,UAAO5a,UAGX,gBAAC,GAAD,CAAMqH,UAAU,YAAhB,UACE,eAAC,GAAD,wBACA,gBAAC,GAAD,WACE,eAACsT,GAAD,UACGhpB,GAAoBkB,EAASE,YAAcF,EAASC,KAAM,KAE7D,eAAC8nB,GAAD,UAAO5a,UAGX,gBAAC,GAAD,CAAMqH,UAAU,eAAhB,UACE,eAAC,GAAD,2BACA,eAACqT,GAAD,CACE9vB,OAAQ+I,EAAYI,WACpBqlB,aAAcuB,GACdtB,YAAauB,GACbtB,eAAgBb,WAChBc,YAAaH,GACbI,WAAY,CAAErP,EAAG,OACjBsP,iBAAkB,CAAEtP,EAAG,aAG3B,eAAC,GAAD,CAAM9C,UAAU,qBAAhB,SACE,eAAC,GAAD,CAAW+Q,QAASzkB,EAAYK,iBC5JlCme,GAAcjT,aAAO+S,KAAP/S,CAAH,+EAIXkT,GAAelT,aAAOgT,GAAPhT,CAAH,gDAIZmT,GAAa,CACjB,CAAExtB,IAAK,MAAO4G,MAAO,KAAMhD,KAAM,eADhB,oBAEd,CACD,UACA,WACA,WACA,WACA,gBACA,gBACA8E,KAAI,SAAChG,GAAD,MAAW,CACf1C,IAAK0C,EACLkE,MAAOlE,EACPkB,KAAMlB,QAsCKqrB,GAlCA,SAAC,GAAe,IAAbrnB,EAAY,EAAZA,MAChB,EAA4BgW,mBAAS,IAArC,mBAAOjc,EAAP,KAAeutB,EAAf,KAGMC,EAAWjQ,kBAAO,GAiBxB,OAhBAtD,qBAAU,WACR,GAAIuT,EAAShQ,QACXgQ,EAAShQ,SAAU,MADrB,CAIA,IAAMtd,EAAO,CACXF,UAEF,IAAK,IAAIT,KAAOW,EACI,KAAdA,EAAKX,IAA6B,OAAdW,EAAKX,WACpBW,EAAKX,GAGhB0G,EAAM/F,MACL,CAACF,EAAQiG,IAGV,eAAC,GAAD,UACE,eAAC,GAAD,CACE7E,KAAK,SACLqsB,OAAK,EACLvuB,QAAS6tB,GACT+I,aAAa,KACbpI,SAAU,SAAC5rB,EAAD,KAAMV,KAAN,IAAY+E,EAAZ,EAAYA,MAAZ,OAAwBonB,EAAUpnB,SCxC9CwpB,GAAgB/V,KAAOzU,IAAV,mIAObyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FA8EImc,GArEG,WAChB,IAAMjG,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQzB,EAAkC7T,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,oBAXsB,IAUxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAIA,EAAoCvT,mBAAS,IAA7C,mBAAOkU,EAAP,KAAmBC,EAAnB,KAEMxiB,EAAW6R,cACXzF,EAAU6R,cAChB,EAAoCrM,YAAYnW,IAAjCX,EAAf,EAAQlC,MAAkBG,EAA1B,EAA0BA,MACpBC,EAAU4Y,YAAYtX,IAE5B+R,qBAAU,WACRrM,EpFHF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAIypB,EAA1B,uDAAuC,GAAvC,8CACA,WAAOviB,GAAP,iBAAA/N,EAAA,6DACE+N,EAASzG,IAAW,IADtB,kBAI6BtE,EAAI9D,MAAJ,0BACvB0H,OACAC,YACGypB,IAPT,gBAIY9vB,EAJZ,EAIYA,OAKRuN,EAAS3E,GAAa5I,GAAU,KATpC,uBAWIuN,EAASzG,IAAW,IAXxB,yEADA,sDoFGW6uB,CAAe/F,EAAY,EAAGvpB,EAAUypB,MAChD,CAACviB,EAAUqiB,EAAWvpB,EAAUypB,IAEnC,IAAM/B,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAE/B6pB,EAAc9N,uBAAY,SAACviB,GAC/BkwB,EAAclwB,GACdgwB,EAAa,KACZ,IAEH,OACE,uCACE,eAAC,GAAD,IACA,eAAC,GAAD,CACExN,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,wBACA,eAAC,GAAD,CAAQzc,MAAOsqB,OAGnBrwB,KAAMwI,EACN9B,QAASA,EACTqgB,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EAjDa,GAkDbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OAzDW,IA0DTiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,YC3ErB7C,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAUXwX,GAAqBxX,KAAOzU,IAAV,wHAQlB8wB,GAAUrc,aAAOmN,GAAPnN,CAAH,8DAIPsc,GAAWtc,aAAO6N,GAAMoD,IAAbjR,CAAH,gDAgGCuc,GA5FO,SAAC,GAAuC,IAArCj2B,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OACxCjN,EAAU6R,cACVnR,EAAS8E,YAAY/P,IAQ3B,OACE,gBAAC,GAAD,WACGiT,EACD,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAACoJ,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,oBACA,eAAC,GAAMA,WAAP,2BACA,eAAC,GAAMA,WAAP,sBACA,eAAC,GAAMA,WAAP,oBACA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,mBACA,eAAC,GAAMgB,WAAP,CAAkBhB,UAAW,QAA7B,oBAGA,eAAC,GAAMgB,WAAP,CAAkBjK,UAAU,gBAGhC,eAAC,GAAMkK,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,aACP,gBAAC6lB,GAAD,CAEE9V,QAAS,kBAhCTgW,EAgC0Bn0B,EAAKm0B,iBA/B7Ct2B,OAAOuc,WAAa,MACtBrC,EAAQsB,KAAR,oBAA0B8a,KAFX,IAACA,GA8BF,UAIE,eAAC,GAAMtL,KAAP,CAAY/I,UAAU,aAAtB,SACE,eAAC,GAAD,qBAAgB9f,EAAKm0B,iBAEvB,eAAC,GAAMtL,KAAP,CAAY/I,UAAU,oBAAtB,SACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACG5W,KAAM+E,SAASjO,EAAK8vB,cAActF,OACjC,yBAGJ,eAACzD,GAAD,CACExS,KAAI,iBAAYvU,EAAKiqB,sBADvB,SAGE,eAAC,GAAD,CAAc/lB,MAAOlE,EAAKiqB,8BAIhC,eAAC,GAAMpB,KAAP,CAAY/I,UAAU,YAAtB,SACG9f,EAAKgwB,QAAU,eAAC,GAAD,CAAM7uB,QAASnB,EAAKgwB,UAAc,OAEpD,eAAC,GAAMnH,KAAP,CAAY/I,UAAU,aAAtB,SACE,eAAC,GAAD,UAAO9f,EAAKo0B,UAEd,eAAC,GAAMvL,KAAP,CAAY/I,UAAU,eAAeiJ,UAAW,QAAhD,SACE,eAAC,GAAD,CACE7kB,MAAOlE,EAAKkE,MACZ8jB,SAAUvP,EACVwP,KAAMjoB,EAAKsqB,gBAGf,eAAC,GAAMzB,KAAP,CAAYE,UAAW,QAAvB,SACE,eAACiL,GAAD,oBAAUh0B,EAAKgF,aAAf,aAAU,EAAYA,UAExB,eAAC,GAAM6jB,KAAP,CAAY/I,UAAU,mBAAtB,SACE,eAAC,IAAD,CACEwB,GAAE,oBACAthB,EAAKm0B,aAFT,SAKE,eAAC,GAAD,UA1CC/lB,OA8CF,eAAC,GAAD,eAMlB4W,MCxID0I,GAAgB/V,KAAOzU,IAAV,mIAObyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FAsEI0c,GA7DE,WACf,IAAMxG,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQzB,EAAkC7T,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,mBAXsB,IAUxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAKM5hB,EAAW6R,cACXzF,EAAU6R,cAChB,EAAmCrM,YAAYxV,IAAhCN,EAAf,EAAQlD,MAAiBG,EAAzB,EAAyBA,MACnBC,EAAU4Y,YAAYtX,IAE5B+R,qBAAU,WACRrM,ErFVF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAtB,8CACA,WAAOkH,GAAP,iBAAA/N,EAAA,6DACE+N,EAASzG,IAAW,IADtB,kBAI6BtE,EAAI9D,MAAJ,YAAuB,CAAE0H,OAAMC,aAJ5D,gBAIYrG,EAJZ,EAIYA,OACRuN,EAAS/D,GAAYxJ,GAAU,KALnC,uBAOIuN,EAASzG,IAAW,IAPxB,yEADA,sDqFUWovB,CAActG,EAAY,EAAGvpB,MACrC,CAACkH,EAAUqiB,EAAWvpB,IAEzB,IAAM0nB,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAErC,OACE,qCACE,eAAC,GAAD,CACExG,KAAMwJ,EACN9C,QAASA,EACT8b,OACE,eAAC,GAAD,UACE,eAAC,GAAD,yBAGJuE,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EAzCa,GA0CbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OAjDW,IAkDTiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,WCjFrBzU,GAAUD,KAAOzU,IAAV,kfAkCEqxB,GATG,SAAC,GAA0C,IAAxCH,EAAuC,EAAvCA,MAAOnW,EAAgC,EAAhCA,SAAgC,IAAtBuW,eAAsB,MAAZ,MAAY,EAC1D,OACE,gBAAC,GAAD,WACE,+BAAMJ,IACN,sBAAK7S,MAAO,CAACkT,eAAgBD,GAA7B,SAAwCvW,QCqD/ByW,GApEU,SAAC,GAAiB,IAAD,UAAd/vB,EAAc,EAAdA,QACpBC,EAAY2Y,YAAYpX,IACxBwH,EAAQ4P,YAAYzO,IACpBvI,EAAgBgX,YAAYjX,IAC5BquB,EACiC,YAA5B,OAAT/vB,QAAS,IAATA,GAAA,UAAAA,EAAWgwB,gBAAX,mBAAsB,UAAtB,eAA0B5yB,SACoB,YAArC,OAAT4C,QAAS,IAATA,GAAA,UAAAA,EAAWgwB,gBAAX,mBAAsB,UAAtB,mBAA0BC,iBAA1B,eAAqC11B,MACjC,EAFJ,WAGO,OAACoH,QAAD,IAACA,IAAiB,GAAGwC,QAAQ,GAHpC,KAKF,OACE,eAAC8gB,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAOmlB,aAAW,EAAlB,UACE,eAAC,GAAMlF,OAAP,UACE,eAAC,GAAMgE,IAAP,UACE,eAAC,GAAMmB,WAAP,8BAGJ,gBAAC,GAAMC,KAAP,WACE,eAAC,GAAMpB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,SAAlB,SACE,eAAC,GAAD,CAAMjzB,QAASyD,EAAUulB,OAAQlE,UAAU,UAIjD,eAAC,GAAM2C,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,cAAlB,SACE,eAAC,GAAD,CAAMjzB,QAASyD,EAAUslB,YAAajE,UAAU,UAItD,eAAC,GAAM2C,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,QAAlB,SACGxvB,EAAUiB,aAAejH,EACxB,KAEA,eAAC,GAAD,CACEsF,MAAOU,EAAUylB,YACjBpC,KAAMrjB,EAAU0lB,YAChBzC,YAAU,UAMpB,eAAC,GAAMe,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAM,cAAjB,SACE,+BAAMO,UAIZ,eAAC,GAAM/L,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,SAAlB,SACE,eAAC,GAAD,CAAezmB,MAAOA,EAAtB,SAA8B/I,EAAUwlB,wBCtElDxS,GAAUD,KAAOzU,IAAV,wOAQWxE,GAgBTo2B,GAVA,WACb,OACE,qCACE,eAAC,GAAD,UACE,8BCjBFld,GAAUD,KAAOzU,IAAV,yEAKP6xB,GAAWpd,KAAOuR,KAAV,iLACEvqB,EAMLD,GAWI6Z,GARD,SAAC,GAAc,IAAZrX,EAAW,EAAXA,KACf,OACE,eAAC,GAAD,UACE,eAAC6zB,GAAD,UAAW/rB,GAAkB9H,QCZpB8zB,GARHrd,KAAOzU,IAAV,wHAGOxE,GCDVkZ,GAAUD,KAAOzU,IAAV,gZAITwb,aAJS,yCAKPqS,GAAM,QAKCvyB,EAOAC,GAiBEw2B,GATE,SAAC,GAAyB,IAAvBb,EAAsB,EAAtBA,MAAOnW,EAAe,EAAfA,SACzB,OACE,gBAAC,GAAD,WACGmW,GAAS,sBAAKtU,UAAU,QAAf,SAAwBsU,IAClC,sBAAKtU,UAAU,QAAf,SAAwB7B,QC1BfiX,GANGvd,aAAOkE,KAAPlE,CAAH,0GCaAwd,GAZKxd,aAAOud,GAAPvd,CAAH,8LCKXC,GAAUD,KAAOzU,IAAV,2EAGTwb,aAHS,yCAIPqS,GAAM,SA0BGqE,GAtBI,SAAC,GAAwC,IAAD,IAArCC,EAAqC,EAArCA,iBAAkBC,EAAmB,EAAnBA,aAChC9yB,EAAQ+a,YAAYhQ,IAEpBS,EAAW,UAAIqnB,GAAoBC,SAAxB,aAAG,EAAoCtnB,YAClDunB,GACJ,UAACF,GAAoBC,SAArB,eAAoCC,iBAAkB,EAClDC,EAAS,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAcG,WAG1BC,IADgBL,EACS,oBACdrnB,EADc,YACCunB,GADD,oBAEdvnB,EAFc,YAECunB,EAFD,kBAEyBvnB,EAFzB,YAEwCwnB,GAEvE,OACE,eAAC,GAAD,UACE,eAACzO,GAAD,CAAcC,KAAI,kBAAaxkB,EAAb,gBAAkC+R,KAAMmhB,EAA1D,SACE,eAAC,GAAD,CAAansB,IAAK,gCC9BXke,mBAAK,SAAkByE,GACpC,IAAQhoB,EAA4DgoB,EAA5DhoB,MAAO4b,EAAqDoM,EAArDpM,UAAWyB,EAA0C2K,EAA1C3K,MAA1B,EAAoE2K,EAAnC1B,cAAjC,MAA0C,sBAA1C,EAEMmL,EAAS1nB,SAAS/J,GAExB,OACE,uBAAM4b,UAAWA,EAAWyB,MAAOA,EAAnC,SACGoU,EAASzsB,KAAMysB,GAAQnL,OAAOA,GAAU,QCGzC5S,GAAUD,KAAOzU,IAAV,oFAMPwd,GAAc/I,KAAOzU,IAAV,uGAEbwb,aAFa,yCAGXqS,GAAM,UAON6E,GAAkBje,KAAOzU,IAAV,yJASf2yB,GAAmBle,KAAOzU,IAAV,iJAQhBsmB,GAAc7R,KAAOzU,IAAV,uEAKX4yB,GAAene,KAAOyN,IAAV,4EAGd,SAAC5G,GAAD,OACAA,EAAEuX,UACFrX,aADA,yEAMEsX,GAAmBre,aAAOoN,GAAPpN,CAAH,uDAqDPgK,GAjDF,SAAC,GAKP,IAJL1jB,EAII,EAJJA,KACAg4B,EAGI,EAHJA,iBACAF,EAEI,EAFJA,SAEI,IADJG,sBACI,SACJ,OACE,eAAC,GAAD,UACE,gBAAC,GAAD,WACE,gBAACN,GAAD,WACE,eAAC,GAAD,IACA,eAAC,GAAD,CAAK9V,UAAU,WAEjB,gBAAC8V,GAAD,CAAiB9V,UAAU,YAA3B,UACE,gBAAC,GAAD,WACE,gBAAC+V,GAAD,WACE,eAACG,GAAD,UACE,eAAC,GAAD,CACE9xB,OAAQjG,EAAKo3B,kBAAoBp3B,EAAKq3B,cAAchyB,cAGxD,eAAC,GAAD,CAAOpC,KAAMjD,EAAKkB,UAEpB,eAAC22B,GAAD,CACEvsB,IAAI,uBACJuW,UAAU,aACV3B,QAAS8X,EACTF,SAAUA,OAGd,gBAAC,GAAD,WACG93B,EAAKk4B,OAAOnwB,KAAI,WAAmBoI,GAAnB,IAAGgmB,EAAH,EAAGA,MAAOlwB,EAAV,EAAUA,MAAV,OACf,eAAC,GAAD,CAAsBkwB,MAAOA,EAA7B,SACGlwB,GADYkK,OAIf8nB,GACA,eAAC,GAAD,CACEb,iBAAkBp3B,EAAKo3B,iBACvBC,aAAcr3B,EAAKq3B,2BC9F7B1d,GAAUD,KAAOzU,IAAV,sGAIL,SAACsb,GAAD,OACCA,EAAEuX,UACHrX,aADA,yEAQFgC,GAAc/I,KAAOzU,IAAV,yEAKX0yB,GAAkBje,KAAOzU,IAAV,yJASfkzB,GAAgBze,aAAOqd,GAAPrd,CAAH,iFAMb0e,GAAc1e,aAAOqd,GAAPrd,CAAH,2FAEK,SAAC6G,GAAD,OAAQA,EAAEuX,SAAW,UAAYr3B,KAC1C,SAAC8f,GAAD,OAAQA,EAAEuX,SAAW,IAAM,SAGlCO,GAAc3e,KAAOzU,IAAV,wHAMb,SAACsb,GAAD,OACCA,EAAEuX,UACHrX,aADA,kLAqEW6X,GA1DM,SAAC,GAA2C,IAAzCt4B,EAAwC,EAAxCA,KAAMu4B,EAAkC,EAAlCA,cAAeC,EAAmB,EAAnBA,QAASC,EAAU,EAAVA,IACpD,EAAgC1c,mBAASwc,IAAiB,GAA1D,mBAAOT,EAAP,KAAiBY,EAAjB,KACA,EAAsC3c,mBAAS,GAA/C,mBAAO4c,EAAP,KAAoBC,EAApB,KACMhc,EAAYQ,KAclB,GAZArD,qBAAU,WACR,GAAIye,GAAWC,EAAK,CAClB,IAAMI,EAAO,uCAAG,4BAAAl5B,EAAA,sEACKyE,EAAaq0B,GADlB,OACR7zB,EADQ,OAEVgY,EAAUU,SACZsb,EAAeh0B,GAHH,2CAAH,qDAMbi0B,OAED,CAACL,EAASC,EAAK7b,KAEb5c,GAAwB,IAAhBA,EAAK4f,OAAc,OAAO,KAEvC,IAAMoY,EAAmB,WACvBU,GAAaZ,IAGf,OACE,gBAAC,GAAD,CAASA,SAAUA,EAAnB,UACE,gBAAC,GAAD,WACE,gBAAC,GAAD,WACE,eAAC,GAAD,IACA,eAACK,GAAD,OAEF,eAAC,GAAD,UACE,eAACC,GAAD,CAAavW,UAAU,MAAMiW,SAAUA,SAG3C,gBAACO,GAAD,CAAaP,SAAUA,EAAvB,WACI93B,GAAQ,IAAI+H,KAAI,SAAChG,EAAMoO,GAAP,OAChB,eAAC,GAAD,CAEEnQ,KAAM+B,EACNi2B,iBAAkBA,EAClBF,SAAUA,GAHL3nB,MAMRqoB,GACC,eAAC,GAAD,CACEx4B,KAAM,CACJo3B,iBAAkB,CAAE/xB,UAAWszB,GAC/Bz3B,KAAM,UACNg3B,OAAQ,CAAC,CAAE/B,MAAO,aAEpB8B,gBAAgB,WC7GtBte,GAAUD,aAAOgB,GAAPhB,CAAH,0EAKPiN,GAASjN,KAAOzU,IAAV,sJAQN6zB,GAAiBpf,KAAOzU,IAAV,uHAsCL8zB,GA/BE,SAAC,GAAuB,IAArB/4B,EAAoB,EAApBA,KAAM0G,EAAc,EAAdA,QACxB,OACE,+BACE,gBAAC,GAAD,WACE,eAAC,GAAD,uBACEA,GACA,eAACoyB,GAAD,UACE,eAAC,KAAD,CAAOxtB,IAAI,yBAGb,sCACItL,GAAQ,IAAI+H,KAAI,SAAChG,EAAMoO,GAAP,OAChBpO,EAAKi3B,YACH,eAAC,GAAD,CAEEh5B,KAAM+B,EAAKi3B,YACXT,cAAex2B,EAAKw2B,cACpBC,QAASz2B,EAAKy2B,QACdC,IAAK12B,EAAK02B,KAJL12B,EAAKoO,OAOZ,eAAC,GAAD,CAAkBnQ,KAAM+B,GAAboO,c,oBCxCrBsS,GAAc/I,KAAOzU,IAAV,yEAKX+lB,GAActR,KAAOzU,IAAV,kNAYXg0B,GAAWvf,aAAOoN,GAAPpN,CAAH,+KA+BCwf,GArBF,SAAC,GAA4B,IAA1B7tB,EAAyB,EAAzBA,KAAMpI,EAAmB,EAAnBA,KAAMqd,EAAa,EAAbA,OAC1B,EAAoBlV,GAAkBC,GAAtC,mBAAOnK,EAAP,KAAaoK,EAAb,KAEA,OACE,eAAC,GAAMqf,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,gBAAC,GAAD,WACE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOtf,IAAKA,IACZ,eAAC,GAAD,UAAYpK,IACXof,KAEH,eAACP,GAAD,CAAczJ,KAAMjL,EAApB,SACE,eAAC4tB,GAAD,UAAWh2B,cC3CRoX,GAJCX,KAAOzU,IAAV,8DCkBP0U,GAAUD,KAAOzU,IAAV,iFAMP+lB,GAActR,KAAOzU,IAAV,sHAOXk0B,GAAazf,aAAOmH,KAAPnH,CAAH,mFAKV0f,GAAiB1f,aAAOW,GAAPX,CAAH,4EAuIL8W,GAnIM,SAAC,GAAqB,IAAnB/sB,EAAkB,EAAlBA,KAAM0M,EAAY,EAAZA,MACtBzC,EAAW6R,cACXlJ,EAAW6G,cAEjBmc,cAAqB,WAInB,OAHIlpB,GACFzC,EAASwC,GAAWzM,EAAM0M,IAErB,WACLzC,EAASiC,GAAS,QAEnB,CAACjC,EAAUjK,EAAM0M,IAEpB,IAAMT,EAAQ4P,YAAYzO,IACpByoB,EAAaha,YAAYpO,IAE/B,EAAgD6K,oBAAS,GAAzD,mBAAOwd,EAAP,KAAyBC,EAAzB,KACA,EAAsDzd,oBAAS,GAA/D,mBAAO0d,EAAP,KAA4BC,EAA5B,KACA,EAAwB3d,mBAAS,IAAjC,mBAAO1Q,EAAP,KAAasuB,EAAb,KACA,EAAsC5d,mBAAS,IAA/C,mBAAOzL,EAAP,KAAoB0H,EAApB,KACA,EAAkC+D,mBAAS,MAA3C,mBAAOnL,EAAP,KAAkBgpB,EAAlB,KAEMC,EAAc,uCAAG,WAAOxuB,EAAMiF,GAAb,SAAA3Q,EAAA,sDACrB65B,GAAoB,GACpB9rB,EAAS2C,GAAQ5M,EAAM0M,EAAO9E,EAAMiF,EAAagpB,IAF5B,2CAAH,wDAKdQ,EAAiB,uCAAG,WAAOlpB,GAAP,SAAAjR,EAAA,sDACxB+5B,GAAuB,GACvBhsB,EAASiD,GAAWlN,EAAM0M,EAAOS,EAAW0oB,IAFpB,2CAAH,sDAMjBS,EAAsB,SADlBC,KAAYv4B,MAAM4U,EAAS8G,QACnB8c,MAElB,OAAIF,GAAYrqB,GAASA,EAAMkQ,OAAS,EAEpC,gBAAC,GAAD,WACE,gBAAC,GAAD,CAAOiM,aAAW,EAAlB,UACE,eAAC,GAAMlF,OAAP,UACE,eAAC,GAAMgE,IAAP,UACE,gBAAC,GAAMmB,WAAP,2BAEGiO,GACC,eAACZ,GAAD,CACEj4B,KAAK,OACLgf,QAAS,kBAAMsZ,GAAoB,aAM7C,eAAC,GAAMzN,KAAP,UACGrc,EAAM3H,KAAI,SAACsD,EAAMuF,GAAP,OACT,eAACspB,GAAD,CAEEj3B,KAAMoI,EAAKiF,YACXjF,KAAMA,EAAKA,KACXiV,OACE,eAAC,GAAD,UACGyZ,GACC,eAACZ,GAAD,CACEj4B,KAAK,QACLgf,QAAS,WACP0Z,EAAahpB,GACb8oB,GAAuB,SAV5B9oB,WAoBb,gBAACupB,GAAA,EAAD,CACEnf,KAAK,QACLof,KAAMb,EACNc,QAAS,kBAAMb,GAAoB,IAHrC,UAKE,eAACW,GAAA,EAAMxT,OAAP,uBACA,eAACwT,GAAA,EAAMG,QAAP,UACE,gBAAC7N,GAAA,EAAD,WACE,eAACA,GAAA,EAAK8N,MAAN,CACEhN,OAAK,EACLiN,MAAM,OACNC,YAAY,WACZjN,SAAU,SAACgC,EAAD,OAAMvpB,EAAN,EAAMA,MAAN,OAAkB0zB,EAAQ1zB,MAEtC,eAACwmB,GAAA,EAAK8N,MAAN,CACEhN,OAAK,EACLiN,MAAM,cACNC,YAAY,8BACZjN,SAAU,SAACgC,EAAD,OAAMvpB,EAAN,EAAMA,MAAN,OAAkB+R,EAAe/R,IAC3Cy0B,UAAW,SAAC94B,GACI,UAAVA,EAAEvC,KACJw6B,EAAexuB,EAAMiF,WAM/B,gBAAC6pB,GAAA,EAAMQ,QAAP,WACE,eAAC,KAAD,CAAQza,QAAS,kBAAMsZ,GAAoB,IAA3C,oBACA,eAAC,KAAD,CAAQtZ,QAAS,kBAAM2Z,EAAexuB,EAAMiF,IAA5C,sBAKJ,gBAAC6pB,GAAA,EAAD,CACEnf,KAAK,OACLof,KAAMX,EACNY,QAAS,kBAAMX,GAAuB,IAHxC,UAKE,eAACS,GAAA,EAAMxT,OAAP,0BACA,eAACwT,GAAA,EAAMG,QAAP,qDACA,gBAACH,GAAA,EAAMQ,QAAP,WACE,eAAC,KAAD,CAAQza,QAAS,kBAAMwZ,GAAuB,IAA9C,oBAGA,eAAC,KAAD,CAAQxZ,QAAS,kBAAM4Z,EAAkBlpB,IAAzC,sBAGJ,eAACwoB,GAAD,OAIG,M,UCrJIwB,GAfQlhB,aAAOmhB,KAAPnhB,CAAH,8UAIJhZ,EAKED,GCXZkZ,GAAUD,KAAOzU,IAAV,+HAgBE61B,GARW,SAAC,GAA4B,IAA1B5sB,EAAyB,EAAzBA,WAAY6sB,EAAa,EAAbA,OACvC,OACE,eAAC,GAAD,UACG7sB,EAAa6sB,EAASA,EAAtB,UAAkC7sB,EAAlC,YAAgD6sB,MCKjDphB,GAAUD,KAAOzU,IAAV,+UAKTwb,aALS,yCAMPqS,GAAM,SAWR,SAACvS,GAAD,OA9Be,SAACjD,GAClB,IAAI/e,EAAM,GASV,OARA,aAAIuuB,MAAMxP,GAASle,QAAQ2I,KACzB,SAAChG,GAAD,OACGxD,GAAG,8BACUwD,EAAO,EADjB,kCAEUtB,EAFV,mBAMDlC,EAoBEy8B,CAAWza,EAAEjD,YAGlB2d,GAAevhB,KAAOzU,IAAV,gFACFvE,GAaDw6B,GARS,SAAC,GAAwB,IAAtB5d,EAAqB,EAArBA,QAAS7W,EAAY,EAAZA,MAClC,IAAKA,GAASub,MAAMvb,GAAQ,OAAO,KACnC,IAAM+H,EAAW,aAAIse,MAAMrmB,GAAOrH,QAAQ2I,KAAI,SAAChG,GAAD,OAC5C,eAACk5B,GAAD,GAAmBl5B,MAErB,OAAO,eAAC,GAAD,CAASub,QAASA,EAAlB,SAA4B9O,KC9CtB,SAAS2sB,GAAT,GAAgC,IAATpO,EAAQ,EAARA,KACpC,GAAIA,EAAM,CACR,IAAMqO,EAAQprB,SAAS+c,GACvB,OAAO,eAAC2G,GAAD,CAAY9uB,KAAMqG,OAAQowB,KAAKD,KAGxC,OAAO,yBCRT,I,8BASe9gB,GATDZ,KAAOuR,KAAV,mLCGLtR,GAAUD,KAAOzU,IAAV,+GAiBEq2B,GATG,SAAC,GAAe,IAAbr1B,EAAY,EAAZA,MACnB,OACE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOqF,IAAK,mBACZ,eAAC,GAAD,UAAQrF,QCPCs1B,GANU,SAAC,GAAc,IAAZ32B,EAAW,EAAXA,KAC1B,OACE,eAAC,GAAD,CAAWqB,MAAO,eAACk1B,GAAD,CAAapO,KAAMnoB,OCenC6d,GAAc/I,KAAOzU,IAAV,gIAQXu2B,GAAa9hB,KAAOzU,IAAV,kEAKVw2B,GAAe/hB,KAAOzU,IAAV,uFAsGHy2B,GAjGW,SAAC,GAAiB,IAAD,EAAdh1B,EAAc,EAAdA,QACrBC,EAAY2Y,YAAYpX,IACxBpF,EAAewc,YAAYlX,IAC3B8F,EAAaoR,YAAYlQ,IACzBusB,EAAeh1B,EAAUg1B,aAEzBC,EAAQj1B,EAAUk1B,qBAAuB/4B,EACzCkM,EAAapE,KAAKkxB,IAAI5tB,EAAa0tB,EAAO,GAC1CG,EAAa/sB,EAAalM,EAAe,EAAIkM,EAAalM,EAE1Dk5B,EAAsBL,GAAgBA,EAAe,GAAK,EAAI,EAEpE,OACE,eAAC/P,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAOmlB,aAAW,EAAlB,UACE,eAAC,GAAMlF,OAAP,UACE,eAAC,GAAMgE,IAAP,UACE,eAAC,GAAMmB,WAAP,iCAGJ,gBAAC,GAAMC,KAAP,WACE,eAAC,GAAMpB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,UAAlB,SACE,gBAAC,GAAD,WACE,+BACE,eAAC,GAAD,CAAUlwB,MAAOU,EAAUkrB,gBAE7B,eAAC/I,GAAD,CACExS,KAAI,iBAAY3P,EAAUqlB,sBAD5B,SAGE,eAAC,GAAD,CAAc/lB,MAAOU,EAAUqlB,kCAMzC,eAAC,GAAMrB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAM,SAAjB,SACE,gBAAC,GAAD,WACE,+BAAMxvB,EAAUiB,aAChB,eAAC,GAAD,CAAkBhD,KAAI,UAAE+B,EAAUgB,mBAAZ,aAAE,EAAuB/C,gBAKvD,eAAC,GAAM+lB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAM,YAAjB,SACE,gBAAC,GAAD,WACE,eAACqF,GAAD,UACE,eAACS,GAAD,CACEx1B,MAAOu1B,EACP1e,QAAS3W,EAAU6c,cAGvB,gBAACiY,GAAD,WACG90B,EAAU6c,UADb,IACyBwY,cAMjC,eAAC,GAAMrR,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAM,SAAjB,SACGxvB,EAAUk1B,qBACT,gBAAC,GAAD,WACE,eAACL,GAAD,UACE,eAAC,GAAD,CAAU5I,QAAsB,IAAbmJ,MAErB,eAAC,GAAD,CACE7tB,WAAYA,EACZ6sB,OAAQp0B,EAAUk1B,0BAItB,gBAAC,GAAD,WACE,eAACL,GAAD,UACE,eAAC,GAAD,CAAU5I,QAAS,MAErB,eAAC,GAAD,CACE1kB,WAAYA,EACZ6sB,OAAQp0B,EAAUk1B,yCCrHlCliB,GAAUD,KAAOzU,IAAV,gIAgBEi3B,GATD,SAAC,GAAsB,IAArBh5B,EAAoB,EAApBA,QAAS+C,EAAW,EAAXA,MACvB,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAM/C,QAASA,IACf,eAAC,GAAD,CAAS+C,MAAOA,QCVPk2B,GALgBziB,KAAOzU,IAAV,sECGtBsgB,GAAa7L,aAAOgB,GAAPhB,CAAH,uNAYV0iB,GAAe1iB,KAAOzU,IAAV,gGAMZyqB,GAAQhW,KAAOzU,IAAV,6HAOLo3B,GAAO3iB,KAAOzU,IAAV,iJAQK,SAASq3B,GAAT,GAAwD,IAA1BnG,EAAyB,EAAzBA,MAAOoG,EAAkB,EAAlBA,KAAMvc,EAAY,EAAZA,SACxD,OACE,gBAAC,GAAD,WACE,gBAACoc,GAAD,WACE,eAAC,GAAD,UAAQjG,IACPoG,GAAQ,eAACF,GAAD,UAAOE,OAEjBvc,KCyEP,I,sDAiDewc,GAjDG,WAChB,IAAQC,EAAUC,cAAVD,MACF/uB,EAAW6R,cACjB,EAAwCxD,mBAAS,IAAjD,mBAAO4gB,EAAP,KAAqBC,EAArB,KAEA7iB,qBAAU,WAGR,OAFArM,EnH7D0B,SAAC+uB,GAAD,8CAAW,WAAO/uB,GAAP,iBAAA/N,EAAA,6DACvC+N,EAASvG,IAAoB,IADU,kBAGZxE,EAAI9D,MAAJ,gBAAmB49B,IAHP,gBAG7Bt8B,EAH6B,EAG7BA,OACRuN,EAASxG,GAAa/G,GAAU,KAJK,uBAMrCuN,EAASvG,IAAoB,IANQ,yEAAX,sDmH6DjB01B,CAAeJ,IACxB/uB,EnHpD6B,uCAAM,WAAOA,GAAP,eAAA/N,EAAA,sEACV+C,IADU,OAC/BI,EAD+B,OAErC4K,EAAStG,GAAgBtE,GAAgB,QAFJ,2CAAN,uDmHqDtB,WACL4K,EAASxG,GAAa,QAEvB,CAACwG,EAAU+uB,IAEd,IAAM91B,EAAY2Y,YAAYrX,IACxBrB,EAAmB0Y,YAAYnX,IAE/BuH,EAAQ4P,YAAYzO,IAmB1B,OAJAkJ,qBAAU,WACR6iB,EA/HJ,SAAyBj2B,EAAW+I,GAClC,OAAQ/I,EAAUgwB,UAAY,IAAI5uB,KAAI,SAAC+0B,GACrC,IAAI5E,EAAS,GAEb,GAA4B,kBAAxB4E,EAAa/4B,OAA4B,CAC3C,MAAwC+4B,EAAa54B,KAA7CioB,EAAR,EAAQA,OAAQF,EAAhB,EAAgBA,YAAaC,EAA7B,EAA6BA,OAE7BgM,EAAS,CACP,CACE/B,MAAO,SACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAASgpB,KAExB,CACEiK,MAAO,cACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS+oB,KAExB,CACEkK,MAAO,SACPlwB,MAAO,eAAC,GAAD,CAAeyJ,MAAOA,EAAtB,SAA8Byc,WAGpC,GAA4B,WAAxB2Q,EAAa/4B,OAAqB,CAC3C,MAKI+4B,EAAa54B,KAJJ64B,EADb,EACEC,UACA/Q,EAFF,EAEEA,YACQgR,EAHV,EAGE9Q,OACAD,EAJF,EAIEA,OAEFgM,EAAS,CACP,CACE/B,MAAO,SACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAASgpB,KAExB,CACEiK,MAAO,cACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS+oB,KAExB,CACEkK,MAAO,YACPlwB,MACE,eAAC,GAAD,CAASA,MAAO82B,EAAU/S,KAAMrjB,EAAU0lB,YAAazC,YAAU,KAGrE,CACEuM,MAAO,SACPlwB,MAAO,eAAC,GAAD,CAAeyJ,MAAOA,EAAtB,SAA8ButB,WAGpC,GAA4B,QAAxBH,EAAa/4B,OAAkB,CACxC,MAA4C+4B,EAAa54B,KAA1C64B,EAAf,EAAQ92B,MAAyBi3B,EAAjC,EAAyBC,OACzBjF,EAAS,CACP,CACEjyB,MAAO,eAACm3B,GAAD,CAAQl6B,QAASg6B,EAAQj3B,MAAO82B,WAGtC,GAA4B,aAAxBD,EAAa/4B,OAAuB,CAC7C,IAAMs5B,EAAMP,EAAa54B,KAAKo5B,WAC9BpF,EAAS,CACP,CACE/B,MAAO,YACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAASm6B,KAExB,CACElH,MAAO,cACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAASyD,EAAUslB,eAElC,CACEkK,MAAO,kBACPlwB,MACE,eAAC,GAAD,CACEA,MAAOU,EAAUylB,YACjBpC,KAAMrjB,EAAU0lB,YAChBzC,YAAU,WAKb,GAA4B,eAAxBkT,EAAa/4B,OAAyB,CAC/C,IAAMs5B,EAAMP,EAAa54B,KAAKo5B,WAC9BpF,EAAS,CACP,CACE/B,MAAO,eACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAASm6B,MAK5B,MAAO,CACLjG,iBAAkB0F,EAAaS,QAC/Br8B,KAAM47B,EAAa/4B,OACnBm0B,aAqCcsF,CAAgB72B,EAAW+I,MAC1C,CAAC/I,EAAW+I,IAGb,uCACE,gBAAC4sB,GAAD,CAAoBnG,MAAM,MAAMoG,KAnBd,SAAC51B,GACrB,OAAKA,EAAUlC,KACT,GAAN,OAAUkC,EAAUqlB,qBAApB,YAA4CrlB,EAAUlC,KAAKshB,MACzD,EACA,GAFF,cAGOpf,EAAUlC,KAAKshB,MAAMpf,EAAUlC,KAAKmb,OAAS,IAJxB,GAkBY6d,CAAc92B,GAApD,UACE,eAAC,GAAD,CAAkBD,QAASE,IAC3B,eAAC,GAAD,CAAmBF,QAASE,IAC5B,eAAC,GAAD,CAAcnD,KAAK,MAAM0M,MAdX,SAACxJ,GACnB,OAAKA,EAAUlC,KACR,IAAImL,GAAJ,UAAgBjJ,EAAUqlB,qBAA1B,YAAkDrlB,EAAUlC,OADvC,KAaQi5B,CAAY/2B,QAE9C,eAAC,GAAD,UACE,eAAC,GAAD,CAAU3G,KAAM28B,EAAcj2B,QAASE,UC/IzCuyB,GAAazf,aAAOmH,KAAPnH,CAAH,mFAKVikB,GAAqBjkB,KAAOzU,IAAV,6DAIlBwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,uDAgJF+c,GA5IU,SAAC,GAAgC,IAA9B/vB,EAA6B,EAA7BA,QAASkrB,EAAoB,EAApBA,cAC7BlkB,EAAW6R,cACXwa,E5FmJD,WACL,IAAM1jB,EAAW6G,cAGjB,MAD4B,SADlB8c,KAAYv4B,MAAM4U,EAAS8G,QACnB8c,M4FtJF2D,GACVn1B,EAAiB6W,YAAYlW,IAC7By0B,EAAoBve,YAAYpH,IACtC,EAAwC6D,oBAAS,GAAjD,mBAAO+hB,EAAP,KAAqBC,EAArB,KACA,EAAsChiB,mBAAS,IAA/C,mBAAOzL,EAAP,KAAoB0H,EAApB,KACA,EAA8B+D,mBAAS,IAAvC,mBAAOgW,EAAP,KAAgBiM,EAAhB,KACM1E,EAAaha,YAAYpO,IAE/B6I,qBAAU,WAAO,IAAD,IACd/B,EAAc,iBAAC6lB,QAAD,IAACA,OAAD,EAACA,EAAmBvtB,mBAApB,QAAmC,IACjD0tB,EAAU,iBAACH,QAAD,IAACA,OAAD,EAACA,EAAmB9L,eAApB,QAA+B,MACxC,CAAC8L,IAEJ,IAAMI,EAAS,WACbvwB,EtGlBF,SAACjK,EAAM0M,EAAOG,EAAYyhB,EAAS7uB,GAAnC,8CAA+C,WAAOwK,GAAP,eAAA/N,EAAA,sEACrBqD,EACtBxB,KAAK+O,UAAU,CACb9M,OACA0M,QACAG,cACAyhB,YAEF7uB,GAR2C,cACvCQ,EADuC,gBAWvCf,EAAI9D,MAAJ,WACAuR,KAAU3M,GADV,YACmB0M,EADnB,gBAEJ,GACA,CACEpM,OAAQ,MACRyM,QAAS,CACP,eAAgB,mBAChBC,UAAWvN,EAAO,UAAMA,EAAN,YAAiBQ,GAAc,IAEnDgN,KAAMlP,KAAK+O,UAAU,CAAED,cAAayhB,cApBK,OAuB7CrkB,EAASuK,GAAiBxU,EAAM0M,IAvBa,2CAA/C,sDsGmBI+tB,CACE,WACAluB,SAAS4hB,GACTthB,EACAyhB,EACAuH,IAGJyE,GAAgB,IAGlB,OACE,uCACE,eAACnS,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,eAAC,GAAMgE,IAAP,UACE,gBAAC,GAAMmB,WAAP,yBAEGiO,GACC,eAAC,GAAD,CACE74B,KAAK,OACLgf,QAAS,kBAAM6d,GAAiBD,aAM1C,gBAAC,GAAM/R,KAAP,WACE,eAAC,GAAMpB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,QAAlB,oBACO1tB,EAAempB,qBAI1B,eAAC,GAAMjH,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,WAAlB,SACE,eAAC,GAAD,CAAMjzB,QAASuF,EAAeqpB,SAAU9J,UAAU,UAIxD,eAAC,GAAM2C,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,cAAlB,SACE,eAAC,GAAD,CAAMjzB,QAASuF,EAAewjB,YAAcjE,UAAU,UAI5D,eAAC,GAAM2C,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,UAAlB,SACG0H,EAAkB9L,SAAW,eAAC,GAAD,CAAM7uB,QAAS26B,EAAkB9L,QAAU/J,UAAU,UAIzF,eAAC,GAAM2C,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,QAAlB,SACE,eAAC,GAAD,CACElwB,MAAOwC,EAAexC,MACtB+jB,KAAMvhB,EAAe4jB,YACrBzC,YAAU,WAKA,OAAjBiU,QAAiB,IAAjBA,OAAA,EAAAA,EAAmBvtB,cAClB,eAAC,GAAMqa,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,cAAlB,SACE,eAACwH,GAAD,UACGE,EAAkBvtB,4BASnC,gBAAC6pB,GAAA,EAAD,CACEnf,KAAK,QACLof,KAAM0D,EACNzD,QAAS,kBAAM0D,GAAgB,IAHjC,UAKE,eAAC5D,GAAA,EAAMxT,OAAP,uCACA,eAACwT,GAAA,EAAMG,QAAP,UACE,gBAAC7N,GAAA,EAAD,WACE,eAACA,GAAA,EAAK8N,MAAN,CACEt0B,MAAOqK,EACPid,OAAK,EACLiN,MAAM,cACNhN,SAAU,SAACgC,EAAD,OAAMvpB,EAAN,EAAMA,MAAN,OAAkB+R,EAAe/R,IAC3Cy0B,UAAW,SAAC94B,GACI,UAAVA,EAAEvC,KACJ4+B,OAIN,eAACxR,GAAA,EAAK8N,MAAN,CACEt0B,MAAO8rB,EACPxE,OAAK,EACLiN,MAAM,UACNhN,SAAU,SAACgC,EAAD,OAAMvpB,EAAN,EAAMA,MAAN,OAAkB+3B,EAAW/3B,IACvCy0B,UAAW,SAAC94B,GACI,UAAVA,EAAEvC,KACJ4+B,YAMV,gBAAC9D,GAAA,EAAMQ,QAAP,WACE,eAAC,KAAD,CAAQza,QAAS,kBAAM6d,GAAgB,IAAvC,oBACA,eAAC,KAAD,CAAQ7d,QAAS+d,EAAjB,0BCvJJxb,GAAc/I,KAAOzU,IAAV,gIAsDFk5B,GA9CgB,SAAC,GAAiB,IAAD,IAAdz3B,EAAc,EAAdA,QAC1B+B,EAAiB6W,YAAYlW,IAEnC,OACE,eAACwiB,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAOmlB,aAAW,EAAlB,UACE,eAAC,GAAMlF,OAAP,UACE,eAAC,GAAMgE,IAAP,UACE,eAAC,GAAMmB,WAAP,sCAGJ,gBAAC,GAAMC,KAAP,WACE,eAAC,GAAMpB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,UAAlB,SACE,gBAAC,GAAD,WACE,+BACE,eAAC,GAAD,CAAUlwB,MAAOwC,EAAeopB,gBAElC,eAAC/I,GAAD,CACExS,KAAI,iBAAY7N,EAAeujB,sBADjC,SAGE,eAAC,GAAD,CAAc/lB,MAAOwC,EAAeujB,kCAM9C,eAAC,GAAMrB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAM,SAAjB,SACE,eAAC,GAAD,UACE,gCACG,UAAA1tB,EAAed,mBAAf,eAA4BZ,SAA5B,UACC0B,EAAed,mBADhB,aACC,EAA4BzG,yBC/C5CyY,GAAUD,KAAOzU,IAAV,gIAOPm5B,GAAc1kB,KAAOzU,IAAV,sGAIbwb,aAJa,+BAIPqS,GAAM,SAGVuL,GAAe3kB,KAAOzU,IAAV,gEAuBHq5B,GAlBD,SAAC,GAA6B,IAA5Bp7B,EAA2B,EAA3BA,QAASq7B,EAAkB,EAAlBA,MAAOt4B,EAAW,EAAXA,MAC9B,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAM/C,QAASA,IACf,gBAACk7B,GAAD,WACE,eAAC,GAAD,UAAOn4B,IAEM,OAAVs4B,QAA4BtyB,IAAVsyB,GACjB,eAACF,GAAD,UACE,eAAC,KAAD,CAAO/yB,KAAe,IAAVizB,EAAiB,yBAAqC,IAAVA,EAAkB,0BAA2B,cC3B7G5kB,GAAUD,KAAOzU,IAAV,qIAQPu5B,GAAqB9kB,KAAOzU,IAAV,yJASlBw5B,GAAa/kB,aAAOoN,GAAPpN,CAAH,uDAIVoV,GAAcpV,KAAOzU,IAAV,4GAMXy5B,GAAgBhlB,KAAOzU,IAAV,kIAQbozB,GAAc3e,KAAOzU,IAAV,iIAQX05B,GAAsBjlB,KAAOzU,IAAV,gIAOnB25B,GAA0BllB,KAAOzU,IAAV,mcAUhB1E,EAOAC,GA4CEq+B,GApCE,SAAC,GAA4D,IAA1D37B,EAAyD,EAAzDA,QAASq7B,EAAgD,EAAhDA,MAAOt4B,EAAyC,EAAzCA,MAAO/B,EAAkC,EAAlCA,KAAM46B,EAA4B,EAA5BA,UAAWtN,EAAiB,EAAjBA,KAAMuN,EAAW,EAAXA,KAChE,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAO77B,QAASA,EAASq7B,MAAOA,EAAOt4B,MAAOA,IAE7C/B,GAAQA,EAAK0b,OAAS,GACrB,eAAC+e,GAAD,UACGz6B,EAAK6D,KAAI,gBAAGouB,EAAH,EAAGA,MAAOlwB,EAAV,EAAUA,MAAV,OACR,gBAAC24B,GAAD,WACE,sBAAK/c,UAAU,QAAf,SAAwBsU,IACxB,sBAAKtU,UAAU,QAAf,SAAwB5b,MAFIkwB,QAQpC,gBAACqI,GAAD,WACE,eAACvC,GAAD,CAAa3e,QAASkU,EAAM/qB,MAAOq4B,IACnC,gBAAC,GAAD,WACE,eAACL,GAAD,oBAAgBjN,EAAhB,YAAwBsN,KACxB,gBAACJ,GAAD,WACE,gBAAC,GAAD,WACE,gBAACD,GAAD,mBAAkBjN,EAAlB,OACA,eAAC,KAAD,CAAOlmB,IAAI,qBAEb,gBAAC,GAAD,WACE,gBAACmzB,GAAD,mBAAkBM,EAAlB,OACA,eAAC,KAAD,CAAOzzB,IAAI,kCCtFnBsoB,GAAela,KAAOuR,KAAV,wEAKZ4I,GAAcna,KAAOuR,KAAV,kDAQjB,SAAS+T,GAAmBlC,GAAe,IAAD,EACxC,OALF,SAAkBA,GAChB,QAASA,EAAanG,SAIlBsI,CAASnC,GACJA,EAAanG,SAAS,GAAG4G,QAAQxtB,YAGtC,cAAgB+sB,EAAar5B,MAI7B,UAAYq5B,EAAar5B,KAHpBq5B,EAAaS,QAAQxtB,YAO9B,UAAO+sB,EAAaS,eAApB,aAAO,EAAsBxtB,YA2L/B,SAASytB,GAAgB/0B,EAAgByF,GACvC,IAAQyoB,EAAmCluB,EAAnCkuB,SAAUuI,EAAyBz2B,EAAzBy2B,QAASC,EAAgB12B,EAAhB02B,YAC3B,IAAKxI,EACH,MAAO,GAGT,IAAMyI,EAAQ,uBACTzI,GADS,aAETuI,EAAQn3B,KAAI,SAAA2D,GAAC,kCAASA,GAAT,IAAYuzB,UAAU,QAF1B,aAGTE,EAAYp3B,KAAI,SAAAs3B,GAAC,kCAASA,GAAT,IAAYC,cAAc,SAIhD,OAFAF,EAASG,MAAK,SAAC5/B,EAAG6/B,GAAJ,OAAUR,GAAmBr/B,GAAKq/B,GAAmBQ,MAE5DJ,EAASr3B,KAAI,SAAChG,GACnB,OAAIA,EAAKk9B,SA5Kb,SAAqCQ,EAAQvxB,GAAa,IAAD,MACvD,MAAO,CACLiC,MAAOsvB,EAAOtvB,MACdooB,eAAgBkH,EAAOC,UAAW,UAAAD,EAAOE,cAAP,eAAelH,MAAOvqB,EAExDsqB,SACGiH,EAAOC,UACR,UAAAD,EAAOE,cAAP,eAAelH,KAAMvqB,GACY,KAAjCuxB,EAAOG,sBACTnH,IAAG,UAAEgH,EAAOE,cAAT,aAAE,EAAelH,IACpBO,aAAcyG,EAAO9I,UAAY,IAAI5uB,KAAI,SAAChG,GAAD,MAAW,CAClDb,KAAsB,aAAhBa,EAAKgC,OAAL,kBAAwC07B,EAAOtvB,OAAUpO,EAAKgC,OACpEqzB,iBAAgC,cAAdr1B,EAAK0B,KAAuB1B,EAAKw7B,aAAUtxB,EAC7DorB,aAA4B,UAAdt1B,EAAK0B,KAAmB1B,EAAKw7B,aAAUtxB,EACrDisB,OAAS,WACP,GAAoB,aAAhBn2B,EAAKgC,OAAuB,CAAC,IAAD,EAE1BytB,EAAMuN,EADV,EAAgCh9B,EAAKmC,KAA7B4tB,EAAR,EAAQA,SAAUgN,EAAlB,EAAkBA,UAElB,GAAIW,EAAOE,OAAQ,CAAC,IAAD,QACjBnO,EAAI,UAAGiO,EAAOE,cAAV,iBAAG,EAAenO,YAAlB,aAAG,EAAqB5R,OAC5Bmf,GAAO,UAAAU,EAAOE,cAAP,mBAAeZ,YAAf,eAAqBnf,SAAU,MACjC,CACL,IAAMigB,EAAQJ,EAAO9I,SAAS/e,QAC5B,SAAC7V,GAAD,MAA0B,UAAhBA,EAAKgC,UAEXgE,EAAM83B,EAAMC,QAChB,SAAC3/B,EAAD,GAA2C,IAAD,IAA/B+D,KAAQ67B,EAAuB,EAAvBA,MAAOC,EAAgB,EAAhBA,QAExB,OADA7/B,EAAO4/B,GAASC,EACT7/B,IAET,IAEI8sB,EAAS9tB,OAAO8tB,OAAOllB,GAC7BypB,EAAOvE,EAAOrV,QAAO,SAACqoB,GAAD,OAAOA,KAAGrgB,OAC/Bmf,EAAO9R,EAAOrN,OAAS4R,EAGzB,IAAM0O,EAAW,GACjB,GACEhyB,EAAa,IACZuxB,EAAOC,UACR,UAAAD,EAAOE,cAAP,eAAelH,KAAMvqB,EACrB,CAAC,IAAD,EACM9I,GAAS,UAAAq6B,EAAOE,cAAP,eAAelH,KAAMvqB,EACpCgyB,EAAS9kB,KAAK,CACZ+a,MAAO,aACPlwB,MACE,eAACivB,GAAD,CACE9vB,OAAQA,EACRwuB,aAAcA,GACdC,YAAaA,OAMrB,MAAO,CACL,CACE5tB,MACE,eAAC,GAAD,CACE/C,QAAS4uB,EACTyM,MAAOkB,EAAOC,SAAWD,EAAO9I,SAASwJ,MAAK,SAAAp+B,GAAI,MAAoB,aAAhBA,EAAKgC,UAC3DG,KAAMg8B,EACNj6B,MAAOw5B,EAAO9tB,SAAS5N,OACvB+6B,UAAWA,EACXtN,KAAMA,EACNuN,KAAMA,MAKT,GAAoB,UAAhBh9B,EAAKgC,OAAoB,CAClC,MAAkChC,EAAKmC,KAA/B67B,EAAR,EAAQA,MAAgBxB,EAAxB,EAAeyB,QACf,MAAO,CACL,CACE/5B,MACE,eAAC,GAAD,CACE/C,QAAS68B,EACTxB,MAAOA,EACPt4B,MAAOs4B,EAAQ,MAAQ,UAK1B,OAAIx8B,EAAKgC,OACP,GAvEF,QA+JFq8B,CAA4Br+B,EAAMmM,GAElCnM,EAAKu9B,aAzMlB,SAAyCe,EAAYnyB,GAAa,IAAD,EAC/D,MAAO,CACLiC,MAAOkwB,EAAWlwB,MAClBooB,gBAAe,UAAC8H,EAAWvjB,YAAZ,OAAC,EAAiBwjB,UACjCtH,aAAeqH,EAAW1J,UAAY,IAAI5uB,KAAI,SAAChG,GAAD,MAAW,CACvDb,KAAsB,YAAhBa,EAAKgC,OAAL,sBAA2Cs8B,EAAWlwB,OAAUpO,EAAKgC,OAC3EqzB,iBAAgC,cAAdr1B,EAAK0B,KAAuB1B,EAAKw7B,aAAUtxB,EAC7DorB,aAA4B,UAAdt1B,EAAK0B,KAAmB1B,EAAKw7B,aAAUtxB,EACrDisB,OACsB,YAAhBn2B,EAAKgC,OAEA,CACL,CAAEoyB,MAAO,iBAAkBlwB,MAFHlE,EAAKmC,KAAvBq8B,gBAIiB,WAAhBx+B,EAAKgC,QAEW,cAAhBhC,EAAKgC,QAEW,aAAhBhC,EAAKgC,OAHP,QAGF,OAwLFy8B,CAAgCz+B,GAlF7C,SAAsCA,EAAM0G,GAC1C,IAAQqpB,EAA8CrpB,EAA9CqpB,SAAU7rB,EAAoCwC,EAApCxC,MAAOgmB,EAA6BxjB,EAA7BwjB,YAAaI,EAAgB5jB,EAAhB4jB,YAClC6L,EAAS,GAEPn0B,EAAUhC,EAAKb,MAAQa,EAAKgC,OAElC,GAAe,aAAXA,EAgBF,OAfAm0B,EAAS,CACP,CACE/B,MAAO,WACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS4uB,KAExB,CACEqE,MAAO,QACPlwB,MAAO,eAAC,GAAD,CAASA,MAAOA,EAAO+jB,KAAMqC,EAAazC,YAAU,KAE7D,CACEuM,MAAO,cACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS+oB,MAInB,CACL/qB,KAAM6C,EACNqzB,iBAAgC,cAAdr1B,EAAK0B,KAAuB1B,EAAKw7B,aAAUtxB,EAC7DorB,aAA4B,UAAdt1B,EAAK0B,KAAmB1B,EAAKw7B,aAAUtxB,EACrDisB,UAIJ,GAAe,aAAXn0B,EAAuB,CACzB,IAAQkC,EAAUlE,EAAKmC,KAAf+B,MACR,MAAO,CACL/E,KAAM6C,EACNqzB,iBAAgC,cAAdr1B,EAAK0B,KAAuB1B,EAAKw7B,aAAUtxB,EAC7DorB,aAA4B,UAAdt1B,EAAK0B,KAAmB1B,EAAKw7B,aAAUtxB,EACrDisB,OAAQ,CACN,CACE/B,MAAO,UACPlwB,MAAO,eAAC,GAAD,CAASA,MAAOA,OAM/B,MAAe,YAAXlC,EACK,CACL7C,KAAM6C,EACNqzB,iBAAgC,cAAdr1B,EAAK0B,KAAuB1B,EAAKw7B,aAAUtxB,EAC7DorB,aAA4B,UAAdt1B,EAAK0B,KAAmB1B,EAAKw7B,aAAUtxB,EACrDisB,OAAQ,CACN,CACE/B,MAAO,cACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS+oB,KAExB,CACEkK,MAAO,QACPlwB,MAAO,eAAC,GAAD,CAASA,MAAOA,YAZ/B,EAwCSw6B,CAA6B1+B,EAAM0G,MAI9C,I,SA4Cei4B,GA5CQ,WACrB,IAAQ9O,EAAkB8K,cAAlB9K,cACFlkB,EAAW6R,cACjB,EAAwCxD,mBAAS,IAAjD,mBAAO4gB,EAAP,KAAqBC,EAArB,KAEA7iB,qBAAU,WAER,OADArM,EvH1MF,SAACkkB,GAAD,8CAAmB,WAAOlkB,GAAP,iBAAA/N,EAAA,6DACjB+N,EAASzE,IAAyB,IADjB,kBAGUtG,EAAI9D,MAAJ,qBAAwB+yB,IAHlC,gBAGPzxB,EAHO,EAGPA,OACRuN,EAAS1E,GAAkB7I,GAAU,KAJtB,uBAMfuN,EAASzE,IAAyB,IANnB,yEAAnB,sDuH0MW03B,CAAoB/O,IACtB,WACLlkB,EAAS1E,GAAkB,QAE5B,CAAC0E,EAAUkkB,IAEd7X,qBAAU,WAER,OADArM,EAASuK,GAAiB,WAAY2Z,IAC/B,WACLlkB,EAASuK,SAEV,CAACvK,EAAUkkB,IAEd,IAAMlpB,EAAwB4W,YAAYjW,IACpCZ,EAAiB6W,YAAYlW,IAC7B8E,EAAaoR,YAAYlQ,IAM/B,OAJA2K,qBAAU,WACR6iB,EAAgBY,GAAgB/0B,EAAgByF,MAC/C,CAACzF,EAAgByF,IAGlB,uCACE,gBAACouB,GAAD,CAAoBnG,MAAM,WAAWoG,KAAI,WAAM3K,GAA/C,UACE,eAAC,GAAD,CACElrB,QAASgC,EACTkpB,cAAeA,IAEjB,eAAC,GAAD,CAAwBlrB,QAASgC,IACjC,eAAC,GAAD,CAAcjF,KAAK,WAAW0M,MAAOH,SAAS4hB,QAEhD,eAAC,GAAD,UACE,eAAC,GAAD,CAAU5xB,KAAM28B,EAAcj2B,QAASgC,UChSzCk4B,GAAelnB,KAAOzU,IAAV,6HAOZ47B,GAAkBnnB,KAAOzU,IAAV,yEAKf67B,GAAmBpnB,KAAOzU,IAAV,yEAMhB87B,GAAe5hC,OAAO6hC,OAAO,CACjCzL,SAAU,EACV0L,SAAU,EACVvL,SAAU,EACVwL,OAAQ,EACRC,gBAAiB,EACjBC,OAAQ,EACRC,cAAe,EACfC,QAAS,IAGX,SAASC,GAAe93B,GAAe,IAAD,ItHwIA+3B,EsHvIpC,iBACET,ItHsIkCS,EsHtIA,UAAC/3B,EAAa1C,aAAd,aAAC,EAAoBA,MtHuIpDy6B,EACEA,EAAOC,OAAO,GAAGjyB,cAAgBgyB,EAAOzb,MAAM,GADjC,YsHxIpB,SACqE,EAIvE,I,YA2Fe0Q,GA3FU,SAAC,GAAiB,IAAf/vB,EAAc,EAAdA,QACpB+C,EAAe6V,YAAYvV,IACjC,OACE,eAAC6hB,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAOmlB,aAAW,EAAlB,UACE,eAAC,GAAMlF,OAAP,UACE,eAAC,GAAMgE,IAAP,UACE,eAAC,GAAMmB,WAAP,8BAGJ,gBAAC,GAAMC,KAAP,WACE,eAAC,GAAMpB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,QAAlB,oBACO1sB,EAAaysB,mBAIxB,eAAC,GAAMvL,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,WAAlB,SACE,eAAC,GAAD,CAAMjzB,QAASuG,EAAaqoB,SAAU9J,UAAU,UAItD,eAAC,GAAM2C,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,QAAlB,SACE,eAAC,GAAD,CACElwB,MAAOwD,EAAaxD,MACpB+jB,KAAMvgB,EAAa4iB,YACnBzC,YAAU,UAKlB,eAAC,GAAMe,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,OAAlB,SACE,gBAAC0K,GAAD,WACE,eAAC,GAAD,CAAS56B,MAAOwD,EAAai4B,OAC5BH,GAAe93B,GAAgBs3B,GAAaE,SAC3C,eAACL,GAAD,mCACE,cAKZ,eAAC,GAAMjW,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,MAAlB,SACGoL,GAAe93B,GAAgBs3B,GAAaI,gBAC3C,KAEA,eAACL,GAAD,UACE,eAAC,GAAD,CAAS76B,MAAOwD,EAAak4B,cAMvC,eAAC,GAAMhX,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,kBAAlB,SACE,gBAAC0K,GAAD,WACGU,GAAe93B,GAAgBs3B,GAAaK,OAC3C,KAEA,eAACN,GAAD,UACE,eAAC,GAAD,CAAS76B,MAAOwD,EAAam4B,mBAGhCL,GAAe93B,IAChBs3B,GAAaM,cACX,eAACT,GAAD,kCACE,cAKZ,eAAC,GAAMjW,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,QAAlB,SAA4B1sB,EAAa0sB,qBC7GjD1T,GAAc/I,KAAOzU,IAAV,gIAQX8wB,GAAUrc,aAAOmN,GAAPnN,CAAH,8DAkJEmoB,GA9Ic,SAAC,GAAiB,IAAD,EAAdn7B,EAAc,EAAdA,QACxB+C,EAAe6V,YAAYvV,IAC3BmE,EAAaoR,YAAYlQ,IAC/B,EAAkD2M,mBAAS,IAA3D,mBAAO+lB,EAAP,KAA0BC,EAA1B,KACMnlB,EAAYQ,KA2BlB,OAzBArD,qBAAU,WACJtQ,EAAau4B,WACf78B,GAAmBsE,EAAau4B,UAAY9zB,GAAYqN,MACtD,SAAC0Z,GACC,IAAIgN,EAAW,GACTC,EAAY,IACZC,EAAU,KACVC,EAAS,MAEbH,EADEhN,EAAamN,EACP,UAAMpyB,SAASilB,EAAamN,GAA5B,SACCnN,EAAakN,EACd,UAAMnyB,SAASilB,EAAakN,GAA5B,UACClN,EAAaiN,EACd,UAAMlyB,SAASilB,EAAaiN,GAA5B,YAEG,qBAETtlB,EAAUU,SACZykB,EAAqBE,QAK5B,CAACx4B,EAAcyE,EAAY0O,IAG5B,eAACgP,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAOmlB,aAAW,EAAlB,UACE,eAAC,GAAMlF,OAAP,UACE,eAAC,GAAMgE,IAAP,UACE,eAAC,GAAMmB,WAAP,oCAGJ,gBAAC,GAAMC,KAAP,WACE,eAAC,GAAMpB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,UAAlB,SACE,gBAAC,GAAD,WACE,+BACE,eAAC,GAAD,CAAUlwB,MAAOwD,EAAaooB,gBAEhC,eAAC/I,GAAD,CACExS,KAAI,iBAAY7M,EAAauiB,sBAD/B,SAGE,eAAC,GAAD,CAAc/lB,MAAOwD,EAAauiB,kCAM5C,eAAC,GAAMrB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAM,SAAjB,SACE,gBAAC,GAAD,WACE,eAAC,GAAD,oBAAU1sB,EAAa1C,aAAvB,aAAU,EAAoBA,QAE9B,kCAKR,eAAC,GAAM4jB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,UAAlB,SACG1sB,EAAasoB,QACZ,eAAC,GAAD,CAAM7uB,QAASuG,EAAasoB,UAE5B,WAKR,eAAC,GAAMpH,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,aAAlB,SACG1sB,EAAau4B,UACZ,gBAAC,GAAD,WACE,+BACGF,EAAiB,UAAMA,EAAN,SAAiC,OAErD,eAAC,GAAD,CACE77B,MAAOwD,EAAau4B,UACpB1R,SAAS,OAIb,WAKR,eAAC,GAAM3F,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,cAAlB,SACG1sB,EAAawiB,YACZ,eAAC,GAAD,CAAM/oB,QAASuG,EAAawiB,cAE5B,WAKR,eAAC,GAAMtB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CACEuL,MAAK,UACHjoB,EAAazE,EAAa44B,SAAW,SAAW,WAD7C,OADP,SAKG54B,EAAa44B,SACZ,eAAC,GAAD,UACGn0B,EAAazE,EAAa44B,SACzB,uCACE,+BAAM54B,EAAa44B,WACnB,eAAC,GAAD,oBACE54B,EAAa44B,SAAWn0B,EAD1B,gBAKF,eAAC4a,GAAD,CAAcxS,KAAI,iBAAY7M,EAAa44B,UAA3C,SACE,eAAC,GAAD,CAAcp8B,MAAOwD,EAAa44B,eAKxC,oBCvIZzO,GAAela,KAAOuR,KAAV,wEAIZ4I,GAAcna,KAAOuR,KAAV,kDAQjB,SAAS+T,GAAmBlC,GAC1B,OALF,SAAkBA,GAChB,QAASA,EAAa6C,OAIlBV,CAASnC,GACJA,EAAanG,SAAS,GAAG4G,QAAQxtB,YAGtC,cAAgB+sB,EAAar5B,MAI7B,UAAYq5B,EAAar5B,KAHpBq5B,EAAaS,QAAQxtB,YAOvB,KAST,SAASytB,GAAgB/zB,EAAcyE,EAAYsM,GACjD,OAPF,SAAmC8nB,EAAepD,GAChD,IAAM/+B,EAAM,uBAAOmiC,GAAP,aAAyBpD,IAErC,OADA/+B,EAAOo/B,MAAK,SAAC5/B,EAAG6/B,GAAJ,OAAUR,GAAmBr/B,GAAKq/B,GAAmBQ,MAC1Dr/B,EAIAoiC,CACL94B,EAAaktB,UAAY,GACzBltB,EAAay1B,SAAW,IACxBn3B,KAAI,SAAChG,GAAD,OACJA,EAAK40B,SACa,CACZxmB,OADAsvB,EAuFE19B,GAtFYoO,MACdooB,eAAgBkH,EAAOC,QACvB1G,aAAcyG,EAAO9I,UAAY,IAAI5uB,KAAI,SAAChG,GAAD,MAAW,CAClDb,KACE,CAAC,UAAW,YAAYwG,SAAS3F,EAAKgC,QAAtC,kBACe07B,EAAOtvB,OAClBpO,EAAKgC,OACXqzB,iBAAgC,cAAdr1B,EAAK0B,KAAuB1B,EAAKw7B,aAAUtxB,EAC7DorB,aAA4B,UAAdt1B,EAAK0B,KAAmB1B,EAAKw7B,aAAUtxB,EACrDisB,OAAS,WACP,GAAoB,aAAhBn2B,EAAKgC,OAAuB,CAAC,IAAD,oBAC9B,EAAgChC,EAAKmC,KAA7B4tB,EAAR,EAAQA,SAAUgN,EAAlB,EAAkBA,UACZtN,GAAO,UAAAiO,EAAOE,cAAP,mBAAenO,YAAf,eAAqB5R,SAAU,EACtCmf,GAAO,UAAAU,EAAOE,cAAP,mBAAeZ,YAAf,eAAqBnf,SAAU,EACtC4iB,EAAY,oBAAGzgC,EAAK60B,iBAAR,iBAAG,EAAgB1yB,YAAnB,iBAAG,EAAsByN,gBAAzB,aAAG,EAAgCzN,YAAnC,QAA2C,GACvDg8B,EAAW/gC,OAAOC,KAAKojC,GAC1B5qB,QAAO,SAACvY,GAAD,MAAiB,cAARA,KAChB0I,KAAI,SAAC1I,GACJ,IxHpDUd,EwHoDJkkC,EAAMD,EAAanjC,GACzB,MAAO,CACL82B,OxHtDQ53B,EwHsDac,ExHrDlC0L,GAAkB23B,aAAgBnkC,KwHsDrB0H,MACc,YAAR5G,EACK,eAAC,GAAD,CAAM6D,QAASu/B,EAAI/qB,IAAM+qB,IACf,QAARpjC,EACF,eAAC,GAAD,CAAS4G,MAAOw8B,EAAK1Y,SAAUvP,IAE/BioB,MAMjB,GACEv0B,EAAa,IACZuxB,EAAOC,UACR,UAAAD,EAAOE,cAAP,eAAelH,KAAMvqB,EACrB,CAAC,IAAD,EACM9I,GAAS,UAAAq6B,EAAOE,cAAP,eAAelH,KAAMvqB,EACpCgyB,EAAS9kB,KAAK,CACZ+a,MAAO,aACPlwB,MACE,eAACivB,GAAD,CACE9vB,OAAQA,EACRwuB,aAAcA,GACdC,YAAaA,OAMrB,MAAO,CACL,CACE5tB,MACE,eAAC,GAAD,CACE/C,QAAS4uB,EACTyM,MAAOkB,EAAOC,SAAWD,EAAO9I,SAASwJ,MAAK,SAAAp+B,GAAI,MAAoB,aAAhBA,EAAKgC,UAC3DkC,MAAK,UAAEw5B,EAAOkD,kBAAT,aAAE,EAAmB5+B,OAC1BG,KAAMg8B,EACNpB,UAAWA,EACXtN,KAAMA,EACNuN,KAAMA,MAKT,GAAoB,UAAhBh9B,EAAKgC,OAAoB,CAClC,MAAkChC,EAAKmC,KAA/B67B,EAAR,EAAQA,MAAgBxB,EAAxB,EAAeyB,QACf,MAAO,CACL,CACE/5B,MACE,eAAC,GAAD,CACE/C,QAAS68B,EACTxB,MAAOA,EACPt4B,MAAOs4B,EAAQ,MAAQ,UAK1B,OAAIx8B,EAAKgC,OACP,GAvEF,QA8EZ,SAAChC,GACA,IAAIm2B,EAAS,GAEb,GAAkB,kBAAdn2B,EAAKb,KAA0B,CACjC,MAAyCa,EAAKmC,KAAtC4tB,EAAR,EAAQA,SAAU7rB,EAAlB,EAAkBA,MAAOqK,EAAzB,EAAyBA,YACzB4nB,EAAS,CACP,CACE/B,MAAO,WACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS4uB,KAExB,CACEqE,MAAO,QACPlwB,MAAO,eAAC,GAAD,CAASA,MAAOA,EAAO8jB,SAAUvP,KAE1C,CACE2b,MAAO,QACPlwB,MAAOqK,SAGN,GAAkB,kBAAdvO,EAAKb,KAA0B,CACxC,IAAQ0hC,EAAW7gC,EAAKmC,KAAhB0+B,OACR1K,EAAS,CACP,CACE/B,MAAO,UACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS0/B,WAGrB,GAAkB,kBAAd7gC,EAAKb,KAA0B,CACxC,IAAQ+qB,GAAgBlqB,EAAKmC,MAAQ,IAA7B+nB,YACRiM,EAAS,CACP,CACE/B,MAAO,cACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS+oB,WAGrB,GAAkB,mBAAdlqB,EAAKb,KAA2B,CACzC,MAA2Ba,EAAKmC,KAAxB0+B,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,OAChB3K,EAAS,CACP,CACE/B,MAAO,SACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS0/B,KAExB,CACEzM,MAAO,SACPlwB,MAAO48B,SAGN,GAAkB,mBAAd9gC,EAAKb,KAA2B,CACzC,MAA4Ba,EAAKmC,KAAjB4+B,GAAhB,EAAQF,OAAR,EAAgBE,SAChB5K,EAAS,CACP,CACE/B,MAAO,mBACPlwB,MAAO,eAAC,GAAD,CAASA,MAAO68B,EAAS/Y,SAAUvP,WAGzC,GAAkB,kBAAdzY,EAAKb,KAA0B,CACxC,MAAsBa,EAAKghC,WAAa,GAA7BC,EAAX,oBACA9K,EAAS,CACP,CACE/B,MAAO,cACPlwB,MAAO,eAAC,GAAD,CAAM/C,QAAS8/B,MAK5B,MAAO,CACL5L,iBAAgC,cAAdr1B,EAAK0B,KAAuB1B,EAAKw7B,aAAUtxB,EAC7DorB,aAA4B,UAAdt1B,EAAK0B,KAAmB1B,EAAKw7B,aAAUtxB,EACrD/K,KAAMa,EAAKb,KACXg3B,UArEH,CAuEEn2B,GA/JF,IAAC09B,KAmKV,I,kNAoCewD,GApCM,WACnB,IAAQ/M,EAAgBwG,cAAhBxG,YACFxoB,EAAW6R,cACjB,EAAwCxD,mBAAS,IAAjD,mBAAO4gB,EAAP,KAAqBC,EAArB,KAEMpiB,EAAS8E,YAAY/P,IAE3BwK,qBAAU,WAER,OADArM,EzH5L6B,SAACwoB,GAAD,8CAAiB,WAAOxoB,GAAP,iBAAA/N,EAAA,6DAChD+N,EAAS7D,IAAuB,IADgB,kBAGrBlH,EAAI9D,MAAJ,oBAAuBq3B,IAHF,gBAGtC/1B,EAHsC,EAGtCA,OACRuN,EAAS9D,GAAgBzJ,GAAU,KAJW,uBAM9CuN,EAAS7D,IAAuB,IANc,yEAAjB,sDyH4LpBq5B,CAAkBhN,IACpB,WACLxoB,EAAS9D,GAAgB,QAE1B,CAAC8D,EAAUwoB,IAEd,IAAMxsB,EAAsB4V,YAAYtV,IAClCP,EAAe6V,YAAYvV,IAC3BmE,EAAaoR,YAAYlQ,IAM/B,OAJA2K,qBAAU,WACR6iB,EAAgBY,GAAgB/zB,EAAcyE,EAAYsM,MACzD,CAAC/Q,EAAcyE,EAAYsM,IAG5B,uCACE,gBAAC8hB,GAAD,CAAoBnG,MAAM,SAASoG,KAAI,WAAMrG,GAA7C,UACE,eAAC,GAAD,CAAkBxvB,QAASgD,IAC3B,eAAC,GAAD,CAAsBhD,QAASgD,IAC/B,eAAC,GAAD,CAAcjG,KAAK,SAAS0M,MAAOH,SAASkmB,QAE9C,eAAC,GAAD,UACE,eAAC,GAAD,CAAUl2B,KAAM28B,EAAcj2B,QAASgD,U,UC5OzCiQ,GAAUD,aAAOgB,GAAPhB,CAAH,kZAiBP6L,GAAa7L,KAAOzU,IAAV,qEAKVozB,GAAc3e,KAAOzU,IAAV,4OAcXyqB,GAAQhW,aAAOoN,GAAPpN,CAAH,qDAILypB,GAAWzpB,aAAOmN,GAAPnN,CAAH,8FAMR0pB,GAAgB1pB,aAAOoN,GAAPpN,CAAH,8FAMbka,GAAela,KAAOzU,IAAV,+EAGdwb,aAHc,yCAIZqS,GAAM,SAINuQ,GAAa3pB,aAAOwf,IAAPxf,CAAH,2GACLlZ,GAML8iC,GAAkB5pB,aAAOwf,IAAPxf,CAAH,2GACVnZ,GAyHI80B,GAnHC,WACd,IAAM3nB,EAAW6R,cAEjBxF,qBAAU,WACRrM,EAASmB,MACTnB,EAASD,QACR,CAACC,IAEJ,IAAM0D,EAAWkO,YAAY3M,IACvBxE,EAAcmR,YAAYjQ,IAC1BhC,EAAWiS,YAAYxR,IACvB0M,EAAS8E,YAAY/P,IACrBg0B,EAAe,OAAG/oB,QAAH,IAAGA,OAAH,EAAGA,EAAQ9b,cAEhC,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAO4M,IAAI,6BACX,iCACE,eAAC,GAAD,wBACA,gBAAC,GAAD,WACE,eAAC63B,GAAD,UAAW/xB,EAASG,MAAMI,SAASF,aACnC,eAAC2xB,GAAD,gBACA,eAACC,GAAD,CAAYhgB,GAAE,aAAd,SACE,eAAC+f,GAAD,UAAgBhyB,EAASG,MAAMI,SAASD,mBAMlD,eAAC,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOpG,IAAI,wBACX,iCACE,eAAC,GAAD,mBACA,gBAAC,GAAD,WACE,eAACg4B,GAAD,CACEjgB,GAAI,CACFL,SAAS,IAAD,OAAMugB,EAAN,SACRpmB,OAAO,uBAHX,SAME,eAACgmB,GAAD,UAAW/xB,EAASG,MAAMzQ,IAAI2Q,eAEhC,eAAC2xB,GAAD,gBACA,eAACC,GAAD,CAAYhgB,GAAE,WAAMkgB,EAAN,SAAd,SACE,eAACH,GAAD,UAAgBhyB,EAASG,MAAMzQ,IAAI4Q,mBAM7C,eAAC,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOpG,IAAI,4BACX,iCACE,eAAC,GAAD,uBACA,gBAAC,GAAD,WACE,eAAC63B,GAAD,UAAW/xB,EAASG,MAAMC,OAAOC,aACjC,eAAC2xB,GAAD,gBACA,eAACC,GAAD,CAAYhgB,GAAE,WAAMkgB,EAAN,aAAd,SACE,eAACH,GAAD,UAAgBhyB,EAASG,MAAMC,OAAOE,mBAMhD,eAAC,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOpG,IAAI,6BACX,iCACE,eAAC,GAAD,wBACA,gBAAC,GAAD,WACE,eAAC63B,GAAD,UAAWh3B,GAAoBkB,EAASC,KAAM,KAC9C,eAAC81B,GAAD,UAAgB5oB,eAKxB,eAAC,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOlP,IAAI,6BACX,iCACE,eAAC,GAAD,wBACA,gBAAC,GAAD,WACE,eAAC63B,GAAD,UACGh3B,GAAoBkB,EAASE,YAAcF,EAASC,KAAM,KAE7D,eAAC81B,GAAD,UAAgB5oB,eAKxB,eAAC,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAWoY,QAASzkB,EAAYK,WAChC,iCACE,eAAC,GAAD,2BACA,eAAC0mB,GAAD,CACE9vB,OAAQ+I,EAAYI,WACpBqlB,aAAcuP,GACdtP,YAAauP,GACbtP,eAAgBb,WAChBc,YAAaH,GACbI,WAAY,CAAErP,EAAG,OACjBsP,iBAAkB,CAAEtP,EAAG,sBClM/B4G,GAAc7R,aAAOgB,GAAPhB,CAAH,yTAgBXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,qHAOLsc,GAAWtc,aAAO6N,GAAMoD,IAAbjR,CAAH,gDAqDC8pB,GAjDO,WACpB,IACMxjC,EADWsf,YAAY3M,IACPrB,gBAAkB,GAExC,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,8BACA,eAAC,GAAD,UACE,eAAC,GAAD,UACE,gBAAC,GAAD,CAAOua,aAAW,EAAlB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,qBACA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,mBACA,eAAC,GAAMgB,WAAP,CAAkBhB,UAAW,QAA7B,8BAKJ,eAAC,GAAMiB,KAAP,UACG/rB,GAAQA,EAAK4f,OAAS,EACrB5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAD,WACE,eAAC,GAAMya,KAAP,UACE,eAAC,GAAD,CAAM1nB,QAASnB,EAAKmqB,WAEtB,eAAC,GAAMtB,KAAP,CAAYE,UAAW,QAAvB,SACE,eAAC,GAAD,UAAO/oB,EAAKwP,UAEd,eAAC,GAAMqZ,KAAP,CAAYE,UAAW,QAAvB,SACE,eAAC,GAAD,CACE7kB,MAAOlE,EAAKkE,MACZ+jB,KAAMjoB,EAAK0hC,UACXxZ,aAAa,QAXJ9Z,MAiBjB,eAAC,GAAD,iBC1EVob,GAAc7R,aAAOgB,GAAPhB,CAAH,yTAgBX8R,GAAe9R,KAAOzU,IAAV,oDAIZyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,qHAOLsc,GAAWtc,aAAO6N,GAAMoD,IAAbjR,CAAH,gDAwDCgqB,GApDU,WACvB,IACM1jC,EADWsf,YAAY3M,IACPtB,2BAA6B,GAEnD,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,yCACA,eAAC,GAAD,UACE,gBAAC,GAAD,CAAOwa,aAAW,EAAlB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,0BACA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,yBAGA,eAAC,GAAMgB,WAAP,CAAkBhB,UAAW,QAA7B,iCAKJ,eAAC,GAAMiB,KAAP,UACG/rB,GAAQA,EAAK4f,OAAS,EACrB5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAD,WACE,eAAC,GAAMya,KAAP,UACE,eAAC,GAAD,CAAM1nB,QAASnB,EAAKkqB,gBAEtB,eAAC,GAAMrB,KAAP,CAAYE,UAAW,QAAvB,SACE,eAAC,GAAD,CACE7kB,MAAOlE,EAAKkE,MACZ+jB,KAAMjoB,EAAK0hC,UACX9Z,SAAO,EACPM,aAAa,EACbC,cAAc,MAGlB,eAAC,GAAMU,KAAP,CAAYE,UAAW,QAAvB,SACE,eAAC,GAAD,UAAO/oB,EAAKwP,YAdDpB,MAmBjB,eAAC,GAAD,eC3ERwJ,GAAUD,KAAOzU,IAAV,wJAMT,SAACsb,GAAD,OACAA,EAAExU,OACF0U,aADA,8KAUE4X,GAAc3e,KAAOzU,IAAV,kJASX0+B,GAAcjqB,KAAOzU,IAAV,4JASX4b,GAAOnH,KAAOzU,IAAV,sDACN,SAACsb,GAAD,YACW,WAAXA,EAAEqI,MACFnI,aADA,2GAIgBF,EAAEqjB,aAJlB,QAI2B,cAE3B,SAACrjB,GAAD,MACW,WAAXA,EAAEqI,MACFnI,aADA,8IAKM,SAACF,GAAD,aACAA,EAAE+H,SACc,gBAAZ/H,EAAEqjB,MACA,cACA,yBAHN,UAIIrjB,EAAEqjB,aAJN,QAIe,gBAGnB,SAACrjB,GAAD,YACS,QAAXA,EAAEqI,MACFnI,aADA,4GAIgBF,EAAEqjB,aAJlB,QAI2B,cAIzBlU,GAAQhW,aAAOmN,GAAPnN,CAAH,iFAGP,SAAC6G,GAAD,OACAA,EAAE+H,UACF7H,aADA,4EAMEojB,GAAanqB,aAAOoN,GAAPpN,CAAH,iFAGZ,SAAC6G,GAAD,OACAA,EAAE+H,UACF7H,aADA,4EAMEmT,GAAela,KAAOzU,IAAV,6JAOd,SAACsb,GAAD,OACAA,EAAE+H,UACF7H,aADA,mGA8EWnG,GAtED,SAAC,GAA+C,IAA7Cta,EAA4C,EAA5CA,KAAM4oB,EAAsC,EAAtCA,KAAM9oB,EAAgC,EAAhCA,OAAQgkC,EAAwB,EAAxBA,WAAY/3B,EAAY,EAAZA,MACzCyO,EAAS8E,YAAY/P,IACnBrO,EAA0BlB,EAA1BkB,KAAM0iC,EAAoB5jC,EAApB4jC,MAAO5jB,EAAahgB,EAAbggB,SACfsI,EAAQ,OAAGxoB,QAAH,IAAGA,OAAH,EAAGA,EAAQwoB,SACnBriB,EAAUjG,EAAViG,MAON,OANI+Z,IACF/Z,GAAS+Z,GAAY,IAAI8f,QAAO,SAACiE,EAAKzmB,GAAa,IAAD,EAChD,iBAAOymB,EAAMzmB,EAAQrX,aAArB,QAA8B,IAC7B,IAIH,gBAAC,GAAD,CAAS8F,MAAOA,EAAhB,UACE,gBAAC,GAAD,CACEmU,QAAS,WACP4jB,GAAcA,EAAW5iC,IAF7B,UAKE,eAACyiC,GAAD,UACE,eAAC,GAAD,CAAM/a,KAAMA,EAAMgb,MAAOA,EAAOtb,SAAUA,MAE5C,eAAC,GAAD,CAAOA,SAAUA,EAAjB,SAA4BpnB,IAC5B,eAACmnB,GAAA,EAAD,CACEjC,QAAO,UAAKngB,EAAL,YAAcuU,GACrBQ,KAAK,OACLuN,QACE,eAAC,GAAD,CAAcD,SAAUA,EAAxB,SACE,eAAC,GAAD,oBACE1d,KAAKo5B,MAAM/9B,KAAWA,GAASA,EAAQ,IAAO,GAAK,WADrD,OAEGkG,GAAoBlG,GAFvB,YAEiCuU,aAKvCwF,GAAY,IAAIjY,KAAI,SAAChG,EAAMoO,GAAP,OACpB,gBAAC,GAAD,CAEE+P,QAAS,WACP4jB,GAAcA,EAAW/hC,EAAKb,OAHlC,UAME,eAACyiC,GAAD,UACE,eAAC,GAAD,CACE/a,KAAMA,EACNgb,MAAO7hC,EAAK6hC,MACZtb,SAAQ,OAAExoB,QAAF,IAAEA,OAAF,EAAEA,EAAQkgB,SAAS7P,GAAOmY,aAGtC,eAACub,GAAD,CAAYvb,SAAQ,OAAExoB,QAAF,IAAEA,OAAF,EAAEA,EAAQkgB,SAAS7P,GAAOmY,SAA9C,SACGvmB,EAAKb,OAER,eAACmnB,GAAA,EAAD,CACEjC,QAAO,UAAKrkB,EAAKkE,MAAV,YAAmBuU,GAC1BQ,KAAK,OACLuN,QACE,eAAC,GAAD,CAAcD,SAAQ,OAAExoB,QAAF,IAAEA,OAAF,EAAEA,EAAQkgB,SAAS7P,GAAOmY,SAAhD,SACE,eAAC,GAAD,oBACE1d,KAAKo5B,MAAMjiC,EAAKkE,SAAWlE,EAAKkE,OAASlE,EAAKkE,MAAQ,IAClD,GACA,WAHN,OAIGkG,GAAoBpK,EAAKkE,OAJ5B,YAIsCuU,WAxBvCrK,UC7ITwJ,GAAUD,KAAOzU,IAAV,6GAOPyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,0EAKLoF,GAAOpF,aAAOmN,GAAPnN,CAAH,mElIhBuB,0BkIqB3B0iB,GAAe1iB,KAAOzU,IAAV,iDA4BHg/B,GAxBF,SAAC,GAAyC,IAAvCjkC,EAAsC,EAAtCA,KAAMF,EAAgC,EAAhCA,OAAQgkC,EAAwB,EAAxBA,WAAY/3B,EAAY,EAAZA,MAChCoqB,EAA8Bn2B,EAA9Bm2B,MAAO+N,EAAuBlkC,EAAvBkkC,KAAMtb,EAAiB5oB,EAAjB4oB,KAAMub,EAAWnkC,EAAXmkC,OAC3B,OACE,gBAAC,GAAD,YACIhO,GAAS+N,IACT,gBAAC,GAAD,WACE,eAAC,GAAD,UAAQ/N,IACR,eAAC,GAAD,UAAO+N,QAGTC,GAAU,IAAIp8B,KAAI,SAAChG,EAAMoO,GAAP,OAClB,eAAC,GAAD,CAEEnQ,KAAM+B,EACNjC,OAAM,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAQqkC,OAAOh0B,GACvByY,KAAMA,EACNkb,WAAYA,EACZ/3B,MAAOA,GALFoE,UChCTi0B,GAAgB1qB,KAAOzU,IAAV,sJASbm3B,GAAe1iB,KAAOzU,IAAV,mJASZo/B,GAAY3qB,KAAOzU,IAAV,6CACX,SAACsb,GAAD,MACW,WAAXA,EAAEqI,MACFnI,aADA,6HAIgB,SAACF,GAAD,OAAOA,EAAEqjB,YAGzB,SAACrjB,GAAD,MACW,QAAXA,EAAEqI,MACFnI,aADA,8HAIgB,SAACF,GAAD,OAAOA,EAAEqjB,YAKvBU,GAAc5qB,aAAOmN,GAAPnN,CAAH,0EAoHF6qB,GA/GG,SAAC,GAAuB,IAArBvkC,EAAoB,EAApBA,KAAMwkC,EAAc,EAAdA,QACjBC,EAAkBzkC,EAAlBykC,MAAOxX,EAAWjtB,EAAXitB,OACTjuB,EAAU,CACdyE,KAAM,OACNihC,MAAO,CACLC,KAAM,UACNC,WAAW,GAEbC,OAAQ,CACNC,MAAO,CACL,CACEC,SAAU,QACVC,MAAO,CACLC,SAAU,IACVC,SAAU,SAAU1K,GAClB,OAAOruB,GAAoBquB,EAAO,OAK1C2K,MAAO,CACL,CACE1hC,KAAM,OACNmB,KAAM,CACJwgC,eAAgB,CACdC,MAAO,WAET3b,KAAM,QACN4b,aAAc,GAEhBC,UAAW,CACTC,cAAe,EACf5B,MAAO,uBAKf6B,SAAU,CACRd,KAAM,QACNe,YAAa,EACbC,UAAW,CACTxP,MAAO,SAAUyP,GACf,OAAO36B,KAAM26B,EAAa,GAAGC,QAAQtZ,OAAO,qBAE9CiO,MAAO,SAAUsL,EAAa9lC,GAC5B,MAAM,GAAN,OAAUA,EAAK+lC,SAASD,EAAYE,cAAcxL,MAAlD,YACE5vB,KAAKo5B,MAAMx5B,OAAOs7B,EAAY7/B,UAC5BuE,OAAOs7B,EAAY7/B,QAAUuE,OAAOs7B,EAAY7/B,OAAS,IACvD,GACA,UAJN,YAKIkG,GAAoB25B,EAAY7/B,UAGxCggC,SAAU,SAAUtmC,EAAG6/B,GACrB,OAAO7/B,EAAEqmC,aAAexG,EAAEwG,eAG9BE,OAAQ,CACNnpB,SAAS,GAEXopB,qBAAqB,EACrB3B,QAAS,SAAUhV,EAAG4W,GAAQ,IAAD,EACrBj2B,EAAK,OAAGi2B,QAAH,IAAGA,GAAH,UAAGA,EAAQ,UAAX,aAAG,EAAYC,OAC1B7B,EAAQr0B,KAGNm2B,EAAY,CAChBnC,OAAQM,EACRsB,UAAW9Y,GAAU,IAAIllB,KAAI,SAAChG,GAAD,MAAW,CACtCy4B,MAAOz4B,EAAKy4B,MACZ/V,KAAM1iB,EAAK0iB,KACX8hB,YAAa,EACbC,gBAAiBzkC,EAAK0kC,eACtBC,YAAa3kC,EAAK4kC,aAClBC,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjBC,iBAAkBjlC,EAAK4kC,aACvBM,qBAAsBllC,EAAK4kC,aAC3BO,iBAAkB,EAClBC,iBAAkB,EAClBC,0BAA2BrlC,EAAK4kC,aAChCU,sBAAuBtlC,EAAK4kC,aAC5BW,sBAAuB,EACvBC,YAAa,EACbC,eAAgB,GAChBxnC,KAAM+B,EAAK/B,KACXynC,MAAO1lC,EAAK0lC,WAIhB,OAAIhD,GAASA,EAAM7kB,OAAS,EAExB,uCACE,eAACwkB,GAAD,WACInX,GAAU,IAAIllB,KAAI,SAAChG,EAAMoO,GAAP,OAClB,gBAAC,GAAD,WACE,eAACk0B,GAAD,CAAWT,MAAO7hC,EAAK4kC,aAAc/d,KAAM7mB,EAAK6mB,OAChD,eAAC0b,GAAD,UAAcviC,EAAKy4B,UAFFrqB,QAMvB,eAAC,QAAD,CAAMnQ,KAAMsmC,EAAWtnC,QAASA,OAI7B,MC1ILusB,GAAc7R,aAAOgB,GAAPhB,CAAH,4HAOXgW,GAAQhW,aAAOmN,GAAPnN,CAAH,sHAOLguB,GAAiBhuB,KAAOzU,IAAV,sUAgBd0iC,GAAejuB,KAAOzU,IAAV,qNAWZ2iC,GAAcluB,KAAOzU,IAAV,iSAeX4iC,GAAoBnuB,KAAOzU,IAAV,yNA4SR6iC,GAjSM,WACnB,IAAMp6B,EAAW6R,cACjB,EAAoCxD,mBAAS,IAA7C,mBAAOgsB,EAAP,KAAmBC,EAAnB,KACA,EAA0CjsB,mBAAS,IAAnD,mBAAOksB,EAAP,KAAsBC,EAAtB,KACA,EAA0CnsB,mBAAS,IAAnD,mBAAOosB,EAAP,KAAsBC,EAAtB,KACA,EAA8CrsB,mBAAS,IAAvD,mBAAOssB,EAAP,KAAwBC,EAAxB,KACA,EAAkCvsB,qBAAlC,mBAAOwsB,EAAP,KAAkBC,EAAlB,KACA,EAAoCzsB,mBAAS,CAC3Coa,MAAO,SACPvN,KAAM,SACNub,OAAQ,CACN,CACEjjC,KAAM,UACN+E,MAAO,EACP29B,MAAO,WAET,CACE1iC,KAAM,oBACN+E,MAAO,EACP29B,MAAO,WAET,CACE1iC,KAAM,UACN0iC,MAAO,UACP5jB,SAAU,CACR,CACE9e,KAAM,UACN+E,MAAO,EACP29B,MAAO,eAET,CACE1iC,KAAM,YACN+E,MAAO,EACP29B,MAAO,eAET,CACE1iC,KAAM,WACN+E,MAAO,EACP29B,MAAO,iBAIb,CACE1iC,KAAM,SACN+E,MAAO,EACP29B,MAAO,cAtCb,mBAAO6E,EAAP,KAAmBC,EAAnB,KA0CA,EAAoC3sB,mBAAS,CAC3Coa,MAAO,SACPvN,KAAM,SACNub,OAAQ,CACN,CACEjjC,KAAM,WACN+E,MAAO,EACP29B,MAAO,WAET,CACE1iC,KAAM,OACN+E,MAAO,EACP29B,MAAO,WAET,CACE1iC,KAAM,WACN+E,MAAO,EACP29B,MAAO,WAET,CACE1iC,KAAM,QACN+E,MAAO,EACP29B,MAAO,cAtBb,mBAAO+E,EAAP,KAAmBC,EAAnB,KA0BA,EAAwC7sB,mBAAS,CAC/Coa,MAAO,WACPvN,KAAM,MACNub,OAAQ,CACN,CACEjjC,KAAM,UACN+E,MAAO,EACP29B,MAAO,cAPb,mBAAOiF,EAAP,KAAqBC,EAArB,KAaMx+B,EAAYL,GADHqV,YAAY/P,KAG3BwK,qBAAU,WACRrM,E1H5H6B,uCAAM,WAAOA,GAAP,iBAAA/N,EAAA,sEACZgD,EAAI9D,MAAJ,iBADY,gBAC7BsB,EAD6B,EAC7BA,OACRuN,EAAS6E,GAAgBpS,GAAU,KAFE,2CAAN,yD0H6H5B,CAACuN,IAEJ,IAAM2E,EAAeiN,YAAY1M,IAEjCmH,qBAAU,WACR,IAAMguB,EAAa11B,EAAatK,KAC9B,SAACghC,GAAD,OAAeA,EAAUxL,QAAQl4B,aAEnC2iC,EAAcD,GAEd,IAAME,EAAgB51B,EAAatK,KACjC,SAACghC,GAAD,OACE1+B,GAAY0+B,EAAUl3B,OAAOm3B,QAAS1+B,GAAW,GACjDD,GAAY0+B,EAAUl3B,OAAOo3B,iBAAkB3+B,GAAW,GAC1DD,GAAY0+B,EAAUl3B,OAAOG,MAAO1H,GAAW,GAC/CD,GAAY0+B,EAAUl3B,OAAOE,OAAQzH,GAAW,MAEpD49B,EAAiBD,GAEjB,IAAME,EAAgB91B,EAAatK,KACjC,SAACghC,GAAD,OACE1+B,GAAY0+B,EAAUn3B,OAAO9Q,IAAKwJ,GAAW,GAC7CD,GAAY0+B,EAAUn3B,OAAOD,SAAUrH,GAAW,GAClDD,GAAY0+B,EAAUn3B,OAAOJ,OAAQlH,GAAW,GAChDD,GAAY0+B,EAAUn3B,OAAO7D,MAAOzD,GAAW,MAEnD89B,EAAiBD,GAEjB,IAAME,EAAkBh2B,EAAatK,KAAI,SAACghC,GAAD,OACvC1+B,GAAY0+B,EAAUG,gBAAiB5+B,GAAW,MAEpDg+B,EAAmBD,KAClB,CAACh2B,EAAc/H,IAElByP,qBAAU,WACR,GAAI1H,GAAgBA,EAAauN,OAAS,EAAG,CAC3C,IAAMzP,EAAK,OAAGo4B,QAAH,IAAGA,IAAal2B,EAAauN,OAAS,EAC3CupB,EAAY92B,EAAalC,GAC/Bu4B,EAAc,CACZvS,MAAO,SACP+N,KAAMj5B,KAAK,OAAC88B,QAAD,IAACA,OAAD,EAACA,EAAa53B,IAAQoc,OAAO,oBACxC3D,KAAM,SACNub,OAAQ,CACN,CACEjjC,KAAM,UACN+E,MAAOoE,GAAY8+B,EAAUt3B,OAAOm3B,QAAS1+B,GAAW,GACxDs5B,MAAO,WAET,CACE1iC,KAAM,oBACN+E,MAAOoE,GACL8+B,EAAUt3B,OAAOo3B,iBACjB3+B,GACA,GAEFs5B,MAAO,WAET,CACE1iC,KAAM,UACN0iC,MAAO,UACP5jB,SAAU,CACR,CACE9e,KAAM,UACN+E,MAAOoE,GACL8+B,EAAUt3B,OAAOI,WAAWG,QAC5B9H,GACA,GAEFs5B,MAAO,eAET,CACE1iC,KAAM,YACN+E,MAAOoE,GACL8+B,EAAUt3B,OAAOI,WAAWC,UAC5B5H,GACA,GAEFs5B,MAAO,eAET,CACE1iC,KAAM,WACN+E,MAAOoE,GACL8+B,EAAUt3B,OAAOI,WAAWE,SAC5B7H,GACA,GAEFs5B,MAAO,iBAIb,CACE1iC,KAAM,SACN+E,MAAOoE,GAAY8+B,EAAUt3B,OAAOE,OAAQzH,GAAW,GACvDs5B,MAAO,cAKbgF,EAAc,CACZzS,MAAO,SACP+N,KAAMj5B,KAAK,OAAC88B,QAAD,IAACA,OAAD,EAACA,EAAa53B,IAAQoc,OAAO,oBACxC3D,KAAM,SACNub,OAAQ,CACN,CACEjjC,KAAM,WACN+E,MAAOoE,GAAY8+B,EAAUv3B,OAAOD,SAAUrH,GAAW,GACzDs5B,MAAO,WAET,CACE1iC,KAAM,OACN+E,MAAOoE,GAAY8+B,EAAUv3B,OAAO9Q,IAAKwJ,GAAW,GACpDs5B,MAAO,WAET,CACE1iC,KAAM,WACN+E,MAAOoE,GAAY8+B,EAAUv3B,OAAOJ,OAAQlH,GAAW,GACvDs5B,MAAO,WAET,CACE1iC,KAAM,QACN+E,MAAOoE,GAAY8+B,EAAUv3B,OAAO7D,MAAOzD,GAAW,GACtDs5B,MAAO,cAKbkF,EAAgB,CACd3S,MAAO,WACP+N,KAAMj5B,KAAK,OAAC88B,QAAD,IAACA,OAAD,EAACA,EAAa53B,IAAQoc,OAAO,oBACxC3D,KAAM,MACNub,OAAQ,CACN,CACEjjC,KAAM,UACN+E,MAAOoE,GAAY8+B,EAAUD,gBAAiB5+B,GAAW,GACzDs5B,MAAO,iBAKd,CAAC2E,EAAWl2B,EAAc01B,EAAYz9B,IAEzC,IAAMg8B,EAAY,CAChB7B,MAAOsD,EACP9a,OAAQ,CACN,CACEuN,MAAO,SACPmM,aAAc,UACdF,eAAgB,UAChBzmC,KAAMioC,EACNxjB,MAAM,EACNmE,KAAM,SACN6e,MAAO,GAET,CACEjN,MAAO,SACPmM,aAAc,UACdF,eAAgB,UAChBzmC,KAAMmoC,EACN1jB,MAAM,EACNmE,KAAM,SACN6e,MAAO,GAET,CACEjN,MAAO,WACPmM,aAAc,UACdF,eAAgB,UAChBzmC,KAAMqoC,EACN5jB,MAAM,EACNmE,KAAM,MACN6e,MAAO,KASb,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,4BACA,gBAACC,GAAD,WACE,gBAACE,GAAD,WACE,eAAC,GAAD,CAAM5nC,KAAMyoC,EAAY18B,OAAO,IAC/B,gBAAC87B,GAAD,WACE,eAAC,GAAD,CAAM7nC,KAAM2oC,EAAY58B,OAAO,IAC/B,eAAC,GAAD,CAAM/L,KAAM6oC,EAAc98B,OAAO,UAGrC,eAAC47B,GAAD,UACE,eAACyB,GAAD,CAAOppC,KAAMsmC,EAAW9B,QAhBhB,SAACr0B,GACfq4B,EAAar4B,eC/RFk5B,GA/DO,SAAC,GAAsB,IAApBrpC,EAAmB,EAAnBA,KAAMF,EAAa,EAAbA,OAYvBwpC,EAAe,CACnBnF,OAAQ,GACR4B,SAAU,CACR,CACE/lC,KAAM,GACNwmC,gBAAiB,GACjB+C,qBAAsB,GACtBC,YAAa,KAenBxpC,EAAKmkC,OAAOrE,QAXO,SAAb2J,EAAc1F,EAAKzmB,GACvB,OAAIA,EAAQ0C,SACH1C,EAAQ0C,SAAS8f,OAAO2J,EAAY1F,IAE3CA,EAAII,OAAO/oB,KAAKkC,EAAQpc,MACxB6iC,EAAIgC,SAAS,GAAG/lC,KAAKob,KA3BJ,SAACla,GAAU,IAAD,EAS7B,OADY,OAAGpB,QAAH,IAAGA,GAAH,UAAGA,EAAQqkC,cAAX,aAAG,EAAgBriC,MAPd,SAAX4nC,EAAY3nC,GAChB,OAAIA,EAAKb,OAASA,EAAaa,EAAKumB,SAChCvmB,EAAKie,SACAje,EAAKie,SAASle,KAAK4nC,QAD5B,KAwB0BC,CAAarsB,EAAQpc,MAAQ,EAAIoc,EAAQrX,OACnE89B,EAAIgC,SAAS,GAAGS,gBAAgBprB,KAAKkC,EAAQsmB,OAC7CG,EAAIgC,SAAS,GAAGwD,qBAAqBnuB,KAAKkC,EAAQsmB,OAE7CG,KAEsBuF,GAC/B,IAAMtqC,EAAU,CACdmnC,qBAAqB,EACrByD,iBAAkB,GAClBC,UAAW,CAAEC,eAAe,GAC5B5D,OAAQ,CACNnpB,SAAS,GAEX0oB,SAAU,CACRE,UAAW,CACTnL,MAAO,SAAUsL,EAAa9lC,GAC5B,IAAM+pC,EAAU/pC,EAAK+lC,SAASD,EAAYE,cAEpCv/B,EADOsjC,EAAQC,MAAM7qC,OAAOC,KAAK2qC,EAAQC,OAAO,IACnCvjC,MACbwjC,EAAeF,EAAQ/pC,KAAK8lC,EAAY31B,OAI9C,OAHmB+5B,YACfD,EAAexjC,EAAS,KAAKqE,QAAQ,IAErB,KAEtBqrB,MAAO,SAAU2P,EAAa9lC,GAC5B,OAAOA,EAAKmkC,OAAO2B,EAAY,GAAG31B,WAK1C,OAAO,eAAC,YAAD,CAAUnQ,KAAMspC,EAActqC,QAASA,KCtD1C2a,GAAUD,KAAOzU,IAAV,oLAWP6pB,GAAcpV,KAAOzU,IAAV,8IAQXk+B,GAAWzpB,aAAOmN,GAAPnN,CAAH,8FAMR0pB,GAAgB1pB,aAAOoN,GAAPpN,CAAH,mHAObywB,GAAYzwB,aAAOoN,GAAPpN,CAAH,sDAIT0wB,GAAgB1wB,KAAOzU,IAAV,gDAqBJolC,GAjBD,SAAC,GAAyB,IAAvB5jC,EAAsB,EAAtBA,MAAOuZ,EAAe,EAAfA,SAChBxF,EAAS8E,YAAY/P,IAE3B,OADA9I,EAAQoF,GAAwBpF,EAAO,GAAGjI,QAAQ,OAAQ,IAExD,gBAAC,GAAD,WACGwhB,EACD,gBAACoqB,GAAD,WACE,gBAAC,GAAD,WACE,eAAC,GAAD,UAAW3jC,IACX,eAAC,GAAD,UAAgB+T,OAElB,eAAC2vB,GAAD,kCCjDFza,GAAQhW,aAAOmN,GAAPnN,CAAH,sHAOL6R,GAAc7R,aAAOgB,GAAPhB,CAAH,mJAQXguB,GAAiBhuB,KAAOzU,IAAV,6OAYdqlC,GAAgB5wB,KAAOzU,IAAV,yFAMbslC,GAAkB7wB,KAAOzU,IAAV,4GA6CNulC,GAtCM,SAAC,GAAmD,IAAD,EAAhDrU,EAAgD,EAAhDA,MAAOn2B,EAAyC,EAAzCA,KAAMF,EAAmC,EAAnCA,OAAQgkC,EAA2B,EAA3BA,WAAY9jB,EAAe,EAAfA,SAkBjDvZ,EAAK,UAAGzG,EAAKmkC,cAAR,aAAG,EAAarE,QANP,SAAd2K,EAAe1G,EAAKzmB,GAAa,IAAD,EACpC,OAAIA,EAAQ0C,SACH+jB,EAAMzmB,EAAQ0C,SAAS8f,OAAO2K,EAAa,GAE7C1G,GAfY,SAAC7iC,GAAU,IAAD,EAS7B,OADY,OAAGpB,QAAH,IAAGA,GAAH,UAAGA,EAAQqkC,cAAX,aAAG,EAAgBriC,MAPd,SAAX4nC,EAAY3nC,GAChB,OAAIA,EAAKb,OAASA,EAAaa,EAAKumB,SAChCvmB,EAAKie,SACAje,EAAKie,SAASle,KAAK4nC,QAD5B,KAYYC,CAAarsB,EAAQpc,MAAQ,EAA7B,UAAiCoc,EAAQrX,aAAzC,QAAkD,KAEnB,GAE/C,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,UAAQkwB,IACR,gBAAC,GAAD,WACE,eAAC,GAAD,CAAMn2B,KAAMA,EAAMF,OAAQA,EAAQgkC,WAAYA,IAC9C,eAACwG,GAAD,UACE,eAAC,GAAD,CAAO7jC,MAAO0F,GAAoB1F,GAAlC,SACE,eAAC8jC,GAAD,UACE,eAAC,GAAD,CAAUvqC,KAAMA,EAAMF,OAAQA,UAInCkgB,SClEH0qB,GAAahxB,aAAOoN,GAAPpN,CAAH,0PAMHnZ,GAiJEoqC,GAxIA,SAAC,GAOT,IANL3B,EAMI,EANJA,QACAC,EAKI,EALJA,iBACA2B,EAII,EAJJA,aACAC,EAGI,EAHJA,eACAC,EAEI,EAFJA,cACA/4B,EACI,EADJA,OAEA,EAAoCgK,mBAAS,CAC3C6M,KAAM,SACNub,OAAQ,KAFV,mBAAOsE,EAAP,KAAmBC,EAAnB,KAIA,EAAwC3sB,mBAAS,CAC/CooB,OAAQ,CACN,CACEjjC,KAAM,WAER,CACEA,KAAM,oBAER,CACEA,KAAM,UACN8e,SAAU,CACR,CACE9e,KAAM,WAER,CACEA,KAAM,aAER,CACEA,KAAM,cAIZ,CACEA,KAAM,aAvBZ,mBAAO6pC,EAAP,KAAqBC,EAArB,KA4BAjxB,qBAAU,WACR2uB,EAAc,CACZ9f,KAAM,SACNub,OAAQ,CACN,CACEjjC,KAAM,UACN+E,MAAO+iC,EACPpF,MxI/D4B,WwIiE9B,CACE1iC,KAAM,mBACN+E,MAAOgjC,EACPrF,MxInEsC,WwIqExC,CACE1iC,KAAM,UACN0iC,MAAO,cACP5jB,SAAU,CACR,CACE9e,KAAM,UACN+E,MAAO2kC,EACPhH,MxI3EwB,WwI6E1B,CACE1iC,KAAM,YACN+E,MAAO4kC,EACPjH,MxI/E0B,WwIiF5B,CACE1iC,KAAM,WACN+E,MAAO6kC,EACPlH,MxInFyB,awIuF/B,CACE1iC,KAAM,SACN+E,MAAO8L,EACP6xB,MxI/F2B,gBwImGhC,CACDoF,EACAC,EACA2B,EACAC,EACAC,EACA/4B,IA+BF,OACE,eAAC,GAAD,CACEokB,MAAM,SACNn2B,KAAMyoC,EACN3oC,OAAQirC,EACRjH,WAjCe,SAAC5iC,GAClB,IAAM+pC,EAAM9rC,OAAO+0B,OAAO,GAAI6W,GAC9BE,EAAI9G,OAAOr3B,SAAQ,SAAC/K,GAalB,GAZIA,EAAKie,WACPje,EAAKie,SAASlT,SAAQ,SAACo+B,GACjBA,EAAMhqC,OAASA,IACjBgqC,EAAM5iB,UAAY4iB,EAAM5iB,aAGxBvmB,EAAKie,SAASmrB,OAAM,SAACppC,GAAD,OAAUA,EAAKumB,YACrCvmB,EAAKumB,UAAW,EAEhBvmB,EAAKumB,UAAW,GAGhBvmB,EAAKb,OAASA,EAAM,CACtB,IAAMonB,GAAYvmB,EAAKumB,SACvBvmB,EAAKumB,SAAWA,EACZvmB,EAAKie,UACPje,EAAKie,SAASlT,SAAQ,SAACo+B,GACrBA,EAAM5iB,SAAWA,SAKzB0iB,EAAgBC,IAIhB,SAME,eAAC,IAAD,CAAS5nB,GAAE,UAAX,SACE,gBAACqnB,GAAD,oBAEE,eAAC,GAAD,CAAWp/B,IAAI,wBAAwBoS,MAAO,aC/EzC0tB,GAxEA,SAAC,GAA0C,IAAxC5iC,EAAuC,EAAvCA,UAAW3F,EAA4B,EAA5BA,KAAM2G,EAAsB,EAAtBA,SAAUuE,EAAY,EAAZA,MAC3C,EAAoCgO,mBAAS,CAC3C6M,KAAM,SACNub,OAAQ,KAFV,mBAAOwE,EAAP,KAAmBC,EAAnB,KAKA,EAAwC7sB,mBAAS,CAC/CooB,OAAQ,CACN,CACEjjC,KAAM,aAER,CACEA,KAAM,QAER,CACEA,KAAM,YAER,CACEA,KAAM,YAZZ,mBAAOmqC,EAAP,KAAqBC,EAArB,KAiBAvxB,qBAAU,WACR6uB,EAAc,CACZhgB,KAAM,SACNub,OAAQ,CACN,CACEjjC,KAAM,YACN+E,MAAOuC,EACPo7B,MzIhC8B,WyIkChC,CACE1iC,KAAM,OACN+E,MAAOpD,EACP+gC,MzIpCyB,WyIsC3B,CACE1iC,KAAM,WACN+E,MAAOuD,EACPo6B,MzIxC6B,WyI0C/B,CACE1iC,KAAM,QACN+E,MAAO8H,EACP61B,MzI5C0B,gByIgD/B,CAACp7B,EAAW3F,EAAM2G,EAAUuE,IAa/B,OACE,eAAC,GAAD,CACEooB,MAAM,SACNn2B,KAAM2oC,EACN7oC,OAAQurC,EACRvH,WAhBe,SAAC5iC,GAClB,IAAM+pC,EAAM9rC,OAAO+0B,OAAO,GAAImX,GAC9BJ,EAAI9G,OAAOr3B,SAAQ,SAAC/K,GAClB,GAAIA,EAAKb,OAASA,EAAM,CACtB,IAAMonB,GAAYvmB,EAAKumB,SACvBvmB,EAAKumB,SAAWA,MAGpBgjB,EAAgBL,OCvDdV,GAAkB7wB,KAAOzU,IAAV,sTAYfumB,GAAe9R,KAAOzU,IAAV,mSAkFHygB,GAtEE,WACf,IAAMtU,EAAWkO,YAAY3M,IACvBrI,EAAYL,GAAa,OAEzBshC,EAAclhC,GAClB+G,EAASQ,OAAOJ,QAAU,EAC1BlH,GACA,GAEIkhC,EAAgBnhC,GACpB+G,EAASQ,OAAOD,UAAY,EAC5BrH,GACA,GAEImhC,EAAWphC,GAAY+G,EAASQ,OAAO9Q,KAAO,EAAGwJ,GAAW,GAC5DohC,EAAarhC,GAAY+G,EAASQ,OAAO7D,OAAS,EAAGzD,GAAW,GAEhE0+B,EAAU3+B,GAAY+G,EAASS,OAAOm3B,SAAW,EAAG1+B,GAAW,GAC/D2+B,EAAmB5+B,GACvB+G,EAASS,OAAOo3B,kBAAoB,EACpC3+B,GACA,GAEIugC,EAAiBxgC,GACrB+G,EAASS,OAAOI,WAAWC,WAAa,EACxC5H,GACA,GAEIsgC,EAAevgC,GACnB+G,EAASS,OAAOI,WAAWG,SAAW,EACtC9H,GACA,GAEIwgC,EAAgBzgC,GACpB+G,EAASS,OAAOI,WAAWE,UAAY,EACvC7H,GACA,GAEIyH,EAAS1H,GAAY+G,EAASS,OAAOE,QAAU,EAAGzH,GAAW,GAInE,OAFAqhC,YAASC,OAAOC,kBAAoB,QAGlC,uCACE,eAAC,GAAD,IACA,gBAAC,GAAD,WACE,eAAC,GAAD,CACE7C,QAASA,EACTC,iBAAkBA,EAClB2B,aAAcA,EACdC,eAAgBA,EAChBC,cAAeA,EACf/4B,OAAQA,IAEV,eAAC,GAAD,CACEvJ,UAAWgjC,EACX3oC,KAAM4oC,EACNjiC,SAAU+hC,EACVx9B,MAAO29B,OAGX,eAAC,GAAD,IACA,gBAAC,GAAD,WACE,eAAC,GAAD,IACA,eAAC,GAAD,WChGF/xB,GAAUD,KAAOzU,IAAV,4HAQP6pB,GAAcpV,aAAOmN,GAAPnN,CAAH,8DAiBFoyB,GAbE,SAAC,GAAoB,IAAlBC,EAAiB,EAAjBA,KAAM7qC,EAAW,EAAXA,KACxB,OACE,gBAAC,GAAD,WACE,eAAC,KAAD,CACEoK,IAAKygC,EAAI,yBAAqBA,GAAS,yBACvCruB,MAAO,GACPjD,OAAQ,KAEV,eAAC,GAAD,UAAcvZ,QCpBdyY,GAAUD,KAAOzU,IAAV,sGAgBE+mC,GAVE,SAAC,GAAc,IAAZ9H,EAAW,EAAXA,KACZ+H,EAAMhhC,KAAMi5B,GAClB,OACE,gBAAC,GAAD,WACGA,GAAQ+H,EAAIC,WAAa,eAAC,GAAD,UAAOD,EAAI1f,OAAO,kBACzC2X,IAAS+H,EAAIC,YAAc,eAAC,GAAD,qBCd9BvyB,GAAUD,KAAOzU,IAAV,oGAOPye,GAAOhK,KAAOzU,IAAV,yLAWK,SAASknC,GAAT,GAA6C,IAAlBvoB,EAAiB,EAAjBA,eACxC,OACE,eAAC,GAAD,UACGA,EAAiB,GAChB,eAAC,GAAD,UACGA,MCtBX,I,YAAMwoB,GAAiB1yB,KAAOzU,IAAV,qMAUdonC,GAAgB3yB,KAAOzU,IAAV,oJAQJ,SAASqnC,GAAT,GAA8C,IAApBC,EAAmB,EAAnBA,QAASC,EAAU,EAAVA,OAC1CC,EAAejiC,OAAOgiC,GAC5B,OACE,iCACE,eAACJ,GAAD,UACGG,EAAU,GAAK,yCAASA,EAAQvgC,iBAAjB,aAEhBgW,MAAMyqB,IACN,eAACJ,GAAD,oBACuB,IAAjBI,EAAqB,GAAK,UADhC,YACwC5gC,GACpC4gC,EACA,SCjBZ,I,sSAAMlhB,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAgFFgS,GAtEG,SAAC,GAAuC,IAArC1rB,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OACpCjN,EAAU6R,cAQhB,OACE,gBAAC,GAAD,WACGnJ,EACD,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAACoJ,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,CAAkBxI,MAAO,CAAC5F,MAAM,KAAhC,kBACA,eAAC,GAAMoO,WAAP,0BACA,eAAC,GAAMA,WAAP,CAAkBxI,MAAO,CAAC5F,MAAM,KAAMoN,UAAW,QAAjD,uBAGA,eAAC,GAAMgB,WAAP,CAAmBxI,MAAO,CAAC5F,MAAM,KAAMoN,UAAW,QAAlD,qBAGA,eAAC,GAAMgB,WAAP,CAAmBxI,MAAO,CAAC5F,MAAM,KAAMoN,UAAW,QAAlD,mBAEA,eAAC,GAAMgB,WAAP,CAAkBjK,UAAU,gBAGhC,eAAC,GAAMkK,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAMwa,IAAP,CAAuBzK,QAAS,kBAhC9BxI,EAgC+C3V,EAAK2V,QA/BlE9X,OAAOuc,WAAa,MACtBrC,EAAQsB,KAAR,oBAA0B1D,KAFX,IAACA,GAgCF,UACE,eAAC,GAAMkT,KAAP,UACE,eAAC,GAAD,CAAUmhB,KAAMhqC,EAAKgqC,KAAM7qC,KAAMa,EAAKb,SAExC,eAAC,GAAM0pB,KAAP,CAAY/I,UAAU,mBAAtB,SACE,eAAC,GAAD,UAAO9f,EAAKo0B,OAASp0B,EAAKuO,gBAE5B,eAAC,GAAMsa,KAAP,CAAYE,UAAW,QAAvB,SACE,eAACqhB,GAAD,CAAkBvoB,eAAgB7hB,EAAK6hB,mBAEzC,eAAC,GAAMgH,KAAP,CAAY/I,UAAU,eAAeiJ,UAAW,QAAhD,SACE,eAACwhB,GAAD,CAAgBC,QAASxqC,EAAKwqC,QAASC,OAAQzqC,EAAKyqC,WAEtD,eAAC,GAAM5hB,KAAP,CAAY/I,UAAU,YAAtB,SACE,eAAC,GAAD,CAAUqiB,KAAMniC,EAAK8c,cAEvB,eAAC,GAAM+L,KAAP,CAAY/I,UAAU,mBAAtB,SACE,eAAC,IAAD,CACEwB,GAAE,oBAAethB,EAAK2V,IADxB,SAGE,eAAC,GAAD,UApBUvH,OAwBX,eAAC,GAAD,eAMlB4W,MC/FD0I,GAAgB/V,KAAOzU,IAAV,mIAObyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FAsEIgzB,GA7DE,WACf,IAAM9c,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQzB,EAAkC7T,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,mBAXsB,IAUxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAKM5hB,EAAW6R,cACXzF,EAAU6R,cAChB,EAAmCrM,YAAYnI,IAAhCN,EAAf,EAAQvQ,MAAiBG,EAAzB,EAAyBA,MACnBC,EAAU4Y,YAAYtX,IAEtBkmB,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAMrC,OAJAuT,qBAAU,WACRrM,ElIfF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAtB,8CACA,WAAOkH,GAAP,iBAAA/N,EAAA,6DACE+N,EAASzG,IAAW,IADtB,kBAI6BtE,EAAI9D,MAAJ,YAAuB,CAC9C0H,OACAC,aANN,gBAIYrG,EAJZ,EAIYA,OAIRuN,EAASsJ,GAAY7W,GAAU,KARnC,uBAUIuN,EAASzG,IAAW,IAVxB,yEADA,sDkIeW0lC,CAAc5c,EAAY,EAAGvpB,MACrC,CAACkH,EAAUqiB,EAAWvpB,IAGvB,qCACE,eAAComC,GAAD,CACE5sC,KAAM6W,EACNnQ,QAASA,EACT8b,OACE,eAAC,GAAD,UACE,eAAC,GAAD,yBAGJuE,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EAzCa,GA0CbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OAjDW,IAkDTiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,WC7ErBzU,GAAUD,aAAOgB,GAAPhB,CAAH,8JAkCE8W,GAvBM,SAAC,GAAc,IAAZxwB,EAAW,EAAXA,KACtB,OAAIA,GAAQA,EAAK4f,OAAS,EAEtB,eAAC,GAAD,UACE,gBAAC,GAAD,CAAOiM,aAAW,EAAlB,UACE,eAAC,GAAMlF,OAAP,UACE,eAAC,GAAMgE,IAAP,UACE,eAAC,GAAMmB,WAAP,gCAGJ,eAAC,GAAMC,KAAP,UACG/rB,EAAK+H,KAAI,SAACsD,EAAM8E,GAAP,OACR,eAAC+pB,GAAD,CAAsBj3B,KAAMoI,EAAKiF,YAAajF,KAAMA,EAAKA,MAA1C8E,aAOlB,MCjCLuf,GAAQhW,KAAO8I,OAAV,gKAMAjiB,GAGImvB,MCLT/V,GAAUD,aAAOgB,GAAPhB,CAAH,qPAaPmzB,GAAYnzB,aAAOkE,KAAPlE,CAAH,sDAITozB,GAAqBpzB,KAAOzU,IAAV,mDAIlBwrB,GAAc/W,KAAOzU,IAAV,yEAKX8nC,GAAYrzB,aAAOgW,GAAPhW,CAAH,8FAMTszB,GAActzB,aAAOoN,GAAPpN,CAAH,uDAwBFuzB,GApBA,SAAC,GAAc,IAAZjtC,EAAW,EAAXA,KACRkB,EAA4BlB,EAA5BkB,KAAM6qC,EAAsB/rC,EAAtB+rC,KAAMz7B,EAAgBtQ,EAAhBsQ,YAEpB,OACE,gBAAC,GAAD,WACE,eAACu8B,GAAD,CACEvhC,IAAKygC,EAAI,yBAAqBA,GAAS,yBACvCruB,MAAO,GACPjD,OAAQ,KAEV,gBAACqyB,GAAD,WACE,eAAC,GAAD,UACE,eAACC,GAAD,UAAY7rC,MAEd,eAAC8rC,GAAD,UAAc18B,WChDhBqJ,GAAUD,aAAOgB,GAAPhB,CAAH,8EAKPiN,GAASjN,KAAOzU,IAAV,oJAQNyiC,GAAiBhuB,KAAOzU,IAAV,8LAad0yB,GAAkBje,KAAOzU,IAAV,yJASf+sB,GAAgBtY,KAAOzU,IAAV,wOAQKxE,GAMlBs2B,GAAMrd,KAAOzU,IAAV,4GAOHwd,GAAc/I,KAAOzU,IAAV,6FAMX6pB,GAAcpV,KAAOzU,IAAV,qOAcXioC,GAAWxzB,aAAOmN,GAAPnN,CAAH,oDAIRyzB,GAAazzB,aAAOmN,GAAPnN,CAAH,yFACLjZ,GAKL8qB,GAAc7R,KAAOzU,IAAV,8FAMXye,GAAOhK,KAAOzU,IAAV,kPAcJmnC,GAAiB1yB,KAAOzU,IAAV,yIAUdmoC,GAAa1zB,aAAOmN,GAAPnN,CAAH,iEAiEDmc,GA7DG,SAAC,GAAc,IAAZ71B,EAAW,EAAXA,KACnB,OAAIA,EAEA,gBAAC,GAAD,WACE,eAAC,GAAD,wBACA,gCACIA,GAAQ,IAAI+H,KAAI,SAAChG,EAAMoO,GAAP,eAChB,gBAAC,GAAD,WACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACE,2BAEF,eAAC,GAAD,CAAK0R,UAAU,WAEjB,gBAAC,GAAD,WACE,eAAC,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,IAAD,CAASwB,GAAE,WAAMthB,EAAKsrC,MAAX,sBAA8BtrC,EAAKurC,YAA9C,SACE,eAACH,GAAD,qBAAiBprC,EAAKurC,gBAExB,eAACJ,GAAD,UAAWnrC,EAAKo0B,aAGpB,gBAAC,GAAD,WACE,gBAAC,GAAD,WACE,eAAC,GAAD,sBACA,gBAAC,GAAD,WACE,eAAC,GAAD,oBAAOp0B,EAAKwrC,OAAOvhC,wBAAnB,QAAuC,IACvC,eAAC,GAAD,CAAW6V,UAAU,OAArB,mBACG9f,EAAKsrC,aADR,aACG,EAAY79B,gBAEdzN,EAAKwrC,QAAUxrC,EAAKyrC,kBACnB,eAACJ,GAAD,CAAYvrB,UAAU,SAAtB,2BAAsChW,GACpC9J,EAAKwrC,OAASxrC,EAAKyrC,iBACnB,GACAhvC,QAAQ,OAAQ,cAItBuD,EAAK0rC,cAAgB,IAAI7tB,OAAS,GAClC,gBAAC,GAAD,WACE,eAAC,GAAD,0BACA,gCACI7d,EAAK0rC,cAAgB,IAAI1lC,KAAI,SAAChG,EAAMoO,GAAP,OAC7B,eAAC,GAAD,UAAwBpO,GAARoO,mBArCTA,WAkDtB,MClLLsb,GAAc/R,aAAO6N,GAAP7N,CAAH,uDA+CF+c,GA3CU,SAAC,GAA2B,IAA1Bz2B,EAAyB,EAAzBA,KAAO0tC,EAAkB,EAAlBA,YACxBlB,EAAWxsC,EAAXwsC,OAGND,EAEEmB,EAFFnB,QACA3oB,EACE8pB,EADF9pB,eAKF,OACE,qCACE,eAACgI,GAAD,UACE,gBAAC,GAAD,CAAaC,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,eAAC,GAAMgE,IAAP,UACE,eAAC,GAAMmB,WAAP,8BAKJ,gBAAC,GAAMC,KAAP,WACE,eAAC,GAAMpB,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,WAAlB,SACE,eAACgW,GAAD,CAAkBvoB,eAAgBA,UAIxC,eAAC,GAAM+G,IAAP,UACE,eAAC,GAAMC,KAAP,UACE,eAAC,GAAD,CAAWuL,MAAO,UAAWI,QAAS,QAAtC,SACE,eAAC+V,GAAD,CAAgBC,QAASA,EAASC,OAAQA,qBCa7CmB,GA3CO,WAAO,IAAD,MAClBC,EAAclR,cAAdkR,UAEFlgC,EAAW6R,cAEjBxF,qBAAU,WAER,OADArM,ExI+B8B,SAACkgC,GAAD,8CAAe,WAAOlgC,GAAP,iBAAA/N,EAAA,6DAC/C+N,EAASwJ,IAAwB,IADc,kBAGpBvU,EAAI9D,MAAJ,oBAAuB+uC,IAHH,gBAGrCztC,EAHqC,EAGrCA,OACRuN,EAASuJ,GAAiB9W,GAAU,KAJS,uBAM7CuN,EAASwJ,IAAwB,IANY,yEAAf,sDwI/BrB22B,CAAmBD,IACrB,WACLlgC,EAASuJ,GAAiB,QAE3B,CAACvJ,EAAUkgC,IAEd,IAAM92B,EAAgBwI,YAAYlI,IAE5B02B,EAAa,CACjB5sC,KAAM4V,EAAc5V,KACpB6qC,KAAMj1B,EAAci1B,KACpBz7B,YAAawG,EAAcxG,YAC3B9H,UAAS,UAAEsO,EAActO,iBAAhB,aAAE,EAAyBoX,OACpC2sB,QAAO,UAAEz1B,EAActO,iBAAhB,aAAE,EAAyBs3B,QAChC,SAACiO,EAAUzwB,GAAX,aAAuBywB,GAAQ,UAAIzwB,EAAQiwB,cAAZ,QAAsB,KACrD,GAEFf,OAAM,UAAE11B,EAActO,iBAAhB,aAAE,EACJs3B,QACA,SAACiO,EAAUzwB,GAAX,eACEywB,GAAW,UAACzwB,EAAQiwB,cAAT,QAAmB,IAAnB,UAAyBjwB,EAAQkwB,wBAAjC,QAAqD,KAClE,GAED1iC,QAAQ,GACRtM,QAAQ,OAAQ,KAGrB,OACE,uCACE,eAAC,GAAD,CAAQwB,KAAM8tC,IACd,eAAC,GAAD,CAAkB9tC,KAAM8tC,EAAYJ,YAAa52B,IACjD,eAAC,GAAD,CAAc9W,KAAM8W,EAAck3B,eAClC,eAAC,GAAD,CAAWhuC,KAAM8W,EAActO,gBC3C/BmR,GAAUD,KAAOzU,IAAV,4aAaT,SAAAsb,GAAC,MAAe,YAAXA,EAAE9c,MAAsBgd,aAAxB,0FAIL,SAAAF,GAAC,MAAe,UAAXA,EAAE9c,MAAoBgd,aAAtB,0FAWH4d,GAAe3kB,KAAOzU,IAAV,4JASZgpC,GAAcv0B,KAAOzU,IAAV,0JASXyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,oGAML+V,GAAgB/V,KAAOzU,IAAV,yEAKbq1B,GAAU5gB,aAAOoN,GAAPpN,CAAH,sDAIPw0B,GAAc,CAAC,UAAW,SAqDjBC,GAnDG,SAAC,GAA2B,IAAzB1qC,EAAwB,EAAxBA,KAAMvD,EAAkB,EAAlBA,QAASwX,EAAS,EAATA,GAClC,EAAkCqE,mBAAS,IAA3C,mBAAOqyB,EAAP,KAAkBC,EAAlB,KACMzxB,EAAYQ,KACZ1P,EAAW6R,cACb+uB,EAAW,kBACf,OAAQ7qC,GACN,IAAK,UACH6qC,EAAW,0BACX,MACF,IAAK,QACHA,EAAW,wBAmBf,OAbAv0B,qBAAU,WACRnO,YAAW,WACT8B,EAASiK,GAAYD,MACpB,QAELqC,qBAAU,WACRnO,YAAW,WACLgR,EAAUU,SACZ+wB,EAAa,UAEd,QAGAnuC,EAEH,gBAAC,GAAD,CAASuD,KAAMA,EAAMoe,UAAWusB,EAAhC,UACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACG3qC,GAAQyqC,GAAYxmC,SAASjE,IAC5B,eAAC,KAAD,CAAO6H,IAAG,sBAAiB7H,EAAjB,YAGd,eAAC,GAAD,UAAQA,IACR,eAACwqC,GAAD,UACE,eAAC,KAAD,CAAO3iC,IAAKgjC,EACVpuB,QAAS,WACPxS,EAASiK,GAAYD,YAI7B,eAAC4iB,GAAD,UAAUp6B,OAjBO,MC5FjByZ,GAAUD,KAAOzU,IAAV,0HASPspC,GAAY70B,KAAOzU,IAAV,8IAwBAupC,GAhBD,WACZ,IAAMl3B,EAASgI,YAAYzH,IAE3B,OACE,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAAC02B,GAAD,WACIj3B,GAAU,IAAIvP,KAAI,gBAAGtE,EAAH,EAAGA,KAAMvD,EAAT,EAASA,QAASwX,EAAlB,EAAkBA,GAAlB,OAClB,eAAC,GAAD,CAAWjU,KAAMA,EAAMvD,QAASA,EAASwX,GAAIA,GAASA,aCrB5D6T,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAUXsc,GAAWtc,aAAO6N,GAAMoD,IAAbjR,CAAH,gDAIRqa,GAAcra,KAAOzU,IAAV,wHAQXwpC,GAAU/0B,aAAOmN,GAAPnN,CAAH,+GAOPg1B,GAAeh1B,KAAOzU,IAAV,mHAoFH0pC,GA5EI,SAAC,GAAuC,IAArC3uC,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OAC3C,OACE,gBAAC,GAAD,WACGvE,EACD,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAACoJ,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,KAAjC,kBACA,eAAC,GAAMoO,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,KAAjC,qCACA,eAAC,GAAMoO,WAAP,0CAGA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,0BAKJ,eAAC,GAAMiB,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAD,WACE,eAAC,GAAMya,KAAP,CAAY/I,UAAU,oBAAtB,SACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACG5W,KAAM+E,SAASjO,EAAKw7B,QAAQl4B,YAAYknB,OACvC,yBAGJ,eAACzD,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,aAD/B,SAGE,eAAC,GAAD,CAAc9J,MAAOlE,EAAKw7B,QAAQxtB,qBAIxC,eAAC,GAAM6a,KAAP,UACG7oB,EAAKw7B,QAAQ/F,WACZ,eAAC1O,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,YAAzB,cADN,SAGE,gBAAC2+B,GAAD,WACE,eAAC,KAAD,CAAOpjC,IAAK,oBACZ,eAACmjC,GAAD,oBAAa1sC,EAAKw7B,QAAQxtB,YAA1B,YAAyChO,EAAKw7B,QAAQ/F,mBAI1D,eAAC1O,GAAD,CACExS,KAAI,qBAAgBvU,EAAKw7B,QAAQxtB,YAA7B,YAA4ChO,EAAKw7B,QAAQjG,gBAD/D,SAGE,gBAACoX,GAAD,WACE,eAAC,KAAD,CAAOpjC,IAAK,wBACZ,eAACmjC,GAAD,oBAAa1sC,EAAKw7B,QAAQxtB,YAA1B,YAAyChO,EAAKw7B,QAAQjG,yBAK9D,eAAC,GAAM1M,KAAP,oBAAgB7oB,EAAKiC,QAArB,YAAgCjC,EAAKgC,OAArC,OACA,eAAC,GAAM6mB,KAAP,CAAYE,UAAW,QAASjJ,UAAU,eAA1C,SACE,eAAC,GAAD,CAAS5b,MAAOlE,EAAK6sC,cAtCVz+B,OAyCV,eAAC,GAAD,eAMlB4W,MC9HD0I,GAAgB/V,KAAOzU,IAAV,mIAObyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FAsEIm1B,GA7DQ,WACrB,IAAMjf,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQzB,EAAkC7T,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,qBAXsB,IAUxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAKM5hB,EAAW6R,cACXzF,EAAU6R,cAChB,EAAmCrM,YAAY1K,IAAhCk6B,EAAf,EAAQxoC,MAAiBG,EAAzB,EAAyBA,MACnBC,EAAU4Y,YAAYzK,IAE5BkF,qBAAU,WACRrM,E/IoFF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAtB,8CACA,WAAOkH,GAAP,iBAAA/N,EAAA,6DACE+N,EAASsG,IAA6B,IADxC,kBAI6BrR,EAAI9D,MAAJ,0BAAqC,CAC5D0H,OACAC,aANN,gBAIYrG,EAJZ,EAIYA,OAIRuN,EACEqG,GACE5T,GAAU,CACRmG,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,KAdjB,uBAmBIiH,EAASsG,IAA6B,IAnB1C,yEADA,sD+IpFW+6B,CAAwBhf,EAAY,EAAGvpB,MAC/C,CAACkH,EAAUqiB,EAAWvpB,IAEzB,IAAM0nB,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAErC,OACE,qCACE,eAAC,GAAD,CACExG,KAAM8uC,EACNpoC,QAASA,EACT8b,OACE,eAAC,GAAD,UACE,eAAC,GAAD,gCAGJuE,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EAzCa,GA0CbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OAjDW,IAkDTiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,WCrErB7C,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAUXsc,GAAWtc,aAAO6N,GAAMoD,IAAbjR,CAAH,gDAIRqa,GAAcra,KAAOzU,IAAV,wHAQXwpC,GAAU/0B,aAAOmN,GAAPnN,CAAH,+GAOPg1B,GAAeh1B,KAAOzU,IAAV,mHA2EH0pC,GAnEI,SAAC,GAAuC,IAArC3uC,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OAC3C,OACE,gBAAC,GAAD,WACGvE,EACD,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAACoJ,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,KAAjC,kBACA,eAAC,GAAMoO,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,KAAjC,sBACA,eAAC,GAAMoO,WAAP,yBACA,eAAC,GAAMA,WAAP,sBACA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,0BAKJ,eAAC,GAAMiB,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,aACP,gBAAC,GAAD,WACE,eAAC,GAAMya,KAAP,CAAY/I,UAAU,oBAAtB,SACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACG5W,KAAM+E,SAASjO,EAAKw7B,QAAQl4B,YAAYknB,OACvC,yBAGJ,eAACzD,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,aAD/B,SAGE,eAAC,GAAD,CAAc9J,MAAOlE,EAAKw7B,QAAQxtB,qBAIxC,eAAC,GAAM6a,KAAP,UACE,eAAC9B,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,YAAzB,cADN,SAGE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOzE,IAAK,oBACZ,eAAC,GAAD,oBAAavJ,EAAKw7B,QAAQxtB,YAA1B,YAAyChO,EAAKw7B,QAAQ/F,qBAI5D,eAAC,GAAM5M,KAAP,oBAAgB7oB,EAAKiC,QAArB,YAAgCjC,EAAKgC,OAArC,OACA,eAAC,GAAM6mB,KAAP,UACE,eAAC,GAAD,CAAM1nB,QAAO,OAAEnB,QAAF,IAAEA,GAAF,UAAEA,EAAMitC,+BAAR,aAAE,EAAgC,OAEjD,eAAC,GAAMpkB,KAAP,CAAYE,UAAW,QAAvB,SACE,eAAC,GAAD,CAAS7kB,MAAOlE,EAAK6sC,cA9BVz+B,OAiCV,eAAC,GAAD,eAMlB4W,MCtHD0I,GAAgB/V,KAAOzU,IAAV,mIAObyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FAsEIu1B,GA7DO,WACpB,IAAMrf,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQzB,EAAkC7T,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,mBAXsB,IAUxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAKM5hB,EAAW6R,cACXzF,EAAU6R,cAChB,EAAmCrM,YAAYxK,IAAhCg6B,EAAf,EAAQxoC,MAAiBG,EAAzB,EAAyBA,MACnBC,EAAU4Y,YAAYvK,IAE5BgF,qBAAU,WACRrM,EjJ6GF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAtB,8CACA,WAAOkH,GAAP,iBAAA/N,EAAA,6DACE+N,EAASwG,IAA4B,IADvC,kBAI6BvR,EAAI9D,MAAJ,yBAAoC,CAC3D0H,OACAC,aANN,gBAIYrG,EAJZ,EAIYA,OAIRuN,EACEuG,GACE9T,GAAU,CACRmG,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,KAdjB,uBAmBIiH,EAASwG,IAA4B,IAnBzC,yEADA,sDiJ7GWg7B,CAAuBnf,EAAY,EAAGvpB,MAC9C,CAACkH,EAAUqiB,EAAWvpB,IAEzB,IAAM0nB,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAErC,OACE,qCACE,eAAC,GAAD,CACExG,KAAM8uC,EACNpoC,QAASA,EACT8b,OACE,eAAC,GAAD,UACE,eAAC,GAAD,+BAGJuE,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EAzCa,GA0CbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OAjDW,IAkDTiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,WCtErB7C,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAUXsc,GAAWtc,aAAO6N,GAAMoD,IAAbjR,CAAH,gDAIRqa,GAAcra,KAAOzU,IAAV,wHAQXwpC,GAAU/0B,aAAOmN,GAAPnN,CAAH,+GAOPg1B,GAAeh1B,KAAOzU,IAAV,mHAuEH0pC,GA/DI,SAAC,GAAuC,IAArC3uC,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OAC3C,OACE,gBAAC,GAAD,WACGvE,EACD,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAACoJ,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,mBACA,eAAC,GAAMA,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,KAAjC,sBACA,eAAC,GAAMoO,WAAP,yBACA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,0BAKJ,eAAC,GAAMiB,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAD,WACE,eAAC,GAAMya,KAAP,CAAY/I,UAAU,oBAAtB,SACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACG5W,KAAM+E,SAASjO,EAAKw7B,QAAQl4B,YAAYknB,OACvC,yBAGJ,eAACzD,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,aAD/B,SAGE,eAAC,GAAD,CAAc9J,MAAOlE,EAAKw7B,QAAQxtB,qBAIxC,eAAC,GAAM6a,KAAP,UACE,eAAC9B,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,YAAzB,cADN,SAGE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOzE,IAAK,oBACZ,eAAC,GAAD,oBAAavJ,EAAKw7B,QAAQxtB,YAA1B,YAAyChO,EAAKw7B,QAAQ/F,qBAI5D,eAAC,GAAM5M,KAAP,oBAAgB7oB,EAAKiC,QAArB,YAAgCjC,EAAKgC,OAArC,OACA,eAAC,GAAM6mB,KAAP,CAAYE,UAAW,QAAvB,SACE,eAAC,GAAD,CAAS7kB,MAAOlE,EAAK6sC,cA3BVz+B,OA8BV,eAAC,GAAD,eAMlB4W,MCjHD0I,GAAgB/V,KAAOzU,IAAV,mIAObyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FAsEIy1B,GA7DM,WACnB,IAAMvf,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQzB,EAAkC7T,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,kBAXsB,IAUxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAKM5hB,EAAW6R,cACXzF,EAAU6R,cAChB,EAAmCrM,YAAYtK,IAAhC85B,EAAf,EAAQxoC,MAAiBG,EAAzB,EAAyBA,MACnBC,EAAU4Y,YAAYrK,IAE5B8E,qBAAU,WACRrM,EnJsIF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAtB,8CACA,WAAOkH,GAAP,iBAAA/N,EAAA,6DACE+N,EAAS0G,IAA2B,IADtC,kBAI6BzR,EAAI9D,MAAJ,wBAAmC,CAC1D0H,OACAC,aANN,gBAIYrG,EAJZ,EAIYA,OAIRuN,EACEyG,GACEhU,GAAU,CACRmG,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,KAdjB,uBAmBIiH,EAAS0G,IAA2B,IAnBxC,yEADA,sDmJtIWg7B,CAAsBrf,EAAY,EAAGvpB,MAC7C,CAACkH,EAAUqiB,EAAWvpB,IAEzB,IAAM0nB,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAErC,OACE,qCACE,eAAC,GAAD,CACExG,KAAM8uC,EACNpoC,QAASA,EACT8b,OACE,eAAC,GAAD,UACE,eAAC,GAAD,8BAGJuE,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EAzCa,GA0CbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OAjDW,IAkDTiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,WCtErB7C,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAUXsc,GAAWtc,aAAO6N,GAAMoD,IAAbjR,CAAH,gDAIRqa,GAAcra,KAAOzU,IAAV,wHAQXwpC,GAAU/0B,aAAOmN,GAAPnN,CAAH,+GAOPg1B,GAAeh1B,KAAOzU,IAAV,mHAqEHoqC,GA7DQ,SAAC,GAAuC,IAArCrvC,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OAC/C,OACE,gBAAC,GAAD,WACGvE,EACD,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAACoJ,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,KAAjC,kBACA,eAAC,GAAMoO,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,KAAjC,sBACA,eAAC,GAAMoO,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,QAASoN,UAAW,QAArD,0BAKJ,eAAC,GAAMiB,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAD,WACE,eAAC,GAAMya,KAAP,CAAY/I,UAAU,oBAAoByB,MAAO,CAAC5F,MAAO,KAAzD,SACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACGzS,KAAM+E,SAASjO,EAAKw7B,QAAQl4B,YAAYknB,OACvC,yBAGJ,eAACzD,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,aAD/B,SAGE,eAAC,GAAD,CAAc9J,MAAOlE,EAAKw7B,QAAQxtB,qBAIxC,eAAC,GAAM6a,KAAP,UACE,eAAC9B,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,YAAzB,cADN,SAGE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOzE,IAAK,oBACZ,eAAC,GAAD,oBAAavJ,EAAKw7B,QAAQxtB,YAA1B,YAAyChO,EAAKw7B,QAAQ/F,qBAI5D,eAAC,GAAM5M,KAAP,CAAYE,UAAW,QAASjJ,UAAU,eAA1C,SACE,eAAC,GAAD,CAAS5b,MAAOlE,EAAK6sC,cA1BVz+B,OA6BV,eAAC,GAAD,eAMlB4W,MC/GD0I,GAAgB/V,KAAOzU,IAAV,kGAMbyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FAML41B,GAAW51B,KAAOuR,KAAV,yJAyECskB,GA9DG,WAChB,IAAM3f,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQzB,EAAkC7T,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,oBAXsB,IAUxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAKM5hB,EAAW6R,cACXzF,EAAU6R,cAChB,EAAmCrM,YAAYpK,IAAhC45B,EAAf,EAAQxoC,MAAiBG,EAAzB,EAAyBA,MACnBC,EAAU4Y,YAAYnK,IAE5B4E,qBAAU,WACRrM,ErJwJF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAtB,8CACA,WAAOkH,GAAP,iBAAA/N,EAAA,6DACE+N,EAAS4G,IAAwB,IADnC,kBAI6B3R,EAAI9D,MAAJ,oBAA+B,CACtD0H,OACAC,aANN,gBAIYrG,EAJZ,EAIYA,OAIRuN,EACE2G,GACElU,GAAU,CACRmG,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,KAdjB,uBAmBIiH,EAAS4G,IAAwB,IAnBrC,yEADA,sDqJxJWk7B,CAAmBzf,EAAY,EAAGvpB,MAC1C,CAACkH,EAAUqiB,EAAWvpB,IAEzB,IAAM0nB,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAErC,OACE,qCACE,eAAC,GAAD,CACExG,KAAM8uC,EACNpoC,QAASA,EACT8b,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,wBACA,eAAC8sB,GAAD,mCAGJvoB,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EA1Ca,GA2CbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OAlDW,IAmDTiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,WC9ErB7C,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAUXsc,GAAWtc,aAAO6N,GAAMoD,IAAbjR,CAAH,gDAIRqa,GAAcra,KAAOzU,IAAV,wHAQXwpC,GAAU/0B,aAAOmN,GAAPnN,CAAH,+GAOPg1B,GAAeh1B,KAAOzU,IAAV,mHAuEHwqC,GA/DW,SAAC,GAAuC,IAArCzvC,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OAClD,OACE,gBAAC,GAAD,WACGvE,EACD,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAACoJ,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,mBACA,eAAC,GAAMA,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,KAAjC,sBACA,eAAC,GAAMoO,WAAP,yBACA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,0BAKJ,eAAC,GAAMiB,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAD,WACE,eAAC,GAAMya,KAAP,CAAY/I,UAAU,oBAAtB,SACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACG5W,KAAM+E,SAASjO,EAAKw7B,QAAQl4B,YAAYknB,OACvC,yBAGJ,eAACzD,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,aAD/B,SAGE,eAAC,GAAD,CAAc9J,MAAOlE,EAAKw7B,QAAQxtB,qBAIxC,eAAC,GAAM6a,KAAP,UACE,eAAC9B,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,YAAzB,cADN,SAGE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOzE,IAAK,oBACZ,eAAC,GAAD,oBAAavJ,EAAKw7B,QAAQxtB,YAA1B,YAAyChO,EAAKw7B,QAAQ/F,qBAI5D,eAAC,GAAM5M,KAAP,gCACA,eAAC,GAAMA,KAAP,CAAYE,UAAW,QAAvB,SACE,eAAC,GAAD,CAAS7kB,MAAOlE,EAAK6sC,cA3BVz+B,OA8BV,eAAC,GAAD,eAMlB4W,MCjHD0I,GAAgB/V,KAAOzU,IAAV,mIAObyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FAsEIg2B,GA7DM,WACnB,IAAM9f,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQzB,EAAkC7T,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,iBAXsB,IAUxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAKM5hB,EAAW6R,cACXzF,EAAU6R,cAChB,EAAmCrM,YAAYlK,IAAhC05B,EAAf,EAAQxoC,MAAiBG,EAAzB,EAAyBA,MACnBC,EAAU4Y,YAAYjK,IAE5B0E,qBAAU,WACRrM,EvJiNF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAtB,8CACA,WAAOkH,GAAP,iBAAA/N,EAAA,6DACE+N,EAAS8G,IAA2B,IADtC,kBAI6B7R,EAAI9D,MAAJ,iBAA4B,CACnD0H,OACAC,aANN,gBAIYrG,EAJZ,EAIYA,OAIRuN,EACE6G,GACEpU,GAAU,CACRmG,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,KAdjB,uBAmBIiH,EAAS8G,IAA2B,IAnBxC,yEADA,sDuJjNWm7B,CAAsB5f,EAAY,EAAGvpB,MAC7C,CAACkH,EAAUqiB,EAAWvpB,IAEzB,IAAM0nB,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAErC,OACE,qCACE,eAAC,GAAD,CACExG,KAAM8uC,EACNpoC,QAASA,EACT8b,OACE,eAAC,GAAD,UACE,eAAC,GAAD,2BAGJuE,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EAzCa,GA0CbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OAjDW,IAkDTiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,WCnErB7C,GAAc7R,aAAOgB,GAAPhB,CAAH,2NAYXC,GAAUD,KAAOzU,IAAV,oDAIPumB,GAAe9R,KAAOzU,IAAV,oDAIZwmB,GAAc/R,aAAO6N,GAAP7N,CAAH,iLAUXsc,GAAWtc,aAAO6N,GAAMoD,IAAbjR,CAAH,gDAIRqa,GAAcra,KAAOzU,IAAV,wHAQXwpC,GAAU/0B,aAAOmN,GAAPnN,CAAH,+GAOPg1B,GAAeh1B,KAAOzU,IAAV,mHA8EH2qC,GAtEQ,SAAC,GAAuC,IAArC5vC,EAAoC,EAApCA,KAAM0G,EAA8B,EAA9BA,QAAS8b,EAAqB,EAArBA,OAAQuE,EAAa,EAAbA,OACzCvM,EAAS8E,YAAY/P,IAE3B,OACE,gBAAC,GAAD,WACGiT,EACD,eAAC,GAAD,UACE,eAAC,GAAD,UACE,eAACoJ,GAAD,CAAcllB,QAASA,EAAvB,SACE,gBAAC,GAAD,CAAamlB,aAAW,EAAxB,UACE,eAAC,GAAMlF,OAAP,UACE,gBAAC,GAAMgE,IAAP,WACE,eAAC,GAAMmB,WAAP,mBACA,eAAC,GAAMA,WAAP,CAAkBxI,MAAO,CAAC5F,MAAO,KAAjC,sBACA,eAAC,GAAMoO,WAAP,qBACA,eAAC,GAAMA,WAAP,CAAkBhB,UAAW,QAA7B,0BAKJ,eAAC,GAAMiB,KAAP,UACI/rB,GACAA,EAAK4f,OAAS,GACd5f,EAAK+H,KAAI,SAAChG,EAAMoO,GAAP,OACP,gBAAC,GAAD,WACE,eAAC,GAAMya,KAAP,CAAY/I,UAAU,oBAAtB,SACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACG5W,KAAM+E,SAASjO,EAAKw7B,QAAQl4B,YAAYknB,OACvC,yBAGJ,eAACzD,GAAD,CACExS,KAAI,iBAAYvU,EAAKw7B,QAAQxtB,aAD/B,SAGE,eAAC,GAAD,CAAc9J,MAAOlE,EAAKw7B,QAAQxtB,qBAIxC,eAAC,GAAM6a,KAAP,UACE,eAAC9B,GAAD,CACExS,KAAI,qBAAgBvU,EAAKw7B,QAAQxtB,YAA7B,oBAAoDhO,EAAKw7B,QAAQxtB,YAAjE,YAAgFhO,EAAKw7B,QAAQ/F,YADnG,SAGE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAOlsB,IAAK,oBACZ,eAAC,GAAD,oBAAavJ,EAAKw7B,QAAQxtB,YAA1B,YAAyChO,EAAKw7B,QAAQ/F,qBAI5D,eAAC,GAAM5M,KAAP,UACE,eAAC,GAAD,CACE1nB,QAASnB,EAAKgrB,KACd/E,UAAU,MAGd,eAAC,GAAM4C,KAAP,CAAYE,UAAW,QAASjJ,UAAU,eAA1C,SACE,eAAC,GAAD,CAAS5b,MAAOlE,EAAK6sC,QAAS7kB,SAAUvP,QAhC7BrK,OAmCV,eAAC,GAAD,eAMlB4W,MC3HD0I,GAAgB/V,KAAOzU,IAAV,mIAObyqB,GAAQhW,aAAOmN,GAAPnN,CAAH,8FAsEIm2B,GA7DG,WAChB,IAAMjgB,EAAa5f,SAASgN,KAAWva,IAAI,SACrCotB,EACJD,IAAe5N,MAAM4N,IAAeA,EAAa,EAC7CA,EANmB,EAQzB,EAAkC7T,mBAAS8T,GAA3C,mBAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAgC3R,GAC9B,yBAXsB,IAUxB,mBAAO7X,EAAP,KAAiB8oB,EAAjB,KAKM5hB,EAAW6R,cACXzF,EAAU6R,cAChB,EAAuCrM,YAAYhK,IAApC/B,EAAf,EAAQjN,MAAqBG,EAA7B,EAA6BA,MACvBC,EAAU4Y,YAAY/J,IAE5BwE,qBAAU,WACRrM,EzJwLF,eAACnH,EAAD,uDAAQ,EAAGC,EAAX,uDAAsB,GAAtB,8CACA,WAAOkH,GAAP,iBAAA/N,EAAA,6DACE+N,EAASgH,IAAuB,IADlC,kBAI6B/R,EAAI9D,MAAJ,mBAA8B,CACrD0H,OACAC,aANN,gBAIYrG,EAJZ,EAIYA,OAIRuN,EACE+G,GACEtU,GAAU,CACRmG,MAAO,GACPC,KAAM,EACNC,SAAU,GACVC,MAAO,KAdjB,uBAmBIiH,EAASgH,IAAuB,IAnBpC,yEADA,sDyJxLWo7B,CAAkB/f,EAAY,EAAGvpB,MACzC,CAACkH,EAAUqiB,EAAWvpB,IAEzB,IAAM0nB,EAAatjB,KAAKulB,KAAK1pB,EAAQD,GAErC,OACE,+BACE,eAACupC,GAAD,CACE/vC,KAAMuT,EACN7M,QAASA,EACT8b,OACE,eAAC,GAAD,UACE,eAAC,GAAD,0BAGJuE,OACE,eAAC,GAAD,CACEqH,WAAY2B,EACZ7B,WAAYA,EACZ1nB,SAAUA,EACV8oB,YAAa,SAAC9oB,GACZwpB,EAzCa,GA0CbV,EAAY9oB,GACZsT,EAAQsB,KAAK,CACX+B,OAAQ,QAGZkS,aAAc,SAACG,EAAD,GAAwB,IAAlBpB,EAAiB,EAAjBA,WAClBtU,EAAQsB,KAAK,CACX+B,OAjDW,IAkDTiR,EACI,KADJ,gBAEaA,KAEjB4B,EAAa5B,WCjFrBzU,GAAUD,KAAOuR,KAAV,iCAIE,SAAS+kB,GAAT,GAA8C,IAAD,IAA7BhwB,gBAA6B,MAAlB,GAAkB,MAAdJ,cAAc,MAAL,EAAK,EACpDqwB,EAAYjwB,EAASmI,UAAU,EAAGvI,GAAU,MAAQI,EAASmI,UAAUnI,EAASJ,OAASA,GAE/F,OACE,eAAC,GAAD,CAASuW,MAAOnW,EAAhB,SAA2BiwB,ICI/B,I,GAAMC,GAAcx2B,aAAOygB,KAAPzgB,CAAH,2PA6GFy2B,GA9FI,WACjB,IAAM95B,EAAW6G,cACXpD,EAAU6R,cACV/O,EAAYQ,KAElB,EAAwDrB,oBAAS,GAAjE,mBAAOq0B,EAAP,KAA6BC,EAA7B,KACA,EAAkDt0B,oBAAS,GAA3D,mBAAOu0B,EAAP,KAA0BC,EAA1B,KACA,EAAgCx0B,mBAAS,IAAzC,mBAAOy0B,EAAP,KAAiBC,EAAjB,KACMC,EAAUpxB,YAAYrO,IACtBvD,EAAW6R,cAGXwa,EAAsB,SADlBC,KAAYv4B,MAAM4U,EAAS8G,QACnB8c,MAElBlgB,qBAAU,WACH22B,IAAW3W,GAAYuW,GAAsBF,GAChD,uCAAC,8BAAAzwC,EAAA,sEACOgxC,YAAW,cADlB,UAEMxtC,IAFN,uBAGOyZ,EAAUU,SACZ+yB,GAAwB,GAJ7B,0CAQiCO,cARjC,OAQOC,EARP,OASOL,EAAWK,EAAkB9oC,KACjC,YACE,MAAO,CACL7E,QAF6B,EAA9BA,QAGChC,KAH6B,EAArB4vC,KAAQ5vC,SAQlB0b,EAAUU,UACZmzB,EAAYD,GACZD,GAAqB,IApBxB,4CAAD,yDAwBD,CAACxW,EAAS2W,EAASJ,EAAmBF,EAAsBxzB,IAE/D,IAAMm0B,EAAY,uCAAG,WAAOnjC,GAAP,SAAAjO,EAAA,sDACnB4wC,GAAqB,GACrB7iC,EAASqD,GAAWnD,IAFD,2CAAH,sDAKlB,OACE,uCACE,gBAACsiC,GAAD,CACEl1B,KAAK,OACLof,KAAML,GAAWuW,EACjBjW,QAAS,WACPkW,GAAqB,GACrBz2B,EAAQk3B,UALZ,UAQE,eAAC7W,GAAA,EAAMxT,OAAP,8BACA,eAACwT,GAAA,EAAMG,QAAP,CAAezY,UAAU,yBAAzB,SACE,8BACG2uB,EAASzoC,KAAI,SAAC6F,GACb,OACE,sBAEEsS,QAAO,sBAAE,sBAAAvgB,EAAA,sEACDoxC,EAAanjC,GADZ,2CAFX,UAME,gCAAOA,EAAQ1M,OACf,eAAC8uC,GAAD,UAAOpiC,EAAQ1K,YANV0K,EAAQ1K,mBAczB,gBAACi3B,GAAA,EAAD,CACEnf,KAAK,OACLof,KAAML,GAAWqW,EACjB/V,QAAS,WACPgW,GAAwB,GACxBv2B,EAAQk3B,UALZ,UAQE,eAAC7W,GAAA,EAAMxT,OAAP,sBACA,eAACwT,GAAA,EAAMG,QAAP,oFClFO,SAAS2W,KAKtB,OAJAtzB,KpJxBInE,KACFA,GAAO03B,KAAK,cAAe53B,IAC3BE,GAAO03B,KAAK,cAAe33B,IAC3BC,GAAO23B,eAGT33B,GAAS43B,IAAG9wC,wBACL+wC,UAEP73B,GAAO83B,GAAG,WAAW,WACnB93B,GAAO03B,KAAK,YAAa53B,IACzBE,GAAO03B,KAAK,YAAa33B,IAEzBC,GAAO83B,GAAG,cAAc,YAAiB,IAAd72B,EAAa,EAAbA,OACzBvB,GAAMxL,SAASiB,GAAc8L,OAG/BjB,GAAO83B,GAAG,YAAY,SAAClgC,GACrB8H,GAAMxL,SAAS4E,GAAYlB,UoJW7B,eAAC,IAAD,UACE,gBAACuI,GAAD,WACE,eAAC,GAAD,IACA,eAACC,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,GAAD,IACA,gBAAC,IAAD,WACE,eAAC,IAAD,CAAOyM,OAAK,EAACvnB,KAAK,IAAIyyC,UAAW7rB,KACjC,eAAC,IAAD,CAAOW,OAAK,EAACvnB,KAAK,QAAQyyC,UAAW5hB,KACrC,eAAC,IAAD,CAAOtJ,OAAK,EAACvnB,KAAK,aAAayyC,UAAW1b,KAC1C,eAAC,IAAD,CAAOxP,OAAK,EAACvnB,KAAK,YAAYyyC,UAAWnb,KACzC,eAAC,IAAD,CAAO/P,OAAK,EAACvnB,KAAK,eAAeyyC,UAAW/U,KAC5C,eAAC,IAAD,CACEnW,OAAK,EACLvnB,KAAK,4BACLyyC,UAAW7Q,KAEb,eAAC,IAAD,CACEra,OAAK,EACLvnB,KAAK,yBACLyyC,UAAWtO,KAEb,eAAC,IAAD,CAAO5c,OAAK,EAACvnB,KAAK,YAAYyyC,UAAW7E,KACzC,eAAC,IAAD,CACErmB,OAAK,EACLvnB,KAAK,uBACLyyC,UAAW5D,KAEb,eAAC,IAAD,CAAOtnB,OAAK,EAACvnB,KAAK,UAAUyyC,UAAWhC,KACvC,eAAC,IAAD,CACElpB,OAAK,EACLvnB,KAAK,0BACLyyC,UAAW1C,KAEb,eAAC,IAAD,CACExoB,OAAK,EACLvnB,KAAK,yBACLyyC,UAAWtC,KAEb,eAAC,IAAD,CACE5oB,OAAK,EACLvnB,KAAK,wBACLyyC,UAAWpC,KAEb,eAAC,IAAD,CACE9oB,OAAK,EACLvnB,KAAK,oBACLyyC,UAAWC,KAEb,eAAC,IAAD,CAAOnrB,OAAK,EAACvnB,KAAK,iBAAiByyC,UAAW7B,KAC9C,eAAC,IAAD,CAAUrsB,GAAG,cAInB,eAAC,GAAD,IACA,eAAC,GAAD,IACA,eAAC,GAAD,SC9FR,IA6EeouB,GA7EKC,aAAH,o8CCOjBC,IAASC,OACP,gBAAC,IAAM3e,SAAP,WACE,eAAC,GAAD,IACA,eAAC,IAAD,CAAU/Z,MAAOA,GAAjB,SAEE,eAAC+3B,GAAD,SAGJ7yB,SAASyzB,eAAe,W","file":"static/js/main.3a8c6e47.chunk.js","sourcesContent":["const paramsKeyConvert = (str = \"\") =>\n str.replace(/[A-Z]/g, ([s]) => `_${s.toLowerCase()}`);\n\nclass Api {\n endpoint = null;\n\n constructor(endpoint) {\n this.endpoint = endpoint;\n }\n\n fetch = (path, params = {}, options) => {\n const url = new URL(path, this.endpoint);\n for (const key of Object.keys(params)) {\n url.searchParams.set(paramsKeyConvert(key), params[key]);\n }\n\n return new Promise(async (resolve, reject) => {\n try {\n const resp = await window.fetch(url, options);\n if (resp.status !== 200) {\n const data = await resp.json();\n resolve({\n error: {\n status: resp.status,\n message: data.message,\n data: data.data,\n },\n });\n } else {\n const result = await resp.json();\n resolve({\n result,\n });\n }\n } catch {\n resolve({\n error: {\n message: \"Unknown\",\n },\n });\n }\n });\n };\n}\n\nexport default Api;\n","import Api from \"./api\";\n\nclass ScanApi extends Api {}\n\nexport default new ScanApi(\n process.env.REACT_APP_SCAN_SERVER || \"https://edg-api.dotreasury.com/\"\n);\n","export const TEXT_DARK_MAJOR = \"#1D253C\";\nexport const TEXT_DARK_MINOR = \"rgba(0, 0, 0, 0.65)\";\nexport const TEXT_DARK_ACCESSORY = \"rgba(0, 0, 0, 0.3)\";\nexport const TEXT_DARK_DISABLE = \"rgba(29, 37, 60, 0.24)\";\nexport const PRIMARY_THEME_COLOR = \"#FF3B80\";\nexport const SECONDARY_THEME_COLOR = \"#FBEAF0\";\nexport const WARNING_COLOR = \"#EC4730\";\n\nexport const OVERVIEW_PROPOSALS_COLOR = \"#FF3B80\";\nexport const OVERVIEW_TIPS_COLOR = \"#2DE1C5\";\nexport const OVERVIEW_BOUNTIES_COLOR = \"#11CAF0\";\nexport const OVERVIEW_BURNT_COLOR = \"#FFC008\";\nexport const OVERVIEW_INFLATION_COLOR = \"#FF3B80\";\nexport const OVERVIEW_TREASURY_COLOR = \"#FCC04D\";\nexport const OVERVIEW_ELECTION_COLOR = \"#FED077\";\nexport const OVERVIEW_OTHERS_COLOR = \"#CCCCCC\";\nexport const OVERVIEW_MINTING_COLOR = \"#FF3B80\";\nexport const OVERVIEW_STAKING_REMAINDER_COLOR = \"#FB6C9F\";\nexport const OVERVIEW_STAKING_COLOR = \"#2DE1C5\";\nexport const OVERVIEW_DEMOCRACY_COLOR = \"#6CEAD6\";\nexport const OVERVIEW_IDENTITY_COLOR = \"#96F0E2\";\n\nexport const TipStatus = {\n Tipping: \"Tipping\",\n Closing: \"Closing\",\n Closed: \"Closed\",\n Retracted: \"Retracted\",\n};\n\nexport const tipStatusMap = {\n NewTip: \"Tipping\",\n tip: \"Tipping\",\n TipRetracted: \"Retracted\",\n TipClosed: \"Closed\",\n};\n\nexport const ProposalStatus = {\n Approved: \"Approved\",\n Rejected: \"Rejected\",\n};\n\nexport const TreasuryAccount =\n \"jz77v8cHXwEWbPnbfQScXnU9Qy5VkHnDLfpDsuDYUZ7ELae\";\n\nexport const DEFAULT_EDGEWARE_NODE_URL =\n \"wss://edgeware.api.onfinality.io/public-ws\";\nexport const DEFAULT_EDGEWARE_NODES = [\n {\n name: \"onFinality\",\n url: \"wss://edgeware.api.onfinality.io/public-ws\",\n },\n {\n name: \"Commonwealth\",\n url: \"wss://mainnet1.edgewa.re\",\n },\n];\n\nexport const CHAINS = {\n EDGEWARE: \"edg\",\n};\n","import { ApiPromise, WsProvider } from \"@polkadot/api\";\nimport { isWeb3Injected, web3FromAddress } from \"@polkadot/extension-dapp\";\nimport { stringToHex, BN, BN_THOUSAND, BN_TWO, bnToBn } from \"@polkadot/util\";\nimport { encodeAddress } from \"@polkadot/keyring\";\nimport { spec } from \"@edgeware/node-types\";\n\nimport {\n DEFAULT_EDGEWARE_NODE_URL,\n DEFAULT_EDGEWARE_NODES,\n} from \"../constants\";\n\nconst apiInstanceMap = new Map();\n\nlet nodeUrl = (() => {\n let localNodeUrl = null;\n try {\n localNodeUrl = JSON.parse(localStorage.getItem(\"nodeUrl\"));\n } catch (e) {\n // ignore parse error\n }\n return {\n edgeware:\n DEFAULT_EDGEWARE_NODES.find((item) => item.url === localNodeUrl?.edgeware)\n ?.url || DEFAULT_EDGEWARE_NODE_URL,\n };\n})();\n\nexport const getNodeUrl = () => nodeUrl;\n\nexport const getNodes = () => ({\n edgeware: DEFAULT_EDGEWARE_NODES,\n});\n\nexport const getApi = async (queryUrl) => {\n const url = queryUrl || nodeUrl?.edgeware;\n if (!apiInstanceMap.has(url)) {\n apiInstanceMap.set(\n url,\n ApiPromise.create({ provider: new WsProvider(url), typesBundle: spec.typesBundle })\n );\n }\n return apiInstanceMap.get(url);\n};\n\nexport const getTipCountdown = async () => {\n const api = await getApi();\n return api.consts.tips.tipCountdown.toNumber();\n};\n\nexport const signMessage = async (text, address) => {\n if (!isWeb3Injected || !address) {\n return \"\";\n }\n\n const injector = await web3FromAddress(address);\n\n const data = stringToHex(text);\n const result = await injector.signer.signRaw({\n type: \"bytes\",\n data,\n address,\n });\n\n return result.signature;\n};\n\nconst extractBlockTime = (extrinsics) => {\n const setTimeExtrinsic = extrinsics.find(\n (ex) => ex.method.section === \"timestamp\" && ex.method.method === \"set\"\n );\n if (setTimeExtrinsic) {\n const { args } = setTimeExtrinsic.method.toJSON();\n return args.now;\n }\n};\n\nexport const getBlockTime = async (number) => {\n const api = await getApi();\n const hash = await api.rpc.chain.getBlockHash(number);\n const block = await api.rpc.chain.getBlock(hash);\n const time = extractBlockTime(block.block.extrinsics);\n return time;\n};\n\nconst DEFAULT_TIME = new BN(6_000);\nconst THRESHOLD = BN_THOUSAND.div(BN_TWO);\n\nexport const estimateBlocksTime = async (blocks) => {\n const api = await getApi();\n const blockTime = (\n // Babe\n api.consts.babe?.expectedBlockTime ||\n // POW, eg. Kulupu\n api.consts.difficulty?.targetBlockTime ||\n // Subspace\n api.consts.subspace?.expectedBlockTime || (\n // Check against threshold to determine value validity\n api.consts.timestamp?.minimumPeriod.gte(THRESHOLD)\n // Default minimum period config\n ? api.consts.timestamp.minimumPeriod.mul(BN_TWO)\n : api.query.parachainSystem\n // default guess for a parachain\n ? DEFAULT_TIME.mul(BN_TWO)\n // default guess for others\n : DEFAULT_TIME\n )\n );\n const value = blockTime.mul(bnToBn(blocks)).toNumber();\n return value;\n};\n\nexport const encodeKusamaAddress = (address) => {\n try {\n return encodeAddress(address, 2);\n } catch {\n return \"\";\n }\n};\n\nexport const encodePolkadotAddress = (address) => {\n try {\n return encodeAddress(address, 0);\n } catch {\n return \"\";\n }\n};\n\nexport const encodeSubstrateAddress = (address) => {\n try {\n return encodeAddress(address, 42);\n } catch {\n return \"\";\n }\n};\n","import { createSlice, createSelector } from \"@reduxjs/toolkit\";\nimport api from \"../../services/scanApi\";\nimport { getTipCountdown } from \"../../services/chainApi\";\nimport { tipStatusMap } from \"../../constants\";\n\nconst tipSlice = createSlice({\n name: \"tips\",\n initialState: {\n tips: {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n },\n loading: false,\n tipDetail: {},\n loadingTipDetail: false,\n tipCountdown: 14400,\n },\n reducers: {\n setTips(state, { payload }) {\n state.tips = payload;\n },\n setLoading(state, { payload }) {\n state.loading = payload;\n },\n setTipDetail(state, { payload }) {\n state.tipDetail = payload;\n },\n setLoadingTipDetail(state, { payload }) {\n state.loadingTipDetail = payload;\n },\n setTipCountdown(state, { payload }) {\n state.tipCountdown = payload;\n },\n },\n});\n\nexport const {\n setTips,\n setLoading,\n setTipDetail,\n setLoadingTipDetail,\n setTipCountdown,\n} = tipSlice.actions;\n\nexport const fetchTips =\n (page = 0, pageSize = 30, filterData = {}) =>\n async (dispatch) => {\n dispatch(setLoading(true));\n\n try {\n const { result } = await api.fetch(`/tips`, {\n page,\n pageSize,\n ...filterData,\n });\n dispatch(setTips(result || {}));\n } finally {\n dispatch(setLoading(false));\n }\n };\n\nexport const fetchTipDetail = (tipId) => async (dispatch) => {\n dispatch(setLoadingTipDetail(true));\n try {\n const { result } = await api.fetch(`/tips/${tipId}`);\n dispatch(setTipDetail(result || {}));\n } finally {\n dispatch(setLoadingTipDetail(false));\n }\n};\n\nexport const fetchTipCountdown = () => async (dispatch) => {\n const tipCountdown = await getTipCountdown();\n dispatch(setTipCountdown(tipCountdown || 14400));\n};\n\nconst tipFinalStates = [\"TipRetracted\", \"TipClosed\"];\nconst showStatusMap = tipStatusMap;\n\nfunction normalizeTip(tip) {\n const showTime = tipFinalStates.includes(tip.latestState?.state);\n const showStatus = showStatusMap[tip.latestState?.state];\n\n return {\n showTime,\n showStatus,\n ...tip,\n };\n}\n\nexport const tipListSelector = (state) => state.tips.tips;\nexport const normalizedTipListSelector = createSelector(\n tipListSelector,\n (tips) => {\n const items = tips.items.map(normalizeTip);\n return {\n ...tips,\n items,\n };\n }\n);\nexport const loadingSelector = (state) => state.tips.loading;\nexport const tipDetailSelector = (state) => state.tips.tipDetail;\nexport const normalizedTipDetailSelector = createSelector(\n tipDetailSelector,\n (tip) => ({\n ...tip,\n ...normalizeTip(tip),\n })\n);\nexport const loadingTipDetailSelector = (state) => state.tips.loadingTipDetail;\nexport const tipCountdownSelector = (state) => state.tips.tipCountdown;\nexport const tipFindersFeeSelector = (state) =>\n state.tips.tipDetail.tipFindersFee;\n\nexport default tipSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../services/scanApi\";\n\nconst proposalSlice = createSlice({\n name: \"proposals\",\n initialState: {\n proposals: {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n },\n loading: false,\n proposalDetail: {},\n loadingProposalDetail: false,\n proposalSummary: {\n total: 0,\n numOfOngoing: 0,\n numOfApproved: 0,\n numOfAwarded: 0,\n },\n },\n reducers: {\n setProposals(state, { payload }) {\n state.proposals = payload;\n },\n setLoading(state, { payload }) {\n state.loading = payload;\n },\n setProposalDetail(state, { payload }) {\n state.proposalDetail = payload;\n },\n setLoadingProposalDetail(state, { payload }) {\n state.loadingProposalDetail = payload;\n },\n setProposalSummary(state, { payload }) {\n state.proposalSummary = payload;\n },\n },\n});\n\nexport const {\n setProposals,\n setLoading,\n setProposalDetail,\n setLoadingProposalDetail,\n setProposalSummary,\n} = proposalSlice.actions;\n\nexport const fetchProposals =\n (page = 0, pageSize = 30, filterData = {}) =>\n async (dispatch) => {\n dispatch(setLoading(true));\n\n try {\n const { result } = await api.fetch(`/proposals`, {\n page,\n pageSize,\n ...filterData,\n });\n dispatch(setProposals(result || {}));\n } finally {\n dispatch(setLoading(false));\n }\n };\n\nexport const fetchProposalDetail =\n (proposalIndex) => async (dispatch) => {\n dispatch(setLoadingProposalDetail(true));\n try {\n const { result } = await api.fetch(`/proposals/${proposalIndex}`);\n dispatch(setProposalDetail(result || {}));\n } finally {\n dispatch(setLoadingProposalDetail(false));\n }\n };\n\nexport const fetchProposalsSummary = () => async (dispatch) => {\n const { result } = await api.fetch(`/proposals/summary`);\n const summary = {\n total: 0,\n numOfOngoing: 0,\n numOfApproved: 0,\n numOfAwarded: 0,\n };\n if (result) {\n summary.total = result.total;\n summary.numOfOngoing =\n (result.Proposed || 0) +\n (result.ApproveVoting || 0) +\n (result.RejectVoting || 0);\n summary.numOfApproved = result.Approved || 0;\n summary.numOfAwarded = result.Awarded || 0;\n }\n dispatch(setProposalSummary(summary));\n};\n\nexport const proposalListSelector = (state) => state.proposals.proposals;\nexport const loadingSelector = (state) => state.proposals.loading;\nexport const proposalDetailSelector = (state) => state.proposals.proposalDetail;\nexport const loadingProposalDetailSelector = (state) =>\n state.proposals.loadingProposalDetail;\nexport const proposalSummarySelector = (state) =>\n state.proposals.proposalSummary;\n\nexport default proposalSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../services/scanApi\";\n\nconst bountySlice = createSlice({\n name: \"bounties\",\n initialState: {\n bounties: {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n },\n loading: false,\n bountyDetail: {},\n loadingBountyDetail: false,\n },\n reducers: {\n setBounties(state, { payload }) {\n state.bounties = payload;\n },\n setLoading(state, { payload }) {\n state.loading = payload;\n },\n setBountyDetail(state, { payload }) {\n state.bountyDetail = payload;\n },\n setLoadingBountyDetail(state, { payload }) {\n state.loadingBountyDetail = payload;\n },\n },\n});\n\nexport const {\n setBounties,\n setLoading,\n setBountyDetail,\n setLoadingBountyDetail,\n} = bountySlice.actions;\n\nexport const fetchBounties =\n (page = 0, pageSize = 30) =>\n async (dispatch) => {\n dispatch(setLoading(true));\n\n try {\n const { result } = await api.fetch(`/bounties`, { page, pageSize });\n dispatch(setBounties(result || {}));\n } finally {\n dispatch(setLoading(false));\n }\n };\n\nexport const fetchBountyDetail = (bountyIndex) => async (dispatch) => {\n dispatch(setLoadingBountyDetail(true));\n try {\n const { result } = await api.fetch(`/bounties/${bountyIndex}`);\n dispatch(setBountyDetail(result || {}));\n } finally {\n dispatch(setLoadingBountyDetail(false));\n }\n};\n\nexport const bountyListSelector = (state) => state.bounties.bounties;\nexport const loadingSelector = (state) => state.bounties.loading;\nexport const bountyDetailSelector = (state) => state.bounties.bountyDetail;\nexport const loadingBountyDetailSelector = (state) =>\n state.bounties.loadingBountyDetail;\n\nexport default bountySlice.reducer;\n","import BigNumber from \"bignumber.js\";\nimport { stringUpperFirst, stringCamelCase } from \"@polkadot/util\";\nimport dayjs from \"dayjs\";\nimport duration from \"dayjs/plugin/duration\";\nimport md5 from \"md5\";\nimport { CHAINS } from \"../constants\";\n\ndayjs.extend(duration);\n\nfunction strEqualIgnoreCase(str1 = \"\", str2 = \"\") {\n return str1.toLowerCase() === str2.toLowerCase();\n}\n\nexport function getPrecision(chainSymbol) {\n if (strEqualIgnoreCase(CHAINS.EDGEWARE, chainSymbol)) {\n return 18;\n }\n\n return 18;\n}\n\nexport function toPrecision(value, precision = 0, paddingZero = true) {\n precision = Number(precision);\n const big = new BigNumber(value).dividedBy(Math.pow(10, precision));\n\n if (paddingZero) {\n return big.toFixed(precision);\n } else {\n return big.toNumber();\n }\n}\n\nexport function stringCamlToWords(str) {\n return stringUpperFirst(str).replace(/(.)([A-Z])/g, \"$1 $2\");\n}\n\nexport function stringToWords(str) {\n return stringCamlToWords(stringCamelCase(str));\n}\n\nexport const nil = (val) => val === undefined || val === null;\n\nexport const getLinkNameAndSrc = (link) => {\n try {\n const url = new URL(link);\n\n let src = \"\";\n let name = \"\";\n if (\n url.host.endsWith(\"commonwealth.im\") ||\n url.host.endsWith(\"gov.edgewa.re\")\n ) {\n src = \"/imgs/commonwealth.svg\";\n name = \"Commonwealth\";\n } else if (url.host.endsWith(\"youtube.com\") || url.host.endsWith(\"youtu.be\")) {\n src = \"/imgs/youtube-logo.svg\";\n name = \"YouTube\";\n } else if (\n url.host.endsWith(\"github.com\") ||\n url.host.endsWith(\"github.io\")\n ) {\n src = \"/imgs/github-logo.svg\";\n name = \"GitHub\";\n } else if (url.host.endsWith(\"medium.com\")) {\n src = \"/imgs/medium-logo.svg\";\n name = \"Medium\";\n } else if (url.host.endsWith(\"polkassembly.io\")) {\n src = \"/imgs/polkassembly-logo.svg\";\n name = \"Polkassembly\";\n } else if (url.host.endsWith(\"twitter.com\")) {\n src = \"/imgs/twitter-logo.svg\";\n name = \"Twitter\";\n } else if (url.host === \"t.me\") {\n src = \"/imgs/telegram-logo.svg\";\n name = \"Telegram\";\n } else if (url.host.endsWith(\"docs.google.com\")) {\n src = \"/imgs/googledoc-logo.svg\";\n name = \"Google Docs\";\n } else if (url.host.endsWith(\"drive.google.com\")) {\n src = \"/imgs/googledrive-logo.svg\";\n name = \"Google Drive\";\n } else if (url.host.endsWith(\"opensquare.network\")) {\n src = \"/imgs/opensquare-icon-logo.svg\";\n name = \"OpenSquare\";\n } else if (url.host.endsWith(\"dotreasury.com\")) {\n src = \"/imgs/dotreasury-logo.svg\";\n name = \"doTreasury\";\n } else {\n src = \"/imgs/link-icon.svg\";\n }\n\n if (!name) {\n [, name] = url.host.match(/([^.]*)(?:\\.[a-z]+)?$/);\n if ([\"co\", \"com\"].includes(name)) {\n const m = url.host.match(/([^.]*)(?:\\.[a-z]+){2}$/);\n if (m) {\n [, name] = m;\n }\n }\n name = stringUpperFirst(name);\n }\n\n return [name, src];\n } catch (e) {\n // Broken link or other errors\n return [];\n }\n};\n\nexport function normalizeTimeDuration(time, maxSection = 2) {\n const duration = dayjs.duration(time);\n\n const result = [];\n\n const sections = [\n duration.years() && [duration.years(), \"y\"],\n duration.months() && [duration.months(), \"mon\"],\n duration.days() && [duration.days(), \"d\"],\n duration.hours() && [duration.hours(), \"h\"],\n duration.minutes() && [duration.minutes(), \"min\"],\n ];\n for (let i = 0, j = 0; i < sections.length && j < maxSection; i++) {\n const sec = sections[i];\n if (!sec && !j) {\n continue;\n }\n\n if (sec) {\n result.push(sec);\n }\n\n j++;\n }\n\n if (result.length === 0) {\n result.push([duration.seconds(), \"s\"]);\n }\n\n return result;\n}\n\nexport function unique(arr) {\n return Array.from(new Set(arr));\n}\n\nexport const sleep = (time) => {\n return new Promise((resolve) => {\n setTimeout(resolve, time);\n });\n};\n\nexport const getGravatarSrc = (email) => {\n // default img url\n // https%3A%2F%2www.dotreasury.com%2imgs%2avatar.png\n if (email && typeof email === \"string\") {\n return `https://www.gravatar.com/avatar/${ md5(\n email.trim().toLocaleLowerCase()\n ) }?d=https://www.dotreasury.com/imgs/avatar.png`;\n }\n return \"/imgs/avatar.png\";\n};\n\nexport function networkFromSymbol(symbol) {\n if (symbol.toLowerCase() === CHAINS.EDGEWARE) {\n return \"edgeware\";\n } else {\n return null;\n }\n}\n\nexport function symbolFromNetwork(network) {\n if (network === \"edgeware\") {\n return CHAINS.EDGEWARE;\n } else {\n return null;\n }\n}\n\nexport function capitalizeFirstLetter(string) {\n if (!string) return \"\";\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function toLocaleStringWithFixed(num = 0, fixed = 2) {\n return num.toLocaleString(undefined, { minimumFractionDigits: fixed });\n}\n\nexport function abbreviateBigNumber(x, fixed = 2) {\n const n = new BigNumber(x);\n const fmt = {\n decimalSeparator: \".\",\n groupSeparator: \",\",\n groupSize: 3,\n };\n let divideBy = new BigNumber(\"1\");\n const bigNumbers = [\n { bigNumber: new BigNumber(\"1000\"), abbr: \"K\" },\n { bigNumber: new BigNumber(\"1000000\"), abbr: \"M\" },\n { bigNumber: new BigNumber(\"1000000000\"), abbr: \"B\" },\n { bigNumber: new BigNumber(\"1000000000000\"), abbr: \"T\" },\n { bigNumber: new BigNumber(\"1000000000000000\"), abbr: \"Q\" },\n ];\n bigNumbers.forEach((data) => {\n if (n.isGreaterThan(data.bigNumber)) {\n divideBy = data.bigNumber;\n fmt.suffix = data.abbr;\n }\n });\n BigNumber.config({ FORMAT: fmt });\n return new BigNumber(n.dividedBy(divideBy).toFixed(fixed)).toFormat();\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { getApi } from \"../../services/chainApi\";\nimport { CHAINS, TreasuryAccount } from \"../../constants\";\nimport { getPrecision, toPrecision } from \"../../utils\";\n\nconst burntSlice = createSlice({\n name: \"burnt\",\n initialState: {\n treasury: {\n free: 0,\n burnPercent: 0,\n },\n },\n reducers: {\n setTreasury(state, { payload }) {\n state.treasury = payload;\n },\n },\n});\n\nexport const {\n setTreasury,\n} = burntSlice.actions;\n\n\nexport const fetchTreasury = () => async (dispatch) => {\n const api = await getApi();\n const account = (await api.query.system.account(TreasuryAccount)).toJSON();\n const result = {\n free: account\n ? toPrecision(\n account.data.free,\n getPrecision(CHAINS.EDGEWARE),\n false\n )\n : 0,\n burnPercent: toPrecision(api.consts.treasury.burn, 6, false),\n };\n dispatch(setTreasury(result));\n};\n\nexport const treasurySelector = (state) => state.burnt.treasury;\n\nexport default burntSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { getApi, estimateBlocksTime } from \"../../services/chainApi\";\nimport { networkFromSymbol } from \"../../utils\";\n\nconst chain = \"edg\";\n\nconst chainSlice = createSlice({\n name: \"chain\",\n initialState: {\n chain,\n currentBlockHeight: 0,\n scanHeight: 0,\n spendPeriod: {\n blockNumber: 0,\n periodTime: 0,\n restTime: 0,\n restBlocks: 0,\n progress: 0,\n },\n },\n reducers: {\n setChain(state, { payload }) {},\n setCurrentBlockHeight(state, { payload }) {\n state.currentBlockHeight = payload;\n },\n setScanHeight(state, { payload }) {\n state.scanHeight = payload;\n },\n setSpendPeriod(state, { payload }) {\n state.spendPeriod = payload;\n },\n },\n});\n\nexport const {\n setChain,\n setCurrentBlockHeight,\n setScanHeight,\n setSpendPeriod,\n} = chainSlice.actions;\n\nexport const fetchSpendPeriod = () => async (dispatch) => {\n const api = await getApi();\n const bestNumber = await api.derive.chain.bestNumber();\n const spendPeriod = api.consts.treasury.spendPeriod;\n const goneBlocks = bestNumber.mod(spendPeriod);\n dispatch(\n setSpendPeriod({\n blockNumber: spendPeriod.toNumber(),\n periodTime: await estimateBlocksTime(spendPeriod),\n restBlocks: spendPeriod.sub(goneBlocks).toNumber(),\n restTime: await estimateBlocksTime(spendPeriod.sub(goneBlocks)),\n progress: goneBlocks.muln(100).div(spendPeriod).toNumber(),\n })\n );\n};\n\nexport const currentBlockHeightSelector = (state) =>\n state.chain.currentBlockHeight;\nexport const scanHeightSelector = (state) => state.chain.scanHeight;\nexport const spendPeriodSelector = (state) => state.chain.spendPeriod;\n\nexport const chainSelector = (state) => networkFromSymbol(state.chain.chain);\nexport const chainSymbolSelector = (state) =>\n (state.chain.chain || \"\").toUpperCase();\n\nexport default chainSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport pluralize from \"pluralize\";\nimport api from \"../../services/scanApi\";\nimport { signMessage } from \"../../services/chainApi\";\n\nconst linkSlice = createSlice({\n name: \"links\",\n initialState: {\n links: [],\n },\n reducers: {\n setLinks(state, { payload }) {\n state.links = payload;\n },\n },\n});\n\nexport const { setLinks } = linkSlice.actions;\n\nexport class TipIndex {\n constructor(tipIndex) {\n const match = tipIndex.match(/^(\\d+)_(0x[0-9a-f]+)$/);\n if (!match) {\n throw new Error(\"Invalid tip index\");\n }\n\n this.blockHeight = parseInt(match[1]);\n this.tipHash = match[2];\n }\n\n toString() {\n return `${this.blockHeight}_${this.tipHash}`;\n }\n}\n\nexport const fetchLinks = (type, index) => async (dispatch) => {\n const { result } = await api.fetch(`/${pluralize(type)}/${index}/links`);\n dispatch(setLinks(result || []));\n};\n\nexport const addLink =\n (type, index, link, description, address) => async (dispatch) => {\n const signature = await signMessage(\n JSON.stringify({\n type,\n index,\n link,\n description,\n }),\n address\n );\n\n await api.fetch(\n `/${pluralize(type)}/${index}/links`,\n {},\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Signature: address ? `${address}/${signature}` : \"\",\n },\n body: JSON.stringify({ link, description }),\n }\n );\n dispatch(fetchLinks(type, index));\n };\n\nexport const removeLink =\n (type, index, linkIndex, address) => async (dispatch) => {\n const signature = await signMessage(\n JSON.stringify({\n type,\n index,\n linkIndex,\n }),\n address\n );\n\n await api.fetch(\n `/${pluralize(type)}/${index}/links/${linkIndex}`,\n {},\n {\n method: \"DELETE\",\n headers: {\n Signature: address ? `${address}/${signature}` : \"\",\n },\n }\n );\n dispatch(fetchLinks(type, index));\n };\n\nexport const linksSelector = (state) => state.links.links;\n\nexport default linkSlice.reducer;\n","import { createSelector, createSlice } from '@reduxjs/toolkit'\n\nconst accountSlice = createSlice({\n name: 'account',\n initialState: {\n account: null,\n },\n reducers: {\n setAccount(state, { payload }) {\n state.account = payload;\n },\n removeAccount(state) {\n state.account = null;\n }\n }\n});\n\nexport const {\n setAccount,\n removeAccount,\n} = accountSlice.actions\n\nexport const accountSelector = state => state.account.account;\nexport const isLoginSelector = createSelector(accountSelector, account => !!account);\nexport const nowAddressSelector = state => state.account.account?.address;\n\nexport default accountSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../services/scanApi\";\n\nconst overviewSlice = createSlice({\n name: \"overview\",\n initialState: {\n overview: {\n bestProposalBeneficiaries: [],\n bestTipFinders: [],\n count: {\n bounty: {\n unFinished: 0,\n all: 0,\n },\n proposal: {\n unFinished: 0,\n all: 0,\n },\n tip: {\n unFinished: 0,\n all: 0,\n },\n },\n output: {\n bounty: 0,\n proposal: 0,\n tip: 0,\n },\n income: {\n inflation: 0,\n others: 0,\n slash: 0,\n slashSeats: {\n democracy: 0,\n identity: 0,\n staking: 0,\n },\n },\n },\n statsHistory: [],\n },\n reducers: {\n setOverview(state, { payload }) {\n state.overview = payload;\n },\n setStatsHistory(state, { payload }) {\n state.statsHistory = payload;\n },\n },\n});\n\nexport const { setOverview, setStatsHistory } = overviewSlice.actions;\n\nexport const fetchStatsHistory = () => async (dispatch) => {\n const { result } = await api.fetch(`/stats/weekly`);\n dispatch(setStatsHistory(result || []));\n};\n\nexport const totalProposalCountSelector = (state) =>\n state.overview.overview.count.proposal.all;\nexport const totalTipCountSelector = (state) =>\n state.overview.overview.count.tip.all;\nexport const totalBountyCountSelector = (state) =>\n state.overview.overview.count.bounty.all;\nexport const overviewSelector = (state) => state.overview.overview;\nexport const statsHistorySelector = (state) => state.overview.statsHistory;\n\nexport default overviewSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../services/scanApi\";\n\nconst incomeSlice = createSlice({\n name: \"income\",\n initialState: {\n democracySlashList: {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n },\n democracySlashListLoading: false,\n identitySlashList: {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n },\n identitySlashListLoading: false,\n stakingSlashList: {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n },\n stakingSlashListLoading: false,\n inflationList: {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n },\n inflationListLoading: false,\n transferListLoading: false,\n transferList: {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n },\n othersIncomeList: {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n },\n othersIncomeListLoading: false,\n count: {\n democracySlash: 0,\n identitySlash: 0,\n stakingSlash: 0,\n inflation: 0,\n others: 0,\n transfer: 0,\n },\n },\n reducers: {\n setCount(state, { payload }) {\n state.count = payload;\n },\n setDemocracySlashList(state, { payload }) {\n state.democracySlashList = payload;\n },\n setDemocracySlashListLoading(state, { payload }) {\n state.democracySlashListLoading = payload;\n },\n setIdentitySlashList(state, { payload }) {\n state.identitySlashList = payload;\n },\n setIdentitySlashListLoading(state, { payload }) {\n state.identitySlashListLoading = payload;\n },\n setStakingSlashList(state, { payload }) {\n state.stakingSlashList = payload;\n },\n setStakingSlashListLoading(state, { payload }) {\n state.stakingSlashListLoading = payload;\n },\n setInflationList(state, { payload }) {\n state.inflationList = payload;\n },\n setInflationListLoading(state, { payload }) {\n state.inflationListLoading = payload;\n },\n setOthersIncomeList(state, { payload }) {\n state.othersIncomeList = payload;\n },\n setOthersIncomeListLoading(state, { payload }) {\n state.othersIncomeListLoading = payload;\n },\n setTransferList(state, { payload }) {\n state.transferList = payload;\n },\n setTransferListLoading(state, { payload }) {\n state.transferListLoading = payload;\n },\n },\n});\n\nexport const {\n setCount,\n setDemocracySlashList,\n setDemocracySlashListLoading,\n setIdentitySlashList,\n setIdentitySlashListLoading,\n setStakingSlashList,\n setStakingSlashListLoading,\n setInflationList,\n setInflationListLoading,\n setOthersIncomeList,\n setOthersIncomeListLoading,\n setTransferList,\n setTransferListLoading,\n} = incomeSlice.actions;\n\nexport const fetchIncomeCount = () => async (dispatch) => {\n const { result } = await api.fetch(`/income/count`);\n dispatch(\n setCount(\n result || {\n democracySlash: 0,\n identitySlash: 0,\n stakingSlash: 0,\n inflation: 0,\n others: 0,\n transfer: 0,\n }\n )\n );\n};\n\n\nexport const fetchDemocracySlashList =\n (page = 0, pageSize = 30) =>\n async (dispatch) => {\n dispatch(setDemocracySlashListLoading(true));\n\n try {\n const { result } = await api.fetch(`/income/slash/democracy`, {\n page,\n pageSize,\n });\n dispatch(\n setDemocracySlashList(\n result || {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n }\n )\n );\n } finally {\n dispatch(setDemocracySlashListLoading(false));\n }\n };\n\nexport const fetchIdentitySlashList =\n (page = 0, pageSize = 30) =>\n async (dispatch) => {\n dispatch(setIdentitySlashListLoading(true));\n\n try {\n const { result } = await api.fetch(`/income/slash/identity`, {\n page,\n pageSize,\n });\n dispatch(\n setIdentitySlashList(\n result || {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n }\n )\n );\n } finally {\n dispatch(setIdentitySlashListLoading(false));\n }\n };\n\nexport const fetchStakingSlashList =\n (page = 0, pageSize = 30) =>\n async (dispatch) => {\n dispatch(setStakingSlashListLoading(true));\n\n try {\n const { result } = await api.fetch(`/income/slash/staking`, {\n page,\n pageSize,\n });\n dispatch(\n setStakingSlashList(\n result || {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n }\n )\n );\n } finally {\n dispatch(setStakingSlashListLoading(false));\n }\n };\n\nexport const fetchInflationList =\n (page = 0, pageSize = 30) =>\n async (dispatch) => {\n dispatch(setInflationListLoading(true));\n\n try {\n const { result } = await api.fetch(`/income/inflation`, {\n page,\n pageSize,\n });\n dispatch(\n setInflationList(\n result || {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n }\n )\n );\n } finally {\n dispatch(setInflationListLoading(false));\n }\n };\n\nexport const fetchTransferList =\n (page = 0, pageSize = 30) =>\n async (dispatch) => {\n dispatch(setTransferListLoading(true));\n\n try {\n const { result } = await api.fetch(`/income/transfer`, {\n page,\n pageSize,\n });\n dispatch(\n setTransferList(\n result || {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n }\n )\n );\n } finally {\n dispatch(setTransferListLoading(false));\n }\n };\n\nexport const fetchOthersIncomeList =\n (page = 0, pageSize = 30) =>\n async (dispatch) => {\n dispatch(setOthersIncomeListLoading(true));\n\n try {\n const { result } = await api.fetch(`/income/others`, {\n page,\n pageSize,\n });\n dispatch(\n setOthersIncomeList(\n result || {\n items: [],\n page: 0,\n pageSize: 10,\n total: 0,\n }\n )\n );\n } finally {\n dispatch(setOthersIncomeListLoading(false));\n }\n };\n\nexport const incomeCountSelector = (state) => state.income.count;\nexport const democracySlashListSelector = (state) =>\n state.income.democracySlashList;\nexport const democracySlashListLoadingSelector = (state) =>\n state.income.democracySlashListLoading;\nexport const identitySlashListSelector = (state) =>\n state.income.identitySlashList;\nexport const identitySlashListLoadingSelector = (state) =>\n state.income.identitySlashListLoading;\nexport const stakingSlashListSelector = (state) =>\n state.income.stakingSlashList;\nexport const stakingSlashListLoadingSelector = (state) =>\n state.income.stakingSlashListLoading;\nexport const inflationListSelector = (state) => state.income.inflationList;\nexport const inflationListLoadingSelector = (state) =>\n state.income.inflationListLoading;\nexport const othersIncomeListSelector = (state) =>\n state.income.othersIncomeList;\nexport const othersIncomeListLoadingSelector = (state) =>\n state.income.othersIncomeListLoading;\nexport const transferListSelector = (state) => state.income.transferList;\nexport const transferListLoadingSelector = (state) =>\n state.income.transferListLoading;\n\nexport default incomeSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nconst menuSlice = createSlice({\n name: \"menu\",\n initialState: {\n showMenuTabs: \"Home\",\n },\n reducers: {\n setShowMenuTabs(state, { payload }) {\n state.showMenuTabs = payload;\n }\n },\n});\n\nexport const { setShowMenuTabs } = menuSlice.actions;\n\nexport const showMenuTabsSelector = (state) => state.menu.showMenuTabs;\n\nexport default menuSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { getNodeUrl, getNodes } from \"../../services/chainApi\";\n\nconst nodeSlice = createSlice({\n name: \"node\",\n initialState: {\n currentNode: getNodeUrl(),\n nodes: getNodes(),\n },\n reducers: {\n setCurrentNode(state, { payload }) {\n const { chain, url, refresh } = payload;\n const beforeUrl = state.currentNode?.[chain];\n\n let nodeUrl = null;\n try {\n nodeUrl = JSON.parse(localStorage.getItem(\"nodeUrl\"));\n } catch (e) {\n // ignore parse error\n }\n nodeUrl = { ...nodeUrl, [chain]: url };\n localStorage.setItem(\"nodeUrl\", JSON.stringify(nodeUrl));\n\n state.nodes[chain] = (state.nodes?.[chain] || []).map((item) => {\n if (item.url === beforeUrl) {\n return { ...item, update: true };\n } else {\n return item;\n }\n });\n state.currentNode = nodeUrl;\n\n if (refresh) {\n window.location.href = `/`;\n }\n },\n setNodesDelay(state, { payload }) {\n (payload || []).forEach((item) => {\n const node = state.nodes[item.chain]?.find(\n (node) => item.url === node.url\n );\n if (node) node.delay = item.delay;\n });\n },\n },\n});\n\nexport const currentNodeSelector = (state) => state.node.currentNode;\nexport const nodesSelector = (state) => state.node.nodes;\n\nexport const { setCurrentNode, setNodesDelay } = nodeSlice.actions;\n\nexport default nodeSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../services/scanApi\";\n\nconst projectSlice = createSlice({\n name: \"projects\",\n initialState: {\n projects: {\n items: [],\n },\n loading: false,\n projectDetail: {},\n loadingProjectDetail: false,\n },\n reducers: {\n setProjects(state, { payload }) {\n state.projects = payload;\n },\n setLoading(state, { payload }) {\n state.loading = payload;\n },\n setProjectDetail(state, { payload }) {\n state.projectDetail = payload;\n },\n setLoadingProjectDetail(state, { payload }) {\n state.loadingProjectDetail = payload;\n },\n },\n});\n\nexport const {\n setProjects,\n setLoading,\n setProjectDetail,\n setLoadingProjectDetail,\n} = projectSlice.actions;\n\nexport const fetchProjects =\n (page = 0, pageSize = 30) =>\n async (dispatch) => {\n dispatch(setLoading(true));\n\n try {\n const { result } = await api.fetch(`/projects`, {\n page,\n pageSize,\n });\n dispatch(setProjects(result || {}));\n } finally {\n dispatch(setLoading(false));\n }\n };\n\nexport const fetchProjectDetail = (projectId) => async (dispatch) => {\n dispatch(setLoadingProjectDetail(true));\n try {\n const { result } = await api.fetch(`/projects/${projectId}`);\n dispatch(setProjectDetail(result || {}));\n } finally {\n dispatch(setLoadingProjectDetail(false));\n }\n};\n\nexport const projectsSelector = (state) => state.projects.projects;\nexport const loadingSelector = (state) => state.projects.loading;\nexport const projectDetailSelector = (state) => state.projects.projectDetail;\nexport const loadingProjectDetailSelector = (state) =>\n state.projects.loadingProjectDetail;\n\nexport default projectSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nlet count = 0;\n\nconst toastSlice = createSlice({\n name: \"toast\",\n initialState: {\n toasts: []\n },\n reducers: {\n addToast(state, { payload }) {\n const toastId = count++;\n state.toasts.unshift({id: toastId, ...payload});\n },\n removeToast(state, { payload }) {\n state.toasts = state.toasts.filter(item => item.id !== payload);\n }\n }\n});\n\nexport const toastsSelector = (state) => state.toast.toasts;\n\nexport const { addToast, removeToast } = toastSlice.actions;\n\nexport default toastSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport pluralize from \"pluralize\";\nimport api from \"../../services/scanApi\";\nimport { signMessage } from \"../../services/chainApi\";\n\nconst descriptionSlice = createSlice({\n name: \"description\",\n initialState: {\n description: \"\",\n },\n reducers: {\n setDescription(state, { payload }) {\n state.description = payload;\n },\n },\n});\n\nexport const { setDescription } = descriptionSlice.actions;\n\nexport const fetchDescription =\n (type = \"\", index) =>\n async (dispatch) => {\n const { result } = await api.fetch(\n `/${pluralize(type)}/${index}/description`\n );\n dispatch(setDescription(result || {}));\n };\n\nexport const putDescription =\n (type, index, description,curator, address) => async (dispatch) => {\n const signature = await signMessage(\n JSON.stringify({\n type,\n index,\n description,\n curator,\n }),\n address\n );\n\n await api.fetch(\n `/${pluralize(type)}/${index}/description`,\n {},\n {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Signature: address ? `${address}/${signature}` : \"\",\n },\n body: JSON.stringify({ description, curator }),\n }\n );\n dispatch(fetchDescription(type, index));\n };\n\nexport const descriptionSelector = (state) => state.description.description;\n\nexport default descriptionSlice.reducer;\n","import { combineReducers } from \"@reduxjs/toolkit\";\nimport tipsReducer from \"./tipSlice\";\nimport proposalsReducer from \"./proposalSlice\";\nimport bountiesReducer from \"./bountySlice\";\nimport burntReducer from \"./burntSlice\";\nimport chainReducer from \"./chainSlice\";\nimport linksReducer from \"./linkSlice\";\nimport accountReducer from \"./accountSlice\";\nimport overviewReducer from \"./overviewSlice\";\nimport incomeReducer from \"./incomeSlice\";\nimport menuReducer from \"./menuSlice\";\nimport nodeReducer from \"./nodeSlice\";\nimport projectsReducer from \"./projectSlice\";\nimport toastReducer from \"./toastSlice\";\nimport descriptionReducer from \"./descriptionSlice\";\n\nexport default combineReducers({\n tips: tipsReducer,\n links: linksReducer,\n proposals: proposalsReducer,\n bounties: bountiesReducer,\n burnt: burntReducer,\n chain: chainReducer,\n account: accountReducer,\n overview: overviewReducer,\n toast: toastReducer,\n income: incomeReducer,\n menu: menuReducer,\n node: nodeReducer,\n projects: projectsReducer,\n description: descriptionReducer,\n});\n","import { configureStore } from '@reduxjs/toolkit'\nimport rootReducer from './reducers'\n\nconst store = configureStore({ reducer: rootReducer })\nexport default store\n","import io from \"socket.io-client\";\nimport store from \"../store\";\nimport { setScanHeight } from \"../store/reducers/chainSlice\";\nimport { setOverview } from \"../store/reducers/overviewSlice\";\n\nconst chainStatusRoom = \"CHAIN_STATUS_ROOM\";\nconst overviewRoom = \"OVERVIEW_ROOM\";\n\nlet socket = null;\n\nexport function connect() {\n if (socket) {\n socket.emit(\"unsubscribe\", chainStatusRoom);\n socket.emit(\"unsubscribe\", overviewRoom);\n socket.disconnect();\n }\n\n socket = io(process.env.REACT_APP_SOCKET_IO_URL || \"edg-api.dotreasury.com\");\n socket.connect();\n\n socket.on(\"connect\", () => {\n socket.emit(\"subscribe\", chainStatusRoom);\n socket.emit(\"subscribe\", overviewRoom);\n\n socket.on(\"scanStatus\", ({ height }) => {\n store.dispatch(setScanHeight(height));\n });\n\n socket.on(\"overview\", (overview) => {\n store.dispatch(setOverview(overview));\n });\n });\n}\n","import styled from \"styled-components\";\n\nconst Container = styled.div`\n box-sizing: border-box;\n height: 100%;\n overflow-x: visible;\n overflow-y: visible;\n\n @media screen and (min-width: 1336px) {\n width: 1336px;\n margin: 0 auto;\n }\n\n @media screen and (max-width: 1336px) {\n margin: 0 16px;\n width: calc(100vw - 32px);\n }\n\n @media screen and (max-width: 600px) {\n margin: 0;\n width: 100vw;\n }\n`;\n\nexport default Container;\n","import styled from \"styled-components\";\n\nexport const Wrapper = styled.div`\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n`;\n\nexport const PageWrapper = styled.section`\n padding: 24px 0;\n flex-grow: 1;\n /* min-height: calc(100vh - 200px); */\n`;\n","import { useEffect } from 'react';\nimport { withRouter } from 'react-router-dom';\n\nfunction ScrollToTop({ history }) {\n useEffect(() => {\n const unlisten = history.listen(() => {\n window.scrollTo(0, 0);\n });\n return () => {\n unlisten();\n }\n }, [history]);\n\n return (null);\n}\n\nexport default withRouter(ScrollToTop);\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nconst Wrapper = styled.div`\n height: 32px;\n display: flex;\n align-items: center;\n`;\n\nconst ImgFullWrapper = styled.div`\n display: block;\n @media screen and (max-width: 500px) {\n display: none;\n }\n`;\n\nconst ImgShortWrapper = styled.div`\n display: none;\n @media screen and (max-width: 500px) {\n display: block;\n }\n`;\n\nconst Divider = styled.div`\n background: #525252;\n margin: 0 12px;\n width: 1px;\n height: 12px;\n`;\n\nconst Label = styled.div`\n font-weight: 600;\n font-size: 18px;\n line-height: 28px;\n color: #ffffff;\n`;\n\nconst Logo = ({ symbol }) => (\n \n \n \n \n \n \n \n \n \n \n);\n\nexport default Logo;\n","import styled from \"styled-components\";\n\nconst Card = styled.div`\n background-color: #fff;\n border: 1px solid #f4f4f4;\n border-radius: 8px;\n padding: 8px 0;\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.02), 0px 1px 4px rgba(0, 0, 0, 0.02);\n`;\n\nexport default Card;\n","import debounce from \"lodash.debounce\";\n\nconst cachedIdentities = new Map();\nlet pendingQueries = new Map();\n\nconst delayQuery = debounce(() => {\n const pending = pendingQueries;\n if (pending.size < 1) {\n return;\n }\n pendingQueries = new Map();\n\n const chainAddresses = {};\n const idNames = [...pending.keys()];\n const idNameSplits = idNames.map((item) => item.split(\"/\"));\n for (const [chain, address] of idNameSplits) {\n if (!chainAddresses[chain]) {\n chainAddresses[chain] = [];\n }\n chainAddresses[chain].push(address);\n }\n\n for (const chain in chainAddresses) {\n const addresses = chainAddresses[chain];\n\n window\n .fetch(\n `${process.env.REACT_APP_IDENTITY_SERVER_HOST}/${chain}/short-ids`,\n {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ addresses }),\n }\n )\n .then((resp) => resp.json())\n .then((data) => {\n const identities = new Map(data.map((item) => [item.address, item]));\n\n for (const [idName, [, resolve]] of pending) {\n const [chainOfIdName, addrOfIdName] = idName.split(\"/\");\n if (chainOfIdName !== chain) {\n continue;\n }\n const identity = identities.get(addrOfIdName) || null;\n if (identity) {\n cachedIdentities.set(idName, identity);\n }\n if (resolve) {\n resolve(identity);\n }\n }\n })\n .catch(() => {});\n }\n}, 0);\n\nexport function fetchIdentity(chain, address) {\n const idName = `${chain}/${address}`;\n if (cachedIdentities.has(idName)) {\n return Promise.resolve(cachedIdentities.get(idName));\n }\n\n const pending = pendingQueries;\n\n if (!pending.has(idName)) {\n pending.set(idName, [\n new Promise((resolve, reject) =>\n setTimeout(() => {\n const promise = pending.get(idName);\n promise.push(resolve, reject);\n delayQuery();\n }, 0)\n ),\n ]);\n }\n\n return pending.get(idName)[0];\n}\n","import { useLayoutEffect, useState, useEffect, useRef } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport queryString from \"query-string\";\n\nimport { fetchIdentity as getIdentity } from \"../services/identity\";\nimport { setShowMenuTabs } from \"../store/reducers/menuSlice\";\nimport { chainSymbolSelector } from \"../store/reducers/chainSlice\";\n\nexport const useWindowSize = () => {\n const [size, setSize] = useState([0, 0]);\n useLayoutEffect(() => {\n function updateSize() {\n setSize([window.innerWidth, window.innerHeight]);\n }\n window.addEventListener(\"resize\", updateSize);\n updateSize();\n return () => window.removeEventListener(\"resize\", updateSize);\n }, []);\n return size;\n};\n\nconst displayCache = new Map();\n\nexport const useIdentity = (address, map) => {\n const [name, setName] = useState(null);\n const [badgeData, setBadgeData] = useState(null);\n useEffect(() => {\n let isMounted = true;\n const fetchIdentity = async () => {\n let identity;\n if (displayCache.has(`identity_${address}`)) {\n identity = displayCache.get(`identity_${address}`);\n } else {\n identity = await getIdentity(\"edgeware\", address);\n displayCache.set(`identity_${address}`, identity);\n }\n if (isMounted && identity) {\n setName(identity.info?.display);\n setBadgeData({\n status: identity.info?.status,\n });\n }\n };\n setName(null);\n setBadgeData(null);\n fetchIdentity();\n return () => {\n isMounted = false;\n };\n }, [address]);\n return { name, badgeData };\n};\n\nexport function useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport const useLinks = (text) => {\n if (text && typeof text === \"string\") {\n const links = [\n ...text.matchAll(\n /https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,8}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/g\n ),\n ];\n return links.map((item) => ({ inReasons: true, link: item[0] }));\n }\n return null;\n};\n\nexport function useIsMounted() {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted; // returning \"isMounted.current\" wouldn't work because we would return unmutable primitive\n}\n\nexport const useDisablePopup = () => {\n const [disabledPopup, setDisabledPopup] = useState(true);\n const [width] = useWindowSize();\n useEffect(() => {\n setDisabledPopup(width < 1128);\n }, [width]);\n return disabledPopup;\n};\n\nexport const usePreload = () => {\n useEffect(() => {\n const preloadImgList = [\"/imgs/loading.svg\"];\n\n function getPreloadImgAttr(url) {\n var img = new Image();\n img.src = url;\n }\n\n preloadImgList.forEach((item) => {\n getPreloadImgAttr(item);\n });\n }, []);\n return;\n};\n\nexport const useMenuTab = () => {\n const dispatch = useDispatch();\n const symbol = useSelector(chainSymbolSelector)?.toLowerCase();\n const { pathname } = useLocation();\n useEffect(() => {\n const menuTabsName = pathname.startsWith(`/income`)\n ? \"Income\"\n : pathname.startsWith(`/projects`)\n ? \"Projects\"\n : \"Home\";\n dispatch(setShowMenuTabs(menuTabsName));\n }, [pathname, dispatch, symbol]);\n};\n\nexport function useOutsideClick(ref, cb) {\n useEffect(() => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n cb();\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, cb]);\n}\n\nexport function useLocalStorage(key, initialValue) {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n console.error(error);\n return initialValue;\n }\n });\n const setValue = (value) => {\n try {\n const valueToStore =\n value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n console.error(error);\n }\n };\n return [storedValue, setValue];\n}\n\nexport function useWhyDidYouUpdate(name, props) {\n const previousProps = useRef();\n useEffect(() => {\n if (previousProps.current) {\n const allKeys = Object.keys({ ...previousProps.current, ...props });\n const changesObj = {};\n allKeys.forEach((key) => {\n if (previousProps.current[key] !== props[key]) {\n changesObj[key] = {\n from: previousProps.current[key],\n to: props[key],\n };\n }\n });\n if (Object.keys(changesObj).length) {\n console.log(\"[why-did-you-update]\", name, changesObj);\n }\n }\n previousProps.current = props;\n });\n}\n\nexport function useIsAdmin() {\n const location = useLocation();\n const q = queryString.parse(location.search);\n const isAdmin = q.admin === \"true\";\n return isAdmin;\n}\n","import { useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { getApi } from \"../services/chainApi\";\nimport {\n nodesSelector,\n setNodesDelay,\n currentNodeSelector,\n} from \"../store/reducers/nodeSlice\";\nimport { chainSelector } from \"../store/reducers/chainSlice\";\nimport { sleep } from \"./index\";\n\nconst TIMEOUT = 10000;\nlet count = 0;\n\nconst fetchApiTime = async (api) => {\n const startTime = Date.now();\n try {\n await api.rpc.system.chain();\n } catch (e) {\n return \"error\";\n }\n\n const endTime = Date.now();\n return endTime - startTime;\n};\n\nconst timeout = async (ms) => {\n await sleep(ms);\n return \"timeout\";\n};\n\nconst testNet = async (api) => {\n return await Promise.race([fetchApiTime(api), timeout(TIMEOUT)]);\n};\n\nconst useUpdateNodesDelay = () => {\n const nodesSetting = useSelector(nodesSelector);\n const chain = useSelector(chainSelector);\n const currentNode = useSelector(currentNodeSelector);\n const dispatch = useDispatch();\n useEffect(() => {\n const updateNodeDelay = async (url) => {\n try {\n const api = await getApi(url);\n const delay = await testNet(api);\n return delay;\n } catch {\n return \"\";\n }\n };\n const intervalId = setInterval(async () => {\n const updateNodes = (nodesSetting[chain] || []).filter(\n (item) => item.url === currentNode?.[chain] || item.update\n );\n if (updateNodes && updateNodes.length > 0) {\n const updateNode = updateNodes[count % updateNodes.length];\n const delay = await updateNodeDelay(updateNode.url);\n dispatch(setNodesDelay([{ chain, url: updateNode.url, delay }]));\n }\n count++;\n }, 5000);\n return () => clearInterval(intervalId);\n }, [dispatch, nodesSetting, chain, currentNode]);\n};\n\nexport default useUpdateNodesDelay;\n","import React from \"react\"\n\nexport default function ExternalLink({ href, children }) {\n return (\n { e.stopPropagation(); }}\n >\n {children}\n \n );\n}\n","import React, { useState, useRef } from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { Image } from \"semantic-ui-react\";\nimport Card from \"../../components/Card\";\nimport { TEXT_DARK_MAJOR, TEXT_DARK_MINOR } from \"../../constants\";\nimport {\n chainSelector,\n scanHeightSelector,\n} from \"../../store/reducers/chainSlice\";\nimport {\n currentNodeSelector,\n setCurrentNode,\n nodesSelector,\n} from \"../../store/reducers/nodeSlice\";\nimport { useOutsideClick } from \"../../utils/hooks\";\nimport useUpdateNodesDelay from \"../../utils/useUpdateNodesDelay\";\nimport { addToast } from \"../../store/reducers/toastSlice\";\nimport ExternalLink from \"../../components/ExternalLink\";\n\nconst NetworkWrapper = styled.div`\n position: relative;\n display: flex;\n @media screen and (max-width: 600px) {\n position: static;\n }\n`;\n\nconst NetworkButton = styled.button`\n flex: 0 0 auto;\n border: 1px solid #f4f4f4;\n border-radius: 4px;\n background-color: #fff;\n padding: 4px;\n cursor: pointer;\n :hover {\n background: #fafafa;\n }\n ${(p) =>\n p.isActive &&\n css`\n background: #fafafa;\n `}\n`;\n\nconst NetworkItemWrapper = styled(Card)`\n position: absolute;\n padding: 4px 0;\n right: 0;\n top: calc(100% + 8px);\n width: 100%;\n z-index: 999;\n @media screen and (max-width: 600px) {\n width: 100vw;\n left: 0;\n top: 100%;\n border-radius: 0;\n padding: 8px 0;\n }\n`;\n\nconst NetworkItem = styled.div`\n padding: 8px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 13px;\n line-height: 18px;\n color: ${TEXT_DARK_MAJOR};\n :hover {\n background: #fafafa;\n }\n ${(p) =>\n p.isActive &&\n css`\n background: #fafafa;\n `}\n ${(p) =>\n p.delay &&\n typeof p.delay === \"number\" &&\n p.delay >= 0 &&\n css`\n > .delay {\n color: #3abc3f;\n }\n `}\n ${(p) =>\n p.delay &&\n typeof p.delay === \"number\" &&\n p.delay >= 100 &&\n css`\n > .delay {\n color: #ee7735;\n }\n `}\n ${(p) =>\n p.delay &&\n typeof p.delay === \"number\" &&\n p.delay >= 300 &&\n css`\n > .delay {\n color: #ec4730;\n }\n `}\n @media screen and (max-width: 600px) {\n padding: 11px 24px;\n }\n`;\n\nconst Wrapper = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n border: 1px solid #f4f4f4;\n border-radius: 4px;\n min-width: 200px;\n margin-right: 8px;\n @media screen and (max-width: 600px) {\n min-width: 65px;\n position: static;\n }\n`;\n\nconst ScanHeightWrapper = styled.div`\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n background: #fbfbfb;\n height: 32px;\n padding: 4px 8px;\n padding-right: 0;\n div.scanBlockHeight {\n padding-right: 8px;\n display: flex; \n flex-grow: 1;\n }\n cursor: pointer;\n`;\n\nconst Icon = styled(Image)`\n position: relative;\n width: 24px;\n height: 24px;\n flex: 0 0 24px;\n`;\n\nconst Label = styled.div`\n font-family: \"Inter\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 24px;\n`;\n\nconst DarkMinorLabel = styled(Label)`\n color: ${TEXT_DARK_MINOR};\n margin-left: 8px;\n margin-right: 8px;\n @media screen and (max-width: 600px) {\n display: none;\n }\n`;\n\nconst DarkMajorLabel = styled(Label)`\n margin-right: 4px;\n color: ${TEXT_DARK_MAJOR};\n @media screen and (max-width: 600px) {\n display: none;\n }\n`;\n\nconst Button = styled.button`\n padding: 4px;\n border: none;\n border-left: 1px solid #f4f4f4;\n cursor: pointer;\n background: #fff;\n flex: 0 0 auto;\n :hover {\n background: #fafafa;\n }\n ${(p) =>\n p.isActive &&\n css`\n background: #fafafa;\n `}\n`;\n\nconst SymbolItem = styled.div`\n padding: 8px 16px;\n display: flex;\n align-items: center;\n font-size: 13px;\n line-height: 18px;\n color: ${TEXT_DARK_MAJOR};\n cursor: pointer;\n > img {\n margin-right: 8px;\n }\n > div:last-child {\n color: rgba(0, 0, 0, 0.15) !important;\n margin-left: auto;\n }\n :hover {\n background: #fafafa;\n }\n ${(p) =>\n p.isActive &&\n css`\n background: #fafafa;\n `}\n @media screen and (max-width: 600px) {\n padding: 11px 24px;\n }\n`;\n\nconst SymbolWrapper = styled(Card)`\n position: absolute;\n padding: 4px 0;\n left: 0;\n top: calc(100% + 8px);\n width: 100%;\n z-index: 999;\n @media screen and (max-width: 600px) {\n width: 100vw;\n left: 0;\n top: 100%;\n border-radius: 0;\n padding: 8px 0;\n }\n`;\n\nconst ScanHeight = () => {\n useUpdateNodesDelay();\n const dispatch = useDispatch();\n const chain = useSelector(chainSelector);\n const currentNodeSetting = useSelector(currentNodeSelector);\n const nodesSetting = useSelector(nodesSelector);\n const [networkOpen, setNetworkOpen] = useState(false);\n const netWorkRef = useRef(null);\n const [symbolOpen, setSymbolOpen] = useState(false);\n const scanHeight = useSelector(scanHeightSelector);\n const symbolRef = useRef(null);\n\n const currentNetwork = nodesSetting?.[chain]?.find(\n (item) => item.url === currentNodeSetting?.[chain]\n );\n let currentNetworkImg = \"/imgs/node-signal-disabled.svg\";\n if (currentNetwork && currentNetwork.delay) {\n if (currentNetwork.delay >= 300) {\n currentNetworkImg = \"/imgs/node-signal-slow.svg\";\n } else if (currentNetwork.delay >= 100) {\n currentNetworkImg = \"/imgs/node-signal-medium.svg\";\n } else if (currentNetwork.delay >= 0) {\n currentNetworkImg = \"/imgs/node-signal-fast.svg\";\n }\n }\n\n useOutsideClick(symbolRef, () => {\n setSymbolOpen(false);\n });\n useOutsideClick(netWorkRef, () => {\n setNetworkOpen(false);\n });\n\n const switchNetwork = (url) => {\n if (url && url === currentNetwork?.url) return;\n dispatch(\n setCurrentNode({\n chain,\n url,\n })\n );\n const nodeName = nodesSetting[chain].find((item) => item.url === url)?.name;\n dispatch(\n addToast({\n type: \"success\",\n message: `Node switched to ${nodeName}!`,\n })\n );\n };\n\n return (\n \n \n {\n setSymbolOpen(!symbolOpen);\n }}\n ref={symbolRef}\n >\n
\n \n Height\n {`#${scanHeight.toLocaleString()}`}\n
\n \n \n {symbolOpen && (\n \n {\n setSymbolOpen(false);\n }}\n >\n \n
Edgeware
\n
EDG
\n \n \n {\n setSymbolOpen(false);\n }}\n >\n \n
Polkadot
\n
DOT
\n \n
\n \n {\n setSymbolOpen(false);\n }}\n >\n \n
Kusama
\n
KSM
\n \n
\n
\n )}\n \n
\n
\n {\n setNetworkOpen(!networkOpen);\n }}\n >\n \n {networkOpen && (\n \n {(nodesSetting?.[chain] || []).map((item, index) => (\n switchNetwork(item.url)}\n isActive={item.name === currentNetwork?.name}\n >\n
Hosted by {item.name}
\n {item.delay !== null &&\n item.delay !== undefined &&\n !isNaN(item.delay) && (\n
{item.delay} ms
\n )}\n \n ))}\n
\n )}\n \n
\n );\n};\n\nexport default ScanHeight;\n","import styled from \"styled-components\";\nimport { Button } from \"semantic-ui-react\";\n\nimport { TEXT_DARK_MAJOR } from \"../constants\";\n\nconst CustomButton = styled(Button)`\n margin: 0 !important;\n height: 40px !important;\n font-size: 14px !important;\n font-family: \"Inter\" !important;\n color: ${TEXT_DARK_MAJOR} !important;\n background: white !important;\n border: 1px solid #e1e1e1 !important;\n border-radius: 4px !important;\n line-height: 24px !important;\n padding: 8px 16px !important;\n &.ui.button:hover,\n &.ui.button:active,\n &.ui.button:focus {\n border-color: #cccccc !important;\n }\n &.ui.button:disabled {\n color: rgba(29, 37, 60, 0.24) !important;\n opacity: 1 !important;\n }\n`;\n\nexport default CustomButton;\n","import React, { useCallback } from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Button from \"../../components/Button\";\nimport {\n setShowMenuTabs,\n showMenuTabsSelector,\n} from \"../../store/reducers/menuSlice\";\nimport { PRIMARY_THEME_COLOR } from \"../../constants\";\n\nconst Wrapper = styled.div``;\n\nconst StyledButton = styled(Button)`\n display: flex !important;\n align-items: center;\n border: 0 !important;\n padding-left: 0 !important;\n padding-right: 0 !important;\n font-weight: 500 !important;\n ${(p) =>\n p.active &&\n css`\n color: ${PRIMARY_THEME_COLOR} !important;\n `}\n &:hover {\n color: ${PRIMARY_THEME_COLOR} !important;\n }\n`;\n\nconst MenuSwitch = ({ menuTabsName = \"Home\" }) => {\n const dispatch = useDispatch();\n const showMenuTabs = useSelector(showMenuTabsSelector);\n\n const switcher = useCallback(() => {\n dispatch(setShowMenuTabs(menuTabsName));\n }, [dispatch, menuTabsName]);\n\n return (\n \n \n {menuTabsName}\n \n \n );\n};\n\nexport default MenuSwitch;\n","import React, { useState, useRef } from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Logo from \"./Logo\";\nimport { NavLink } from \"react-router-dom\";\nimport ScanHeight from \"./ScanHeight\";\nimport MenuSwitch from \"./MenuSwitch\";\nimport { useMenuTab } from \"../../utils/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { chainSymbolSelector } from \"../../store/reducers/chainSlice\";\n\nconst Wrapper = styled.header`\n height: 76px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: relative;\n @media screen and (max-width: 600px) {\n padding: 0 24px;\n }\n`;\n\nconst FlexWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Left = styled.div`\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n`;\n\nconst Right = styled.div`\n display: flex;\n align-items: center;\n button.ui {\n background-color: transparent !important;\n }\n\n a > div > button {\n @media screen and (min-width: 850px) {\n color: #fff !important;\n }\n }\n a > button {\n @media screen and (min-width: 850px) {\n color: #fff !important;\n }\n }\n > a {\n margin-right: 40px !important;\n }\n\n @media screen and (max-width: 850px) {\n box-shadow: 0px 4px 12px rgba(29, 37, 60, 0.08);\n display: none;\n width: 100vw;\n flex-direction: column;\n position: absolute;\n left: -16px;\n top: 69px;\n z-index: 9999;\n background-color: white;\n padding: 22px 0;\n border-bottom: 1px solid #eeeeee;\n > * {\n margin-top: 8px;\n &:first-child {\n margin-top: 0;\n }\n }\n > a div,\n > a button {\n margin-right: 0 !important;\n }\n > .button button {\n width: 83vw;\n }\n > div {\n margin-right: 0 !important;\n }\n > a {\n margin-right: 0 !important;\n }\n }\n @media screen and (max-width: 600px) {\n left: 0;\n }\n`;\n\nconst MenuIcon = styled.div`\n width: 24px;\n height: 24px;\n display: none !important;\n margin-left: 12px;\n flex-shrink: 0;\n @media screen and (max-width: 850px) {\n display: flex !important;\n cursor: pointer;\n align-items: center;\n justify-content: center;\n }\n`;\n\nconst MainHeader = () => {\n const symbol = useSelector(chainSymbolSelector)?.toLowerCase();\n const [menuShow, setMenuShow] = useState(false);\n useMenuTab();\n\n const menuWrap = useRef();\n const menuClick = (e) => {\n if (e.target !== menuWrap.current) {\n setMenuShow(false);\n }\n };\n let menuIconSrc = \"/imgs/icon-ham-white.svg\";\n if (menuShow) {\n menuIconSrc = \"/imgs/menu-icon-close-white.svg\";\n }\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n setMenuShow(!menuShow)}>\n \n \n \n \n );\n};\n\nexport default MainHeader;\n","import React from \"react\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { totalTipCountSelector } from \"../../store/reducers/overviewSlice\";\n\nfunction TipsMenu() {\n const tipsCount = useSelector(totalTipCountSelector);\n\n return (\n \n Tips\n \n );\n}\n\nexport default TipsMenu;\n","import React from \"react\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { totalProposalCountSelector } from \"../../store/reducers/overviewSlice\";\n\nfunction ProposalsMenu() {\n const proposalsCount = useSelector(totalProposalCountSelector);\n\n return (\n \n Proposals\n \n );\n}\n\nexport default ProposalsMenu;\n","import React from \"react\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { totalBountyCountSelector } from \"../../store/reducers/overviewSlice\";\n\nfunction BountiesMenu() {\n const bountiesCount = useSelector(totalBountyCountSelector);\n\n return (\n \n Bounties\n \n );\n}\n\nexport default BountiesMenu;\n","import React from \"react\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { incomeCountSelector } from \"../../store/reducers/incomeSlice\";\n\nfunction DemocracySlashMenu() {\n const incomeCount = useSelector(incomeCountSelector);\n\n return (\n \n Democracy\n \n );\n}\n\nexport default DemocracySlashMenu;\n","import React from \"react\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { incomeCountSelector } from \"../../store/reducers/incomeSlice\";\n\nfunction StakingSlashMenu() {\n const incomeCount = useSelector(incomeCountSelector);\n\n return (\n \n Staking\n \n );\n}\n\nexport default StakingSlashMenu;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { incomeCountSelector } from \"../../store/reducers/incomeSlice\";\n\nconst Divider = styled.div`\n position: relative;\n width: 1px;\n height: 20px;\n background: #eeeeee;\n left: 16px;\n`;\n\nfunction IdentitySlashMenu() {\n const incomeCount = useSelector(incomeCountSelector);\n\n return (\n \n Identity\n \n \n );\n}\n\nexport default IdentitySlashMenu;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { incomeCountSelector } from \"../../store/reducers/incomeSlice\";\n\nconst Divider = styled.div`\n position: relative;\n width: 1px;\n height: 20px;\n background: #eeeeee;\n left: 16px;\n`;\n\nfunction InflationMenu() {\n const incomeCount = useSelector(incomeCountSelector);\n\n return (\n \n Inflation\n \n \n );\n}\n\nexport default InflationMenu;\n","import React from \"react\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { incomeCountSelector } from \"../../store/reducers/incomeSlice\";\n\nfunction OthersIncomeMenu() {\n const incomeCount = useSelector(incomeCountSelector);\n\n return (\n \n Big others\n \n );\n}\n\nexport default OthersIncomeMenu;\n","import React from \"react\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { projectsSelector } from \"../../store/reducers/projectSlice\";\n\nfunction ProjectsMenu() {\n const projects = useSelector(projectsSelector);\n\n return (\n \n Projects\n \n );\n}\n\nexport default ProjectsMenu;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Label, Menu } from \"semantic-ui-react\";\nimport { useSelector } from \"react-redux\";\nimport { incomeCountSelector } from \"../../store/reducers/incomeSlice\";\n\nconst Divider = styled.div`\n position: relative;\n width: 1px;\n height: 20px;\n background: #eeeeee;\n left: 16px;\n`;\n\nfunction TransfersSlashMenu() {\n const incomeCount = useSelector(incomeCountSelector);\n\n return (\n \n Transfers\n \n \n );\n}\n\nexport default TransfersSlashMenu;\n","import { NavLink } from \"react-router-dom\";\nimport React from \"react\";\n\nconst Caret = (\n \n \n \n);\n\nexport default function BreadCrumbs ({breadCrumbs = []}) {\n return <>\n Home\n {breadCrumbs.map((breadCrumb, index)=>{\n return
\n {Caret}\n {breadCrumb.name}\n
;\n })}\n \n}\n","import React, { useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport { Menu, Tab } from \"semantic-ui-react\";\nimport { NavLink, useLocation } from \"react-router-dom\";\nimport TipsMenu from \"./TipsMenu\";\nimport ProposalsMenu from \"./ProposalsMenu\";\nimport BountiesMenu from \"./BountiesMenu\";\nimport DemocracySlashMenu from \"./DemocracySlashMenu\";\nimport StakingSlashMenu from \"./StakingSlashMenu\";\nimport IdentitySlashMenu from \"./IdentitySlashMenu\";\nimport InflationMenu from \"./InflationMenu\";\nimport OthersIncomeMenu from \"./OthersIncomeMenu\";\nimport ProjectsMenu from \"./ProjectsMenu\";\nimport TansfersSlashMenu from \"./TansfersSlashMenu\";\nimport { fetchIncomeCount } from \"../../store/reducers/incomeSlice\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showMenuTabsSelector } from \"../../store/reducers/menuSlice\";\nimport { chainSymbolSelector, } from \"../../store/reducers/chainSlice\";\nimport Card from \"../../components/Card\";\nimport Container from \"../../components/Container\";\n\nimport { PRIMARY_THEME_COLOR, SECONDARY_THEME_COLOR, TEXT_DARK_MAJOR, TEXT_DARK_MINOR, } from \"../../constants\";\nimport BreadCrumbs from \"./BreadCrumbs\";\n\nconst Wrapper = styled.div`\n position: relative;\n`;\n\nconst WrapperBackground = styled.div`\n position: absolute;\n left: 0;\n top: 0;\n height: 42px;\n width: 100%;\n z-index: -1;\n`;\n\nconst TabWrapper = styled(Tab)`\n overflow-x: scroll;\n &::-webkit-scrollbar {\n display: none;\n }\n -ms-overflow-style: none;\n /* scrollbar-width: none; */\n overflow-y: auto;\n\n background: transparent;\n\n div {\n border-bottom: 0 !important;\n }\n\n a {\n padding-left: 0 !important;\n padding-right: 0 !important;\n border-width: 4px !important;\n font-family: \"Inter\" !important;\n color: ${TEXT_DARK_MINOR} !important;\n margin-right: 32px !important;\n margin-bottom: 0px !important;\n & > div.item {\n margin-bottom: -4px !important;\n padding-left: 0 !important;\n padding-right: 0 !important;\n color: ${TEXT_DARK_MINOR} !important;\n }\n & > div.ui.label,\n & > div > div.ui.label {\n background: ${SECONDARY_THEME_COLOR} !important;\n height: 20px !important;\n padding: 0 8px !important;\n line-height: 20px !important;\n border-radius: 10px !important;\n margin-left: 8px !important;\n color: ${PRIMARY_THEME_COLOR} !important;\n font-weight: 400;\n }\n &.active,\n &.active > div {\n font-weight: 600 !important;\n color: ${TEXT_DARK_MAJOR} !important;\n border-color: ${PRIMARY_THEME_COLOR} !important;\n }\n &.item {\n padding: 2px 0 !important;\n }\n }\n`;\n\nconst CustomCard = styled(Card)`\n padding: 0 24px;\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst TopWrapper = styled.div`\n &, > div {\n display: flex;\n align-items: center;\n }\n height: 43px;\n padding: 11px 0;\n border-bottom: 1px solid #f4f4f4;\n a {\n font-size: 13px;\n line-height: 18px;\n color: rgba(0, 0, 0, 0.3);\n :hover {\n color: ${TEXT_DARK_MINOR};\n }\n\n text-transform: capitalize;\n }\n`;\n\nconst OverviewWrapper = styled.div`\n line-height: 22px !important;\n`;\n\nconst Divider = styled.div`\n position: relative;\n width: 1px;\n height: 20px;\n background: #eeeeee;\n left: 16px;\n`;\n\nconst Overview = () => {\n return (\n \n Overview\n \n \n );\n};\n\nconst Singularize = (plural)=> {\n if(plural.includes('ies')){\n return plural.replace('ies', 'y');\n }\n return plural.slice(0, -1);\n}\n\n\n\nconst TabExampleSecondaryPointing = () => {\n const { pathname } = useLocation();\n const paths = pathname.split('/');\n const dispatch = useDispatch();\n const showMenuTabs = useSelector(showMenuTabsSelector);\n const symbol = useSelector(chainSymbolSelector)?.toLowerCase();\n const breadCrumbs = [];\n\n const topCategories = [`proposals`, `projects`, \"income\", \"tips\", \"bounties\",];\n if (topCategories.includes(paths[1])) {\n breadCrumbs.push({name:paths[1], to:`/${paths[1]}`})\n }\n if(paths.length > 2) {\n if (paths[1] === `proposals` || paths[1] === `bounties` || paths[1] === `tips`) {\n let index = paths[2];\n if (paths[1] === 'tips') {\n const tipIds = paths[2]?.split(\"_0x\");\n paths?.length > 1 && (index = `${tipIds[1].slice(0, 6)}`);\n }\n breadCrumbs.push({name: `${Singularize(paths[1])} #${index}`, to: pathname})\n }\n if(paths[1] === `projects`){\n breadCrumbs.push({name: paths[2], to: pathname})\n }\n if (paths[1] === 'income') {\n breadCrumbs.push({\n name:`${paths[2] === 'slash' ? `Slash ` + paths[3] : paths[2]}`,\n to:pathname\n });\n }\n }\n\n useEffect(() => {\n dispatch(fetchIncomeCount());\n }, [dispatch]);\n\n let panes =\n showMenuTabs === \"Home\"\n ? [\n {\n menuItem: {\n as: NavLink,\n id: \"homeTab\",\n content: ,\n to: ``,\n exact: true,\n key: \"home\",\n active: `` === pathname,\n },\n },\n {\n menuItem: {\n as: NavLink,\n id: \"proposalsTab\",\n content: ,\n to: `/proposals`,\n exact: true,\n key: \"proposals\",\n active:\n `/proposals` === pathname ||\n pathname.indexOf(`/proposals`) === 0,\n },\n },\n {\n menuItem: {\n as: NavLink,\n id: \"tipsTab\",\n content: ,\n to: `/tips`,\n exact: true,\n key: \"tips\",\n active: `/tips` === pathname || pathname.indexOf(`/tips`) === 0,\n },\n },\n {\n menuItem: {\n as: NavLink,\n id: \"bountiesTab\",\n content: ,\n to: `/bounties`,\n exact: true,\n key: \"bounties\",\n active:\n `/bounties` === pathname || pathname.indexOf(`/bounties`) === 0,\n },\n },\n ]\n : showMenuTabs === \"Income\"\n ? [\n {\n menuItem: {\n as: NavLink,\n id: \"inflationTab\",\n content: ,\n to: `/income`,\n exact: true,\n key: \"inflation\",\n active: `/income` === pathname,\n },\n },\n {\n menuItem: {\n as: NavLink,\n id: \"stakingSlashTab\",\n content: ,\n to: `/income/slash/staking`,\n exact: true,\n key: \"stakingSlash\",\n active:\n `${symbol}/income/slash/staking` === pathname ||\n pathname.indexOf(`${symbol}/income/slash/staking`) === 0,\n },\n },\n {\n menuItem: {\n as: NavLink,\n id: \"democracySlashTab\",\n content: ,\n to: `/income/slash/democracy`,\n exact: true,\n key: \"democracySlash\",\n active:\n `/income/slash/democracy` === pathname ||\n pathname.indexOf(`/income/slash/democracy`) === 0,\n },\n },\n {\n menuItem: {\n as: NavLink,\n id: \"identitySlashTab\",\n content: ,\n to: `/income/slash/identity`,\n exact: true,\n key: \"identitySlash\",\n active:\n `/income/slash/identity` === pathname ||\n pathname.indexOf(`/income/slash/identity`) === 0,\n },\n },\n {\n menuItem: {\n as: NavLink,\n id: \"transfersSlashTab\",\n content: ,\n to: `/income/transfers`,\n exact: true,\n key: \"transfersSlash\",\n active:\n `/income/transfers` === pathname ||\n pathname.indexOf(`/income/transfers`) === 0,\n },\n },\n {\n menuItem: {\n as: NavLink,\n id: \"othersIncomeTab\",\n content: ,\n to: `/income/others`,\n exact: true,\n key: \"othersIncome\",\n active:\n `/income/others` === pathname ||\n pathname.indexOf(`/income/others`) === 0,\n },\n },\n ]\n : showMenuTabs === \"Projects\"\n ? [\n {\n menuItem: {\n as: NavLink,\n id: \"projectsTab\",\n content: ,\n to: `/projects`,\n exact: true,\n key: \"projects\",\n active:\n `/projects` === pathname || pathname.indexOf(`/projects`) === 0,\n },\n },\n ]\n : [];\n if(pathname.includes('/proposals/')\n ||pathname.includes('/projects/')\n ||pathname.includes('/bounties/')\n ||pathname.includes('/tips/')){\n panes = [\n {\n menuItem: {\n as: NavLink,\n id: \"detailTab\",\n content: \n Detail\n ,\n to: `#`,\n exact: true,\n key: \"detail\",\n active:true,\n },\n },\n ];\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default TabExampleSecondaryPointing;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport Container from \"../../components/Container\";\nimport MainHeader from \"./MainHeader\";\nimport SubHeader from \"./SubHeader\";\n\nconst Wrapper = styled.header`\n background-image: url(\"/imgs/bg-edgewa.png\");\n background-size: 100%;\n max-height: 136px;\n margin-bottom: -43px;\n padding-bottom: 43px;\n`;\n\nconst Header = () => {\n return (\n <>\n \n \n \n \n \n \n \n );\n};\n\nexport default Header;\n","import styled from \"styled-components\";\n\nimport { TEXT_DARK_MAJOR } from \"../constants\";\n\nconst Text = styled.p`\n font-family: \"Inter\";\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 24px;\n color: ${TEXT_DARK_MAJOR};\n margin: 0;\n`;\n\nexport default Text;\n","import styled from \"styled-components\";\n\nimport Text from \"./Text\";\nimport { TEXT_DARK_MINOR } from \"../constants\";\n\nconst TextMinor = styled(Text)`\n color: ${TEXT_DARK_MINOR};\n`;\n\nexport default TextMinor;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Container from \"../../components/Container\";\nimport TextMinor from \"../../components/TextMinor\";\nimport { TEXT_DARK_MAJOR, TEXT_DARK_MINOR } from \"../../constants\";\n\nconst Wrapper = styled.footer`\n padding-bottom: 20px;\n`;\n\nconst FooterWrapper = styled.div`\n display: flex;\n align-items: center;\n > :not(:first-child) {\n margin-left: 24px;\n }\n > :last-child {\n margin-left: auto;\n }\n .link {\n cursor: pointer;\n :hover {\n color: ${TEXT_DARK_MAJOR};\n text-decoration: underline;\n }\n }\n .small {\n display: none;\n margin-bottom: 4px;\n }\n @media screen and (max-width: 1140px) {\n flex-direction: column;\n justify-content: center;\n > * {\n margin: 0 !important;\n }\n > :not(:first-child) {\n margin-top: 4px !important;\n }\n > :last-child {\n margin: 4px auto 0 !important;\n }\n .hidden {\n display: none;\n }\n .small {\n display: block;\n }\n }\n`;\n\nconst IconList = styled.div`\n margin-left: auto !important;\n display: inline-flex;\n align-items: center;\n > a {\n height: 24px;\n }\n > :not(:first-child) {\n margin-left: 16px;\n }\n i {\n font-size: 20px;\n color: rgba(29, 37, 60, 0.24);\n\n &:hover {\n color: ${TEXT_DARK_MINOR};\n }\n }\n`;\n\nconst ImageLogoWrapper = styled.div`\n display: flex;\n align-items: center;\n > :not(:first-child) {\n margin-left: 8px;\n }\n @media screen and (max-width: 481px) {\n flex-direction: column;\n > :not(:first-child) {\n margin-left: 0;\n margin-top: 4px;\n }\n }\n`;\n\nconst Icon = styled.img`\n width: 24px;\n height: 24px;\n`;\n\nconst Footer = () => {\n return (\n \n \n \n \n \n Edgeware Treasury © {new Date().getFullYear()} - Powered By\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Footer;\n","import styled from \"styled-components\";\nimport { Table } from \"semantic-ui-react\";\n\nconst CustomTable = styled(Table)`\n overflow: hidden !important;\n border-radius: 8px !important;\n margin-top: 0 !important;\n border-color: #eee !important;\n tr {\n :hover {\n background-color: #fdfdfd !important;\n }\n }\n td {\n border-top: 0 !important;\n border-bottom: 1px solid #f4f4f4;\n padding: 12px 24px !important;\n }\n th {\n font-style: normal !important;\n font-weight: normal !important;\n font-size: 13px !important;\n font-family: \"Inter\" !important;\n border-bottom: 0 !important;\n padding: 12px 24px !important;\n background: #fafafa !important;\n line-height: 18px !important;\n color: rgba(0, 0, 0, 0.3) !important;\n }\n .user-cell {\n width: 192px !important;\n max-width: 192px !important;\n }\n .balance-cell {\n width: 139px !important;\n }\n .status-cell {\n width: 140px !important;\n }\n .link-cell {\n width: 44px !important;\n }\n .time-cell {\n min-width: 180px !important;\n }\n .index-cell {\n width: 60px !important;\n }\n .title-cell {\n min-width: 208px !important;\n }\n .update-due-cell {\n min-width: 100px !important;\n }\n .payout-due-cell {\n min-width: 100px !important;\n }\n .propose-time-cell {\n width: 280px !important;\n }\n .new-propose-time-cell {\n max-width: 180px !important;\n }\n .related-links-cell {\n min-width: 120px !important;\n }\n .proposal-related-links-cell {\n width: 160px !important;\n max-width: 160px !important;\n }\n .description-cell {\n min-width: 432px !important;\n }\n .date-cell {\n min-width: 140px !important;\n }\n .proposal-description-cell {\n width: 368px !important;\n max-width: 368px !important;\n }\n .proposal-user-cell {\n max-width: 164px !important;\n }\n .proposal-value-cell {\n max-width: 136px !important;\n }\n .proposal-status-cell {\n max-width: 128px !important;\n }\n td:first-child {\n font-weight: 400 !important;\n }\n`;\nexport default CustomTable;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Segment, Dimmer, Image } from \"semantic-ui-react\";\n\nconst Wrapper = styled.div`\n .ui.segment {\n padding: 0;\n border: 0;\n width: fit-content;\n min-width: 100%;\n background: transparent !important;\n border: 0 !important;\n box-shadow: none !important;\n }\n`\n\nconst StyledSegment = styled(Segment)`\n border-radius: 8px !important;\n`\n\nconst LoadingTable = ({children, loading}) => {\n return (\n \n \n \n \n \n {children}\n \n \n )\n}\n\nexport default LoadingTable;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Popup } from \"semantic-ui-react\";\n\nimport TextMinor from \"../TextMinor\";\nimport { useDisablePopup } from \"../../utils/hooks\";\n\nconst TextUsername = styled(TextMinor)`\n white-space: nowrap;\n cursor: pointer;\n flex-grow: 1;\n font-size: 14px;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.65) !important;\n &:hover {\n color: rgba(0, 0, 0, 0.9) !important;\n text-decoration-line: underline;\n }\n`;\n\nconst Username = ({ address, name, ellipsis, popup, popupContent }) => {\n const disabledPopup = useDisablePopup();\n let displayAddress;\n if (typeof address === \"string\") {\n if (ellipsis) {\n displayAddress = `${address.substring(0, 4)}...${address.substring(\n address.length - 4,\n address.length\n )}`;\n } else {\n displayAddress = address;\n }\n } else if (typeof address === \"object\") {\n if (ellipsis) {\n displayAddress = `${address.id.substring(0, 4)}...${address.id.substring(\n address.id.length - 4,\n address.id.length\n )}`;\n } else {\n displayAddress = address.id;\n }\n }\n let displayName = name;\n if(ellipsis && name && name?.length > 15){\n displayName = name?.slice(0, 15) + '...';\n }\n\n return (\n {displayName || displayAddress}}\n />\n );\n};\n\nexport default Username;\n","import * as React from \"react\";\nimport Identicon from \"@polkadot/react-identicon\";\n\nexport default function Avatar({ address, size = 24 }) {\n const theme = \"polkadot\";\n\n return ;\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nconst Wrapper = styled.div`\n > img {\n width: 14px;\n height: 14px;\n margin-right: 4px;\n }\n`;\n\nconst statusIconMap = new Map([\n [\"NOT_VERIFIED\", \"error-grey\"],\n [\"VERIFIED\", \"auth\"],\n [\"ERRONEOUS\", \"error\"],\n [\"VERIFIED_LINKED\", \"authorized-sub\"],\n [\"LINKED\", \"sub-grey\"],\n [\"ERRONEOUS_LINKED\", \"sub-red\"],\n]);\n\nconst Badge = ({ status }) => {\n if (status === \"NO_ID\") {\n return null;\n }\n\n const icon = statusIconMap.get(status);\n if (!icon) {\n return null;\n }\n\n const imgSrc = `/imgs/badge-icons/${icon}.svg`;\n return {icon && };\n};\n\nexport default Badge;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { chainSelector } from \"../store/reducers/chainSlice\";\nimport ExternalLink from \"./ExternalLink\";\n\nexport default function ExplorerLink({ href, base, children }) {\n const chain = useSelector(chainSelector);\n const defaultExplorerSite = `https://${chain}.subscan.io/`;\n const baseHref = base ?? defaultExplorerSite;\n return (\n {children}\n );\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n overflow: hidden;\n`;\n\nconst Avatar = styled.img`\n margin-right: 8px;\n width: 22px;\n height: 22px;\n`;\n\nconst Deleted = styled.div`\n font-family: SF Mono;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.3);\n`;\n\nconst DeletedAccount = () => {\n return (\n \n \n [Deleted]\n \n );\n};\n\nexport default DeletedAccount;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport Username from \"./Username\";\nimport Avatar from \"./Avatar\";\nimport Badge from \"./Badge\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport { useIdentity, useWindowSize } from \"../../utils/hooks\";\nimport DeletedAccount from \"./DeletedAccount\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n overflow: hidden;\n > :first-child {\n margin-right: 8px;\n }\n`;\n\nconst BadgeWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst User = ({ address, ellipsis = true, popup = true, popupContent }) => {\n const { name, badgeData } = useIdentity(address);\n const [width] = useWindowSize();\n\n return (\n <>\n {address ? (\n \n \n \n \n \n \n \n \n \n ) : (\n \n )}\n \n );\n};\n\nexport default React.memo(User);\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport Text from \"./Text\";\nimport TextMinor from \"./TextMinor\";\n\nconst Wrapper = styled.div`\n p {\n display: inline;\n :last-child {\n margin-left: 4px;\n }\n }\n`;\n\nconst PairText = ({ value, unit }) => {\n return (\n \n {value}\n {unit}\n \n );\n};\n\nexport default PairText;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport PairText from \"./PairText\";\nimport { toPrecision, getPrecision } from \"../utils\";\nimport { useSelector } from \"react-redux\";\nimport { chainSymbolSelector } from \"../store/reducers/chainSlice\";\nimport { toLocaleStringWithFixed, abbreviateBigNumber } from \"../utils\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: flex-end;\n flex-direction: column;\n ${(p) =>\n p.reverse &&\n css`\n flex-direction: column-reverse;\n > :first-child * {\n font-size: 12px;\n line-height: 18px;\n color: rgba(0, 0, 0, 0.3);\n }\n > :last-child {\n font-size: 14px;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.65);\n }\n `}\n ${(p) =>\n p.horizontal &&\n css`\n flex-direction: row;\n align-items: center;\n > :not(:first-child) {\n margin-left: 16px;\n }\n `}\n`;\n\nconst UsdtWrapper = styled.div`\n font-size: 12px;\n line-height: 18px;\n color: rgba(0, 0, 0, 0.3);\n white-space: nowrap;\n ${(p) =>\n p.horizontal &&\n css`\n align-self: center;\n `}\n`;\n\nconst Balance = ({\n value = 0,\n currency,\n usdt,\n reverse = false,\n isUnitPrice = true,\n horizontal = false,\n isAbbreviate = false,\n}) => {\n const symbol = useSelector(chainSymbolSelector);\n let usdtNumber = Number(usdt);\n if (value === null || value === undefined) value = 0;\n const precision = toPrecision(value, getPrecision(currency || symbol), false);\n const localePrecision = Number(precision).toLocaleString();\n const abbreviated = abbreviateBigNumber(precision);\n if (isUnitPrice) usdtNumber = usdtNumber * precision;\n return (\n \n \n {usdt && !isNaN(usdtNumber) && (\n {`${\n usdtNumber === 0 ? \"\" : \"≈ \"\n }$${toLocaleStringWithFixed(usdtNumber, 2)}`}\n )}\n \n );\n};\n\nexport default Balance;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nconst Wrapper = styled.div`\n cursor: pointer;\n`;\n\nconst RightButton = () => {\n return (\n \n \n \n );\n};\n\nexport default RightButton;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport Text from \"./Text\";\nimport TextMinor from \"./TextMinor\";\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n p {\n white-space: nowrap;\n }\n p:last-child {\n font-size: 12px;\n }\n`;\n\nconst Status = ({ value, detail }) => {\n return (\n \n {value}\n {detail}\n \n );\n};\n\nexport default Status;\n","import styled from \"styled-components\";\n\nimport { TEXT_DARK_MAJOR } from \"../../constants\";\n\nconst ReasonText = styled.div`\n word-wrap: break-word;\n word-break: break-word;\n min-width: 480px;\n font-family: \"Inter\";\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 24px;\n color: ${TEXT_DARK_MAJOR};\n margin: 0;\n`;\n\nexport default ReasonText;\n","import React from \"react\";\nimport { Table } from \"semantic-ui-react\";\n\nconst TableNoDataCell = () => {\n return (\n \n \n No data\n \n \n )\n}\n\nexport default TableNoDataCell;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport ExternalLink from \"./ExternalLink\";\nimport { getLinkNameAndSrc } from \"../utils\";\n\nconst CustomImage = styled.img`\n position: relative;\n top: 4px;\n width: 20px;\n`;\n\nconst LinkWrapper = styled.span`\n display: inline-flex;\n align-items: center;\n margin-left: 8px;\n &:first-child {\n margin-left: 15px;\n }\n`;\n\nconst Wrapper = styled.div`\n word-wrap: break-word;\n`;\n\nconst ClickableLink = ({ children, links }) => {\n return (\n \n {children}\n {links &&\n links\n .filter((item) => item.inReasons)\n .map((item, index) => {\n const [, src] = getLinkNameAndSrc(item.link);\n return (\n \n \n \n \n \n );\n })}\n \n );\n};\n\nexport default ClickableLink;\n","import React from \"react\";\n\nimport ClickableLink from \"../../components/ClickableLink\";\nimport {useLinks} from \"../../utils/hooks\";\n\nconst ReasonLink = ({text}) => {\n const links = useLinks(text);\n\n return (\n <>\n \n {text}\n \n \n )\n}\n\nexport default ReasonLink\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { NavLink } from \"react-router-dom\";\nimport { useHistory } from \"react-router\";\nimport dayjs from \"dayjs\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading.js\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport RightButton from \"../../components/RightButton\";\nimport PairTextVertical from \"../../components/PairTextVertical\";\nimport ReasonText from \"./ReasonText\";\nimport { TipStatus } from \"../../constants\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport ReasonLink from \"./ReasonLink\";\nimport { useSelector } from \"react-redux\";\nimport { chainSymbolSelector } from \"../../store/reducers/chainSlice\";\nimport Card from \"../../components/Card\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst TipsTable = ({ data, loading, header, footer }) => {\n const history = useHistory();\n const symbol = useSelector(chainSymbolSelector);\n\n const onClickRow = (height, hash) => {\n if (height && hash) {\n if (window.innerWidth < 1140) {\n history.push(`/tips/${height}_${hash}`);\n }\n }\n };\n\n return (\n \n {header}\n \n \n \n \n \n \n Beneficiary\n Finder\n Reason\n Value\n \n Status\n \n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n \n onClickRow(item.proposeAtBlockHeight, item.hash)\n }\n >\n \n \n \n \n \n \n \n \n \n \n \n \n {item.showStatus === TipStatus.Retracted ? (\n \"--\"\n ) : (\n \n )}\n \n \n {item.showTime ? (\n \n ) : item.showStatus === TipStatus.Tipping ? (\n `${item.showStatus} (${item.tipsCount})`\n ) : (\n item.showStatus\n )}\n \n \n \n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default TipsTable;\n","import styled from \"styled-components\";\nimport { Form } from \"semantic-ui-react\";\n\nconst CustomSelect = styled(Form.Select)`\n .ui.selection.dropdown {\n border-color: #dddddd;\n border-radius: 4px;\n padding: 3px 29px 3px 8px !important;\n min-height: 24px !important;\n &:focus {\n border-color: #dddddd;\n }\n }\n .dropdown.icon {\n padding: 4px 12px !important;\n }\n .dropdown.icon:before {\n color: rgba(29, 37, 60, 0.24);\n font-size: 13px;\n }\n .ui.selection.dropdown .menu > .item {\n padding: 0 !important;\n padding-left: 16px !important;\n height: 24px;\n line-height: 24px;\n }\n .ui.dropdown.active > .dropdown.icon:before {\n color: rgba(29, 37, 60, 0.64);\n }\n .ui.selection.dropdown {\n padding-left: 16px !important;\n }\n .ui.selection.active.dropdown,\n .ui.selection.active.dropdown .menu {\n border-color: #dddddd;\n }\n .ui.selection.dropdown:focus .menu {\n border-color: #dddddd !important;\n }\n`;\n\nexport default CustomSelect;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\nimport { Form } from \"semantic-ui-react\";\nimport { tipStatusMap } from \"../../constants\";\n\nimport Select from \"../../components/Select\";\n\nconst FormWrapper = styled(Form)`\n display: flex;\n justify-content: flex-end;\n`;\nconst StatusSelect = styled(Select)`\n width: 145px;\n`;\n\nconst statusOptions = [\n { key: \"all\", value: \"-1\", text: \"All status\" },\n ...Array.from(new Set(Object.values(tipStatusMap))).map((key) => ({\n key,\n value: Object.entries(tipStatusMap)\n .filter(([, v]) => v === key)\n .map(([k]) => k)\n .join(\"||\"),\n text: key,\n })),\n];\n\nconst Filter = ({ value, query }) => {\n const [status, setStatus] = useState(\"\");\n\n // only query on filters change\n const mounting = useRef(true);\n useEffect(() => {\n if (mounting.current) {\n mounting.current = false;\n return;\n }\n const data = {\n status,\n };\n for (let key in data) {\n if (data[key] === \"\" || data[key] === \"-1\") {\n delete data[key];\n }\n }\n query(data);\n }, [status, query]);\n\n return (\n \n setStatus(value)}\n />\n \n );\n};\n\nexport default Filter;\n","import React from \"react\";\n\nconst PrevIcon = () => {\n return \n \n \n \n \n \n \n \n \n ;\n}\n\nexport default PrevIcon;\n","import React from \"react\";\n\nconst PrevIconGrey = () => {\n return \n \n \n \n \n \n \n \n \n \n ;\n}\n\nexport default PrevIconGrey;\n","import React from \"react\";\n\nconst NextIcon = () => {\n return \n \n ;\n}\n\nexport default NextIcon;\n","import React from \"react\";\n\nconst NextIconGrey = () => {\n return \n \n \n ;\n}\n\nexport default NextIconGrey;\n","import React from \"react\";\nimport { Icon, Pagination } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\n\nimport { PRIMARY_THEME_COLOR } from \"../constants\";\nimport { SECONDARY_THEME_COLOR } from \"../constants\";\nimport PrevIcon from \"./pagination/leftAngel\";\nimport PrevIconGrey from \"./pagination/leftAngleGrey\";\nimport NextIcon from \"./pagination/rightAngle\";\nimport NextIconGrey from \"./pagination/rightAngleGrey\";\n\nconst Wrapper = styled.div`\n /* margin: 10px 0; */\n /* display: flex; */\n /* justify-content: flex-end; */\n\n a {\n font-family: \"Inter\" !important;\n outline: none !important;\n\n &.active {\n color: ${PRIMARY_THEME_COLOR} !important;\n background: ${SECONDARY_THEME_COLOR} !important;\n }\n }\n\n .pagination {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n height: 32px !important;\n min-height: 32px !important;\n border: 0 !important;\n box-shadow: none;\n\n > a {\n width: 32px !important;\n height: 32px !important;\n min-width: 32px !important;\n padding: 0 !important;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 0 !important;\n border-radius: 4px !important;\n\n ::before {\n display: none;\n }\n\n :not(:first-child) {\n margin-left: 8px !important;\n }\n }\n }\n`;\n\nconst CustomPagination = (props) => {\n const totalPages = props.totalPages;\n if (!totalPages) return null;\n const Prev = props.activePage === 1 ? PrevIconGrey : PrevIcon;\n const Next = props.activePage === props.totalPages ? NextIconGrey : NextIcon;\n return (\n \n ,\n icon: true,\n }}\n firstItem={null}\n lastItem={null}\n prevItem={{content: , icon: true}}\n nextItem={{content: , icon: true}}\n {...props}\n />\n \n );\n};\n\nexport default CustomPagination;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Pagination from \"./Pagination\";\nimport { Dropdown } from \"semantic-ui-react\";\n\nconst Container = styled.div`\n padding: 16px 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n\n @media screen and (max-width: 640px) {\n > div:first-child {\n display: none;\n }\n }\n\n @media screen and (min-width: 640px) {\n > div:nth-child(2) {\n display: none;\n }\n }\n\n @media screen and (max-width: 640px) {\n .hidden {\n display: none;\n width: 0 !important;\n height: 0 !important;\n }\n }\n`;\n\nconst TextWrapper = styled.div`\n width: 153px;\n height: 24px;\n`;\n\nconst DropdownWrapper = styled.div`\n width: 72px;\n height: 24px;\n margin-right: 0;\n`;\n\nconst DropdownText = styled.div`\n font-size: 13px;\n line-height: 24px;\n color: rgba(0, 0, 0, 0.3);\n text-align: right;\n padding-right: 16px;\n`;\n\nconst CustomDropdown = styled(Dropdown)`\n position: absolute !important;\n height: 24px !important;\n min-height: 24px !important;\n min-width: 72px !important;\n border: 1px solid #dddddd !important;\n padding: 3px 8px !important;\n\n &:hover {\n border-color: rgba(34, 36, 38, 0.15) !important;\n background-color: #fbfbfb !important;\n & > i.dropdown.icon:before {\n color: rgba(29, 37, 60, 0.64) !important;\n }\n }\n &:active {\n border-color: rgba(34, 36, 38, 0.15) !important;\n }\n &:focus {\n border-color: rgba(34, 36, 38, 0.15) !important;\n }\n &.ui.upward.selection.dropdown.visible {\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n }\n & > .visible.menu {\n border-color: rgba(34, 36, 38, 0.15) !important;\n max-height: none !important;\n }\n & > div.text {\n line-height: 18px !important;\n font-size: 13px !important;\n width: 32px !important;\n }\n & > i.dropdown.icon {\n padding: 4px 12px !important;\n margin-top: -8px !important;\n ::before {\n color: rgba(29, 37, 60, 0.24) !important;\n }\n }\n & .item {\n height: 24px !important;\n padding: 0px 8px !important;\n & > .text {\n line-height: 24px !important;\n font-size: 13px !important;\n display: block;\n width: 32px !important;\n margin-top: -8px !important;\n }\n }\n`;\n\nconst SelectWrapper = styled.div`\n display: flex;\n margin: 8px 0;\n`;\n\nconst options = [\n { key: 1, text: \"20\", value: 20 },\n { key: 2, text: \"50\", value: 50 },\n { key: 3, text: \"100\", value: 100 },\n];\n\nconst ResponsivePagination = ({\n activePage,\n totalPages,\n onPageChange,\n pageSize,\n setPageSize,\n}) => {\n return (\n \n \n \n {totalPages > 0 && (\n \n \n Show rows\n \n \n {\n setPageSize(value);\n }}\n />\n \n \n )}\n \n );\n};\n\nexport default ResponsivePagination;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport TipsTable from \"./TipsTable\";\nimport Filter from \"./Filter\";\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n fetchTips,\n loadingSelector,\n normalizedTipListSelector,\n} from \"../../store/reducers/tipSlice\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport { useHistory } from \"react-router\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst Tips = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const searchStatus = useQuery().get(\"status\");\n\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"tipsPageSize\",\n DEFAULT_PAGE_SIZE\n );\n const [filterData, setFilterData] = useState(\n searchStatus\n ? {\n status: searchStatus,\n }\n : {}\n );\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: tips, total } = useSelector(normalizedTipListSelector);\n const loading = useSelector(loadingSelector);\n const totalPages = Math.ceil(total / pageSize);\n\n useEffect(() => {\n dispatch(fetchTips(tablePage - 1, pageSize, filterData));\n }, [dispatch, tablePage, pageSize, filterData]);\n\n const filterQuery = useCallback(\n (data) => {\n setFilterData(data);\n setTablePage(1);\n history.push({\n search: data.status ? `status=${data.status}` : null,\n });\n },\n [history]\n );\n\n return (\n <>\n \n Tips\n \n \n }\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n \n );\n};\n\nexport default Tips;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nimport { TEXT_DARK_MAJOR, TEXT_DARK_MINOR } from \"../constants\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Label = styled.span`\n margin-left: 4px;\n font-family: \"Inter\";\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 24px;\n color: ${TEXT_DARK_MINOR};\n ${(p) =>\n !p.noHover &&\n css`\n &:hover {\n color: ${TEXT_DARK_MAJOR};\n text-decoration-line: underline;\n }\n `}\n`;\n\nconst PolygonLabel = ({ value, noHover }) => {\n return (\n \n \n \n \n );\n};\n\nexport default PolygonLabel;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image, Popup } from \"semantic-ui-react\";\n\nimport ExternalLink from \"./ExternalLink\";\nimport { getLinkNameAndSrc } from \"../utils\";\nimport { useDisablePopup } from \"../utils/hooks\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n > :not(:last-child) {\n margin-right: 8px;\n }\n > * {\n margin-top: 2px;\n margin-bottom: 2px;\n }\n`;\n\nconst CustomImage = styled(Image)`\n width: 20px;\n`;\n\nconst RelatedLinks = ({ links }) => {\n const disabledPopup = useDisablePopup();\n return (\n \n {(links || []).map((item, index) => {\n const [, src] = getLinkNameAndSrc(item.link);\n return (\n \n \n \n \n \n }\n key={index}\n />\n );\n })}\n \n );\n};\n\nexport default RelatedLinks;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport { useIdentity } from \"../../utils/hooks\";\nimport Badge from \"../../components/User/Badge\";\n\nconst Wrapper = styled.div`\n font-size: 12px;\n line-height: 18px;\n color: rgba(0, 0, 0, 0.9);\n`;\n\nconst Title = styled.div`\n font-weight: bold;\n`;\n\nconst NameWrapper = styled.div`\n display: flex;\n align-items: center; ;\n`;\n\nconst BeneficiaryContent = ({ proposerAddress, beneficiaryAddress }) => {\n const { name: proposerName, badgeData: proposerBadgeData } =\n useIdentity(proposerAddress);\n const { name: beneficiaryName, badgeData: beneficiaryBadgeData } =\n useIdentity(beneficiaryAddress);\n\n return (\n \n Proposer\n {proposerName && (\n \n \n
{proposerName}
\n
\n )}\n
{proposerAddress}
\n Beneficiary\n {beneficiaryName && (\n \n \n
{beneficiaryName}
\n
\n )}\n
{beneficiaryAddress}
\n
\n );\n};\n\nexport default BeneficiaryContent;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst Wrapper = styled.div`\n font-size: 14px;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.9);\n > div {\n overflow-wrap: break-word;\n }\n`;\n\nconst DescriptionCell = ({ description }) => {\n return (\n \n
{description}
\n
\n );\n};\n\nexport default DescriptionCell;\n","import React, { useState } from \"react\";\nimport styled from \"styled-components\";\nimport { NavLink } from \"react-router-dom\";\nimport { useHistory } from \"react-router\";\nimport dayjs from \"dayjs\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport RightButton from \"../../components/RightButton\";\nimport TextMinor from \"../../components/TextMinor\";\nimport PairTextVertical from \"../../components/PairTextVertical\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport RelatedLInks from \"../../components/RelatedLinks\";\nimport { useSelector } from \"react-redux\";\nimport { chainSymbolSelector } from \"../../store/reducers/chainSlice\";\nimport Card from \"../../components/Card\";\nimport BeneficiaryContent from \"./BeneficiaryContent\";\nimport DescriptionCell from \"./DescriptionCell\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst ProposeTimeWrapper = styled.div`\n display: flex;\n align-items: flex-start;\n flex-direction: column;\n p:first-child {\n min-width: 154px;\n }\n > :first-child {\n line-height: 22px;\n color: rgba(0, 0, 0, 0.9) !important;\n }\n > :last-child {\n * {\n font-size: 12px;\n line-height: 18px;\n color: rgba(0, 0, 0, 0.3);\n }\n img {\n width: 14px !important;\n height: 14px !important;\n }\n }\n`;\n\nconst BeneficiarySwitch = styled.div`\n cursor: pointer;\n color: rgba(0, 0, 0, 0.65) !important;\n :hover {\n color: rgba(0, 0, 0, 0.65) !important;\n }\n`;\n\nconst getStateWithVotingAyes = (item) => {\n const { state: stateValue, name } = item.latestState;\n const state = stateValue || name;\n const isProposalVoting = [\"ApproveVoting\", \"RejectVoting\"].includes(state);\n\n if (isProposalVoting) {\n const nAyes = item.latestState.motionVoting?.ayes?.length;\n if (nAyes !== undefined) {\n return state + ` (${nAyes})`;\n }\n }\n\n return state;\n};\n\nconst ProposalsTable = ({ data, loading, header, footer }) => {\n const history = useHistory();\n const symbol = useSelector(chainSymbolSelector);\n const [isBeneficiary, setIsBeneficiary] = useState(true);\n\n const onClickRow = (proposalIndex) => {\n if (window.innerWidth < 1140) {\n history.push(`/proposals/${proposalIndex}`);\n }\n };\n\n return (\n \n {header}\n \n \n \n \n \n \n Index\n Propose time\n \n setIsBeneficiary(!isBeneficiary)}\n >\n {isBeneficiary ? \"Beneficiary\" : \"Proposer\"}\n \n \n Curator\n Description\n Related links\n Value\n \n Status\n \n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n onClickRow(item.proposalIndex)}\n >\n \n {`#${item.proposalIndex}`}\n \n \n \n \n {dayjs(parseInt(item.proposeTime)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n )}\n \n \n \n \n \n \n \n {isBeneficiary ? (\n \n }\n />\n ) : (\n \n }\n />\n )}\n \n \n {item.curator && }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default ProposalsTable;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport Text from \"./Text\";\nimport { PRIMARY_THEME_COLOR, SECONDARY_THEME_COLOR } from \"../constants\";\n\nconst CircleWrapper = styled.div`\n position: relative;\n width: 56px;\n height: 56px;\n`;\n\nconst BackCircle = styled.div`\n position: absolute;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n border: 8px solid ${SECONDARY_THEME_COLOR};\n background: white;\n`;\n\nconst InnerCircleWrapper = styled.div`\n position: absolute;\n width: 56px;\n height: 56px;\n`;\n\nconst InnerCircle = styled.div`\n position: absolute;\n width: 54px;\n height: 54px;\n left: 1px;\n top: 1px;\n background: white;\n border-radius: 50%;\n border: 7px solid ${PRIMARY_THEME_COLOR};\n`;\n\nconst InnerCircleLeft = styled(InnerCircle)`\n clip-path: polygon(0px 0px, 50% 0px, 50% 100%, 0 100%);\n transform: rotate(${(p) => p.turn}turn);\n`;\nconst InnerCircleRight = styled(InnerCircle)`\n clip-path: polygon(50% 0px, 101% 0px, 101% 100%, 50% 100%);\n visibility: ${(p) => (p.overHalf ? \"visible\" : \"hidden\")};\n`;\n\nconst InnerCircleMaskLeft = styled(BackCircle)`\n clip-path: polygon(0px 0px, 50% 0px, 50% 100%, 0 100%);\n visibility: ${(p) => (p.overHalf ? \"hidden\" : \"visible\")};\n`;\n\nconst InnerCircleMaskRight = styled(BackCircle)`\n clip-path: polygon(52% 0px, 100% 0px, 100% 100%, 52% 100%);\n visibility: ${(p) => (p.overHalf ? \"visible\" : \"hidden\")};\n`;\n\nconst PercentLable = styled(Text)`\n position: absolute;\n transform: translate(-50%, -50%);\n top: 50%;\n left: 50%;\n font-size: 12px;\n`;\n\nconst CountDown = ({ percent = 0 }) => {\n let percentInt = parseInt(percent);\n if (isNaN(percentInt) || percentInt < 0) {\n percentInt = 0;\n }\n let turn = percentInt / 100;\n if (percentInt > 100) {\n turn = 1;\n }\n const overHalf = percentInt > 50;\n return (\n \n \n \n \n \n \n \n \n {`${percentInt}%`}\n \n );\n};\n\nexport default CountDown;\n","export const mrgap = (gap) => (\n `\n & > :not(:first-child):not(:last-child) {\n margin-left: calc(${gap} / 2);\n margin-right: calc(${gap} / 2);\n }\n & > :first-child {\n margin-right: calc(${gap} / 2);\n }\n & > :last-child {\n margin-left: calc(${gap} / 2);\n }\n `\n)\n","import React, { Fragment } from 'react'\nimport styled, { css } from \"styled-components\";\nimport { normalizeTimeDuration } from \"../utils\";\nimport { mrgap } from \"../styles\";\n\nconst DefaultValueWrapper = Fragment;\n\nconst DefaultUnitWrapper = Fragment;\n\nconst DefaultSectionWrapper = styled.span`\n`\nconst DefaultTimeWrapper = styled.div`\n display: flex;\n ${css`${mrgap(\"4px\")}`}\n`\nconst defaultUnitMapper = { y: \"y\", mon: \"mon\", d: \"d\", h: \"h\", min: \"min\", s: \"s\" };\n\nexport default function TimePeriod({\n time,\n maxSection = 2,\n ValueWrapper = DefaultValueWrapper,\n UnitWrapper = DefaultUnitWrapper,\n SectionWrapper = DefaultSectionWrapper,\n TimeWrapper = DefaultTimeWrapper,\n unitMapper = {},\n pluralUnitMapper = {}\n}) {\n unitMapper = Object.assign({}, defaultUnitMapper, unitMapper)\n const nornalizedTime = normalizeTimeDuration(time, maxSection);\n return (\n \n {nornalizedTime.map(sec =>\n \n {sec[0]}\n {(sec[0] > 1 && pluralUnitMapper[sec[1]]) || unitMapper[sec[1]]}\n \n )}\n \n )\n}\n","import React, { useEffect, useState } from \"react\";\nimport TimePeriod from \"./TimePeriod\";\nimport { estimateBlocksTime } from \"../services/chainApi\";\nimport { useIsMounted } from \"../utils/hooks\";\n\nexport default function BlocksTimeDefaultUnit({ blocks, ...others }) {\n const [time, setTime] = useState(0);\n const isMounted = useIsMounted();\n\n useEffect(() => {\n estimateBlocksTime(blocks).then((blocksTime) => {\n if (isMounted.current) {\n setTime(blocksTime);\n }\n });\n }, [blocks, isMounted]);\n\n return ;\n}\n","import React from \"react\";\nimport BlocksTimeDefaultUnit from \"./BlocksTimeDefaultUnit\";\n\nexport default function BlocksTime({\n blocks,\n unitMapper = {},\n pluralUnitMapper = {},\n ...others\n}) {\n return (\n \n );\n}\n","import React, { Fragment, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport styled, { css } from \"styled-components\";\n\nimport Text from \"../../components/Text\";\nimport TextMinor from \"../../components/TextMinor\";\nimport CountDown from \"../../components/CountDown\";\nimport BlocksTime from \"../../components/BlocksTime\";\nimport { mrgap } from \"../../styles\";\nimport Card from \"../../components/Card\";\n\nimport { fetchProposalsSummary, proposalSummarySelector, } from \"../../store/reducers/proposalSlice\";\nimport {\n chainSymbolSelector,\n fetchSpendPeriod,\n spendPeriodSelector,\n} from \"../../store/reducers/chainSlice\";\nimport { fetchTreasury, treasurySelector, } from \"../../store/reducers/burntSlice\";\nimport { abbreviateBigNumber } from \"../../utils\";\nimport { TEXT_DARK_ACCESSORY } from \"../../constants\";\n\nconst Wrapper = styled(Card)`\n position: relative;\n padding: 16px 20px 8px;\n border-radius: 8px;\n margin-bottom: 16px;\n display: flex;\n align-items: center;\n & > div {\n margin-bottom: 8px;\n }\n justify-content: space-between;\n flex-wrap: wrap;\n`;\n\nconst Item = styled.div`\n min-width: 120px;\n \n &.absolute {\n position: absolute;\n right: 24px;\n }\n &.grow {}\n &.countdown {\n min-width: 0;\n }\n &.right {\n text-align: right;\n }\n &.available,\n &.next-burn {\n min-width: 160px;\n }\n &.spend-period {\n min-width: 180px;\n }\n\n @media screen and (max-width: 1140px) {\n &.countdown {\n display: none;\n }\n &.right {\n text-align: left;\n }\n &.available,\n &.next-burn {\n min-width: 120px;\n }\n &.spend-period {\n min-width: 120px;\n }\n & > div:last-child {\n justify-content: flex-start;\n }\n }\n`;\n\nconst Title = styled(TextMinor)`\n line-height: 24px;\n color: ${TEXT_DARK_ACCESSORY} !important;\n`;\n\nconst Value = styled(Text)`\n line-height: 32px;\n font-weight: bold;\n font-size: 18px;\n`;\n\nconst Unit = styled(TextMinor)`\n line-height: 32px;\n font-weight: bold;\n font-size: 18px;\n`;\n\nconst ValueWrapper = styled.div`\n display: flex;\n ${css`\n ${mrgap(\"4px\")}\n `}\n`;\n\nconst Summary = () => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(fetchProposalsSummary());\n dispatch(fetchSpendPeriod());\n dispatch(fetchTreasury());\n }, [dispatch]);\n\n const summary = useSelector(proposalSummarySelector);\n const spendPeriod = useSelector(spendPeriodSelector);\n const treasury = useSelector(treasurySelector);\n const symbol = useSelector(chainSymbolSelector);\n\n return (\n \n \n Ongoing\n {summary.numOfOngoing}\n \n \n Approved\n {summary.numOfApproved}\n \n \n Awarded\n {summary.numOfAwarded}\n \n \n Total\n {summary.total}\n \n \n Available\n \n {abbreviateBigNumber(treasury.free, 2)}\n {symbol}\n \n \n \n Next burn\n \n \n {abbreviateBigNumber(treasury.burnPercent * treasury.free, 4)}\n \n {symbol}\n \n \n \n Spend period\n \n \n \n \n \n \n );\n};\n\nexport default Summary;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\nimport { Form } from \"semantic-ui-react\";\n\nimport Select from \"../../components/Select\";\n\nconst FormWrapper = styled(Form)`\n display: flex;\n justify-content: flex-end;\n`;\nconst StatusSelect = styled(Select)`\n width: 145px;\n`;\n\nconst statusOptions = [\n { key: \"all\", value: \"-1\", text: \"All status\" },\n ...[\n \"Awarded\",\n \"Proposed\",\n \"Approved\",\n \"Rejected\",\n \"ApproveVoting\",\n \"RejectVoting\",\n ].map((item) => ({\n key: item,\n value: item,\n text: item,\n })),\n];\n\nconst Filter = ({ query }) => {\n const [status, setStatus] = useState(\"\");\n\n // only query on filters change\n const mounting = useRef(true);\n useEffect(() => {\n if (mounting.current) {\n mounting.current = false;\n return;\n }\n const data = {\n status,\n };\n for (let key in data) {\n if (data[key] === \"\" || data[key] === \"-1\") {\n delete data[key];\n }\n }\n query(data);\n }, [status, query]);\n\n return (\n \n setStatus(value)}\n />\n \n );\n};\n\nexport default Filter;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { useHistory } from \"react-router\";\n\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport ProposalsTable from \"./ProposalsTable\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport Summary from \"./Summary\";\nimport Filter from \"./Filter\";\n\nimport {\n fetchProposals,\n loadingSelector,\n proposalListSelector,\n} from \"../../store/reducers/proposalSlice\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst Proposals = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"proposalsPageSize\",\n DEFAULT_PAGE_SIZE\n );\n const [filterData, setFilterData] = useState({});\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: proposals, total } = useSelector(proposalListSelector);\n const loading = useSelector(loadingSelector);\n\n useEffect(() => {\n dispatch(fetchProposals(tablePage - 1, pageSize, filterData));\n }, [dispatch, tablePage, pageSize, filterData]);\n\n const totalPages = Math.ceil(total / pageSize);\n\n const filterQuery = useCallback((data) => {\n setFilterData(data);\n setTablePage(1);\n }, []);\n\n return (\n <>\n \n \n Proposals\n \n \n }\n data={proposals}\n loading={loading}\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n \n );\n};\n\nexport default Proposals;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { NavLink, useHistory } from \"react-router-dom\";\nimport dayjs from \"dayjs\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport RightButton from \"../../components/RightButton\";\nimport Text from \"../../components/Text\";\nimport TextMinor from \"../../components/TextMinor\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport { useSelector } from \"react-redux\";\nimport { chainSymbolSelector } from \"../../store/reducers/chainSlice\";\nimport Card from \"../../components/Card\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst ProposeTimeWrapper = styled.div`\n display: flex;\n align-items: center;\n p:first-child {\n min-width: 154px;\n }\n`;\n\nconst CapText = styled(Text)`\n text-transform: capitalize;\n`;\n\nconst TableRow = styled(Table.Row)`\n height: 50px;\n`;\n\nconst BountiesTable = ({ data, loading, header, footer }) => {\n const history = useHistory();\n const symbol = useSelector(chainSymbolSelector);\n\n const onClickRow = (bountyIndex) => {\n if (window.innerWidth < 1140) {\n history.push(`/bounties/${bountyIndex}`);\n }\n };\n\n return (\n \n {header}\n \n \n \n \n \n \n Index\n Propose Time\n Curator\n Title\n Value\n \n Status\n \n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n onClickRow(item.bountyIndex)}\n >\n \n {`#${item.bountyIndex}`}\n \n \n \n \n {dayjs(parseInt(item.proposeTime)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n )}\n \n \n \n \n \n \n \n {item.curator ? : \"--\"}\n \n \n {item.title}\n \n \n \n \n \n {item.state?.state}\n \n \n \n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default BountiesTable;\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport BountiesTable from \"./BountiesTable\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport { useHistory } from \"react-router\";\n\nimport {\n fetchBounties,\n loadingSelector,\n bountyListSelector,\n} from \"../../store/reducers/bountySlice\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst Bounties = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"bountiesPageSize\",\n DEFAULT_PAGE_SIZE\n );\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: bounties, total } = useSelector(bountyListSelector);\n const loading = useSelector(loadingSelector);\n\n useEffect(() => {\n dispatch(fetchBounties(tablePage - 1, pageSize));\n }, [dispatch, tablePage, pageSize]);\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <>\n \n Bounties\n \n }\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n \n );\n};\n\nexport default Bounties;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n & > div:first-child {\n font-family: \"Inter\";\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 24px;\n color: rgba(0, 0, 0, 0.65);\n width: 440px;\n flex: 0 1 auto;\n }\n & > div:last-child {\n flex: 1;\n }\n @media screen and (max-width: 1140px) {\n flex-direction: column;\n align-items: stretch;\n & > div:first-child {\n width: 100%;\n }\n }\n`;\n\nconst TableCell = ({ title, children, justify = \"end\" }) => {\n return (\n \n
{title}
\n
{children}
\n
\n );\n};\n\nexport default TableCell;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport Table from \"../../components/Table\";\nimport TableCell from \"../../components/TableCell\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport { TipStatus } from \"../../constants\";\nimport TableLoading from \"../../components/TableLoading\";\nimport ClickableLink from \"../../components/ClickableLink\";\n\nimport {\n normalizedTipDetailSelector,\n tipFindersFeeSelector,\n} from \"../../store/reducers/tipSlice\";\nimport { linksSelector } from \"../../store/reducers/linkSlice\";\n\nconst InformationTable = ({ loading }) => {\n const tipDetail = useSelector(normalizedTipDetailSelector);\n const links = useSelector(linksSelector);\n const tipFindersFee = useSelector(tipFindersFeeSelector);\n const findersFee =\n tipDetail?.timeline?.[0]?.method === \"tipNew\" ||\n tipDetail?.timeline?.[0]?.extrinsic?.name === \"tipNew\"\n ? 0\n : `${(tipFindersFee ?? 0).toFixed(2)}%`;\n\n return (\n \n \n \n \n Information\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {tipDetail.showStatus === TipStatus.Retracted ? (\n \"--\"\n ) : (\n \n )}\n \n \n \n \n \n \n
{findersFee}
\n
\n
\n
\n \n \n \n {tipDetail.reason}\n \n \n \n
\n
\n
\n );\n};\n\nexport default InformationTable;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport { PRIMARY_THEME_COLOR } from \"../../constants\";\n\nconst Wrapper = styled.div`\n width: 24px;\n height: 24px;\n padding: 6px;\n div {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n border: 3px solid ${PRIMARY_THEME_COLOR};\n border-radius: 50%;\n }\n flex: 0 0 auto;\n`;\n\nconst Circle = () => {\n return (\n <>\n \n
\n \n \n );\n};\n\nexport default Circle;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { stringCamlToWords } from \"../../utils\";\n\nimport { PRIMARY_THEME_COLOR, SECONDARY_THEME_COLOR } from \"../../constants\";\n\nconst Wrapper = styled.div`\n display: flex;\n white-space: nowrap;\n`;\n\nconst TipLabel = styled.span`\n background: ${SECONDARY_THEME_COLOR};\n padding: 2px 12px;\n border-radius: 4px;\n font-family: \"Inter\";\n font-size: 12px;\n line-height: 20px;\n color: ${PRIMARY_THEME_COLOR};\n`;\n\nconst Label = ({ text }) => {\n return (\n \n {stringCamlToWords(text)}\n \n );\n};\n\nexport default Label;\n","import styled from \"styled-components\";\n\nimport {PRIMARY_THEME_COLOR} from \"../../constants\"\n\nconst Bar = styled.div`\n width: 2px;\n margin: 0 11px;\n background: ${PRIMARY_THEME_COLOR};\n opacity: 0.5;\n flex: 0 0 auto;\n`;\n\nexport default Bar;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { TEXT_DARK_MAJOR, TEXT_DARK_MINOR } from \"../../constants\";\nimport { mrgap } from \"../../styles\";\n\nconst Wrapper = styled.div`\n display: flex;\n padding: 4px 0;\n align-items: center;\n ${css`\n ${mrgap(\"8px\")}\n `}\n flex-wrap: wrap;\n & > .title {\n width: 120px;\n color: ${TEXT_DARK_MAJOR};\n font-weight: 500;\n line-height: 24px;\n flex-shrink: 0;\n }\n & > .value {\n flex: 1 1 auto;\n color: ${TEXT_DARK_MINOR};\n word-break: break-word;\n :not(:first-child) > * {\n align-items: flex-start;\n }\n }\n`;\n\nconst CardItem = ({ title, children }) => {\n return (\n \n {title &&
{title}
}\n
{children}
\n
\n );\n};\n\nexport default CardItem;\n","import styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nconst GrayImage = styled(Image)`\n -webkit-filter: grayscale(1);\n filter: grayscale(1);\n opacity: 0.5;\n`;\n\nexport default GrayImage;\n","import styled from \"styled-components\";\n\nimport GrayImage from \"../../components/GrayImage\";\n\nconst ImageButton = styled(GrayImage)`\n size: 22px;\n border-radius: 50%;\n\n &:hover {\n cursor: pointer;\n -webkit-filter: grayscale(0);\n filter: grayscale(0);\n opacity: 1;\n }\n`;\n\nexport default ImageButton;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport ImageButton from \"./ImageButton\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport { mrgap } from \"../../styles\";\nimport { useSelector } from \"react-redux\";\nimport { chainSelector } from \"../../store/reducers/chainSlice\";\n\nconst Wrapper = styled.div`\n margin-top: 8px;\n display: flex;\n ${css`\n ${mrgap(\"8px\")}\n `}\n`;\n\nconst ButtonList = ({ extrinsicIndexer, eventIndexer }) => {\n const chain = useSelector(chainSelector);\n\n const blockHeight = (extrinsicIndexer || eventIndexer)?.blockHeight;\n const extrinsicIndex =\n (extrinsicIndexer || eventIndexer)?.extrinsicIndex || 0;\n const eventSort = eventIndexer?.eventIndex;\n\n const isExtrinsic = !!extrinsicIndexer;\n const subscanLink = isExtrinsic\n ? `extrinsic/${blockHeight}-${extrinsicIndex}`\n : `extrinsic/${blockHeight}-${extrinsicIndex}?event=${blockHeight}-${eventSort}`;\n\n return (\n \n \n \n \n \n );\n};\n\nexport default ButtonList;\n","import React, { memo } from 'react'\nimport dayjs from 'dayjs'\n\nexport default memo(function DateShow(props) {\n const { value, className, style, format = 'YYYY-MM-DD HH:mm:ss' } = props\n\n const nValue = parseInt(value);\n\n return (\n \n {nValue ? dayjs(nValue).format(format) : \"\"}\n \n )\n})\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport Circle from \"./Circle\";\nimport Label from \"./Label\";\nimport Bar from \"./Bar\";\n\nimport CardItem from \"./CardItem\";\nimport ButtonList from \"./ButtonList\";\nimport DateShow from \"../../components/DateShow\";\nimport TextMinor from \"../../components/TextMinor\";\nimport { mrgap } from \"../../styles\";\n\nconst Wrapper = styled.div`\n &:last-child .bar {\n visibility: hidden;\n }\n`;\n\nconst FlexWrapper = styled.div`\n display: flex;\n ${css`\n ${mrgap(\"12px\")}\n `}\n & > div:last-child {\n flex-grow: 1;\n }\n`;\n\nconst VerticalWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: stretch;\n & > div:last-child {\n flex-grow: 1;\n }\n`;\n\nconst TimeLableWrapper = styled.div`\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n`;\n\nconst CardWrapper = styled.div`\n flex-grow: 1;\n margin: 8px 0 32px;\n`;\n\nconst UnfoldButton = styled.img`\n cursor: pointer;\n display: none;\n ${(p) =>\n p.isUnfold &&\n css`\n transform: rotate(0.5turn);\n `}\n`;\n\nconst TextMinorWrapper = styled(TextMinor)`\n white-space: nowrap;\n`;\n\nconst Item = ({\n data,\n onUnfoldBtnClick,\n isUnfold,\n hideButtonList = false,\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {data.fields.map(({ title, value }, index) => (\n \n {value}\n \n ))}\n {!hideButtonList && (\n \n )}\n \n \n \n \n );\n};\n\nexport default Item;\n","import React, { useState, useEffect } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport Circle from \"./Circle\";\nimport Bar from \"./Bar\";\nimport Item from \"./Item\";\nimport { PRIMARY_THEME_COLOR } from \"../../constants\";\nimport { getBlockTime } from \"../../services/chainApi\";\nimport { useIsMounted } from \"../../utils/hooks\";\n\nconst Wrapper = styled.div`\n display: flex;\n &:last-child {\n .bar {\n ${(p) =>\n !p.isUnfold &&\n css`\n visibility: hidden;\n `}\n }\n }\n`;\n\nconst FlexWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst VerticalWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: stretch;\n & > div:last-child {\n flex-grow: 1;\n }\n`;\n\nconst HorizontalBar = styled(Bar)`\n height: 2px;\n width: 8px;\n margin: 11px 0;\n`;\n\nconst VerticalBar = styled(Bar)`\n height: 100%;\n background-color: ${(p) => (p.isUnfold ? \"#FFE1E7\" : PRIMARY_THEME_COLOR)};\n opacity: ${(p) => (p.isUnfold ? \"1\" : \"0.5\")};\n`;\n\nconst ItemWrapper = styled.div`\n flex-grow: 1;\n & > div:first-child .unfold-btn {\n display: block;\n }\n\n ${(p) =>\n !p.isUnfold &&\n css`\n & > div:not(:first-child) {\n display: none;\n }\n & > div:first-child .bar {\n visibility: hidden;\n }\n `}\n`;\n\nconst FoldableItem = ({ data, defaultUnfold, expired, end }) => {\n const [isUnfold, setIsUnfold] = useState(defaultUnfold || false);\n const [expiredTime, setExpiredTime] = useState(0);\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (expired && end) {\n const getTime = async () => {\n const time = await getBlockTime(end);\n if (isMounted.current) {\n setExpiredTime(time);\n }\n };\n getTime();\n }\n }, [expired, end, isMounted]);\n\n if (!data || data.length === 0) return null;\n\n const onUnfoldBtnClick = () => {\n setIsUnfold(!isUnfold);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {(data || []).map((item, index) => (\n \n ))}\n {expired && (\n \n )}\n \n \n );\n};\n\nexport default FoldableItem;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Item from \"./Item\";\nimport FoldableItem from \"./FoldableItem\";\nimport Card from \"../../components/Card\";\n\nconst Wrapper = styled(Card)`\n max-width: 100%;\n padding: 20px 24px;\n`;\n\nconst Header = styled.div`\n padding-bottom: 24px;\n font-weight: bold;\n font-size: 16px;\n line-height: 24px;\n color: rgba(0, 0, 0, 0.9);\n`;\n\nconst LoadingWrapper = styled.div`\n height: 100px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst Timeline = ({ data, loading }) => {\n return (\n
\n \n
Timeline
\n {(loading && (\n \n \n \n )) || (\n <>\n {(data || []).map((item, index) =>\n item.subTimeline ? (\n \n ) : (\n \n )\n )}\n \n )}\n
\n
\n );\n};\n\nexport default Timeline;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\nimport ExternalLink from \"./ExternalLink\";\n\nimport Table from \"../components/Table\";\nimport TextMinor from \"./TextMinor\";\nimport { getLinkNameAndSrc } from \"../utils\";\n\nconst FlexWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst LinkWrapper = styled.div`\n display: flex;\n align-items: center;\n width: 440px;\n > :not(:first-child) {\n margin-left: 8px;\n }\n @media screen and (max-width: 1140px) {\n width: 100%;\n }\n`;\n\nconst LinkText = styled(TextMinor)`\n word-break: break-word;\n cursor: pointer;\n line-height: 24px;\n color: #086de3;\n &:hover {\n text-decoration-line: underline;\n }\n`;\n\nconst Link = ({ link, text, button }) => {\n const [name, src] = getLinkNameAndSrc(link);\n\n return (\n \n \n \n \n \n {name}\n {button}\n \n \n {text}\n \n \n \n \n );\n};\n\nexport default Link;\n","import styled from \"styled-components\";\n\nconst Divider = styled.div`\n border-top: 1px solid #EEE;\n`\n\nexport default Divider;\n","import React, { useState } from \"react\";\nimport useDeepCompareEffect from \"use-deep-compare-effect\";\nimport styled from \"styled-components\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Button, Icon, Modal, Form } from \"semantic-ui-react\";\nimport queryString from \"query-string\";\nimport { useLocation } from \"react-router-dom\";\n\nimport LinkItem from \"../../components/LinkItem\";\nimport {\n setLinks,\n fetchLinks,\n linksSelector,\n addLink,\n removeLink,\n} from \"../../store/reducers/linkSlice\";\nimport { nowAddressSelector } from \"../../store/reducers/accountSlice\";\nimport Divider from \"../../components/Divider\";\nimport Table from \"../../components/Table\";\n\nconst Wrapper = styled.div`\n table {\n margin-bottom: 0 !important;\n }\n`;\n\nconst LinkWrapper = styled.div`\n display: flex;\n & > :first-child:not(:last-child) {\n margin-right: 10px;\n }\n`;\n\nconst IconButton = styled(Icon)`\n margin-left: 6px !important;\n cursor: pointer;\n`;\n\nconst DividerWrapper = styled(Divider)`\n border-top: 1px solid #eeeeee !important;\n`;\n\nconst RelatedLinks = ({ type, index }) => {\n const dispatch = useDispatch();\n const location = useLocation();\n\n useDeepCompareEffect(() => {\n if (index) {\n dispatch(fetchLinks(type, index));\n }\n return () => {\n dispatch(setLinks([]));\n };\n }, [dispatch, type, index]);\n\n const links = useSelector(linksSelector);\n const nowAddress = useSelector(nowAddressSelector);\n\n const [openAddLinkModal, setOpenAddLinkModal] = useState(false);\n const [openRemoveLinkModal, setOpenRemoveLinkModal] = useState(false);\n const [link, setLink] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [linkIndex, setLinkIndex] = useState(null);\n\n const addRelatedLink = async (link, description) => {\n setOpenAddLinkModal(false);\n dispatch(addLink(type, index, link, description, nowAddress));\n };\n\n const removeRelatedLink = async (linkIndex) => {\n setOpenRemoveLinkModal(false);\n dispatch(removeLink(type, index, linkIndex, nowAddress));\n };\n\n const q = queryString.parse(location.search);\n const isAdmin = q.admin === \"true\";\n\n if (isAdmin || (links && links.length > 0)) {\n return (\n \n \n \n \n \n Related Links\n {isAdmin && (\n setOpenAddLinkModal(true)}\n />\n )}\n \n \n \n \n {links.map((link, linkIndex) => (\n \n {isAdmin && (\n {\n setLinkIndex(linkIndex);\n setOpenRemoveLinkModal(true);\n }}\n />\n )}\n \n }\n />\n ))}\n \n
\n setOpenAddLinkModal(false)}\n >\n Add Link\n \n
\n setLink(value)}\n />\n setDescription(value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n addRelatedLink(link, description);\n }\n }}\n />\n \n
\n \n \n \n \n \n setOpenRemoveLinkModal(false)}\n >\n Remove Link\n Are you sure want to remove this link?\n \n \n \n \n \n \n
\n );\n } else {\n return null;\n }\n};\n\nexport default RelatedLinks;\n","import styled from \"styled-components\";\nimport { Progress } from \"semantic-ui-react\";\n\nimport { PRIMARY_THEME_COLOR, SECONDARY_THEME_COLOR } from \"../constants\";\n\nconst CustomProgress = styled(Progress)`\n min-width: 200px;\n height: 6px;\n margin: 0 !important;\n background: ${SECONDARY_THEME_COLOR} !important;\n border-radius: 4px !important;\n flex: 1 1 auto !important;\n .bar {\n height: inherit !important;\n background: ${PRIMARY_THEME_COLOR} !important;\n border-radius: 4px !important;\n min-width: 0 !important;\n }\n`;\n\nexport default CustomProgress;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst Wrapper = styled.div`\n text-align: right;\n span {\n margin-left: 8px;\n color: rgba(29, 37, 60, 0.64);\n }\n`;\n\nconst TipCountDownLabel = ({ scanHeight, closes }) => {\n return (\n \n {scanHeight > closes ? closes : `${scanHeight}/${closes}`}\n \n );\n};\n\nexport default TipCountDownLabel;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { mrgap } from \"../styles\";\nimport { PRIMARY_THEME_COLOR, SECONDARY_THEME_COLOR } from \"../constants\";\n\nconst getCurrent = (current) => {\n let str = \"\";\n [...Array(current).keys()].map(\n (item) =>\n (str += `\n div:nth-child(${item + 1}) {\n background: ${PRIMARY_THEME_COLOR};\n }\n `)\n );\n return str;\n};\n\nconst Wrapper = styled.div`\n flex-grow: 1;\n min-width: 200px;\n height: 6px;\n display: flex;\n ${css`\n ${mrgap(\"4px\")}\n `}\n align-items: center;\n div:first-child {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n }\n div:last-child {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n }\n ${(p) => getCurrent(p.current)}\n`;\n\nconst ProgressItem = styled.div`\n background: ${SECONDARY_THEME_COLOR};\n flex: 1 1;\n height: 6px;\n`;\n\nconst TippersProgress = ({ current, total }) => {\n if (!total || isNaN(total)) return null;\n const progress = [...Array(total).keys()].map((item) => (\n \n ));\n return {progress};\n};\n\nexport default TippersProgress;\n","import React from \"react\";\nimport TimePeriod from \"./TimePeriod\";\nimport dayjs from 'dayjs'\n\nexport default function TimeElapsed({ from }) {\n if (from) {\n const nFrom = parseInt(from);\n return ;\n }\n\n return
;\n}\n","import styled from \"styled-components\";\n\nconst Label = styled.span`\n font-family: \"Inter\";\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 24px;\n color: rgba(29, 37, 60, 0.64);\n`;\n\nexport default Label;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\nimport Label from \"./Label\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n img {\n margin-right: 4px;\n }\n`;\n\nconst TimeLabel = ({ value }) => {\n return (\n \n \n \n \n );\n};\n\nexport default TimeLabel;\n","import React from \"react\";\nimport TimeElapsed from \"./TimeElapsed\";\nimport TimeLabel from \"./TimeLabel\";\n\nconst ElapsedTimeLabel = ({ time }) => {\n return (\n } />\n );\n};\n\nexport default ElapsedTimeLabel;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { useSelector } from \"react-redux\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport TableCell from \"../../components/TableCell\";\nimport Progress from \"../../components/Progress\";\nimport TipCountDownLabel from \"./TipCountDownLabel\";\nimport BarProgress from \"../../components/BarProgress\";\nimport ElapsedTimeLabel from \"../../components/ElapsedTimeLabel\";\nimport DateShow from \"../../components/DateShow\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\n\nimport {\n normalizedTipDetailSelector,\n tipCountdownSelector,\n} from \"../../store/reducers/tipSlice\";\nimport { scanHeightSelector } from \"../../store/reducers/chainSlice\";\n\nconst FlexWrapper = styled.div`\n display: flex;\n align-items: center;\n > :not(:first-child) {\n margin-left: 16px;\n }\n`;\n\nconst BarWrapper = styled.div`\n max-width: 312px;\n flex: 1 1;\n`;\n\nconst TippersLabel = styled.div`\n text-align: right;\n color: rgba(29, 37, 60, 0.64);\n`;\n\nconst TipLifeCycleTable = ({ loading }) => {\n const tipDetail = useSelector(normalizedTipDetailSelector);\n const tipCountdown = useSelector(tipCountdownSelector);\n const scanHeight = useSelector(scanHeightSelector);\n const tippersCount = tipDetail.tippersCount;\n\n const begin = tipDetail.closeFromBlockHeight - tipCountdown;\n const goneBlocks = Math.max(scanHeight - begin, 0);\n const percentage = goneBlocks > tipCountdown ? 1 : goneBlocks / tipCountdown;\n\n const thresholdTotalCount = tippersCount ? (tippersCount + 1) / 2 : 0;\n\n return (\n \n \n \n \n Tip Life Cycle\n \n \n \n \n \n \n \n
\n \n
\n \n \n \n
\n
\n
\n
\n \n \n \n \n
{tipDetail.showStatus}
\n \n
\n
\n
\n
\n \n \n \n \n \n \n \n \n {tipDetail.tipsCount}/{thresholdTotalCount}\n \n \n \n \n \n \n \n \n {tipDetail.closeFromBlockHeight ? (\n \n \n \n \n \n \n ) : (\n \n \n \n \n \n \n )}\n \n \n \n
\n
\n
\n );\n};\n\nexport default TipLifeCycleTable;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n`\n\nconst Funer = ({address, value}) => {\n return (\n \n \n \n \n )\n}\n\nexport default Funer;\n","import styled from \"styled-components\";\n\nconst TimelineCommentWrapper = styled.div`\n margin-top: 24px;\n min-height: 0;\n`;\n\nexport default TimelineCommentWrapper;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport Card from \"./Card\";\n\nconst CustomCard = styled(Card)`\n padding: 0;\n table {\n border: 0 !important;\n border-radius: 0 !important;\n }\n overflow: hidden;\n @media screen and (max-width: 600px) {\n overflow: visible;\n }\n`;\n\nconst TitleWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n align-items: center;\n`;\n\nconst Title = styled.div`\n font-weight: bold;\n font-size: 16px;\n line-height: 24px;\n color: rgba(0, 0, 0, 0.9);\n`;\n\nconst Desc = styled.div`\n font-weight: 600;\n font-size: 16px;\n line-height: 24px;\n color: rgba(0, 0, 0, 0.3);\n margin-left: 8px;\n`;\n\nexport default function DetailTableWrapper({ title, desc, children }) {\n return (\n \n \n {title}\n {desc && {desc}}\n \n {children}\n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\nimport {\n setTipDetail,\n fetchTipCountdown,\n fetchTipDetail,\n loadingTipDetailSelector,\n tipDetailSelector,\n} from \"../../store/reducers/tipSlice\";\nimport { linksSelector, TipIndex } from \"../../store/reducers/linkSlice\";\n\nimport InformationTable from \"./InformationTable\";\nimport Timeline from \"../Timeline\";\nimport RelatedLinks from \"../RelatedLinks\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport TipLifeCycleTable from \"./TipLifeCycleTable\";\nimport Funder from \"./Funder\";\nimport ClickableLink from \"../../components/ClickableLink\";\nimport TimelineCommentWrapper from \"../../components/TimelineCommentWrapper\";\nimport DetailTableWrapper from \"../../components/DetailTableWrapper\";\n\nfunction processTimeline(tipDetail, links) {\n return (tipDetail.timeline || []).map((timelineItem) => {\n let fields = [];\n\n if (timelineItem.method === \"reportAwesome\") {\n const { reason, beneficiary, finder } = timelineItem.args;\n // const reasonText = hexToString(reason);\n fields = [\n {\n title: \"Finder\",\n value: ,\n },\n {\n title: \"Beneficiary\",\n value: ,\n },\n {\n title: \"Reason\",\n value: {reason},\n },\n ];\n } else if (timelineItem.method === \"tipNew\") {\n const {\n tip_value: tipValue,\n beneficiary,\n reason: reasonText,\n finder,\n } = timelineItem.args;\n fields = [\n {\n title: \"Funder\",\n value: ,\n },\n {\n title: \"Beneficiary\",\n value: ,\n },\n {\n title: \"Tip value\",\n value: (\n \n ),\n },\n {\n title: \"Reason\",\n value: {reasonText},\n },\n ];\n } else if (timelineItem.method === \"tip\") {\n const { value: tipValue, tipper: funder } = timelineItem.args;\n fields = [\n {\n value: ,\n },\n ];\n } else if (timelineItem.method === \"closeTip\") {\n const who = timelineItem.args.terminator;\n fields = [\n {\n title: \"Closed by\",\n value: ,\n },\n {\n title: \"Beneficiary\",\n value: ,\n },\n {\n title: \"Final tip value\",\n value: (\n \n ),\n },\n ];\n } else if (timelineItem.method === \"retractTip\") {\n const who = timelineItem.args.terminator;\n fields = [\n {\n title: \"Retracted by\",\n value: ,\n },\n ];\n }\n\n return {\n extrinsicIndexer: timelineItem.indexer,\n name: timelineItem.method,\n fields,\n };\n });\n}\n\nconst TipDetail = () => {\n const { tipId } = useParams();\n const dispatch = useDispatch();\n const [timelineData, setTimelineData] = useState([]);\n\n useEffect(() => {\n dispatch(fetchTipDetail(tipId));\n dispatch(fetchTipCountdown());\n return () => {\n dispatch(setTipDetail({}));\n };\n }, [dispatch, tipId]);\n\n const tipDetail = useSelector(tipDetailSelector);\n const loadingTipDetail = useSelector(loadingTipDetailSelector);\n\n const links = useSelector(linksSelector);\n\n const getShortTipId = (tipDetail) => {\n if (!tipDetail.hash) return \"\";\n return `${tipDetail.proposeAtBlockHeight}_${tipDetail.hash.slice(\n 0,\n 4\n )}...${tipDetail.hash.slice(tipDetail.hash.length - 4)}`;\n };\n\n const getTipIndex = (tipDetail) => {\n if (!tipDetail.hash) return null;\n return new TipIndex(`${tipDetail.proposeAtBlockHeight}_${tipDetail.hash}`);\n };\n\n useEffect(() => {\n setTimelineData(processTimeline(tipDetail, links));\n }, [tipDetail, links]);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default TipDetail;\n","import React, { useEffect, useState } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { Button, Icon, Modal, Form } from \"semantic-ui-react\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport TableCell from \"../../components/TableCell\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport { useIsAdmin } from \"../../utils/hooks\";\nimport { proposalDetailSelector } from \"../../store/reducers/proposalSlice\";\nimport {\n descriptionSelector,\n putDescription,\n} from \"../../store/reducers/descriptionSlice\";\nimport { nowAddressSelector } from \"../../store/reducers/accountSlice\";\n\nconst IconButton = styled(Icon)`\n margin-left: 6px !important;\n cursor: pointer;\n`;\n\nconst DescriptionWrapper = styled.div`\n overflow-wrap: break-word;\n`;\n\nconst StyledTable = styled(Table)`\n table-layout: fixed;\n`;\n\nconst InformationTable = ({ loading, proposalIndex }) => {\n const dispatch = useDispatch();\n const isAdmin = useIsAdmin();\n const proposalDetail = useSelector(proposalDetailSelector);\n const descriptionDetail = useSelector(descriptionSelector);\n const [openDesModal, setOpenDesModal] = useState(false);\n const [description, setDescription] = useState(\"\");\n const [curator, setCurator] = useState(\"\");\n const nowAddress = useSelector(nowAddressSelector);\n\n useEffect(() => {\n setDescription(descriptionDetail?.description ?? \"\");\n setCurator(descriptionDetail?.curator ?? \"\");\n }, [descriptionDetail]);\n\n const addDes = () => {\n dispatch(\n putDescription(\n \"proposal\",\n parseInt(proposalIndex),\n description,\n curator,\n nowAddress\n )\n );\n setOpenDesModal(false);\n };\n\n return (\n <>\n \n \n \n \n \n Information\n {isAdmin && (\n setOpenDesModal(!openDesModal)}\n />\n )}\n \n \n \n \n \n \n \n {`#${proposalDetail.proposalIndex}`}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {descriptionDetail.curator && }\n \n \n \n \n \n \n \n \n \n \n {descriptionDetail?.description && (\n \n \n \n \n {descriptionDetail.description}\n \n \n \n \n )}\n \n \n \n setOpenDesModal(false)}\n >\n Edit Proposal Infomation\n \n
\n setDescription(value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n addDes();\n }\n }}\n />\n setCurator(value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n addDes();\n }\n }}\n />\n \n
\n \n \n \n \n \n \n );\n};\n\nexport default InformationTable;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { useSelector } from \"react-redux\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport TableCell from \"../../components/TableCell\";\nimport DateShow from \"../../components/DateShow\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\n\nimport { proposalDetailSelector } from \"../../store/reducers/proposalSlice\";\n\nconst FlexWrapper = styled.div`\n display: flex;\n align-items: center;\n > :not(:first-child) {\n margin-left: 16px;\n }\n`;\n\nconst ProposalLifeCycleTable = ({ loading }) => {\n const proposalDetail = useSelector(proposalDetailSelector);\n\n return (\n \n \n \n \n Proposal Life Cycle\n \n \n \n \n \n \n \n
\n \n
\n \n \n \n
\n
\n
\n
\n \n \n \n \n
\n {proposalDetail.latestState?.state ||\n proposalDetail.latestState?.name}\n
\n
\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default ProposalLifeCycleTable;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nimport User from \"./User\";\nimport Text from \"./Text\";\nimport { mrgap } from \"../styles\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n`\n\nconst PassWrapper = styled.div`\n display: flex;\n align-items: center;\n word-break: normal;\n ${css`${mrgap(\"8px\")}`}\n`\n\nconst ImageWrapper = styled.div`\n width: 16px;\n height: 16px;\n`\n\nconst Voter = ({address, agree, value}) => {\n return (\n \n \n \n {value}\n {\n (agree !== null && agree !== undefined) && (\n \n \n \n )\n }\n \n \n )\n}\n\nexport default Voter;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Voter from \"./Voter\";\nimport BarProgress from \"./BarProgress\";\nimport TextMinor from \"./TextMinor\";\nimport { TEXT_DARK_MAJOR, TEXT_DARK_MINOR } from \"../constants\";\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n & > :not(:last-child) {\n margin-bottom: 8px;\n }\n`;\n\nconst BarProgressWrapper = styled.div`\n display: flex;\n flex-direction: column;\n & > :not(:last-child) {\n margin-bottom: 8px;\n }\n margin-top: 8px;\n`;\n\nconst CustomText = styled(TextMinor)`\n white-space: nowrap;\n`;\n\nconst TextWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n\nconst AyeNayWrapper = styled.div`\n display: flex;\n align-items: center;\n & > :not(:last-child) {\n margin-right: 16px;\n }\n`;\n\nconst ItemWrapper = styled.div`\n display: flex;\n align-items: center;\n & > :not(:last-child) {\n margin-right: 8px;\n }\n`;\n\nconst ProposalArgsWrapper = styled.div`\n padding: 4px 16px;\n display: flex;\n flex-direction: column;\n background-color: #fbfbfb;\n`;\n\nconst ProposalArgsItemWrapper = styled.div`\n padding: 4px 0px;\n display: flex;\n align-items: center;\n & > :not(:last-child) {\n margin-right: 8px;\n }\n flex-wrap: wrap;\n & > .title {\n width: 120px;\n color: ${TEXT_DARK_MAJOR};\n font-weight: 500;\n line-height: 24px;\n flex-shrink: 0;\n }\n & > .value {\n flex: 1 1 auto;\n color: ${TEXT_DARK_MINOR};\n word-break: break-word;\n :not(:first-child) > * {\n align-items: flex-start;\n }\n }\n`;\n\nconst Proposer = ({ address, agree, value, args, threshold, ayes, nays }) => {\n return (\n \n \n\n {args && args.length > 0 && (\n \n {args.map(({ title, value }) => (\n \n
{title}
\n
{value}
\n
\n ))}\n
\n )}\n\n \n \n \n {`${ayes}/${threshold}`}\n \n \n Aye ({ayes})\n \n \n \n Nay ({nays})\n \n \n \n \n \n
\n );\n};\n\nexport default Proposer;\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\nimport styled from \"styled-components\";\nimport {\n fetchProposalDetail,\n loadingProposalDetailSelector,\n proposalDetailSelector,\n setProposalDetail,\n} from \"../../store/reducers/proposalSlice\";\nimport { scanHeightSelector } from \"../../store/reducers/chainSlice\";\nimport { fetchDescription } from \"../../store/reducers/descriptionSlice\";\n\nimport InformationTable from \"./InformationTable\";\nimport Timeline from \"../Timeline\";\nimport RelatedLinks from \"../RelatedLinks\";\nimport ProposalLifeCycleTable from \"./ProposalLifeCycleTable\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport Voter from \"../../components/Voter\";\nimport Proposer from \"../../components/Proposer\";\nimport BlocksTime from \"../../components/BlocksTime\";\nimport TimelineCommentWrapper from \"../../components/TimelineCommentWrapper\";\nimport DetailTableWrapper from \"../../components/DetailTableWrapper\";\n\nconst ValueWrapper = styled.span`\n margin-right: 4px;\n color: #1d253c;\n`;\n\nconst UnitWrapper = styled.span`\n color: #1d253c;\n`;\n\nfunction isMotion(timelineItem) {\n return !!timelineItem.timeline;\n}\n\nfunction timelineItemHeight(timelineItem) {\n if (isMotion(timelineItem)) {\n return timelineItem.timeline[0].indexer.blockHeight;\n }\n\n if (\"extrinsic\" === timelineItem.type) {\n return timelineItem.indexer.blockHeight;\n }\n\n if (\"event\" === timelineItem.type) {\n return timelineItem.indexer.blockHeight;\n }\n\n return timelineItem.indexer?.blockHeight;\n}\n\nfunction normalizeReferendumTimelineItem(referendum, scanHeight) {\n return {\n index: referendum.index,\n defaultUnfold: !referendum.info?.Finished,\n subTimeline: (referendum.timeline || []).map((item) => ({\n name: item.method === \"Started\" ? `Referendum #${referendum.index}` : item.method,\n extrinsicIndexer: item.type === \"extrinsic\" ? item.indexer : undefined,\n eventIndexer: item.type === \"event\" ? item.indexer : undefined,\n fields: (() => {\n if (item.method === \"Started\") {\n const { voteThreshold } = item.args;\n return [\n { title: \"Vote threshold\", value: voteThreshold },\n ];\n } else if (item.method === \"Passed\") {\n return [];\n } else if (item.method === \"NotPassed\") {\n return [];\n } else if (item.method === \"Executed\") {\n return [];\n }\n })(),\n })),\n };\n}\n\nfunction normalizeMotionTimelineItem(motion, scanHeight) {\n return {\n index: motion.index,\n defaultUnfold: !motion.isFinal && motion.voting?.end >= scanHeight,\n // FIXME: && motion.treasuryProposalId !== 15\n expired:\n !motion.isFinal &&\n motion.voting?.end < scanHeight &&\n motion.treasuryProposalIndex !== 15,\n end: motion.voting?.end,\n subTimeline: (motion.timeline || []).map((item) => ({\n name: item.method === \"Proposed\" ? `Motion #${motion.index}` : item.method,\n extrinsicIndexer: item.type === \"extrinsic\" ? item.indexer : undefined,\n eventIndexer: item.type === \"event\" ? item.indexer : undefined,\n fields: (() => {\n if (item.method === \"Proposed\") {\n const { proposer, threshold } = item.args;\n let ayes, nays;\n if (motion.voting) {\n ayes = motion.voting?.ayes?.length;\n nays = motion.voting?.nays?.length || 0;\n } else {\n const votes = motion.timeline.filter(\n (item) => item.method === \"Voted\"\n );\n const map = votes.reduce(\n (result, { args: { voter, approve } }) => {\n result[voter] = approve;\n return result;\n },\n {}\n );\n const values = Object.values(map);\n ayes = values.filter((v) => v).length;\n nays = values.length - ayes;\n }\n\n const argItems = [];\n if (\n scanHeight > 0 &&\n !motion.isFinal &&\n motion.voting?.end > scanHeight\n ) {\n const blocks = motion.voting?.end - scanHeight;\n argItems.push({\n title: \"Voting end\",\n value: (\n \n ),\n });\n }\n\n return [\n {\n value: (\n item.method === \"Approved\")}\n args={argItems}\n value={motion.proposal.method}\n threshold={threshold}\n ayes={ayes}\n nays={nays}\n />\n ),\n },\n ];\n } else if (item.method === \"Voted\") {\n const { voter, approve: agree } = item.args;\n return [\n {\n value: (\n \n ),\n },\n ];\n } else if (item.method === \"Closed\") {\n return [];\n } else {\n return [];\n }\n })(),\n })),\n };\n}\n\nfunction constructProposalProcessItem(item, proposalDetail) {\n const { proposer, value, beneficiary, symbolPrice } = proposalDetail;\n let fields = [];\n\n const method = (item.name || item.method);\n\n if (method === \"Proposed\") {\n fields = [\n {\n title: \"Proposer\",\n value: ,\n },\n {\n title: \"Value\",\n value: ,\n },\n {\n title: \"Beneficiary\",\n value: ,\n },\n ];\n\n return {\n name: method,\n extrinsicIndexer: item.type === \"extrinsic\" ? item.indexer : undefined,\n eventIndexer: item.type === \"event\" ? item.indexer : undefined,\n fields,\n };\n }\n\n if (method === \"Rejected\") {\n const { value } = item.args;\n return {\n name: method,\n extrinsicIndexer: item.type === \"extrinsic\" ? item.indexer : undefined,\n eventIndexer: item.type === \"event\" ? item.indexer : undefined,\n fields: [\n {\n title: \"Slashed\",\n value: ,\n },\n ],\n };\n }\n\n if (method === \"Awarded\") {\n return {\n name: method,\n extrinsicIndexer: item.type === \"extrinsic\" ? item.indexer : undefined,\n eventIndexer: item.type === \"event\" ? item.indexer : undefined,\n fields: [\n {\n title: \"Beneficiary\",\n value: ,\n },\n {\n title: \"Value\",\n value: ,\n },\n ],\n };\n }\n}\n\nfunction processTimeline(proposalDetail, scanHeight) {\n const { timeline, motions, referendums } = proposalDetail;\n if (!timeline) {\n return [];\n }\n\n const allItems = [\n ...timeline,\n ...motions.map(m => ({...m, isMotion: true})),\n ...referendums.map(r => ({...r, isReferendum: true}))\n ];\n allItems.sort((a, b) => timelineItemHeight(a) - timelineItemHeight(b));\n\n return allItems.map((item) => {\n if (item.isMotion) {\n return normalizeMotionTimelineItem(item, scanHeight);\n }\n else if (item.isReferendum) {\n return normalizeReferendumTimelineItem(item, scanHeight);\n }\n\n return constructProposalProcessItem(item, proposalDetail);\n });\n}\n\nconst ProposalDetail = () => {\n const { proposalIndex } = useParams();\n const dispatch = useDispatch();\n const [timelineData, setTimelineData] = useState([]);\n\n useEffect(() => {\n dispatch(fetchProposalDetail(proposalIndex));\n return () => {\n dispatch(setProposalDetail({}));\n };\n }, [dispatch, proposalIndex]);\n\n useEffect(() => {\n dispatch(fetchDescription(\"proposal\", proposalIndex));\n return () => {\n dispatch(fetchDescription());\n };\n }, [dispatch, proposalIndex]);\n\n const loadingProposalDetail = useSelector(loadingProposalDetailSelector);\n const proposalDetail = useSelector(proposalDetailSelector);\n const scanHeight = useSelector(scanHeightSelector);\n\n useEffect(() => {\n setTimelineData(processTimeline(proposalDetail, scanHeight));\n }, [proposalDetail, scanHeight]);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ProposalDetail;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { useSelector } from \"react-redux\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport TableCell from \"../../components/TableCell\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\n\nimport { bountyDetailSelector } from \"../../store/reducers/bountySlice\";\nimport { capitalizeFirstLetter } from \"../../utils\";\n\nconst ReturnedText = styled.div`\n color: rgba(0, 0, 0, 0.3);\n font-size: 14px;\n line-height: 22px;\n margin-left: 16px;\n`;\n\nconst ReturnedWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst AlignItemWrapper = styled.div`\n * {\n align-items: flex-start;\n }\n`;\n\nconst BountyStates = Object.freeze({\n Proposed: 0,\n Rejected: 1,\n Approved: 2,\n Funded: 3,\n CuratorProposed: 4,\n Active: 5,\n PendingPayout: 6,\n Claimed: 7,\n});\n\nfunction getBountyState(bountyDetail) {\n return (\n BountyStates[capitalizeFirstLetter(bountyDetail.state?.state)] ?? -1\n );\n}\n\nconst InformationTable = ({ loading }) => {\n const bountyDetail = useSelector(bountyDetailSelector);\n return (\n \n \n \n \n Information\n \n \n \n \n \n \n {`#${bountyDetail.bountyIndex}`}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {getBountyState(bountyDetail) > BountyStates.Rejected ? (\n Returned to proposer\n ) : null}\n \n \n \n \n \n \n \n {getBountyState(bountyDetail) < BountyStates.CuratorProposed ? (\n \"--\"\n ) : (\n \n \n \n )}\n \n \n \n \n \n \n \n {getBountyState(bountyDetail) < BountyStates.Active ? (\n \"--\"\n ) : (\n \n \n \n )}\n {getBountyState(bountyDetail) >=\n BountyStates.PendingPayout ? (\n Returned to curator\n ) : null}\n \n \n \n \n \n \n {bountyDetail.title}\n \n \n \n
\n
\n );\n};\n\nexport default InformationTable;\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { useSelector } from \"react-redux\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport TableCell from \"../../components/TableCell\";\nimport User from \"../../components/User\";\nimport Text from \"../../components/Text\";\nimport {\n scanHeightSelector,\n} from \"../../store/reducers/chainSlice\";\nimport Label from \"../../components/Label\";\nimport DateShow from \"../../components/DateShow\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport { useIsMounted } from \"../../utils/hooks\";\nimport { estimateBlocksTime } from \"../../services/chainApi\";\n\nimport { bountyDetailSelector } from \"../../store/reducers/bountySlice\";\n\nconst FlexWrapper = styled.div`\n display: flex;\n align-items: center;\n > :not(:first-child) {\n margin-left: 16px;\n }\n`;\n\nconst CapText = styled(Text)`\n text-transform: capitalize;\n`;\n\nconst BountyLifeCycleTable = ({ loading }) => {\n const bountyDetail = useSelector(bountyDetailSelector);\n const scanHeight = useSelector(scanHeightSelector);\n const [updateDueTimeLeft, setUpdateDueTimeLeft] = useState(\"\");\n const isMounted = useIsMounted();\n\n useEffect(() => {\n if (bountyDetail.updateDue) {\n estimateBlocksTime(bountyDetail.updateDue - scanHeight).then(\n (blocksTime) => {\n let timeLeft = \"\";\n const oneMinute = 60 * 1000;\n const oneHour = 60 * oneMinute;\n const oneDay = 24 * oneHour;\n if (blocksTime > oneDay) {\n timeLeft = `${parseInt(blocksTime / oneDay)} days`;\n } else if (blocksTime > oneHour) {\n timeLeft = `${parseInt(blocksTime / oneHour)} hours`;\n } else if (blocksTime > oneMinute) {\n timeLeft = `${parseInt(blocksTime / oneMinute)} minutes`;\n } else {\n timeLeft = \"less then 1 minute\";\n }\n if (isMounted.current) {\n setUpdateDueTimeLeft(timeLeft);\n }\n }\n );\n }\n }, [bountyDetail, scanHeight, isMounted]);\n\n return (\n \n \n \n \n Bounty Life Cycle\n \n \n \n \n \n \n \n
\n \n
\n \n \n \n
\n
\n
\n
\n \n \n \n \n {bountyDetail.state?.state}\n {/* */}\n
\n \n \n \n \n \n \n \n {bountyDetail.curator ? (\n \n ) : (\n \"--\"\n )}\n \n \n \n \n \n \n {bountyDetail.updateDue ? (\n \n
\n {updateDueTimeLeft ? `${updateDueTimeLeft} left` : \"--\"}\n
\n \n
\n ) : (\n \"--\"\n )}\n
\n
\n
\n \n \n \n {bountyDetail.beneficiary ? (\n \n ) : (\n \"--\"\n )}\n \n \n \n \n \n \n {bountyDetail.unlockAt ? (\n \n {scanHeight < bountyDetail.unlockAt ? (\n <>\n
{bountyDetail.unlockAt}
\n \n \n ) : (\n \n \n \n )}\n
\n ) : (\n \"--\"\n )}\n \n
\n
\n \n
\n
\n );\n};\n\nexport default BountyLifeCycleTable;\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\nimport styled from \"styled-components\";\nimport {\n setBountyDetail,\n bountyDetailSelector,\n fetchBountyDetail,\n loadingBountyDetailSelector,\n} from \"../../store/reducers/bountySlice\";\n\nimport InformationTable from \"./InformationTable\";\nimport Timeline from \"../Timeline\";\nimport RelatedLinks from \"../RelatedLinks\";\nimport BountyLifeCycleTable from \"./BountyLifeCycleTable\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport Voter from \"../../components/Voter\";\nimport Proposer from \"../../components/Proposer\";\nimport BlocksTime from \"../../components/BlocksTime\";\nimport TimelineCommentWrapper from \"../../components/TimelineCommentWrapper\";\nimport { stringToWords } from \"../../utils\";\nimport DetailTableWrapper from \"../../components/DetailTableWrapper\";\n\nimport {\n chainSymbolSelector,\n scanHeightSelector,\n} from \"../../store/reducers/chainSlice\";\n\nconst ValueWrapper = styled.span`\n margin-right: 4px;\n color: #1d253c;\n`;\nconst UnitWrapper = styled.span`\n color: #1d253c;\n`;\n\nfunction isMotion(timelineItem) {\n return !!timelineItem.voting;\n}\n\nfunction timelineItemHeight(timelineItem) {\n if (isMotion(timelineItem)) {\n return timelineItem.timeline[0].indexer.blockHeight;\n }\n\n if (\"extrinsic\" === timelineItem.type) {\n return timelineItem.indexer.blockHeight;\n }\n\n if (\"event\" === timelineItem.type) {\n return timelineItem.indexer.blockHeight;\n }\n\n return null;\n}\n\nfunction mergeExtrinsicsAndMotions(timelineItems, motions) {\n const result = [...timelineItems, ...motions];\n result.sort((a, b) => timelineItemHeight(a) - timelineItemHeight(b));\n return result;\n}\n\nfunction processTimeline(bountyDetail, scanHeight, symbol) {\n return mergeExtrinsicsAndMotions(\n bountyDetail.timeline || [],\n bountyDetail.motions || []\n ).map((item) =>\n item.timeline\n ? ((motion) => ({\n index: motion.index,\n defaultUnfold: !motion.isFinal,\n subTimeline: (motion.timeline || []).map((item) => ({\n name:\n [\"Propose\", \"Proposed\"].includes(item.method)\n ? `Motion #${motion.index}`\n : item.method,\n extrinsicIndexer: item.type === \"extrinsic\" ? item.indexer : undefined,\n eventIndexer: item.type === \"event\" ? item.indexer : undefined,\n fields: (() => {\n if (item.method === \"Proposed\") {\n const { proposer, threshold } = item.args;\n const ayes = motion.voting?.ayes?.length || 0;\n const nays = motion.voting?.nays?.length || 0;\n const proposalArgs = item.extrinsic?.args?.proposal?.args ?? {};\n const argItems = Object.keys(proposalArgs)\n .filter((key) => key !== \"bounty_id\")\n .map((key) => {\n const val = proposalArgs[key];\n return {\n title: stringToWords(key),\n value: (() => {\n if (key === \"curator\") {\n return ;\n } else if (key === \"fee\") {\n return ;\n } else {\n return val;\n }\n })(),\n };\n });\n\n if (\n scanHeight > 0 &&\n !motion.isFinal &&\n motion.voting?.end > scanHeight\n ) {\n const blocks = motion.voting?.end - scanHeight;\n argItems.push({\n title: \"Voting end\",\n value: (\n \n ),\n });\n }\n\n return [\n {\n value: (\n item.method === \"Approved\")}\n value={motion.motionInfo?.method}\n args={argItems}\n threshold={threshold}\n ayes={ayes}\n nays={nays}\n />\n ),\n },\n ];\n } else if (item.method === \"Voted\") {\n const { voter, approve: agree } = item.args;\n return [\n {\n value: (\n \n ),\n },\n ];\n } else if (item.method === \"Closed\") {\n return [];\n } else {\n return [];\n }\n })(),\n })),\n }))(item)\n : ((item) => {\n let fields = [];\n\n if (item.name === \"proposeBounty\") {\n const { proposer, value, description } = item.args;\n fields = [\n {\n title: \"Proposer\",\n value: ,\n },\n {\n title: \"Value\",\n value: ,\n },\n {\n title: \"Title\",\n value: description,\n },\n ];\n } else if (item.name === \"acceptCurator\") {\n const { caller } = item.args;\n fields = [\n {\n title: \"Curator\",\n value: ,\n },\n ];\n } else if (item.name === \"BountyAwarded\") {\n const { beneficiary } = item.args || {};\n fields = [\n {\n title: \"Beneficiary\",\n value: ,\n },\n ];\n } else if (item.name === \"BountyExtended\") {\n const { caller, remark } = item.args;\n fields = [\n {\n title: \"Signer\",\n value: ,\n },\n {\n title: \"Remark\",\n value: remark,\n },\n ];\n } else if (item.name === \"BountyRejected\") {\n const { caller, slashed } = item.args;\n fields = [\n {\n title: \"Proposer slashed\",\n value: ,\n },\n ];\n } else if (item.name === \"BountyClaimed\") {\n const [, , claimer] = item.eventData || [];\n fields = [\n {\n title: \"Beneficiary\",\n value: ,\n },\n ];\n }\n\n return {\n extrinsicIndexer: item.type === \"extrinsic\" ? item.indexer : undefined,\n eventIndexer: item.type === \"event\" ? item.indexer : undefined,\n name: item.name,\n fields,\n };\n })(item)\n );\n}\n\nconst BountyDetail = () => {\n const { bountyIndex } = useParams();\n const dispatch = useDispatch();\n const [timelineData, setTimelineData] = useState([]);\n\n const symbol = useSelector(chainSymbolSelector);\n\n useEffect(() => {\n dispatch(fetchBountyDetail(bountyIndex));\n return () => {\n dispatch(setBountyDetail({}));\n };\n }, [dispatch, bountyIndex]);\n\n const loadingBountyDetail = useSelector(loadingBountyDetailSelector);\n const bountyDetail = useSelector(bountyDetailSelector);\n const scanHeight = useSelector(scanHeightSelector);\n\n useEffect(() => {\n setTimelineData(processTimeline(bountyDetail, scanHeight, symbol));\n }, [bountyDetail, scanHeight, symbol]);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default BountyDetail;\n","import React, { Fragment, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport styled, { css } from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\nimport { Link } from \"react-router-dom\";\n\nimport Card from \"../../components/Card\";\nimport Text from \"../../components/Text\";\nimport TextMinor from \"../../components/TextMinor\";\nimport CountDown from \"../../components/CountDown\";\nimport BlocksTime from \"../../components/BlocksTime\";\n\nimport { TEXT_DARK_MAJOR, TEXT_DARK_MINOR } from \"../../constants\";\nimport { overviewSelector } from \"../../store/reducers/overviewSlice\";\nimport {\n chainSymbolSelector,\n fetchSpendPeriod,\n spendPeriodSelector,\n} from \"../../store/reducers/chainSlice\";\nimport {\n fetchTreasury,\n treasurySelector,\n} from \"../../store/reducers/burntSlice\";\nimport { mrgap } from \"../../styles\";\nimport { abbreviateBigNumber } from \"../../utils\";\n\nconst Wrapper = styled(Card)`\n @media screen and (max-width: 1336px) {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 8px;\n }\n @media screen and (min-width: 1336px) {\n display: flex;\n justify-content: space-between;\n }\n padding: 19px 24px;\n margin-bottom: 24px;\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst CustomCard = styled.div`\n padding: 0;\n border-color: #eee;\n`;\n\nconst ItemWrapper = styled.div`\n display: flex;\n align-items: center;\n & > *:first-child {\n margin-right: 20px;\n }\n @media screen and (max-width: 600px) {\n img,\n .icon {\n display: none !important;\n }\n }\n`;\n\nconst Title = styled(TextMinor)`\n line-height: 24px;\n`;\n\nconst TextBold = styled(Text)`\n font-size: 18px;\n line-height: 32px;\n font-weight: 700;\n`;\n\nconst TextMinorBold = styled(TextMinor)`\n font-size: 18px;\n line-height: 32px;\n font-weight: 700;\n`;\n\nconst ValueWrapper = styled.div`\n display: flex;\n align-items: center;\n ${css`\n ${mrgap(\"4px\")}\n `}\n`;\n\nconst StyledLink = styled(Link)`\n color: ${TEXT_DARK_MINOR} !important;\n &:hover {\n text-decoration: underline;\n }\n`;\n\nconst StyledLinkMajor = styled(Link)`\n color: ${TEXT_DARK_MAJOR} !important;\n &:hover {\n text-decoration: underline;\n }\n`;\n\nconst Summary = () => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(fetchSpendPeriod());\n dispatch(fetchTreasury());\n }, [dispatch]);\n\n const overview = useSelector(overviewSelector);\n const spendPeriod = useSelector(spendPeriodSelector);\n const treasury = useSelector(treasurySelector);\n const symbol = useSelector(chainSymbolSelector);\n const symbolLowerCase = symbol?.toLowerCase();\n\n return (\n \n \n \n \n
\n Proposals\n \n {overview.count.proposal.unFinished}\n /\n \n {overview.count.proposal.all}\n \n \n
\n
\n
\n \n \n \n
\n Tips\n \n \n {overview.count.tip.unFinished}\n \n /\n \n {overview.count.tip.all}\n \n \n
\n
\n
\n \n \n \n
\n Bounties\n \n {overview.count.bounty.unFinished}\n /\n \n {overview.count.bounty.all}\n \n \n
\n
\n
\n \n \n \n
\n Available\n \n {abbreviateBigNumber(treasury.free, 2)}\n {symbol}\n \n
\n
\n
\n \n \n \n
\n Next burn\n \n \n {abbreviateBigNumber(treasury.burnPercent * treasury.free, 4)}\n \n {symbol}\n \n
\n
\n
\n \n \n \n
\n Spend period\n \n
\n
\n
\n
\n );\n};\n\nexport default Summary;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\n\nimport Table from \"../../components/Table\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport Text from \"../../components/Text\";\nimport Card from \"../../components/Card\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport { overviewSelector } from \"../../store/reducers/overviewSlice\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n .ui.table td {\n padding-top: 7px !important;\n padding-bottom: 7px !important;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n padding: 20px 24px;\n`;\n\nconst TableRow = styled(Table.Row)`\n height: 50px;\n`;\n\nconst ProposerTable = () => {\n const overview = useSelector(overviewSelector);\n const data = overview.bestTipFinders || [];\n\n return (\n \n Top Tip Finders\n \n \n \n \n \n Finder\n Count\n \n Total value\n \n \n \n \n {data && data.length > 0 ? (\n data.map((item, index) => (\n \n \n \n \n \n {item.count}\n \n \n \n \n \n ))\n ) : (\n \n )}\n \n
\n
\n
\n
\n );\n};\n\nexport default ProposerTable;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\n\nimport Table from \"../../components/Table\";\nimport User from \"../../components/User\";\nimport Balance from \"../../components/Balance\";\nimport Text from \"../../components/Text\";\nimport Card from \"../../components/Card\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport { overviewSelector } from \"../../store/reducers/overviewSlice\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n .ui.table td {\n padding-top: 7px !important;\n padding-bottom: 7px !important;\n }\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n padding: 20px 24px;\n`;\n\nconst TableRow = styled(Table.Row)`\n height: 50px;\n`;\n\nconst BeneficiaryTable = () => {\n const overview = useSelector(overviewSelector);\n const data = overview.bestProposalBeneficiaries || [];\n\n return (\n \n Top Proposal Beneficiaries\n \n \n \n \n Beneficiary\n \n Total value\n \n \n Proposal count\n \n \n \n \n {data && data.length > 0 ? (\n data.map((item, index) => (\n \n \n \n \n \n \n \n \n {item.count}\n \n \n ))\n ) : (\n \n )}\n \n
\n
\n {/* */}\n
\n );\n};\n\nexport default BeneficiaryTable;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { Popup } from \"semantic-ui-react\";\n\nimport Text from \"../../components/Text\";\nimport TextMinor from \"../../components/TextMinor\";\nimport { useSelector } from \"react-redux\";\nimport { chainSymbolSelector } from \"../../store/reducers/chainSlice\";\nimport { abbreviateBigNumber } from \"../../utils\";\n\nconst Wrapper = styled.div`\n min-width: 276px;\n background: #fbfbfb;\n padding: 4px 16px;\n border-radius: 4px;\n white-space: nowrap;\n ${(p) =>\n p.fixed &&\n css`\n width: 288px;\n @media screen and (max-width: 1140px) {\n width: auto !important;\n min-width: none;\n }\n `}\n`;\n\nconst ItemWrapper = styled.div`\n cursor: pointer;\n display: flex;\n align-items: center;\n :not(:last-child) {\n margin-bottom: 4px;\n }\n`;\n\nconst IconWrapper = styled.div`\n height: 16px;\n width: 16px;\n margin-right: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst Icon = styled.div`\n ${(p) =>\n p.icon === \"square\" &&\n css`\n width: 8px;\n height: 8px;\n background: ${p.color ?? \"#EEEEEE\"};\n `}\n ${(p) =>\n p.icon === \"circle\" &&\n css`\n width: 10px;\n height: 10px;\n border: 3px solid\n ${(p) =>\n p.disabled\n ? p.color === \"transparent\"\n ? \"transparent\"\n : \"rgba(29, 37, 60, 0.24)\"\n : p.color ?? \"#EEEEEE\"};\n border-radius: 50%;\n `}\n ${(p) =>\n p.icon === \"bar\" &&\n css`\n width: 12px;\n height: 3px;\n background: ${p.color ?? \"#EEEEEE\"};\n `}\n`;\n\nconst Title = styled(Text)`\n font-weight: 500;\n line-height: 24px;\n ${(p) =>\n p.disabled &&\n css`\n color: rgba(29, 37, 60, 0.24);\n `}\n`;\n\nconst ChildTitle = styled(TextMinor)`\n font-weight: 500;\n line-height: 24px;\n ${(p) =>\n p.disabled &&\n css`\n color: rgba(29, 37, 60, 0.24);\n `}\n`;\n\nconst ValueWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n margin-left: auto;\n & > :last-child {\n margin-left: 4px;\n }\n ${(p) =>\n p.disabled &&\n css`\n & > * {\n color: rgba(0, 0, 0, 0.65);\n }\n `}\n`;\n\nconst Label = ({ data, icon, status, clickEvent, fixed }) => {\n const symbol = useSelector(chainSymbolSelector);\n const { name, color, children } = data;\n const disabled = status?.disabled;\n let { value } = data;\n if (children) {\n value = (children || []).reduce((acc, current) => {\n return acc + current.value ?? 0;\n }, 0);\n }\n\n return (\n \n {\n clickEvent && clickEvent(name);\n }}\n >\n \n \n \n {name}\n \n {`${\n Math.round(value) === value && value < 1000 ? \"\" : \"≈ \"\n }${abbreviateBigNumber(value)} ${symbol}`}\n \n }\n />\n \n {(children || []).map((item, index) => (\n {\n clickEvent && clickEvent(item.name);\n }}\n >\n \n \n \n \n {item.name}\n \n \n {`${\n Math.round(item.value) === item.value && item.value < 1000\n ? \"\"\n : \"≈ \"\n }${abbreviateBigNumber(item.value)} ${symbol}`}\n \n }\n />\n \n ))}\n \n );\n};\n\nexport default Label;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport Text from \"../../components/Text\";\nimport Label from \"./CustomLabel\";\nimport { TEXT_DARK_DISABLE } from \"../../constants\";\n\nconst Wrapper = styled.div`\n min-width: 240px;\n & > :not(:last-child) {\n margin-bottom: 8px;\n }\n`;\n\nconst Title = styled(Text)`\n font-weight: 500;\n line-height: 24px;\n`;\n\nconst Date = styled(Text)`\n color: ${TEXT_DARK_DISABLE};\n margin-left: auto;\n`;\n\nconst TitleWrapper = styled.div`\n display: flex;\n`;\n\nconst List = ({ data, status, clickEvent, fixed }) => {\n const { title, date, icon, labels } = data;\n return (\n \n {(title || date) && (\n \n {title}\n {date}\n \n )}\n {(labels || []).map((item, index) => (\n \n ))}\n \n );\n};\n\nexport default List;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { Line } from \"react-chartjs-2\";\nimport dayjs from \"dayjs\";\n\nimport Text from \"../../../components/Text\";\nimport { abbreviateBigNumber } from \"../../../utils\";\n\nconst LegendWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n & > :not(:last-child) {\n margin-right: 16px;\n }\n`;\n\nconst TitleWrapper = styled.div`\n display: flex;\n align-items: center;\n padding-left: 4px;\n & > :first-child {\n margin-right: 12px;\n }\n`;\n\nconst LegendDiv = styled.div`\n ${(p) =>\n p.icon === \"square\" &&\n css`\n width: 8px;\n height: 8px;\n background: ${(p) => p.color};\n border-radius: 1px;\n `}\n ${(p) =>\n p.icon === \"bar\" &&\n css`\n width: 12px;\n height: 3px;\n background: ${(p) => p.color};\n border-radius: 1px;\n `}\n`;\n\nconst LegendTitle = styled(Text)`\n font-weight: 500;\n line-height: 24px;\n`;\n\nconst LineChart = ({ data, onHover }) => {\n const { dates, values } = data;\n const options = {\n type: \"line\",\n hover: {\n mode: \"nearest\",\n intersect: true,\n },\n scales: {\n yAxes: [\n {\n position: \"right\",\n ticks: {\n stepSize: 100000000,\n callback: function (label) {\n return abbreviateBigNumber(label, 0);\n },\n },\n },\n ],\n xAxes: [\n {\n type: \"time\",\n time: {\n displayFormats: {\n month: \"YYYY-MM\",\n },\n unit: \"month\",\n unitStepSize: 3,\n },\n gridLines: {\n zeroLineWidth: 0,\n color: \"rgba(0, 0, 0, 0)\",\n },\n },\n ],\n },\n tooltips: {\n mode: \"index\",\n bodySpacing: 8,\n callbacks: {\n title: function (tooltipItems) {\n return dayjs(tooltipItems[0].xLabel).format(\"YYYY-MM-DD hh:mm\");\n },\n label: function (tooltipItem, data) {\n return `${data.datasets[tooltipItem.datasetIndex].label} ${\n Math.round(Number(tooltipItem.value)) ===\n Number(tooltipItem.value) && Number(tooltipItem.value) < 1000\n ? \"\"\n : \"≈ \"\n } ${abbreviateBigNumber(tooltipItem.value)}`;\n },\n },\n itemSort: function (a, b) {\n return a.datasetIndex - b.datasetIndex;\n },\n },\n legend: {\n display: false,\n },\n maintainAspectRatio: false,\n onHover: function (_, array) {\n const index = array?.[0]?._index;\n onHover(index);\n },\n };\n const chartData = {\n labels: dates,\n datasets: (values || []).map((item) => ({\n label: item.label,\n fill: item.fill,\n lineTension: 0,\n backgroundColor: item.secondaryColor,\n borderColor: item.primaryColor,\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0.0,\n borderJoinStyle: \"miter\",\n pointBorderColor: item.primaryColor,\n pointBackgroundColor: item.primaryColor,\n pointBorderWidth: 0,\n pointHoverRadius: 5,\n pointHoverBackgroundColor: item.primaryColor,\n pointHoverBorderColor: item.primaryColor,\n pointHoverBorderWidth: 2,\n pointRadius: 1,\n pointHitRadius: 10,\n data: item.data,\n order: item.order,\n })),\n };\n\n if (dates && dates.length > 0) {\n return (\n <>\n \n {(values || []).map((item, index) => (\n \n \n {item.label}\n \n ))}\n \n \n \n );\n } else {\n return null;\n }\n};\n\nexport default LineChart;\n","import React, { useState, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\nimport dayjs from \"dayjs\";\n\nimport Text from \"../../../components/Text\";\nimport Card from \"../../../components/Card\";\nimport List from \"../CustomList\";\nimport Chart from \"./Chart\";\nimport { getPrecision, toPrecision } from \"../../../utils\";\n\nimport {\n fetchStatsHistory,\n statsHistorySelector,\n} from \"../../../store/reducers/overviewSlice\";\nimport {\n chainSymbolSelector,\n} from \"../../../store/reducers/chainSlice\";\n\nconst CardWrapper = styled(Card)`\n padding: 20px 24px;\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Title = styled(Text)`\n font-size: 18px;\n line-height: 32px;\n font-weight: 700;\n margin-bottom: 16px;\n`;\n\nconst ContentWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n @media screen and (min-width: 1140px) {\n & > :first-child {\n margin-right: 24px;\n }\n }\n @media screen and (max-width: 1140px) {\n flex-direction: column;\n & > :first-child {\n margin-bottom: 24px;\n }\n }\n`;\n\nconst ChartWrapper = styled.div`\n height: 252px;\n min-width: 252px;\n flex-grow: 1;\n margin-bottom: 24px;\n max-width: calc(50% - 24px);\n @media screen and (max-width: 1140px) {\n max-width: none;\n }\n`;\n\nconst ListWrapper = styled.div`\n display: flex;\n @media screen and (min-width: 650px) {\n & > :first-child {\n margin-right: 24px;\n }\n }\n @media screen and (max-width: 650px) {\n flex-direction: column;\n & > :first-child {\n margin-bottom: 24px;\n }\n }\n`;\n\nconst SecondListWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n @media screen and (max-width: 650px) {\n & > :first-child {\n margin-bottom: 24px;\n }\n }\n`;\n\nconst TotalStacked = () => {\n const dispatch = useDispatch();\n const [dateLabels, setDateLabels] = useState([]);\n const [incomeHistory, setIncomeHistory] = useState([]);\n const [outputHistory, setOutputHistory] = useState([]);\n const [treasuryHistory, setTreasuryHistory] = useState([]);\n const [showIndex, setShowIndex] = useState();\n const [incomeData, setIncomeData] = useState({\n title: \"Income\",\n icon: \"square\",\n labels: [\n {\n name: \"Minting\",\n value: 0,\n color: \"#FF3B80\",\n },\n {\n name: \"Staking Remainder\",\n value: 0,\n color: \"#FF3B80\",\n },\n {\n name: \"Slashes\",\n color: \"#FF3B80\",\n children: [\n {\n name: \"Staking\",\n value: 0,\n color: \"transparent\",\n },\n {\n name: \"Democracy\",\n value: 0,\n color: \"transparent\",\n },\n {\n name: \"Identity\",\n value: 0,\n color: \"transparent\",\n },\n ],\n },\n {\n name: \"Others\",\n value: 0,\n color: \"#FF3B80\",\n },\n ],\n });\n const [outputData, setOutputData] = useState({\n title: \"Output\",\n icon: \"square\",\n labels: [\n {\n name: \"Proposal\",\n value: 0,\n color: \"#2DE1C5\",\n },\n {\n name: \"Tips\",\n value: 0,\n color: \"#2DE1C5\",\n },\n {\n name: \"Bounties\",\n value: 0,\n color: \"#2DE1C5\",\n },\n {\n name: \"Burnt\",\n value: 0,\n color: \"#2DE1C5\",\n },\n ],\n });\n const [treasuryData, setTreasuryData] = useState({\n title: \"Treasury\",\n icon: \"bar\",\n labels: [\n {\n name: \"Balance\",\n value: 0,\n color: \"#11CAF0\",\n },\n ],\n });\n\n const symbol = useSelector(chainSymbolSelector);\n const precision = getPrecision(symbol);\n\n useEffect(() => {\n dispatch(fetchStatsHistory());\n }, [dispatch]);\n\n const statsHistory = useSelector(statsHistorySelector);\n\n useEffect(() => {\n const dateLabels = statsHistory.map(\n (statsItem) => statsItem.indexer.blockTime\n );\n setDateLabels(dateLabels);\n\n const incomeHistory = statsHistory.map(\n (statsItem) =>\n toPrecision(statsItem.income.minting, precision, false) +\n toPrecision(statsItem.income.stakingRemainder, precision, false) +\n toPrecision(statsItem.income.slash, precision, false) +\n toPrecision(statsItem.income.others, precision, false)\n );\n setIncomeHistory(incomeHistory);\n\n const outputHistory = statsHistory.map(\n (statsItem) =>\n toPrecision(statsItem.output.tip, precision, false) +\n toPrecision(statsItem.output.proposal, precision, false) +\n toPrecision(statsItem.output.bounty, precision, false) +\n toPrecision(statsItem.output.burnt, precision, false)\n );\n setOutputHistory(outputHistory);\n\n const treasuryHistory = statsHistory.map((statsItem) =>\n toPrecision(statsItem.treasuryBalance, precision, false)\n );\n setTreasuryHistory(treasuryHistory);\n }, [statsHistory, precision]);\n\n useEffect(() => {\n if (statsHistory && statsHistory.length > 0) {\n const index = showIndex ?? statsHistory.length - 1;\n const statsData = statsHistory[index];\n setIncomeData({\n title: \"Income\",\n date: dayjs(dateLabels?.[index]).format(\"YYYY-MM-DD hh:mm\"),\n icon: \"square\",\n labels: [\n {\n name: \"Minting\",\n value: toPrecision(statsData.income.minting, precision, false),\n color: \"#FF3B80\",\n },\n {\n name: \"Staking Remainder\",\n value: toPrecision(\n statsData.income.stakingRemainder,\n precision,\n false\n ),\n color: \"#FF3B80\",\n },\n {\n name: \"Slashes\",\n color: \"#FF3B80\",\n children: [\n {\n name: \"Staking\",\n value: toPrecision(\n statsData.income.slashSeats.staking,\n precision,\n false\n ),\n color: \"transparent\",\n },\n {\n name: \"Democracy\",\n value: toPrecision(\n statsData.income.slashSeats.democracy,\n precision,\n false\n ),\n color: \"transparent\",\n },\n {\n name: \"Identity\",\n value: toPrecision(\n statsData.income.slashSeats.identity,\n precision,\n false\n ),\n color: \"transparent\",\n },\n ],\n },\n {\n name: \"Others\",\n value: toPrecision(statsData.income.others, precision, false),\n color: \"#FF3B80\",\n },\n ],\n });\n\n setOutputData({\n title: \"Output\",\n date: dayjs(dateLabels?.[index]).format(\"YYYY-MM-DD hh:mm\"),\n icon: \"square\",\n labels: [\n {\n name: \"Proposal\",\n value: toPrecision(statsData.output.proposal, precision, false),\n color: \"#2DE1C5\",\n },\n {\n name: \"Tips\",\n value: toPrecision(statsData.output.tip, precision, false),\n color: \"#2DE1C5\",\n },\n {\n name: \"Bounties\",\n value: toPrecision(statsData.output.bounty, precision, false),\n color: \"#2DE1C5\",\n },\n {\n name: \"Burnt\",\n value: toPrecision(statsData.output.burnt, precision, false),\n color: \"#2DE1C5\",\n },\n ],\n });\n\n setTreasuryData({\n title: \"Treasury\",\n date: dayjs(dateLabels?.[index]).format(\"YYYY-MM-DD hh:mm\"),\n icon: \"bar\",\n labels: [\n {\n name: \"Balance\",\n value: toPrecision(statsData.treasuryBalance, precision, false),\n color: \"#11CAF0\",\n },\n ],\n });\n }\n }, [showIndex, statsHistory, dateLabels, precision]);\n\n const chartData = {\n dates: dateLabels,\n values: [\n {\n label: \"Income\",\n primaryColor: \"#FFA4C5\",\n secondaryColor: \"#FBEAF0\",\n data: incomeHistory,\n fill: true,\n icon: \"square\",\n order: 2,\n },\n {\n label: \"Output\",\n primaryColor: \"#96F0E2\",\n secondaryColor: \"#EAFCF9\",\n data: outputHistory,\n fill: true,\n icon: \"square\",\n order: 1,\n },\n {\n label: \"Treasury\",\n primaryColor: \"#11CAF0\",\n secondaryColor: \"#11CAF0\",\n data: treasuryHistory,\n fill: false,\n icon: \"bar\",\n order: 0,\n },\n ],\n };\n\n const onHover = (index) => {\n setShowIndex(index);\n };\n\n return (\n \n Total Stacked\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default TotalStacked;\n","import React from \"react\";\nimport { Doughnut } from \"react-chartjs-2\";\n\nconst DoughnutChart = ({ data, status }) => {\n const findDisabled = (name) => {\n const findFunc = (item) => {\n if (item.name === name) return item.disabled;\n if (item.children) {\n return item.children.find(findFunc);\n }\n return;\n };\n const result = status?.labels?.find(findFunc);\n return result;\n };\n const doughnutData = {\n labels: [],\n datasets: [\n {\n data: [],\n backgroundColor: [],\n hoverBackgroundColor: [],\n borderWidth: 0,\n },\n ],\n };\n const dataReduce = (acc, current) => {\n if (current.children) {\n return current.children.reduce(dataReduce, acc);\n } else {\n acc.labels.push(current.name);\n acc.datasets[0].data.push(findDisabled(current.name) ? 0 : current.value);\n acc.datasets[0].backgroundColor.push(current.color);\n acc.datasets[0].hoverBackgroundColor.push(current.color);\n }\n return acc;\n };\n data.labels.reduce(dataReduce, doughnutData);\n const options = {\n maintainAspectRatio: false,\n cutoutPercentage: 80,\n animation: { animateRotate: false },\n legend: {\n display: false,\n },\n tooltips: {\n callbacks: {\n label: function (tooltipItem, data) {\n const dataset = data.datasets[tooltipItem.datasetIndex];\n const meta = dataset._meta[Object.keys(dataset._meta)[0]];\n const total = meta.total;\n const currentValue = dataset.data[tooltipItem.index];\n const percentage = parseFloat(\n ((currentValue / total) * 100).toFixed(2)\n );\n return percentage + \"%\";\n },\n title: function (tooltipItem, data) {\n return data.labels[tooltipItem[0].index];\n },\n },\n },\n };\n return ;\n};\n\nexport default DoughnutChart;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\n\nimport Text from \"../../components/Text\";\nimport TextMinor from \"../../components/TextMinor\";\nimport { chainSymbolSelector } from \"../../store/reducers/chainSlice\";\nimport { toLocaleStringWithFixed } from \"../../utils\";\n\nconst Wrapper = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst TextWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n max-width: 214px;\n`;\n\nconst TextBold = styled(Text)`\n font-size: 18px;\n font-weight: 700;\n line-height: 32px;\n`;\n\nconst TextMinorBold = styled(TextMinor)`\n font-size: 18px;\n font-weight: 700;\n line-height: 32px;\n margin-left: 8px;\n`;\n\nconst TotalText = styled(TextMinor)`\n text-align: center;\n`;\n\nconst ZindexWrapper = styled.div`\n z-index: 999;\n`;\n\nconst Total = ({ total, children }) => {\n const symbol = useSelector(chainSymbolSelector);\n total = toLocaleStringWithFixed(total, 2).replace(/\\D00/, \"\");\n return (\n \n {children}\n \n \n {total}\n {symbol}\n \n Total amount\n \n \n );\n};\n\nexport default Total;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport Card from \"../../components/Card\";\nimport Doughnut from \"../../components/CustomDoughnut\";\nimport List from \"./CustomList\";\nimport Total from \"./Total\";\n\nimport Text from \"../../components/Text\";\nimport { abbreviateBigNumber } from \"../../utils\";\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n margin-bottom: 16px;\n`;\n\nconst CardWrapper = styled(Card)`\n position: relative;\n padding: 20px 24px;\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst ContentWrapper = styled.div`\n /* position: relative; */\n display: flex;\n /* padding: 32px; */\n @media screen and (max-width: 650px) {\n flex-direction: column;\n & > :first-child {\n margin-bottom: 24px;\n }\n }\n`;\n\nconst CanvasWrapper = styled.div`\n height: 252px;\n flex-grow: 1;\n position: relative;\n`;\n\nconst DoughnutWrapper = styled.div`\n width: 214px;\n height: 214px;\n margin: 0 auto;\n position: absolute;\n`;\n\nconst DoughnutCard = ({ title, data, status, clickEvent, children }) => {\n const findDisabled = (name) => {\n const findFunc = (item) => {\n if (item.name === name) return item.disabled;\n if (item.children) {\n return item.children.find(findFunc);\n }\n return;\n };\n const result = status?.labels?.find(findFunc);\n return result;\n };\n const totalReduce = (acc, current) => {\n if (current.children) {\n return acc + current.children.reduce(totalReduce, 0);\n }\n return acc + (findDisabled(current.name) ? 0 : current.value ?? 0);\n };\n const total = data.labels?.reduce(totalReduce, 0);\n\n return (\n \n {title}\n \n \n \n \n \n \n \n \n \n {children}\n \n \n );\n};\n\nexport default DoughnutCard;\n","import React, { useState, useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport GrayImage from \"../../components/GrayImage\";\nimport { NavLink } from \"react-router-dom\";\n\nimport DoughnutCard from \"./DoughnutCard\";\nimport TextMinor from \"../../components/TextMinor\";\nimport {\n OVERVIEW_STAKING_COLOR,\n OVERVIEW_DEMOCRACY_COLOR,\n OVERVIEW_IDENTITY_COLOR,\n OVERVIEW_OTHERS_COLOR,\n OVERVIEW_MINTING_COLOR,\n OVERVIEW_STAKING_REMAINDER_COLOR,\n TEXT_DARK_MAJOR,\n} from \"../../constants\";\n\nconst LinkButton = styled(TextMinor)`\n display: flex;\n position: absolute;\n right: 24px;\n top: 20px;\n :hover {\n color: ${TEXT_DARK_MAJOR};\n & > :last-child {\n -webkit-filter: grayscale(0);\n filter: grayscale(0);\n opacity: 1;\n }\n }\n`;\n\nconst Income = ({\n minting,\n stakingRemainder,\n slashStaking,\n slashDemocracy,\n slashIdentity,\n others,\n}) => {\n const [incomeData, setIncomeData] = useState({\n icon: \"circle\",\n labels: [],\n });\n const [incomeStatus, setIncomeStatus] = useState({\n labels: [\n {\n name: \"Minting\",\n },\n {\n name: \"Staking Reminder\",\n },\n {\n name: \"Slashes\",\n children: [\n {\n name: \"Staking\",\n },\n {\n name: \"Democracy\",\n },\n {\n name: \"Identity\",\n },\n ],\n },\n {\n name: \"Others\",\n },\n ],\n });\n\n useEffect(() => {\n setIncomeData({\n icon: \"circle\",\n labels: [\n {\n name: \"Minting\",\n value: minting,\n color: OVERVIEW_MINTING_COLOR,\n },\n {\n name: \"Staking Reminder\",\n value: stakingRemainder,\n color: OVERVIEW_STAKING_REMAINDER_COLOR,\n },\n {\n name: \"Slashes\",\n color: \"transparent\",\n children: [\n {\n name: \"Staking\",\n value: slashStaking,\n color: OVERVIEW_STAKING_COLOR,\n },\n {\n name: \"Democracy\",\n value: slashDemocracy,\n color: OVERVIEW_DEMOCRACY_COLOR,\n },\n {\n name: \"Identity\",\n value: slashIdentity,\n color: OVERVIEW_IDENTITY_COLOR,\n },\n ],\n },\n {\n name: \"Others\",\n value: others,\n color: OVERVIEW_OTHERS_COLOR,\n },\n ],\n });\n }, [\n minting,\n stakingRemainder,\n slashStaking,\n slashDemocracy,\n slashIdentity,\n others,\n ]);\n\n const clickEvent = (name) => {\n const obj = Object.assign({}, incomeStatus);\n obj.labels.forEach((item) => {\n if (item.children) {\n item.children.forEach((child) => {\n if (child.name === name) {\n child.disabled = !child.disabled;\n }\n });\n if (item.children.every((item) => item.disabled)) {\n item.disabled = true;\n } else {\n item.disabled = false;\n }\n }\n if (item.name === name) {\n const disabled = !item.disabled;\n item.disabled = disabled;\n if (item.children) {\n item.children.forEach((child) => {\n child.disabled = disabled;\n });\n }\n }\n });\n setIncomeStatus(obj);\n };\n\n return (\n \n \n \n Detail\n \n \n \n \n );\n};\n\nexport default Income;\n","import React, { useState, useEffect } from \"react\";\n\nimport DoughnutCard from \"./DoughnutCard\";\nimport {\n OVERVIEW_PROPOSALS_COLOR,\n OVERVIEW_TIPS_COLOR,\n OVERVIEW_BOUNTIES_COLOR,\n OVERVIEW_BURNT_COLOR,\n} from \"../../constants\";\n\nconst Output = ({ proposals, tips, bounties, burnt }) => {\n const [outputData, setOutputData] = useState({\n icon: \"circle\",\n labels: [],\n });\n\n const [outputStatus, setOutputStatus] = useState({\n labels: [\n {\n name: \"Proposals\",\n },\n {\n name: \"Tips\",\n },\n {\n name: \"Bounties\",\n },\n {\n name: \"Burnt\",\n },\n ],\n });\n\n useEffect(() => {\n setOutputData({\n icon: \"circle\",\n labels: [\n {\n name: \"Proposals\",\n value: proposals,\n color: OVERVIEW_PROPOSALS_COLOR,\n },\n {\n name: \"Tips\",\n value: tips,\n color: OVERVIEW_TIPS_COLOR,\n },\n {\n name: \"Bounties\",\n value: bounties,\n color: OVERVIEW_BOUNTIES_COLOR,\n },\n {\n name: \"Burnt\",\n value: burnt,\n color: OVERVIEW_BURNT_COLOR,\n },\n ],\n });\n }, [proposals, tips, bounties, burnt]);\n\n const clickEvent = (name) => {\n const obj = Object.assign({}, outputStatus);\n obj.labels.forEach((item) => {\n if (item.name === name) {\n const disabled = !item.disabled;\n item.disabled = disabled;\n }\n });\n setOutputStatus(obj);\n };\n\n return (\n \n );\n};\n\nexport default Output;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { defaults } from \"react-chartjs-2\";\n\nimport Summary from \"./Summary\";\nimport ProposerTable from \"./ProposerTable\";\nimport BeneficiaryTable from \"./BeneficiaryTable\";\nimport { overviewSelector } from \"../../store/reducers/overviewSlice\";\nimport { getPrecision, toPrecision } from \"../../utils\";\nimport TotalStacked from \"./TotalStacked\";\nimport Income from \"./Income\";\nimport Output from \"./Output\";\n\nconst DoughnutWrapper = styled.div`\n display: grid;\n gap: 24px;\n margin-bottom: 24px;\n @media screen and (min-width: 556px) {\n grid-template-columns: repeat(auto-fit, minmax(556px, 1fr));\n }\n @media screen and (max-width: 556px) {\n grid-template-columns: repeat(1fr, minmax(100px, 200px));\n }\n`;\n\nconst TableWrapper = styled.div`\n margin-top: 24px;\n display: grid;\n gap: 24px;\n @media screen and (min-width: 556px) {\n grid-template-columns: repeat(auto-fit, minmax(556px, 1fr));\n }\n @media screen and (max-width: 556px) {\n grid-template-columns: repeat(auto-fill);\n }\n`;\n\nconst Overview = () => {\n const overview = useSelector(overviewSelector);\n const precision = getPrecision('edg');\n\n const bountySpent = toPrecision(\n overview.output.bounty || 0,\n precision,\n false\n );\n const proposalSpent = toPrecision(\n overview.output.proposal || 0,\n precision,\n false\n );\n const tipSpent = toPrecision(overview.output.tip || 0, precision, false);\n const burntTotal = toPrecision(overview.output.burnt || 0, precision, false);\n\n const minting = toPrecision(overview.income.minting || 0, precision, false);\n const stakingRemainder = toPrecision(\n overview.income.stakingRemainder || 0,\n precision,\n false\n );\n const slashDemocracy = toPrecision(\n overview.income.slashSeats.democracy || 0,\n precision,\n false\n );\n const slashStaking = toPrecision(\n overview.income.slashSeats.staking || 0,\n precision,\n false\n );\n const slashIdentity = toPrecision(\n overview.income.slashSeats.identity || 0,\n precision,\n false\n );\n const others = toPrecision(overview.income.others || 0, precision, false);\n\n defaults.global.defaultFontFamily = \"Inter\";\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Overview;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Text from \"../../components/Text\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n & > :first-child {\n margin-right: 8px;\n }\n`;\n\nconst TextWrapper = styled(Text)`\n /* white-space: nowrap; */\n`;\n\nconst NameCell = ({ logo, name }) => {\n return (\n \n \n {name}\n \n );\n};\n\nexport default NameCell;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport dayjs from \"dayjs\";\n\nimport Text from \"../../components/Text\";\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nconst DateCell = ({ date }) => {\n const day = dayjs(date);\n return (\n \n {date && day.isValid() && {day.format(\"YYYY-MM-DD\")}}\n {(!date || !day.isValid()) && --}\n \n );\n};\n\nexport default DateCell;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: start;\n`;\n\n\nconst Item = styled.div`\n font-size: 14px;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.65);\n display: flex;\n align-items: center;\n > img {\n margin-left: 4px;\n }\n`;\n\nexport default function ProjectProposals({proposalsCount}) {\n return (\n \n {proposalsCount > 0 && (\n \n {proposalsCount}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { toLocaleStringWithFixed } from \"../utils\";\n\nconst ExpenseWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: start;\n font-size: 14px;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.65);\n white-space: nowrap;\n`;\n\nconst DollarWrapper = styled.div`\n font-size: 12px;\n line-height: 18px;\n color: rgba(0, 0, 0, 0.3);\n white-space: nowrap;\n text-align: left;\n`;\n\nexport default function ProjectExpense({ expense, dollar }) {\n const numberDollar = Number(dollar);\n return (\n
\n \n {expense > 0 &&
{`${expense.toLocaleString()} EDG`}
}\n
\n {!isNaN(numberDollar) && (\n \n {`${numberDollar === 0 ? \"\" : \"≈ \"}$${toLocaleStringWithFixed(\n numberDollar,\n 2\n )}`}\n \n )}\n
\n );\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { NavLink } from \"react-router-dom\";\nimport { useHistory } from \"react-router\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading.js\";\nimport RightButton from \"../../components/RightButton\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport Text from \"../../components/Text\";\nimport NameCell from \"./NameCell\";\nimport DateCell from \"./DateCell\";\nimport Card from \"../../components/Card\";\nimport ProjectProposals from \"../../components/ProjectProposals\";\nimport ProjectExpense from \"../../components/ProjectExpense\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst TipsTable = ({ data, loading, header, footer }) => {\n const history = useHistory();\n\n const onClickRow = (id) => {\n if (window.innerWidth < 1140) {\n history.push(`/projects/${id}`);\n }\n };\n\n return (\n \n {header}\n \n \n \n \n \n \n Name\n Description\n \n Proposals\n \n \n Expense\n \n Start\n {/* End */}\n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n onClickRow(item.id)}>\n \n \n \n \n {item.title || item.description}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default TipsTable;\n","import React, { useState, useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory } from \"react-router\";\n\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport ProjectsTable from \"./ProjectsTable\";\n\nimport {\n fetchProjects,\n projectsSelector,\n loadingSelector,\n} from \"../../store/reducers/projectSlice\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst Projects = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"projectsPageSize\",\n DEFAULT_PAGE_SIZE\n );\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: projects, total } = useSelector(projectsSelector);\n const loading = useSelector(loadingSelector);\n\n const totalPages = Math.ceil(total / pageSize);\n\n useEffect(() => {\n dispatch(fetchProjects(tablePage - 1, pageSize));\n }, [dispatch, tablePage, pageSize]);\n\n return (\n <>\n \n Projects\n \n }\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n \n );\n};\n\nexport default Projects;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport LinkItem from \"../../components/LinkItem\";\nimport Table from \"../../components/Table\";\nimport Card from \"../../components/Card\";\n\nconst Wrapper = styled(Card)`\n padding: 0;\n margin-bottom: 24px;\n table {\n border: none !important;\n }\n a > p {\n white-space: nowrap;\n }\n`;\n\nconst RelatedLinks = ({ data }) => {\n if (data && data.length > 0) {\n return (\n \n \n \n \n Related Links\n \n \n \n {data.map((link, index) => (\n \n ))}\n \n
\n
\n );\n } else {\n return null;\n }\n};\n\nexport default RelatedLinks;\n","import styled from \"styled-components\";\n\nimport { TEXT_DARK_MAJOR } from \"../constants\";\n\nconst Title = styled.header`\n font-family: Montserrat;\n font-style: normal;\n font-weight: bold;\n font-size: 28px;\n line-height: 40px;\n color: ${TEXT_DARK_MAJOR};\n`;\n\nexport default Title;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Card from \"../../components/Card\";\nimport Title from \"../../components/Title\";\nimport TextMinor from \"../../components/TextMinor\";\n\nconst Wrapper = styled(Card)`\n padding: 24px 32px;\n margin-bottom: 24px;\n display: flex;\n align-items: flex-start;\n flex-wrap: wrap;\n @media screen and (max-width: 481px) {\n & * {\n text-align: left !important;\n }\n }\n`;\n\nconst IconImage = styled(Image)`\n margin-right: 32px;\n`;\n\nconst NameContentWrapper = styled.div`\n flex: 1 1 774px;\n`;\n\nconst NameWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst NameTitle = styled(Title)`\n font-size: 22px;\n font-weight: 700;\n line-height: 36px;\n`;\n\nconst NameContent = styled(TextMinor)`\n text-align: justify;\n`;\n\nconst Detail = ({ data }) => {\n const { name, logo, description } = data;\n\n return (\n \n \n \n \n {name}\n \n {description}\n \n \n );\n};\n\nexport default Detail;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { NavLink } from \"react-router-dom\";\n\nimport { PRIMARY_THEME_COLOR } from \"../../constants\";\nimport Text from \"../../components/Text\";\nimport TextMinor from \"../../components/TextMinor\";\nimport Card from \"../../components/Card\";\nimport { toLocaleStringWithFixed } from \"../../utils\";\n\nconst Wrapper = styled(Card)`\n padding: 20px 24px;\n margin-bottom: 24px;\n`;\n\nconst Header = styled.div`\n font-weight: 700;\n font-size: 16px;\n line-height: 24px;\n color: rgba(0, 0, 0, 0.9);\n margin-bottom: 20px;\n`;\n\nconst ContentWrapper = styled.div`\n display: flex;\n & > div:last-child {\n flex-grow: 1;\n margin-left: 12px;\n }\n &:last-child {\n .bar {\n visibility: hidden;\n }\n }\n`;\n\nconst VerticalWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: stretch;\n & > div:last-child {\n flex-grow: 1;\n }\n`;\n\nconst CircleWrapper = styled.div`\n width: 24px;\n height: 24px;\n padding: 6px;\n div {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n border: 3px solid ${PRIMARY_THEME_COLOR};\n border-radius: 50%;\n }\n flex: 0 0 auto;\n`;\n\nconst Bar = styled.div`\n width: 2px;\n margin: 0 11px;\n background: #f292a4;\n flex: 0 0 auto;\n`;\n\nconst FlexWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n`;\n\nconst TextWrapper = styled.div`\n flex-grow: 1;\n & * {\n display: inline !important;\n line-height: 24px !important;\n }\n > img {\n margin-right: 4px;\n }\n & > a > p:hover {\n text-decoration: underline;\n }\n`;\n\nconst BoldText = styled(Text)`\n font-weight: 500;\n`;\n\nconst NumberText = styled(Text)`\n color: ${PRIMARY_THEME_COLOR};\n font-weight: 500;\n margin-right: 12px;\n`;\n\nconst CardWrapper = styled.div`\n padding: 8px 0;\n margin-top: 8px;\n margin-bottom: 32px;\n`;\n\nconst Item = styled.div`\n padding: 4px 0px;\n display: flex;\n @media screen and (max-width: 640px) {\n flex-wrap: wrap;\n }\n :not(:last-child) {\n margin-bottom: 8px;\n }\n & > :first-child {\n min-width: 140px;\n }\n`;\n\nconst ExpenseWrapper = styled.div`\n display: flex;\n & > .unit {\n margin-left: 4px;\n }\n & > .dollar {\n margin-left: 8px;\n }\n`;\n\nconst TextDollar = styled(Text)`\n color: rgba(29, 37, 60, 0.24);\n`;\n\nconst Proposals = ({ data }) => {\n if (data) {\n return (\n \n
Proposals
\n
\n {(data || []).map((item, index) => (\n \n \n \n
\n \n \n \n \n \n \n \n {`#${item.proposalId}`}\n \n {item.title}\n \n \n \n \n Expense\n \n {item.amount.toLocaleString() ?? 0}\n \n {item.token?.toUpperCase()}\n \n {item.amount && item.proposeTimePrice && (\n {`≈ $${toLocaleStringWithFixed(\n item.amount * item.proposeTimePrice,\n 2\n ).replace(/\\D00/, \"\")}`}\n )}\n \n \n {(item.achievements || []).length > 0 && (\n \n Achievement\n
\n {(item.achievements || []).map((item, index) => (\n {item}\n ))}\n
\n
\n )}\n
\n
\n \n ))}\n
\n \n );\n } else {\n return null;\n }\n};\n\nexport default Proposals;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport TableCell from \"../../components/TableCell\";\nimport ProjectProposals from \"../../components/ProjectProposals\";\nimport ProjectExpense from \"../../components/ProjectExpense\";\n\nconst StyledTable = styled(Table)`\n table-layout: fixed;\n`;\n\nconst InformationTable = ({data, projectData }) => {\n const { dollar } = data;\n\n const {\n expense,\n proposalsCount,\n } = projectData;\n\n\n\n return (\n <>\n \n \n \n \n \n Information\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default InformationTable;\n","import React, { useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport RelatedLinks from \"./RelatedLinks\";\nimport Detail from \"./Detail\";\nimport Proposals from \"./Proposals\";\nimport {\n setProjectDetail,\n fetchProjectDetail,\n projectDetailSelector,\n} from \"../../store/reducers/projectSlice\";\nimport InformationTable from \"./InformationTable\";\n\n\nconst ProjectDetail = () => {\n const { projectId } = useParams();\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(fetchProjectDetail(projectId));\n return () => {\n dispatch(setProjectDetail({}));\n };\n }, [dispatch, projectId]);\n\n const projectDetail = useSelector(projectDetailSelector);\n\n const detailData = {\n name: projectDetail.name,\n logo: projectDetail.logo,\n description: projectDetail.description,\n proposals: projectDetail.proposals?.length,\n expense: projectDetail.proposals?.reduce(\n (previous, current) => previous + (current.amount ?? 0),\n 0\n ),\n dollar: projectDetail.proposals\n ?.reduce(\n (previous, current) =>\n previous + (current.amount ?? 0) * (current.proposeTimePrice ?? 0),\n 0\n )\n .toFixed(2)\n .replace(/\\D00/, \"\"),\n };\n\n return (\n <>\n \n \n \n \n \n );\n};\n\nexport default ProjectDetail;\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport styled, { css } from \"styled-components\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Text from \"../../components/Text\";\nimport TextMinor from \"../../components/TextMinor\";\nimport { removeToast } from \"../../store/reducers/toastSlice\";\nimport { useIsMounted } from \"../../utils/hooks\";\n\nconst Wrapper = styled.div`\n width: 320px;\n padding: 8px 16px;\n box-shadow: 0px 4px 24px rgba(29, 37, 60, 0.08);\n border-radius: 8px;\n p {\n word-break: break-word;\n }\n :not(:last-child) {\n margin-bottom: 16px;\n }\n background: #FFF;\n border: 1px solid #EEE;\n ${p => p.type === \"success\" && css`\n background: #EEF9EF;\n border-color: #C8ECC9;\n `}\n ${p => p.type === \"error\" && css`\n background: #FFF4F2;\n border-color: #FFD8D3;\n `}\n transform: translateX(200%);\n transition: all 0.25s ease-out;\n &.tran {\n transform: translateX(0) !important;\n }\n`;\n\nconst ImageWrapper = styled.div`\n width: 24px;\n height: 24px;\n margin-right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nconst CloseButton = styled.div`\n cursor: pointer;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nconst Title = styled(Text)`\n font-weight: 500;\n flex-grow: 1;\n text-transform: capitalize;\n`\n\nconst HeaderWrapper = styled.div`\n display: flex;\n align-items: center;\n`\n\nconst Content = styled(TextMinor)`\n padding-left: 32px;\n`\n\nconst TOAST_TYPES = [\"success\", \"error\"];\n\nconst ToastItem = ({ type, message, id }) => {\n const [tranClass, setTranClass] = useState(\"\");\n const isMounted = useIsMounted();\n const dispatch = useDispatch();\n let closeSrc = \"/imgs/close.svg\";\n switch (type) {\n case \"success\":\n closeSrc = \"/imgs/close-success.svg\";\n break;\n case \"error\":\n closeSrc = \"/imgs/close-error.svg\";\n break;\n default:\n break;\n }\n \n useEffect(() => {\n setTimeout(() => {\n dispatch(removeToast(id));\n }, 5000);\n });\n useEffect(() => {\n setTimeout(() => {\n if (isMounted.current) {\n setTranClass(\"tran\");\n }\n }, 100);\n })\n\n if (!message) return null;\n return (\n \n \n \n {type && TOAST_TYPES.includes(type) && (\n \n )}\n \n {type}\n \n {\n dispatch(removeToast(id));\n }} />\n \n \n {message}\n \n );\n};\n\nexport default ToastItem;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { useSelector } from \"react-redux\";\n\nimport ToastItem from \"./ToastItem\";\nimport {\n toastsSelector\n} from \"../../store/reducers/toastSlice\";\nimport Container from \"../../components/Container\";\n\nconst Wrapper = styled.div`\n position: fixed;\n width: 100vw;\n height: 0;\n left: 0;\n top: 0;\n z-index: 999;\n`\n\nconst ToastList = styled.div`\n margin-top: 88px;\n margin-left: auto;\n width: fit-content;\n display: flex;\n flex-direction: column;\n`\n\nconst Toast = () => {\n const toasts = useSelector(toastsSelector);\n \n return (\n \n \n \n {(toasts || []).map(({ type, message, id }) => \n \n )}\n \n \n \n )\n}\n\nexport default Toast;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport dayjs from \"dayjs\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport Balance from \"../../components/Balance\";\nimport Text from \"../../components/Text\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport Card from \"../../components/Card\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst TableRow = styled(Table.Row)`\n height: 50px;\n`;\n\nconst TimeWrapper = styled.div`\n display: flex;\n align-items: center;\n p:first-child {\n min-width: 154px;\n }\n`;\n\nconst EventID = styled(Text)`\n white-space: nowrap;\n &:hover {\n text-decoration-line: underline;\n }\n`;\n\nconst EventWrapper = styled.div`\n display: flex;\n align-items: center;\n & > img {\n margin-right: 4px;\n }\n`;\n\nconst SlashTable = ({ data, loading, header, footer }) => {\n return (\n \n {header}\n \n \n \n \n \n \n Time\n Event ID / Extrinsic ID\n \n Event Name / Extrinsic Name\n \n \n Balance\n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n \n \n \n \n {dayjs(parseInt(item.indexer.blockTime)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n )}\n \n \n \n \n \n \n \n {item.indexer.eventIndex ? (\n \n \n \n {`${item.indexer.blockHeight}-${item.indexer.eventIndex}`}\n \n \n ) : (\n \n \n \n {`${item.indexer.blockHeight}-${item.indexer.extrinsicIndex}`}\n \n \n )}\n \n {`${item.section}(${item.method})`}\n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default SlashTable;\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport SlashTable from \"./SlashTable\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport { useHistory } from \"react-router\";\n\nimport {\n fetchDemocracySlashList,\n democracySlashListSelector,\n democracySlashListLoadingSelector,\n} from \"../../store/reducers/incomeSlice\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst DemocracySlash = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"democracyPageSizde\",\n DEFAULT_PAGE_SIZE\n );\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: itemList, total } = useSelector(democracySlashListSelector);\n const loading = useSelector(democracySlashListLoadingSelector);\n\n useEffect(() => {\n dispatch(fetchDemocracySlashList(tablePage - 1, pageSize));\n }, [dispatch, tablePage, pageSize]);\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <>\n \n Democracy slash\n \n }\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n \n );\n};\n\nexport default DemocracySlash;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport dayjs from \"dayjs\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport Balance from \"../../components/Balance\";\nimport Text from \"../../components/Text\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport User from \"../../components/User\";\nimport Card from \"../../components/Card\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst TableRow = styled(Table.Row)`\n height: 50px;\n`;\n\nconst TimeWrapper = styled.div`\n display: flex;\n align-items: center;\n p:first-child {\n min-width: 154px;\n }\n`;\n\nconst EventID = styled(Text)`\n white-space: nowrap;\n &:hover {\n text-decoration-line: underline;\n }\n`;\n\nconst EventWrapper = styled.div`\n display: flex;\n align-items: center;\n & > img {\n margin-right: 4px;\n }\n`;\n\nconst SlashTable = ({ data, loading, header, footer }) => {\n return (\n \n {header}\n \n \n \n \n \n \n Time\n Event ID\n Event Name\n Account\n \n Balance\n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n \n \n \n \n {dayjs(parseInt(item.indexer.blockTime)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n )}\n \n \n \n \n \n \n \n \n \n \n {`${item.indexer.blockHeight}-${item.indexer.eventIndex}`}\n \n \n \n {`${item.section}(${item.method})`}\n \n \n \n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default SlashTable;\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport SlashTable from \"./SlashTable\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport { useHistory } from \"react-router\";\n\nimport {\n fetchIdentitySlashList,\n identitySlashListSelector,\n identitySlashListLoadingSelector,\n} from \"../../store/reducers/incomeSlice\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst IdentitySlash = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"identityPageSize\",\n DEFAULT_PAGE_SIZE\n );\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: itemList, total } = useSelector(identitySlashListSelector);\n const loading = useSelector(identitySlashListLoadingSelector);\n\n useEffect(() => {\n dispatch(fetchIdentitySlashList(tablePage - 1, pageSize));\n }, [dispatch, tablePage, pageSize]);\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <>\n \n Identity Slash\n \n }\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n \n );\n};\n\nexport default IdentitySlash;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport dayjs from \"dayjs\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport Balance from \"../../components/Balance\";\nimport Text from \"../../components/Text\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport Card from \"../../components/Card\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst TableRow = styled(Table.Row)`\n height: 50px;\n`;\n\nconst TimeWrapper = styled.div`\n display: flex;\n align-items: center;\n p:first-child {\n min-width: 154px;\n }\n`;\n\nconst EventID = styled(Text)`\n white-space: nowrap;\n &:hover {\n text-decoration-line: underline;\n }\n`;\n\nconst EventWrapper = styled.div`\n display: flex;\n align-items: center;\n & > img {\n margin-right: 4px;\n }\n`;\n\nconst SlashTable = ({ data, loading, header, footer }) => {\n return (\n \n {header}\n \n \n \n \n \n \n Time\n Event ID\n Event Name\n \n Balance\n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n \n \n \n \n {dayjs(parseInt(item.indexer.blockTime)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n )}\n \n \n \n \n \n \n \n \n \n \n {`${item.indexer.blockHeight}-${item.indexer.eventIndex}`}\n \n \n \n {`${item.section}(${item.method})`}\n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default SlashTable;\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport SlashTable from \"./SlashTable\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport { useHistory } from \"react-router\";\n\nimport {\n fetchStakingSlashList,\n stakingSlashListSelector,\n stakingSlashListLoadingSelector,\n} from \"../../store/reducers/incomeSlice\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst StakingSlash = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"stakingPageSize\",\n DEFAULT_PAGE_SIZE\n );\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: itemList, total } = useSelector(stakingSlashListSelector);\n const loading = useSelector(stakingSlashListLoadingSelector);\n\n useEffect(() => {\n dispatch(fetchStakingSlashList(tablePage - 1, pageSize));\n }, [dispatch, tablePage, pageSize]);\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <>\n \n Staking slash\n \n }\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n \n );\n};\n\nexport default StakingSlash;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport dayjs from \"dayjs\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport Balance from \"../../components/Balance\";\nimport Text from \"../../components/Text\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport Card from \"../../components/Card\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst TableRow = styled(Table.Row)`\n height: 50px;\n`;\n\nconst TimeWrapper = styled.div`\n display: flex;\n align-items: center;\n p:first-child {\n min-width: 154px;\n }\n`;\n\nconst EventID = styled(Text)`\n white-space: nowrap;\n &:hover {\n text-decoration-line: underline;\n }\n`;\n\nconst EventWrapper = styled.div`\n display: flex;\n align-items: center;\n & > img {\n margin-right: 4px;\n }\n`;\n\nconst InflationTable = ({ data, loading, header, footer }) => {\n return (\n \n {header}\n \n \n \n \n \n \n Time\n Event ID\n \n Balance\n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n \n \n \n \n {dayjs(parseInt(item.indexer.blockTime)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n )}\n \n \n \n \n \n \n \n \n \n \n {`${item.indexer.blockHeight}-${item.indexer.eventIndex}`}\n \n \n \n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default InflationTable;\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport SlashTable from \"./InflationTable\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport { useHistory } from \"react-router\";\n\nimport {\n fetchInflationList,\n inflationListSelector,\n inflationListLoadingSelector,\n} from \"../../store/reducers/incomeSlice\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n align-items: flex-end;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst SubTitle = styled.span`\n margin-left: 8px;\n font-size: 12px;\n color: rgba(29, 37, 60, 0.24);\n font-family: Inter;\n font-weight: normal;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst Inflation = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"inflationPageSize\",\n DEFAULT_PAGE_SIZE\n );\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: itemList, total } = useSelector(inflationListSelector);\n const loading = useSelector(inflationListLoadingSelector);\n\n useEffect(() => {\n dispatch(fetchInflationList(tablePage - 1, pageSize));\n }, [dispatch, tablePage, pageSize]);\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <>\n \n Inflation\n Staking Remaining\n \n }\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n \n );\n};\n\nexport default Inflation;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport dayjs from \"dayjs\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport Balance from \"../../components/Balance\";\nimport Text from \"../../components/Text\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport Card from \"../../components/Card\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst TableRow = styled(Table.Row)`\n height: 50px;\n`;\n\nconst TimeWrapper = styled.div`\n display: flex;\n align-items: center;\n p:first-child {\n min-width: 154px;\n }\n`;\n\nconst EventID = styled(Text)`\n white-space: nowrap;\n &:hover {\n text-decoration-line: underline;\n }\n`;\n\nconst EventWrapper = styled.div`\n display: flex;\n align-items: center;\n & > img {\n margin-right: 4px;\n }\n`;\n\nconst OthersIncomeTable = ({ data, loading, header, footer }) => {\n return (\n \n {header}\n \n \n \n \n \n \n Time\n Event ID\n Event Name\n \n Balance\n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n \n \n \n \n {dayjs(parseInt(item.indexer.blockTime)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n )}\n \n \n \n \n \n \n \n \n \n \n {`${item.indexer.blockHeight}-${item.indexer.eventIndex}`}\n \n \n \n {`treasury(Deposit)`}\n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default OthersIncomeTable;\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport OthersIncomeTable from \"./OthersIncomeTable\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport { useHistory } from \"react-router\";\n\nimport {\n fetchOthersIncomeList,\n othersIncomeListSelector,\n othersIncomeListLoadingSelector,\n} from \"../../store/reducers/incomeSlice\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst OthersIncome = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"othersPageSize\",\n DEFAULT_PAGE_SIZE\n );\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: itemList, total } = useSelector(othersIncomeListSelector);\n const loading = useSelector(othersIncomeListLoadingSelector);\n\n useEffect(() => {\n dispatch(fetchOthersIncomeList(tablePage - 1, pageSize));\n }, [dispatch, tablePage, pageSize]);\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <>\n \n Big others\n \n }\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n \n );\n};\n\nexport default OthersIncome;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport dayjs from \"dayjs\";\nimport { Image } from \"semantic-ui-react\";\n\nimport Table from \"../../components/Table\";\nimport TableLoading from \"../../components/TableLoading\";\nimport Balance from \"../../components/Balance\";\nimport Text from \"../../components/Text\";\nimport ExplorerLink from \"../../components/ExplorerLink\";\nimport TableNoDataCell from \"../../components/TableNoDataCell\";\nimport PolygonLabel from \"../../components/PolygonLabel\";\nimport { useSelector } from \"react-redux\";\nimport { chainSymbolSelector } from \"../../store/reducers/chainSlice\";\nimport Card from \"../../components/Card\";\nimport User from \"../../components/User\";\n\nconst CardWrapper = styled(Card)`\n overflow-x: hidden;\n padding: 0;\n table {\n border-radius: 0 !important;\n border: none !important;\n }\n @media screen and (max-width: 600px) {\n border-radius: 0;\n }\n`;\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst TableWrapper = styled.div`\n overflow: scroll;\n`;\n\nconst StyledTable = styled(Table)`\n .short-padding {\n padding-top: 4px !important;\n padding-bottom: 4px !important;\n }\n .no-data {\n height: 120px !important;\n }\n`;\n\nconst TableRow = styled(Table.Row)`\n height: 50px;\n`;\n\nconst TimeWrapper = styled.div`\n display: flex;\n align-items: center;\n p:first-child {\n min-width: 154px;\n }\n`;\n\nconst EventID = styled(Text)`\n white-space: nowrap;\n &:hover {\n text-decoration-line: underline;\n }\n`;\n\nconst EventWrapper = styled.div`\n display: flex;\n align-items: center;\n & > img {\n margin-right: 4px;\n }\n`;\n\nconst TransfersTable = ({ data, loading, header, footer }) => {\n const symbol = useSelector(chainSymbolSelector);\n\n return (\n \n {header}\n \n \n \n \n \n \n Time\n Event ID\n Sender\n \n Balance\n \n \n \n \n {(data &&\n data.length > 0 &&\n data.map((item, index) => (\n \n \n \n \n {dayjs(parseInt(item.indexer.blockTime)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n )}\n \n \n \n \n \n \n \n \n \n \n {`${item.indexer.blockHeight}-${item.indexer.eventIndex}`}\n \n \n \n \n \n \n \n \n \n \n ))) || }\n \n \n \n \n \n {footer}\n \n );\n};\n\nexport default TransfersTable;\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport ResponsivePagination from \"../../components/ResponsivePagination\";\nimport TransfersSlashTable from \"./TransfersSlashTable\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useQuery, useLocalStorage } from \"../../utils/hooks\";\nimport { useHistory } from \"react-router\";\n\nimport {\n fetchTransferList,\n transferListSelector,\n transferListLoadingSelector,\n} from \"../../store/reducers/incomeSlice\";\nimport Text from \"../../components/Text\";\n\nconst HeaderWrapper = styled.div`\n padding: 20px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Title = styled(Text)`\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n`;\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_QUERY_PAGE = 1;\n\nconst Transfers = () => {\n const searchPage = parseInt(useQuery().get(\"page\"));\n const queryPage =\n searchPage && !isNaN(searchPage) && searchPage > 0\n ? searchPage\n : DEFAULT_QUERY_PAGE;\n const [tablePage, setTablePage] = useState(queryPage);\n const [pageSize, setPageSize] = useLocalStorage(\n \"transfersSlashPageSize\",\n DEFAULT_PAGE_SIZE\n );\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { items: transferList, total } = useSelector(transferListSelector);\n const loading = useSelector(transferListLoadingSelector);\n\n useEffect(() => {\n dispatch(fetchTransferList(tablePage - 1, pageSize));\n }, [dispatch, tablePage, pageSize]);\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n
\n \n Transfers\n \n }\n footer={\n {\n setTablePage(DEFAULT_QUERY_PAGE);\n setPageSize(pageSize);\n history.push({\n search: null,\n });\n }}\n onPageChange={(_, { activePage }) => {\n history.push({\n search:\n activePage === DEFAULT_QUERY_PAGE\n ? null\n : `?page=${activePage}`,\n });\n setTablePage(activePage);\n }}\n />\n }\n />\n
\n );\n};\n\nexport default Transfers;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst Wrapper = styled.span`\n\n`\n\nexport default function Addr({ children = '', length = 5 }) {\n const shortAddr = children.substring(0, length) + '...' + children.substring(children.length - length)\n\n return (\n {shortAddr}\n )\n}\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport {\n isWeb3Injected,\n web3Accounts,\n web3Enable,\n} from \"@polkadot/extension-dapp\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Modal } from \"semantic-ui-react\";\nimport { isLoginSelector, setAccount } from \"../../store/reducers/accountSlice\";\nimport Addr from \"../../components/Address\";\nimport queryString from \"query-string\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { useIsMounted } from \"../../utils/hooks\";\n\nconst SignInModal = styled(Modal)`\n .account-select-content {\n li {\n display: flex;\n justify-content: space-between;\n line-height: 36px;\n cursor: pointer;\n\n &:hover {\n background: #fbfbfb;\n }\n }\n }\n`;\n\nconst AdminLogin = () => {\n const location = useLocation();\n const history = useHistory();\n const isMounted = useIsMounted();\n\n const [noExtensionModalOpen, setNoExtensionModalOpen] = useState(false);\n const [accountsModalOpen, setAccountsModalOpen] = useState(false);\n const [accounts, setAccounts] = useState([]);\n const isLogin = useSelector(isLoginSelector);\n const dispatch = useDispatch();\n\n const q = queryString.parse(location.search);\n const isAdmin = q.admin === \"true\";\n\n useEffect(() => {\n if (!isLogin && isAdmin && !accountsModalOpen && !noExtensionModalOpen) {\n (async function login() {\n await web3Enable(\"doTreasury\");\n if (!isWeb3Injected) {\n if (isMounted.current) {\n setNoExtensionModalOpen(true);\n }\n return;\n }\n const extensionAccounts = await web3Accounts();\n const accounts = extensionAccounts.map(\n ({ address, meta: { name } }) => {\n return {\n address,\n name,\n };\n }\n );\n\n if (isMounted.current) {\n setAccounts(accounts);\n setAccountsModalOpen(true);\n }\n })();\n }\n }, [isAdmin, isLogin, accountsModalOpen, noExtensionModalOpen, isMounted]);\n\n const loginAccount = async (account) => {\n setAccountsModalOpen(false);\n dispatch(setAccount(account));\n };\n\n return (\n <>\n {\n setAccountsModalOpen(false);\n history.goBack();\n }}\n >\n Select accounts\n \n
    \n {accounts.map((account) => {\n return (\n {\n await loginAccount(account);\n }}\n >\n {account.name}\n {account.address}\n \n );\n })}\n
\n
\n \n\n {\n setNoExtensionModalOpen(false);\n history.goBack();\n }}\n >\n Sign in\n \n Polkadot extension was not found. Please install or enable it.\n \n \n \n );\n};\n\nexport default AdminLogin;\n","import React from \"react\";\nimport {\n BrowserRouter as Router,\n Redirect,\n Route,\n Switch,\n} from \"react-router-dom\";\nimport { connect } from \"../services/websocket\";\n\nimport Container from \"../components/Container\";\nimport { Wrapper, PageWrapper } from \"./components\";\nimport ScrollToTop from \"../components/ScrollToTop\";\nimport Header from \"../pages/Header\";\nimport Footer from \"../pages/Footer\";\nimport Tips from \"../pages/Tips\";\nimport Proposals from \"../pages/Proposals\";\nimport Bounties from \"../pages/Bounties\";\nimport TipDetail from \"../pages/TipDetail\";\nimport ProposalDetail from \"../pages/ProposalDetail\";\nimport BountyDetail from \"../pages/BountyDetail\";\nimport Overview from \"../pages/Overview\";\nimport Projects from \"../pages/Projects\";\nimport ProjectDetail from \"../pages/ProjectDetail\";\nimport Toast from \"../pages/Toast\";\nimport DemocracySlash from \"../pages/DemocracySlash\";\nimport IdentitySlash from \"../pages/IdentitySlash\";\nimport StakingSlash from \"../pages/StakingSlash\";\nimport Inflation from \"../pages/Inflation\";\nimport OthersIncome from \"../pages/OthersIncome\";\nimport TransfersSlash from \"../pages/TransfersSlash\";\nimport AdminLogin from \"../pages/AdminLogin\";\n\nimport { usePreload } from \"../utils/hooks\";\n\nexport default function App() {\n usePreload();\n\n connect();\n\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