{"version":3,"sources":["services/api.ts","pages/SSO/styles.ts","components/Button/styles.ts","components/Button/index.tsx","services/bolsa-api.ts","services/exterior-api.ts","contexts/AuthContext.tsx","assets/xp.svg","pages/SSO/index.tsx","styles/LoginSignUp/authContainer.ts","constants/others/states.ts","utils/validations.ts","utils/format.tsx","utils/mask.ts","utils/date.ts","utils/utils.ts","utils/formValidations.ts","pages/Login/index.tsx","components/DrawerModal/index.tsx","pages/Darfs/styles.ts","components/OperationModal/styles.ts","components/OperationModal/table.tsx","components/OperationModal/useOperationModal.ts","constants/others/exterior.ts","contexts/ClientsContext.tsx","components/OperationModal/index.tsx","assets/icons/send.svg","assets/icons/XRed.svg","assets/icons/filtro.svg","assets/icons/CheckGreen.svg","pages/Darfs/index.tsx","components/Darf/handlers.ts","components/Darf/SendDarfModal.tsx","pages/Darfs/tooltip.ts","pages/Cadastro/index.tsx","components/Loading/index.tsx","assets/notification.svg","components/ChartBar/index.tsx","components/FooterModal/index.tsx","components/FormModal/index.tsx","components/Avisos/styles.ts","assets/icons/icon-integracao.svg","constants/plans/index.tsx","components/Planos/planos.tsx","components/Planos/styles.ts","components/Payment/PaymentModal/CreditCardStep/index.tsx","services/payment.ts","components/Payment/PaymentModal/CreditCardStep/components/Footer/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/CardForm/index.tsx","services/cep.ts","components/Payment/PaymentModal/CreditCardStep/components/AddressForm/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/ResultScreen/components/ErrorScreen/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/ResultScreen/components/ConfirmScreen/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/ResultScreen/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/ResultScreen/components/PendingScreen/index.tsx","components/Payment/PaymentModal/PixStep/index.tsx","components/Payment/PaymentModal/PixStep/components/CopyText/index.tsx","components/Payment/PaymentModal/styles.ts","components/Payment/PaymentModal/index.tsx","components/Planos/index.tsx","components/Avisos/Avisos.tsx","components/UploadVelotax/styles.ts","components/UploadVelotax/index.tsx","components/Previdencia/styles.ts","components/Previdencia/index.tsx","constants/inputs/index.tsx","constants/formItems/index.ts","constants/others/permissoes.ts","assets/icons/empty.svg","pages/Professionals/index.tsx","components/UserPlanModal/index.tsx","components/DeleteConfirmationModal/index.tsx","pages/Clients/styles.ts","constants/clients/index.tsx","components/UserPlanModal/ChoosePlanStep/styles.ts","components/UserPlanModal/ChoosePlanStep/index.tsx","components/UserPlanModal/styles.ts","components/ProventosModal/styles.ts","components/ReportType/styles.ts","components/ReportType/ReportType.tsx","components/ProventosModal/index.tsx","assets/icons/mail.svg","assets/icons/whatsapp.svg","components/IntegrationModal/styles.ts","assets/Integracao_XP_B3.gif","assets/integracao_warren_exterior.gif","components/IntegrationModal/index.tsx","components/NotasCorretagem/UploadNotas/styles.ts","components/NotasCorretagem/UploadNotas/index.tsx","components/PosicaoCard/styles.ts","components/PosicaoCard/index.tsx","assets/icons/selo.svg","utils/patrimonio.ts","components/Notification/styles.ts","components/Notification/Notification.tsx","assets/notification.png","assets/icons/selection.svg","pages/Clients/index.tsx","components/NotasCorretagem/useNotasCorretagem.ts","routes/PrivateRoutes.tsx","routes/OnlyPublicRoute.tsx","routes/OnlyClientAccountPermissionRoute.tsx","pages/Faturamento/styles.ts","pages/Faturamento/index.tsx","pages/MinhaConta/styles.ts","pages/MinhaConta/index.tsx","webpack:///./src/assets/xp.svg?1086","pages/PageNotFound/index.tsx","pages/Regulation/styles.ts","constants/regulation/index.tsx","pages/Regulation/index.tsx","components/Header/styles.ts","components/Header/index.tsx","components/Logo/styles.ts","assets/Logo 1_Branca.png","components/Logo/index.tsx","components/Sidebar/styles.ts","assets/icons/sidebar/darfs.svg","assets/icons/sidebar/conta.svg","assets/icons/sidebar/clientes.svg","assets/icons/sidebar/assessores.svg","components/Sidebar/index.tsx","components/PageWrapper/styles.ts","components/PageWrapper/index.tsx","pages/Authorization/index.tsx","pages/ForgotPassword/index.tsx","pages/ChangePassword/index.tsx","components/PublicWrapper/Header/styles.ts","components/PublicWrapper/Header/index.tsx","components/PublicWrapper/styles.ts","components/PublicWrapper/index.tsx","pages/AuthorizeAccountant/index.tsx","routes/index.tsx","styles/global.ts","services/chatApi.ts","components/ChatGPT/styles.ts","assets/velotax/veloicon.svg","components/ChatGPT/index.tsx","styles/drawer-modal.ts","contexts/ContextWrapper.tsx","components/ErrorBoundary/index.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["api","axios","create","baseURL","process","headers","Container","styled","div","ButtonStyled","Button","isMobile","props","tooltip","css","type","size","disabled","children","apiBolsa","apiExterior","AuthContext","createContext","AuthProvider","navigate","useNavigate","useState","decUrl","setDecUrl","apiError","setApiError","loading","setLoading","showDrawer","setShowDrawer","showDbkModal","setShowDbkModal","loadingSession","setLoadingSession","wasMessageSent","setWasMessageSent","expandedSidebar","setExpandedSidebar","user","setUser","showIndicarModal","setShowIndicarModal","getUserInformation","a","token","localStorage","getItem","defaults","common","apiXPBolsa","apiXPExterior","get","response","userFromApi","data","username","name","email","isOffice","assessorId","fileLink","officeId","isManager","isAdmin","liberadaContratacao","discount","hasPassword","enviarDarfAutomaticamente","responsavel","office","admin","JSON","parse","getUserInfo","useCallback","callback","then","res","catch","err","console","log","updateUserInfo","updateUserDec","updatedUser","answeredStepDec","signOut","removeItem","setTimeout","window","location","reload","useEffect","interceptors","use","error","status","Promise","reject","setLocalStorageWithAuthData","setItem","stringify","handleSignIn","post","password","pass","message","handleSignUp","signUpData","policiesAccepted","isAssessor","usernameEscritorio","terms","handleError","Provider","value","signed","Object","keys","length","useAuth","useContext","SSO","useParams","authorization","success","className","src","veloLogo","alt","LoadingOutlined","htmlType","onClick","AuthContainer","section","states","isValidCPF","cpf","validateBr","isValidCNPJ","cnpj","isValidPhone","phone","phoneSchema","yup","validateSync","removeSpecialCharacters","normalize","replace","numberToPhone","sequenciaNumeros","test","String","ddd","slice","primeiraParte","segundaParte","formatCurrency","prefix","decimalScale","displayType","decimalSeparator","thousandSeparator","fixedDecimalScale","toLocaleString","minimumFractionDigits","maximumFractionDigits","arrow","n","style","fontSize","marginBottom","negativeToPositive","numberToPercentage","toFixed","number","Number","currencyToNumber","cpfInputMask","cnpjInputMask","maskCpf","includes","cpfArray","split","splice","join","monthsExtended","placeholder","CalendarLocale","navigator","userAgent","download","link","userAgentString","chromeAgent","indexOf","safariAgent","href","open","getBrowser","sUsrAg","exteriorTransactionsFilter","el","operation","manual","vendasTotaisExt","item","transactions","filter","reduce","t","valor","cambioVenda","vendasTotais","quantity","sellPrice","code","substring","toUpperCase","fator","downloadPDF","base64","fileName","linkSource","downloadLink","document","createElement","Date","now","click","isAntesTerceiroDiaUtil","today","moment","isoWeekday","firstDayOfMonth","startOf","businessDaysCount","add","isBefore","thirdBusinessDayAndMonth","currentMonth","getMonth","currentYear","getFullYear","year","month","title","validationCpf","required","validator","_","resolve","Error","validationCnpj","validationCpfCnpj","replaceAll","validationFullName","rule","trim","validationEmail","isValidSync","validationLogo","validationPhone","validationPhoneRequired","validationFieldRequired","validationStateAddress","min","max","isValidStateAddress","validationCardShelfLife","monthYearTime","valueTime","reverse","isValidShelfLife","validationCep","cep","validationCVV","validationPassword","validationMaxLength20","validationPassConfirmation","getFieldValue","validationCreditCardNumber","Payment","fns","validateCardNumber","isValidCreditCard","Login","Form","useForm","form","onFinish","Item","rules","maxLength","Password","visibilityToggle","block","DrawerModal","height","visible","onCancel","getContainer","destroyOnClose","placement","onClose","closable","footer","Content","DownloadIcon","GrDocumentDownload","DarfAutomaticoContainer","DropdownButton","button","TitleContainer","StyledTable","VendasContainer","LoadingContainer","calcReturn","buyPrice","fee","ganho","ret","qtt","color","TabelasBolsa","transaction","index","setIndex","dtoBolsa","Resultado","handleDownloadSheetByLink","map","i","span","ghost","bordered","expandIconPosition","Panel","header","Title","level","memoriaCalculo","sheetFileUrl","icon","width","op","retorno","id","date","format","Text","marginRight","capitalGain","marginLeft","textAlign","TabelasExterior","oldModel","gainKeys","sellPriceKeys","buyPriceKeys","feeKeys","getByKey","isOldModel","undefined","key","k","find","getBuyPrice","getGain","getSellPrice","getFee","useDarfExterior","ExteriorFields","ativo","rendimentoAplicacao","ExteriorFieldsNew","isTrade","quantidade","varTotalBRL","totalGanho","Math","abs","prejuizoExterior","isInteger","aliquotaDevida","impostoDevido","yearConfigPL4173","ClientsContext","ClientsProvider","clients","setClients","typeProventos","setTypeProventos","yearProventos","setYearProventos","proventos","setProventos","patrimonios","setPatrimonios","notificacoes","setNotificacoes","loadingNotificacoes","setLoadingNotificacoes","proventosLoading","setProventosLoading","patrimoniosLoading","setPatrimoniosLoading","totalClients","setTotalClients","darfs","setDarfs","totalDarfs","setTotalDarfs","proventosFileUrl","setProventosFileUrl","patrimoniosFileUrl","setPatrimoniosFileUrl","totalProfessionals","setTotalProfessionals","professionals","setProfessionals","selectedClient","setSelectedClient","professionalId","setProfessionalId","selectedProfessional","setSelectedProfessional","newClient","setNewClient","createStep","setCreateStep","loadingGet","setLoadingGet","loadingLogin","setLoadingLogin","professionalGet","setProfessionalGet","professionalSheetBuffer","setProfessionalSheetBuffer","buffer","setBuffer","createClientDeleted","setCreateClientDeleted","createClient","currentPage","professional","random","mail","acesso","from","plan","assessores","person","userDeleted","showModal","getProfessionals","getClients","page","updateClient","filters","payload","tableEdit","userId","put","updateProfessional","getProventos","params","fileUrl","updated","getNotifications","getPatrimonios","client","wallet","posicoes","verifyClientVelotax","fullname","getClientsUpdating","cpfs","forEach","c","updatingB3Integration","push","newClients","stillUpdating","b3IntegrationUpdated","removeCurrent","darf","pageSize","searchText","planActive","resp","darfEnviado","darfPago","getAllDarfStatus","orderBy","orderDirection","statusBolsa","statusExterior","updateAllClients","processAllClients","fromClients","selectClient","info","total","cliente","handleDownloadSheet","localBuffer","Uint8Array","blob","Blob","FileSaver","saveAs","all","profs","sort","b","localeCompare","count","getClientToken","loginInClient","removeClient","delete","_id","removeProfessional","restoreClient","searchClients","search","toLocaleLowerCase","searchProfessionals","useClients","OperationModal","modalOperationsOpen","setModalOperationsOpen","clientsSelected","handleDarfDownload","handleDarfSend","setTransaction","showDarfTooltip","setShowDarfToolTip","isExterior","payed","idDarf","toLowerCase","idDarfBolsa","idDarfExterior","nAtualizarDarfsPassadas","nAtualizarIrrf","atualizouImpostoAcumulado","nAtualizarPrejuizosAcumulados","atualizarTotalmente","atualizouCorretagem","finally","valorPrincipal","irrfExterior","impostoComumFinal","impostoDTFinal","impostoFIIFinal","impostoTotal","impostoTotalFinal","urlDarfExterior","urlDarfBolsa","bodyStyle","position","marginTop","flexGrow","display","justifyContent","alignItems","impostoAcumulado","irrfTotal","multaAux","multa","jurosAux","juros","_extends","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","SvgSend","_ref","svgRef","titleId","viewBox","fill","xmlns","ref","ForwardRef","rx","SvgXRed","SvgFiltro","SvgCheckGreen","sendToWhatsapp","directDownload","inputClients","whatsappRedirectURL","setWhatsappRedirectURL","sendToResp","setSendToResp","setShowSendDarfModal","setEmailFlow","setWhatsappFlow","singleClient","shortPath","darfLabel","text","url","Authorization","SendDarfModal","browser","setKeys","showSendDarfModal","setClientsSelected","emailFlow","whatsappFlow","justify","margin","rel","onChange","e","checked","fontWeight","MailOutlined","paddingLeft","lineHeight","paddingTop","borderTop","InfoCircleOutlined","cursor","Paragraph","dayFilters","toString","m","yearFilters","y","debounce","monthsOrder","initialData","Darfs","setFilters","setSearchText","setCurrentPage","appliedFilters","setAppliedFilters","showFilterModal","setShowFilterModal","allDarfsSelected","setAllDarfsSelected","current","defaultPageSize","showSizeChanger","pageSizeOptions","pagination","handleDisabled","escritorioId","some","isAuthorized","handleSwitchDarfAutomatico","align","gutter","xs","sm","minWidth","clearTimeout","rowKey","dataSource","defaultCurrent","simple","rowSelection","selectedRowKeys","selectedRows","getCheckboxProps","record","body","sorter","order","field","locale","filterReset","columns","render","whiteSpace","dataIndex","isDisabled","items","label","menu","trigger","Drop","strong","allowClear","mode","getPopupContainer","parentNode","options","Group","event","checkedChildren","unCheckedChildren","Cadastro","isPj","setIsPj","visiblePass","setVisiblePass","RegisterForm","setFieldValue","EyeInvisibleOutlined","EyeOutlined","activeKey","TabPane","tab","Loading","ChartBar","monthReport","setDataChart","bars","setBars","totalJscp","setTotalJscp","totalDiv","setTotalDiv","totalBonds","setTotalBonds","totalRendi","setTotalRendi","totalAmort","setTotalAmort","chartColors","background","getProviderColor","provider","proventoByMonth","dividendo","rendimento","amortizacao","bonds","groupedProventos","groupBy","operations","corporateActionTypeDescription","grossAmount","barsChart","corretora","futuro","liquidado","types","isFuturo","labelFormatter","notificationImage","ResponsiveContainer","BarChart","top","left","XAxis","dataKey","YAxis","axisLine","tick","Tooltip","content","Legend","layout","iconType","verticalAlign","formatter","entry","Bar","stackId","FooterModal","onOk","FormModal","edit","rows","visibility","itemToEdit","setUpdate","update","setFieldsValue","resetFields","onValuesChange","changedValues","values","flat","input","acc","cur","dataEntries","entries","setFields","row","getFieldsValue","hide","array","hidden","valuePropName","AvisosContainer","temPlano","SvgIconIntegracao","PlanEnum","UserPlanEnum","OtherFeatures","UserPlanUpgradeEnum","UserPlans","VELOTAX_MAIN_PRO","interval","showDiscount","price","originalPrice","percentDiscount","discountText","maskValue","includedFeatures","descriptions","VELOTAX_MAIN_PRO_MONTH","BASIC_V1","PRO_V1","PlanosContainer","planos","VELOTAX_MAIN_BASIC","installments","for","benefits","VELOTAX_MAIN_BASIC_MONTH","VELOTAX_MAIN_CONCIERGE","popular","VELOTAX_MAIN_CONCIERGE_MONTH","ETypePurchase","planUpgrade","BASIC_TO_PRO","BASIC_TO_CONCIERGE","PRO_TO_CONCIERGE","getPlanPrice","hasPlan","premium","basic","getPlanOriginalPrice","apiPayment","Footer","currentStep","setCurrentStep","handleProceed","getConditionToDisable","typePurchase","hideTerms","backtoRoot","md","step","CardForm","setCvc","setName","setPhone","setNumber","setExpiry","setFocused","setHolderDocument","setIsValidCardForm","uniqueValue","fixedInstallments","handleBack","signature","installmentSelected","customInstallments","inputType","setInputType","cardType","useMemo","changed","cvv","expiry","holderName","validateFields","mask","onPaste","setAttribute","clipboardData","getData","getAttribute","removeAttribute","onBeforeInput","method","AddressForm","setIsValidAddressForm","onFieldsChange","defaultValue","onValueChange","street","logradouro","neighborhood","bairro","city","localidade","state","uf","getAddressSuggestion","ErrorScreen","cb","ConfirmedScreen","ResultScreen","PendingScreen","getStatus","EPlanStep","CreditCardStep","handleClosableModal","darfData","handleSuccess","handleIdBack","backToRoot","createPlanXPPro","clientSelected","cardForm","addressForm","cvc","focused","holderDocument","setInstallments","isValidCardForm","isValidAddressForm","isPlan","spinning","addressInfo","monthExp","monthYear","paymentForm","clientUserId","paymentInfo","cardInfo","line_1","zip_code","holder_name","exp_month","exp_year","clientInfo","createUniquePayment","handleCreatePlanXPPro","CopyText","isMinimalMobile","selection","range","createTextRange","moveToElementText","getElementById","select","getSelection","createRange","selectNode","removeAllRanges","addRange","selectText","pixTaxesByInsitution","PixStep","paymentData","backStep","onSucess","clientUsername","setStep","brCode","setBrCode","qrCode","setQrCode","checkWasPaid","delay","attempts","setInterval","clearInterval","FINISHED","acceptTerms","br_code","CHOOSE_PAYMENT","stopIntervalPix","plano","p","totalPrice","getDiscount","planPrice","flexDirection","wordBreak","maxWidth","institution","PaymentModal","show","disableCreditCardOption","callDarf","hideDarfDownload","disableCreditCardMessage","onSucessPix","planCurrent","onSucessCreditCard","maxPixValue","selectedYear","emitting","createConciergePlan","typeConcierge","cardList","setCardList","disabledConciergeOption","ocultaContratacaoViaFatura","desabilitaContratacaoViaPix","list","LOADING","plansContentDisplay","backgroundColor","border","CC_PAYMENT","PIX_PAYMENT","initialized","UNIQUE","setInitialized","padding","cancelActions","handlePadding","innerWidth","keyboard","maskClosable","Planos","onBack","selectedPlan","setSelectedPlan","paymentModal","setPaymentModal","setPlanUpgrade","setTypeConcierge","handleSelectPlan","active","createPlanFromSelectedClient","usernames","planName","getMinDiscount","planType","WARREN_CONCIERGE","WARREN_PRO","WARREN_BASIC","concierge","benefit","parentElement","Avisos","setPaymentType","clientsWithCancelRecurring","setIntegrationClient","setShowPaymentModal","setOpen","setIntegrationModal","dismissBolsa","setDismissBolsa","dismissExterior","setDismissExterior","userPlanInfoVelotax","closeIntegration","closeIntegrationBolsa","closeIntegrationExterior","planDueDate","isAfter","temIntegracaoBolsa","temIntegracaoExterior","UploadVelotax","accept","fileList","onRemove","maxCount","beforeUpload","customRequest","multiple","descText","showUploadList","listType","customText","PrevidenciaContainer","Question","Previdencia","resume","setResume","editting","setEditting","activeTabRenda","setActiveTabRenda","activeTabSaude","setActiveTabSaude","activeTabEducacao","setActiveTabEducacao","activeTabPensao","setActiveTabPensao","valuesToReport","setValuesToReport","helpModal","setHelpModal","loadingReportPrev","setLoadingReportPrev","rendaBrutaMensalMode","rendaBrutaMensal","rendaMensal","possuiDependentes","dependentes","possuiGastoMensalSaudeDependente","possuiGastoMensalEducacaoDependente","pagaPensaoAlimenticia","quantidadeDependente","gastoMensalSaudeDependenteMode","gastoMensalSaudeDependente","gastoMensalEducacaoDependenteMode","gastoMensalEducacaoDependente","gastoMensalSaudeMode","gastoMensalEducacaoMode","gastoPensaoAlimenticiaMode","gastoMensalSaude","gastoSaude","gastoMensalEducacao","gastoEducacao","gastoPensaoAlimenticia","gastoPensao","SalarioText","listStyle","EducacaoText","AnualMensalText","HelpModalTexts","rendaAnualMensal","saudeAnualMensal","educacaoAnualMensal","pensaoAnualMensal","Option","ispro","file","o","completa","valorRestituicao","simplificada","TextInput","rest","onBlur","SelectInput","SelectMultipleInput","assessoresSelected","handleChangeAssessores","optionFilterProp","MaskInput","MaskFormItem","TextFormItem","SelectFormItem","SelectMultipleFormItem","permissoes","assessor","gerente","clipPath","opacity","cx","cy","ry","transform","x","r","SvgEmpty","DeleteConfirmationModal","updateData","setVisibility","buttonLabel","showToast","finish","ContainerProventos","SideContent","ClientPlanContent","EmptyContainer","ClientContainer","RetornoLabel","IsentCardStyled","ConatinerDarfs","BlurBox","FilterDarfs","DarfFilterButton","selected","DarfCard","PlanContainer","assessorTooltip","Professionals","errors","setErrors","sendRequest","setSendRequest","itemRemove","setItemRemove","loadingFile","setLoadingFile","optionsModal","setOptionsModal","firstSelected","setFirsSelected","csvModalVisible","setCsvModalVisible","errorModalVisible","setErrorModalVisible","deleteModalVisible","setDeleteModalVisible","createModalVisible","setCreateModalVisible","modalPermissaoVisible","setModalPermissaoVisible","env","host","rowClassName","showLessItems","clsx","preventDefault","formData","FormData","append","AssessorFormItemRows","FormItemsAssessores","ClientFormItemRows","userSelected","getTime","formItems","hasPlanXp","cancelRecuring","FormItemsClients","Feature","CardStyled","Card","hasConcierge","GrayOverlay","Interval","Price","Info","ChoosePlanStep","isActive","userCount","planBought","handleAction","isCancelRecurring","mostrarTip","setMostrarTip","feature","secondaryIcon","onMouseEnter","onMouseLeave","free","PlanModalStyled","Modal","UserPlanModal","closeModal","modalPlans","paymentType","showPaymentModal","paymentId","ContainerModal","ReportTypeContainer","ReportTypeDrawer","setType","closeIcon","months","Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez","ProventosModal","setOpenModal","setMonthProventos","setData","originalData","setOriginalData","dataModalPDF","setDataModalPDF","dateFormat","dateBeginFilter","setDateBeginFilter","dateBeginRef","useRef","dateEndFilter","setDateEndFilter","setTotal","reportDrawerProventos","setReportDrawerProventos","downloadRelatorioProventos","workbook","XLSX","book_new","worksheet","json_to_sheet","book_append_sheet","reportPDFData","capitalize","unitPrice","monthNumber","dataFiltered","monthOp","yearOp","dataSerialized","Produto","Pagamento","Tipo","Instituição","zIndex","corretoras","newCorret","getCorretFilters","dataFinal","corret","dateBegin","toDate","dateEnd","datePagamento","getProventosWithFilter","B3Link","CopyLink","ShareItem","Instructions","b3Link","IntegrationModal","integrationModal","integrationClient","sendMail","b3IntegrationExample","warrenIntegrationExample","clipboard","writeText","mainIcon","encodeURI","whatsIcon","UploadNotas","PosicaoCardStyled","Collapse","signal","LucroPrejuizo","cotacao","HidenValue","currency","PosicaoHeader","posicao","hideValues","codigo","categoria","lucroPrejuizoTotal","lucroPrejuizoDiario","lucroPrejuizoTotalPercentual","lucroPrejuizoDiarioPercentual","precoAtual","CustoMedioModal","to","PosicaoBody","details","cotacaoVenda","loan","typeLoan","precoVenda","hasPosition2019","custoMedio","marketCap","beta","peRatio","earningDate","dividendYield","targetPrice","enterpriseValueRevenue","enterpriseValueEbitda","chart","AreaChart","right","bottom","x1","y1","x2","y2","offset","stopColor","stopOpacity","tickCount","tickFormatter","v","orientation","CartesianGrid","strokeDasharray","Area","fillOpacity","PosicaoCard","ExpandIcon","SvgSelo","getNomeCorretora","shortName","getCategoriaShortName","calculaSaldoCorretoras","posicao2019","agrupadoPorCorretora","saldosCorretoras","saldo","prev","curr","calculaPorgentagensCategorias","getTodasAsCorretoras","calculaClassesAtivos","agrupadoPorCategoria","saldosCategorias","totalSaldos","percentage","calculaPorcentagemPosicoes","patrimonioTotal","posicoesOrdenadas","porcentagens","porcentagem","porcentagensOrdenadas","somatorioDasMaioresPorcentagens","somatorioDosMaioresValores","po","NotificationContainer","NotificationDrawer","loadingIndex","setLoadingIndex","lidas","viewed","naoLidas","removeNotification","notifications","viewedDate","patch","toLocaleDateString","day","stopPropagation","sendWhatsapp","SvgSelection","isValidFile","Months","0","1","2","3","4","5","6","7","8","9","10","11","mailTypes","whatsappMessage","PatrimonioSemPercentual","handleVencimento","planCancelPending","currentDay","getDate","currentHour","getHours","currentMinute","getMinutes","UTC","Clients","sameNameFiles","loadingSend","setLoadingSend","notas","setNotas","history","setHistory","showNotasCorretagemModal","setShowNotasCorretagemModal","getHistory","filterDay","filterMonth","filterYear","nota","uploadProps","uid","files","findIndex","sameNameFile","Upload","LIST_IGNORE","showRemoveIcon","showPreviewIcon","showDownloadIcon","setFiles","sendNotas","cpfCnpj","originFileObj","errorMessage","reponse","downloadNota","path","useNotasCorretagem","setLoadingMail","setLoadingToken","openModal","setDetailedActiveKeys","activeKeys","setActiveKeys","monthProventos","loadingProventos","setLoadingProventos","detailedPositions","setDetailedPositions","setShowDarfTooltip","setVisibleChart","visibleTabs","setVisibleTabs","chartType","setChartType","setUserSelected","React","showCorretoraFilterModal","setShowCorretoraFilterModal","filterCorretoraAtivo","setFilterCorretoraAtivo","setConfirmPlanModal","removeModalVisible","setRemoveModalVisible","setAssessoresSelected","updateAllPatrimonio","setUpdateAllPatrimonio","assessoresListModal","setAssessoresListModal","vendasBolsa","setVendasBolsa","vendasExterior","setVendasExterior","vendasRestantesBolsa","setVendasRestantesBolsa","vendasRestantesExterior","setVendasRestantesExterior","sendMailModalVisible","setSendMailModalVisible","checkboxCorretoras","setCheckboxCorretoras","selectedCorretoras","setSelectedCorretoras","patrimonioModalVisible","setPatrimonioModalVisible","showMobileActionSelectedClients","setShowMobileActionSelectedClients","selectedNotificationType","setSelectedNotificationType","currentTab","setCurrentTab","typeDarf","setTypeDarf","yearDarf","setYearDarf","prevDarfTabClient","setPrevDarfTabClient","darfLoading","setDarfLoading","darfSelected","setDarfSelected","notificationDrawerOpen","setNotificationDrawerOpen","reportDrawerWallet","setReportDrawerWallet","posicoesFilter","setPosicoesFilter","detailedLoadingIndex","setDetailedLoadingIndex","showUpgradePlan","setShowUpgradePlan","clientsToUpgrade","isConcierge","temInvestimentos","isManagerOrOffice","itemPatrimonio","corretoraFilter","posicoesFiltradas","corretoraNames","patrimonio","classesAtivos","serializePatrimonio","checkAll","indeterminate","updateFilter","carteiraCategorizadaSemFiltros","carteiraCategorizada","handleRemoveModal","handlePlan","createPlanFromSelectedUsers","filteredClients","handleUpdatePatrimonio","resposavel","handleSelectedTab","sendPermissionEmail","patrimonioFiltrado","patrimonioTotalFiltrado","lucroPrejuizoDiarioPercentualNumerator","resumo","lucroPrejuizoDiarioPercentualDenominator","lucroPrejuizoTotalPercentualNumerator","lucroPrejuizoTotalPercentualDenominator","downloadRelatorio","category","newProventos","getPlan","ClientPlan","dataAtual","dataVencimentoPlano","renderIsentCard","vendas","restante","limit","tipVendas","complete","borderBottomRightRadius","borderTopRightRadius","handleDarfSendAction","firstClient","TabProventos","selectYears","onChangeActiveKeys","lastOpened","market","detailedActiveKeys","exterior","positions","TabInvestimentos","isNaN","PieChart","Pie","innerRadius","outerRadius","labelLine","legendType","midAngle","percent","RADIAN","PI","radius","cos","sin","colors","textAnchor","dominantBaseline","Cell","Intl","NumberFormat","numberToCurrency","suffixIcon","defaultActiveKey","expandIcon","lastUpdate","TabDarfs","filteredDarfs","darfsToDisplay","hoje","anoAtual","mesAtual","anoSelecionado","mesesPassados","getDarfs","impostoIsento","endOf","temAvisos","SyncOutlined","spin","obj","showZero","WhatsAppOutlined","inputName","clientAttr","filtros","filterIcon","clientWithPhone","phoneParam","textParam","mailType","okText","cancelText","downloadExcel","PrivateRoute","OnlyPublicRoute","OnlyClientAccountPermissionRoute","FaturamentoTable","initialYear","Faturamento","setYear","invoices","setInvoices","getInvoices","invoice","Array","premiumClients","billedClients","MinhaConta","showPassword","setShowPassword","passwordAlreadyExists","setPasswordAlreadyExists","previewOpen","setPreviewOpen","previewImage","setPreviewImage","previewTitle","setPreviewTitle","setFileList","getBase64","reader","FileReader","readAsDataURL","onload","result","onerror","handlePreview","preview","lastIndexOf","handleChange","newFileList","conditions","config","action","onDrop","dataTransfer","logo","currentPass","onPreview","DownloadOutlined","SvgXp","PageNotFound","subTitle","extra","CompaniesExemptList","italic","Regulation","showListModal","setShowListModal","handleListModal","accordion","Link","frameBorder","allow","allowFullScreen","LayoutHeader","Layout","Header","theme","LogoStyled","Logo","origin","WarrenLogo","DrawerSider","Drawer","LayoutSider","Sider","Modules","Menu","Module","SvgDarfs","SvgConta","SvgClientes","SvgAssessores","SideBarContainer","setVisible","Sidebar","pagePath","openKeys","handleNavigate","focus","selectedKeys","MainLayout","AntLayout","PageWrapper","BiX","sideBar","overflow","pathname","useLocation","sidebar","isSucess","setIsSucess","ForgotPassword","ChangePassword","passwordConfirmation","HeaderContainer","PublicWrapper","AuthorizeAccountant","Routes","ConfigProvider","primaryColor","infoColor","errorColor","successColor","element","createGlobalStyle","chatApi","ChatButton","ChatWindow","SvgVeloicon","KEY","KEY_TIMESTAMP","defaultMsg","ChatGPT","storage","chatBodyRef","textareaRef","msg","setMsg","setShow","scrolled","setScrolled","firstLoading","setFirstLoading","msgs","setMsgs","scrollToBottom","scrollTo","scrollHeight","after24H","timestamp","loadMsgs","threadId","userMessage","formattedGptAnswer","DOMPurify","sanitize","botResponse","sendMsg","dangerouslySetInnerHTML","__html","textarea","onKeyDown","ContextWrapper","FallbackUI","ErrorBoundaryRollbar","ErrorBoundary","fallbackUI","App","rollbarConfig","accessToken","captureUncaught","captureUnhandledRejections","environment","ptBR","renderEmpty","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode"],"mappings":"yPASeA,EAPHC,IAAMC,OAAO,CACvBC,QAASC,uCACTC,QAAS,CACP,6BAA8B,W,gBCHrBC,EAAYC,IAAOC,IAAV,s3B,gBCKTC,EAAeF,YAAOG,IAAPH,CAAH,kbACV,SAACI,GAAD,OAAeA,EAAW,OAAS,MAc9C,SAACC,GAAD,OACAA,EAAMC,SACNC,YADA,uMAMA,SAACF,GAAD,MACe,YAAfA,EAAMG,MACND,YADA,6HAOA,SAACF,GAAD,MACe,UAAfA,EAAMI,MACNF,YADA,qOAYE,SAACF,GAAD,OACFA,EAAMK,UACNH,YADA,oH,OCxCWJ,EAJ6B,SAACE,GAAD,OAC1C,cAACH,EAAD,2BAAkBG,GAAlB,aAA0BA,EAAMM,a,yBCFnBC,EAJElB,IAAMC,OAAO,CAC5BC,QAASC,6CCGIgB,EAJKnB,IAAMC,OAAO,CAC/BC,QAASC,6CCqFEiB,EAAcC,wBAA4B,IAE1CC,EAAyB,SAAC,GAAkB,IAAhBL,EAAe,EAAfA,SACjCM,EAAWC,cADqC,EAG1BC,mBAAS,IAHiB,mBAG/CC,EAH+C,KAGvCC,EAHuC,OAItBF,mBAAS,IAJa,mBAI/CG,EAJ+C,KAIrCC,EAJqC,OAKxBJ,oBAAS,GALe,mBAK/CK,EAL+C,KAKtCC,EALsC,OAMlBN,oBAAS,GANS,mBAM/CO,EAN+C,KAMnCC,EANmC,OAOdR,oBAAS,GAPK,mBAO/CS,EAP+C,KAOjCC,EAPiC,OAQVV,oBAAS,GARC,mBAQ/CW,EAR+C,KAQ/BC,EAR+B,OASVZ,oBAAS,GATC,mBAS/Ca,EAT+C,KAS/BC,EAT+B,OAURd,oBAAS,GAVD,mBAU/Ce,EAV+C,KAU9BC,EAV8B,OAW9BhB,mBAAqB,IAXS,mBAW/CiB,EAX+C,KAWzCC,EAXyC,OAYNlB,oBAAS,GAZH,mBAY/CmB,EAZ+C,KAY7BC,GAZ6B,KAchDC,GAAkB,uCAAG,gEAAAC,EAAA,yDACnBC,EAAQC,aAAaC,QAAQ,oBAC7BR,EAAOO,aAAaC,QAAQ,oBACtBF,EAHa,wBAIvBjD,EAAIoD,SAAS/C,QAAQgD,OAArB,+BAAyDJ,GACzDK,EAAWF,SAAS/C,QAAQgD,OAA5B,+BAAgEJ,GAChEM,EAAcH,SAAS/C,QAAQgD,OAA/B,+BAEcJ,GARS,SAUAjD,EAAIwD,IAAI,kBAVR,cAUjBC,EAViB,OAYnBC,EAAc,KACdD,EAASE,OAAO,EAgBdF,EAASE,KAdXC,EAFe,EAEfA,SACAC,EAHe,EAGfA,KACAC,EAJe,EAIfA,MACAC,EALe,EAKfA,SACAC,EANe,EAMfA,WACAC,EAPe,EAOfA,SACAC,EARe,EAQfA,SACAC,EATe,EASfA,UACAC,EAVe,EAUfA,QACAC,EAXe,EAWfA,oBACAC,EAZe,EAYfA,SACAC,EAbe,EAafA,YACAC,EAde,EAcfA,0BACAC,EAfe,EAefA,YAEFf,EAAc,CACZE,WACAC,OACAC,QACAE,aACAC,WACAC,WACAC,YACAE,sBACAC,WACAI,OAAQX,EACRY,MAAOP,EACPG,cACAC,4BACAC,gBAIJzE,EAAIoD,SAAS/C,QAAQgD,OAArB,+BACEI,EAASpD,QAAQ4C,OAASA,GAjDL,kBAoDhB,CACLA,MAAOQ,EAASpD,QAAQ4C,OAASA,EACjCN,KAAMe,GAAekB,KAAKC,MAAMlC,KAtDX,iCAyDlB,IAzDkB,4CAAH,qDA4DlBmC,GAAcC,uBAAY,SAACC,GAC/B1C,GAAkB,GAClBS,KACGkC,MAAK,SAACC,GACLtC,EAAQsC,GACR5C,GAAkB,GAClB0C,GAAYA,OAEbG,OAAM,SAACC,GACNC,QAAQC,IAAI,MAAOF,GACnB9C,GAAkB,QAErB,IAEGiD,GAAiBR,uBAAY,WACjChC,KAAqBkC,MAAK,SAACC,GACzBtC,EAAQsC,QAET,IAEGM,GAAgBT,uBAAY,WAChC,IAAMU,EAAW,2BAAQ9C,EAAKA,MAAb,IAAmB+C,iBAAiB,IAC/CzC,EAAQC,aAAaC,QAAQ,mBAAqB,GAExDP,EAAQ,CAAED,KAAM8C,EAAaxC,YAC5B,CAACN,IAEEgD,GAAUZ,uBAAY,WAC1BzC,GAAkB,GAClBY,aAAa0C,WAAW,kBACxB1C,aAAa0C,WAAW,iBACxB5F,EAAIoD,SAAS/C,QAAQgD,OAArB,cAA+C,GAC/CT,EAAQ,IACRpB,EAAS,YACTqE,YAAW,WACTC,OAAOC,SAASC,WACf,OACF,CAACxE,IAEJyE,qBAAU,WACRjG,EAAIkG,aAAazC,SAAS0C,KACxB,SAAC1C,GAAD,OAAcA,KACd,SAAC2C,GAAW,IAAD,EAMT,OALAf,QAAQC,IAAIc,GACoB,OAAvB,OAALA,QAAK,IAALA,GAAA,UAAAA,EAAO3C,gBAAP,eAAiB4C,SACnBV,KAGKW,QAAQC,OAAOH,MAI1BtB,OAGC,IAEH,IAAM0B,GAA8BzB,uBAClC,YAgBqB,IAfnB9B,EAekB,EAflBA,MACAW,EAckB,EAdlBA,SACAE,EAakB,EAblBA,MACAD,EAYkB,EAZlBA,KACAa,EAWkB,EAXlBA,OACAC,EAUkB,EAVlBA,MACAV,EASkB,EATlBA,SACAD,EAQkB,EARlBA,WACAE,EAOkB,EAPlBA,SACAC,EAMkB,EANlBA,UACAE,EAKkB,EALlBA,oBACAC,EAIkB,EAJlBA,SACAC,EAGkB,EAHlBA,YACAC,EAEkB,EAFlBA,0BACAC,EACkB,EADlBA,YAEAvB,aAAauD,QAAQ,iBAAkBxD,GACvCC,aAAauD,QACX,gBACA7B,KAAK8B,UAAU,CACb9C,WACAE,QACAD,OACAI,WACAC,WACAF,aACAG,YACAO,SACAC,QACAN,sBACAE,iBAGJvE,EAAIoD,SAAS/C,QAAQgD,OAArB,+BAAyDJ,GAEzDL,EAAQ,CACNK,QACAN,KAAM,CACJiB,WACAE,QACAD,OACAK,WACAF,aACAG,YACAF,WACAI,sBACAC,WACAI,SACAC,QACAJ,cACAC,4BACAC,iBAGJjD,EAAS,YACTM,EAAY,MAGd,IAGI6E,GAAe5B,sBAAW,uCAC9B,WAAOpB,GAAP,mDAAAX,EAAA,6DACEhB,GAAW,GADb,kBAGgChC,EAAI4G,KAAK,cAAe,CAClDhD,SAAUD,EAAKC,SACfiD,SAAUlD,EAAKmD,OALrB,OAGUrD,EAHV,SAuBQA,EAASE,KAfXV,EARN,EAQMA,MACAW,EATN,EASMA,SACAE,EAVN,EAUMA,MACAD,EAXN,EAWMA,KACAE,EAZN,EAYMA,SACAK,EAbN,EAaMA,QACAH,EAdN,EAcMA,SACAD,EAfN,EAeMA,WACAE,EAhBN,EAgBMA,SACAC,EAjBN,EAiBMA,UACAE,EAlBN,EAkBMA,oBACAC,EAnBN,EAmBMA,SACAC,EApBN,EAoBMA,YACAC,EArBN,EAqBMA,0BACAC,EAtBN,EAsBMA,YAGFnC,GAAkB,GAClBkE,GAA4B,CAC1BvD,QACAW,WACAE,QACAD,OACAG,aACAG,YACAD,WACAD,WACAI,sBACAC,WACAI,OAAQX,EACRY,MAAOP,EACPG,cACAC,4BACAC,gBAEFzC,GAAW,GACX6D,YAAW,WACTvD,GAAkB,KACjB,KA9CP,kDAgDIyE,IAAQX,OACN,eAAI3C,gBAAJ,mBAAcE,YAAd,eAAoBoD,UAClB,8CAEJ/E,GAAW,GApDf,0DAD8B,sDAyD9B,CAACwE,KAWGQ,GAAejC,uBACnB,SAACkC,GACCjF,GAAW,GADG,IAGZ6B,EASEoD,EATFpD,KACAD,EAQEqD,EARFrD,SACAE,EAOEmD,EAPFnD,MACAgD,EAMEG,EANFH,KACAI,EAKED,EALFC,iBAOIvE,EAAO,CACXkB,OACAD,WACAE,QACAE,WANEiD,EAJFjD,WAWAG,UAPE8C,EAHF9C,UAWAgD,WAREF,EAFFE,WAWAC,mBATEH,EADFG,mBAWAP,SAAUC,EACVO,MAAOH,GAGTlH,EACG4G,KAAK,wBAAyBjE,GAC9BsC,MAAK,SAACxB,GAAc,IAAD,EAEhBA,EAASE,KADHV,EADU,EACVA,MAAOW,EADG,EACHA,SAAUE,EADP,EACOA,MAAOD,EADd,EACcA,KAAMG,EADpB,EACoBA,WAAYG,EADhC,EACgCA,UAGlDjB,aAAa0C,WAAW,oBACxB1C,aAAauD,QAAQ,iBAAkBxD,GACvCC,aAAauD,QACX,gBACA7B,KAAK8B,UAAU,CACb9C,WACAE,QACAE,aACAG,YACAN,UAGJ7D,EAAIoD,SAAS/C,QAAQgD,OAArB,+BAAyDJ,GAEzD6B,IAAY,WACVtD,EAAS,YACTM,EAAY,IACZE,GAAW,SAGdmD,OAAM,SAACC,GAAD,OA7DO,SAACA,GAAc,IAAD,IAChC2B,IAAQX,OACN,UAAAhB,EAAI3B,gBAAJ,mBAAcE,YAAd,eAAoBoD,UAClB,+CAEJ/E,GAAW,GAwDSsF,CAAYlC,QAEhC,CAAC5D,EAAUsD,KAGb,OACE,cAACzD,EAAYkG,SAAb,CACEC,MAAO,CACL7E,OACAhB,SACAI,UACA4D,WACA/C,UACAf,WACAD,YACAK,aACA6C,eACAhD,cACAkF,gBACAL,gBACAxE,eACAqD,iBACAtD,gBACAG,iBACAkD,kBACAhD,iBACAE,kBACAL,kBACAS,mBACAL,oBACAE,qBACAI,uBACA0D,+BACAiB,SAAUC,OAAOC,KAAKhF,GAAMiF,QA3BhC,SA8BG1G,KAKM2G,EAAU,kBAAoBC,qBAAWzG,IC9bvC,MAA0B,+BCmE1B0G,EAzDO,WAAO,IACnB9E,EAAU+E,cAAV/E,MACFzB,EAAWC,cAFS,EAGuBoG,IAAzCrB,EAHkB,EAGlBA,4BAA6Bb,EAHX,EAGWA,QAHX,EAIIjE,oBAAS,GAJb,mBAInBK,EAJmB,KAIVC,EAJU,KA8B1B,OAxBAiE,qBAAU,WACRjG,EACG4G,KACC,YACA,GACA,CACEvG,QAAS,CACP4H,cAAc,UAAD,OAAYhF,MAI9BgC,MAAK,SAACC,GACL6B,IAAQmB,QAAQ,sBAChBvC,IACA3D,GAAW,GACXwE,EAA4BtB,EAAIvB,SAEjCwB,OAAM,SAACC,GACN2B,IAAQX,MAAM,gDACdpE,GAAW,QAGd,CAACiB,IAGF,cAAC3C,EAAD,UACE,sBAAK6H,UAAU,cAAf,UACE,qBAAKC,IAAKC,EAAUC,IAAI,YACxB,qBAAKH,UAAU,WAAf,SACGpG,EACC,qCACE,4CACA,cAACwG,EAAA,EAAD,CAAiBvH,KAAM,QAGzB,cAAC,EAAD,CACEA,KAAK,QACLD,KAAK,UACLyH,SAAS,SACTL,UAAU,aACVM,QAAS,kBAAMjH,EAAS,aAL1B,oD,kBCjDCkH,EAAgBnI,IAAOoI,QAAV,q4H,4CCFbC,EAAS,CACpB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,M,kBCpBWC,EAAa,SAACC,GAAD,OAAiBC,aAAWD,IAAIA,GAAO,KAEpDE,EAAc,SAACC,GAAD,OAAkBF,aAAWE,KAAKA,GAAQ,KAaxDC,GAAe,SAACC,GAC3B,IAAKA,EACH,OAAO,EAET,IAAMC,EAAcC,WAAaF,MAAM,MACvC,IAEE,OADAC,EAAYE,aAAaH,IAClB,EACP,MAAO/C,GACP,OAAO,IAgEEmD,GAA0B,SAAC/B,GACtC,OAAKA,EACL,OAAOA,QAAP,IAAOA,OAAP,EAAOA,EAAOgC,UAAU,OAAOC,QAAQ,cAAe,IADnC,I,sCCrFd,SAASC,GAAcC,GAE5B,GAD6B,0BACJC,KAAKD,GAAmB,OAAOA,EACxD,GAAwC,KAApCE,OAAOF,GAAkB/B,OAAe,MAAO,GAEnD,IAAMkC,EAAMH,EAAiBI,MAAM,EAAG,GAChCC,EAAgBL,EAAiBI,MAAM,EAAG,GAC1CE,EAAeN,EAAiBI,MAAM,GAE5C,MAAM,IAAN,OAAWD,EAAX,aAAmBE,EAAnB,YAAoCC,GAG/B,I,8BAAMC,GAAiB,SAAC1C,GAAmC,IAApB2C,EAAmB,uDAAV,MACrD,OACE,cAAC,KAAD,CACEA,OAAQA,EACRC,aAAc,EACdC,YAAY,OACZC,iBAAiB,IACjBC,kBAAkB,IAClBC,mBAAmB,EACnBhD,OACO,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOiD,eAAe,QAAS,CAC7BC,sBAAuB,EACvBC,sBAAuB,MACnB,KAiBDC,GAAQ,SAACC,GAAD,OAAgBA,EAAI,EACrC,cAAC,KAAD,CAAkBC,MAAO,CAACC,SAAU,OAAQC,aAAc,UAC1DH,EAAI,EACJ,cAAC,KAAD,CAAoBC,MAAO,CAACC,SAAU,OAAQC,aAAc,UAC5D,IAESC,GAAqB,SAACJ,GAAD,OAAgBA,EAAI,GAAS,EAALA,EAASA,GAEtDK,GAAqB,SAAC1D,GAAiC,IAAjB2D,EAAgB,uDAAN,EACrDC,EAA0B,kBAAV5D,EAAqBA,EAAQ,EACnD,MAAM,GAAN,OAAU6D,OAAgB,IAATD,GAAcX,eAAe,QAAS,CACrDC,sBAAuBS,EACvBR,sBAAuBQ,IAFzB,MAMWG,GAAmB,SAAC9D,GAAD,IAAgB2C,EAAhB,uDAAyB,KAAzB,OAC9BkB,OAAM,OAAC7D,QAAD,IAACA,OAAD,EAACA,EAAOiC,QAAQU,EAAQ,IAAIV,QAAQ,MAAO,IAAIA,QAAQ,KAAM,OAAS,GCtEjE8B,ID6EV,KACE,KC9EuB,kBACfC,GAAgB,qBAGhBC,GAAU,WAAe,IAAd3C,EAAa,uDAAP,GAC5B,IAAKA,EAAK,MAAO,GACjB,GAAIA,EAAI4C,SAAS,KAAM,OAAO5C,EAC9B,IAAM6C,EAAW7C,EAAI8C,MAAM,IAI3B,OAHAD,EAASE,OAAO,EAAG,EAAG,KACtBF,EAASE,OAAO,EAAG,EAAG,KACtBF,EAASE,OAAO,GAAI,EAAG,KAChBF,EAASG,KAAK,K,qBCMVC,GAAiB,CAC5B,UACA,YACA,WACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,YCjBWpL,IDqBN,aACHqL,YAAa,IACVC,MC3BiB,iCAAiCrC,KACvDsC,UAAUC,WAGY,WACtB,MAAO,iEAAiEvC,KACtEsC,UAAUC,aAcDC,GAAW,SAACC,GACvB,IAAMC,EAAkBJ,UAAUC,UAC9BI,EAAcD,EAAgBE,QAAQ,WAAa,EACnDC,EAAcH,EAAgBE,QAAQ,WAAa,EACnDD,GAAeE,IAAaA,GAAc,GAC1CA,EACF3G,OAAOC,SAAS2G,KAAOL,EAGvBvG,OAAO6G,KAAKN,IAIHO,GAAa,WACxB,IACEC,EAASX,UAAUC,UA2BrB,OAzBIU,EAAOL,QAAQ,YAAc,EACpB,kBAEFK,EAAOL,QAAQ,mBAAqB,EAClC,mBAEFK,EAAOL,QAAQ,UAAY,GAAKK,EAAOL,QAAQ,QAAU,EACvD,QAEFK,EAAOL,QAAQ,YAAc,EAC3B,8BAEFK,EAAOL,QAAQ,SAAW,EACxB,iBAEFK,EAAOL,QAAQ,WAAa,EAC1B,4BAEFK,EAAOL,QAAQ,WAAa,EAC1B,eAGA,WA+CTM,GAA6B,SAACC,GAAD,MACf,SAAjBA,EAAGC,aAAwB,OAACD,QAAD,IAACA,OAAD,EAACA,EAAIhM,OACf,SAAjBgM,EAAGC,WAAwBD,EAAGE,QACb,SAAjBF,EAAGC,YACW,UAAZD,EAAGhM,MAAgC,aAAZgM,EAAGhM,OACjB,aAAZgM,EAAGhM,MAEQmM,GAAkB,SAACC,GAAD,aACzB,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAMC,oBAAN,eACIC,OAAOP,IACRQ,QAAO,SAACtK,EAAWuK,GAAZ,OAAuBvK,EAAIuK,EAAEC,MAAQD,EAAEE,cAAa,KAAM,GAEzDC,GAAe,SAACP,GAAD,aACtB,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAMC,oBAAN,eAAoBE,QAAO,SAACtK,EAAWuK,GAAZ,OAAuBvK,EAtD/B,SAACmK,GAAe,IAAD,IAC5B3F,GAAS2F,EAAKQ,UAAY,IAAMR,EAAKS,WAAa,GAExD,QADa,UAAAT,EAAKU,YAAL,mBAAWC,UAAU,EAAG,UAAxB,eAA4BC,gBAAiB,IAExD,IAAK,MACH,OAAOvG,EAAQ,EACjB,IAAK,MACH,OAAOA,EAAQ,GACjB,IAAK,MACH,OAAOA,EAAQ,GACjB,IAAK,MACH,OAAOA,EAAQ,GACjB,IAAK,MAEL,IAAK,MACH,OAAOA,EAAQ,GACjB,IAAK,MACH,OAAOA,EAAQ,GACjB,IAAK,MACH,OAAOA,EAAQ,GACjB,IAAK,MACH,OAAOA,EAAQ,GACjB,IAAK,MAEL,IAAK,MACH,OAAOA,EAAQ,IACjB,IAAK,MACH,OAAOA,EAAQ,IACjB,IAAK,MAEL,IAAK,MAEL,IAAK,MACH,OAAOA,EAAQ,IACjB,IAAK,MACH,OAAOA,EAAQ,IACjB,QACE,OAAOA,GAiB2CwG,CAAMT,KAAI,KAAM,GAE3DU,GAAc,SAACC,EAAgBC,GAAuB,IAAD,EAC1DC,EAAU,sCAAkCF,GAC5CG,EAAeC,SAASC,cAAc,KAC5CJ,EAAQ,UAAGA,SAAH,+BAA4BK,KAAKC,MAAjC,QAERJ,EAAa3B,KAAO0B,EACpBC,EAAajC,SAAW+B,EACxBE,EAAaK,SAyBFC,GAAyB,WACpC,IAAMC,EAAQC,MAEd,GAA2B,IAAvBD,EAAME,aACR,OAAO,EAKT,IAFA,IAAMC,EAAkBF,IAAOD,GAAOI,QAAQ,SAC1CC,EAAoB,EACjBA,EAAoB,GACrBF,EAAgBD,aAAe,GACjCG,IAEFF,EAAgBG,IAAI,EAAG,OAEzB,OAAON,EAAMO,SAASJ,IAIXK,GAA2B,SAACjC,GACvC,IAAMyB,EAAQ,IAAIJ,KACZa,EAAeT,EAAMU,WAAa,EAClCC,EAAcX,EAAMY,cAC1B,OAAIrC,EAAKsC,OAASF,GAAepC,EAAKuC,QAAUL,EACvC,CAAEpO,UAAU,EAAM0O,MAAO,wDACzBxC,EAAKuC,OAASL,EAAe,GAAKlC,EAAKsC,MAAQF,GAAeZ,KAC9D,CAAE1N,UAAU,EAAM0O,MAAO,mEACtB,CAAE1O,UAAU,EAAO0O,MAAO,KCnK3BC,GAAwB,CACnC,CACEC,UAAU,EACVC,UAAW,SAACC,EAAQvI,GAAT,OACRA,GAAUqB,EAAWrB,GAElBlB,QAAQ0J,UADR1J,QAAQC,OAAO,IAAI0J,MAAM,gCAKtBC,GAAyB,CACpC,CACEJ,UAAW,SAACC,EAAQvI,GAAT,OACRA,GAAUwB,EAAYxB,GAEnBlB,QAAQ0J,UADR1J,QAAQC,OAAO,IAAI0J,MAAM,iCAKtBE,GAA4B,CACvC,CACEL,UAAW,SAACC,EAAQvI,GAElB,OADsBA,EAAM4I,WAAW,SAAU,IAC/BxI,OAAS,GACjBJ,GAAUwB,EAAYxB,GAE1BlB,QAAQ0J,UADR1J,QAAQC,OAAO,IAAI0J,MAAM,8BAGrBzI,GAAUqB,EAAWrB,GAEzBlB,QAAQ0J,UADR1J,QAAQC,OAAO,IAAI0J,MAAM,gCAOxBI,GAA6B,CACxC,CACER,UAAU,EACVC,UAAW,SAACQ,EAAM9I,GAAP,OACRA,GAA0BA,ELlD1B+I,OAAO3E,MAAM,KAAKhE,OAAS,EKsDxBtB,QAAQ0J,UAHR1J,QAAQC,OACR,IAAI0J,MAAM,mDAMPO,GAA0B,CACrC,CACEX,UAAU,EACVC,UAAW,SAACQ,EAAM9I,GAAP,OACRA,KL5DsB1D,EK4DC0D,IL3DnB6B,WAAavF,QAAQ2M,YAAY3M,IK6DlCwC,QAAQ0J,UADR1J,QAAQC,OAAO,IAAI0J,MAAM,gCL7DP,IAACnM,KKkEhB4M,GAAyB,CACpC,CACEZ,UAAW,SAACQ,EAAM9I,GAAP,OLjE+B6B,WKoEpC/C,QAAQ0J,UADR1J,QAAQC,OAAO,IAAI0J,MAAM,iCAKtBU,GAA0B,CACrC,CACEd,UAAU,EACVC,UAAW,SAACC,EAAQvI,GAAT,OACRA,GAAU0B,GAAa1B,GAEpBlB,QAAQ0J,UADR1J,QAAQC,OAAO,IAAI0J,MAAM,qCAKtBW,GAAkC,CAC7C,CACEf,UAAU,EACVC,UAAW,SAACQ,EAAM9I,GAAP,OACRA,GAAU0B,GAAa1B,GAEpBlB,QAAQ0J,UADR1J,QAAQC,OAAO,IAAI0J,MAAM,qCAuHtBY,GAAkC,CAC7C,CACEhB,UAAU,EACV9I,QAAS,mCA8EA+J,IA1EuC,UAC/CD,GAD+C,CAElD,CACEE,IAAK,KACLhQ,KAAM,SACNgG,QAAS,qCAEX,CACEiK,IAAK,IACLjQ,KAAM,SACNgG,QAAS,0CAI+C,UACvD8J,GADuD,CAE1D,CACEE,IAAK,EACLhQ,KAAM,SACNgG,QAAS,iDAEX,CACEiK,IAAK,IACLjQ,KAAM,SACNgG,QAAS,mDAI6B,UACrC8J,GADqC,CAExC,CACEE,IAAK,IACLhQ,KAAM,SACNgG,QAAS,yCAI0C,UAClD8J,GADkD,CAErD,CACE9P,KAAM,SACNgG,QAAS,wCAIqC,UAC7C8J,GAD6C,CAEhD,CACEE,IAAK,EACLhQ,KAAM,SACNgG,QAAS,+BAIqC,UAC7C8J,GAD6C,CAEhD,CACEE,IAAK,EACLhQ,KAAM,SACNgG,QAAS,+BAeiC,CAC5C,CACE8I,UAAU,EACVC,UAAW,SAACQ,EAAM9I,GAAP,OACTA,GLnN6B,SAACA,GAClC,OAAOoB,EAAO8C,SAASlE,EAAMuG,eKkNhBkD,CAAoBzJ,GACzBlB,QAAQ0J,UACR1J,QAAQC,OAAO,IAAI0J,MAAM,oCAItBiB,GAAkC,CAC7C,CACErB,UAAU,EACVC,UAAW,SAACQ,EAAM9I,GAAP,OLxNiB,SAACA,GAAmB,IAAD,EAC7C6H,GAA4C,IAAIb,MAAOc,WAAa,EACpEC,EAAW,WAAI,IAAIf,MAAOgB,cAAgB,UAA/B,aAAG,EAAiC1B,UAAU,GAC7DuB,EAAeA,EAAe,GAAf,WAAwBA,GAAiBA,EACxD,IAAI8B,EAAa,UAAM5B,GAAN,OAAoBF,GACjC+B,EAAS,OAAG5J,QAAH,IAAGA,OAAH,EAAGA,EAAOoE,MAAM,KAAKyF,UAAUvF,OAAOrC,QAAQ,IAAK,IAChE,QACIjC,IACD4J,EAAYD,IACV,4CAA4CvH,KAAKpC,IKgNlD8J,CAAiB9J,GACblB,QAAQC,OAAO,IAAI0J,MAAM,+BACzB3J,QAAQ0J,aAILuB,GAAwB,CACnC,CACE1B,UAAU,EACVC,UAAW,SAACQ,EAAM9I,GAAP,OL3PYgK,EK4PX,OAAChK,QAAD,IAACA,IAAS,KL5PyBuB,aAAWyI,IAAIA,GK6PxDlL,QAAQ0J,UACR1J,QAAQC,OAAO,IAAI0J,MAAM,6BL9PT,IAACuB,KK4QdC,GAAwB,CACnC,CACE5B,UAAU,EACVC,UAAW,SAACQ,EAAM9I,GAAP,eACsC,KAA/C,2BAACA,QAAD,IAACA,OAAD,EAACA,EAAOiC,QAAQ,OAAQ,WAAxB,QAA+B,UAA/B,eAAoC7B,QAChCtB,QAAQ0J,UACR1J,QAAQC,OAAO,IAAI0J,MAAM,qDAQtByB,GAA6B,CACxC,CAAE7B,UAAU,EAAM9I,QAAS,qBAC3B,CAAEgK,IAAK,EAAGhK,QAAS,6CAGR4K,GAAgC,CAC3C,CAAE9B,UAAU,EAAM9I,QAAS,kCAC3B,CAAEiK,IAAK,GAAIjK,QAAS,0CAGT6K,GAAqC,CAChD,gBAAGC,EAAH,EAAGA,cAAH,MAAwB,CACtB/B,UAAW,SAACC,EAAQvI,GAAT,OACTA,IAAUqK,EAAc,QACpBvL,QAAQ0J,UACR1J,QAAQC,OAAO,IAAI0J,MAAM,mCAItB6B,GAAqC,CAChD,CACEhC,UAAW,SAACQ,EAAM9I,GAAP,OLzQkB,SAACA,GAAD,OAC/BuK,IAAQC,IAAIC,mBAAmBzK,GKyQ3B0K,CAAiB,OAAC1K,QAAD,IAACA,OAAD,EAACA,EAAOiC,QAAQ,cAAe,KAC5CnD,QAAQ0J,UACR1J,QAAQC,OAAO,IAAI0J,MAAM,0CC/WtBkC,GAAkB,WAC7B,IAAM3Q,EAAWC,cADkB,EAEpB2Q,IAAKC,UAAbC,EAF4B,sBAGDzK,IAA1BlB,EAH2B,EAG3BA,aAAc5E,EAHa,EAGbA,QAEhBwQ,EAAQ,uCAAG,WAAO5O,GAAP,SAAAX,EAAA,+EAEP2D,EAAa,2BACdhD,GADa,IAEhBC,SAAUD,EAAKC,SAAS6F,QAAQ,WAAY,OAJjC,wIAAH,sDAed,OACE,cAACf,EAAD,CAAeP,UAAU,mBAAzB,SACE,qBAAKA,UAAU,eAAf,SACE,sBAAKA,UAAU,iBAAf,UACE,oBAAIA,UAAU,YAAd,8BACA,eAAC,IAAD,CAAMmK,KAAMA,EAAMtR,KAAK,QAAQuR,SAAUA,EAAzC,UACE,cAAC,IAAKC,KAAN,CAAW3O,KAAK,WAAW4O,MAAOd,GAAlC,SACE,cAAC,IAAD,CAAO3F,YAAY,cAAc0G,UAAW,OAqB9C,cAAC,IAAKF,KAAN,CAAW3O,KAAK,OAAO4O,MAAO5B,GAA9B,SACE,cAAC,IAAM8B,SAAP,CAAgB3G,YAAY,QAAQ4G,kBAAkB,MAGxD,qBAAKzK,UAAU,UAAf,SACE,cAAC,EAAD,CACE0K,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLyH,SAAS,SACTzG,QAASA,EALX,sBAUF,qBAAKoG,UAAU,iBAAf,SACE,cAAC,EAAD,CACEpH,KAAK,OACLC,KAAK,QACLmH,UAAU,iBACV2C,MAAO,CAAEC,SAAU,QACnBtC,QAAS,kBAAMjH,EAAS,uBAL1B,sCAYJ,sBAAK2G,UAAU,SAAf,2CAEE,cAAC,EAAD,CACEpH,KAAK,OACL0H,QAhEW,WACrBjH,EAAS,iBAgEC2G,UAAU,iBAHZ,mC,yICtFC2K,GAA0C,SAAC,GAQjD,IAPLC,EAOI,EAPJA,OACAC,EAMI,EANJA,QACAC,EAKI,EALJA,SACA/R,EAII,EAJJA,SACAiH,EAGI,EAHJA,UAEGvH,GACC,EAFJsS,aAEI,uFACJ,OAAOvS,KACL,cAAC,KAAD,yBACEwS,gBAAc,EACdH,QAASA,EACTI,UAAU,SACVC,QAASJ,EACTF,OAAM,OAAEA,QAAF,IAAEA,IAAU,oBAClB5K,UAAS,uBAAkBA,GAAwB,GAA1C,YACNvH,EAAM+O,MAAqB,GAAb,WADR,aAEc,IAAnB/O,EAAM0S,SAAqB,GAAK,oBAChC1S,GATN,aAWGM,KAGH,cAAC,KAAD,yBACEiS,gBAAc,EACdI,OAAQ,KACRP,QAASA,EACTC,SAAUA,EACV9K,UAAWA,GACPvH,GANN,aAQGM,M,UCvCMZ,GAAYC,IAAOC,IAAV,kOAWTgT,GAAUjT,IAAOC,IAAV,i1LAySPiT,IAdWlT,IAAOC,IAAV,qRAcOD,YAAOmT,KAAPnT,CAAH,yGAOZoT,GAA0BpT,IAAOC,IAAV,iqBAoCvBoT,GAAiBrT,IAAOsT,OAAV,+N,UChWdC,GAAiBvT,IAAOC,IAAV,uKAWduT,GAAcxT,IAAOC,IAAV,szEA6HXwT,GAAkBzT,IAAOC,IAAV,4LASfyT,GAAmB1T,IAAOC,IAAV,kPCnI7B,IAAM0T,GAAa,SACjBtG,EACAuG,EACAxG,EACAyG,EACAC,GAEA,IAAIC,EAAM,EACV,GAAGD,EAAO,CACR,IAAME,EAAM5G,GAAsB,EAClC2G,EACA1G,GAAauG,GACVvG,EAAY2G,GAAOH,GAAO,KAAOD,EAAWI,GAAO,EACpD,EAEJ,OACE,wBACEzJ,MAAO,CACL0J,MAAM,GAAD,OAAKF,GAAO,EACb,QACA,QAJR,SAQGA,EAAMpJ,GAAmBoJ,GAAO,OAK1BG,GAAe,SAAC,GAAmD,IAAD,IAAhDC,EAAgD,EAAhDA,YAAaC,EAAmC,EAAnCA,MAAOC,EAA4B,EAA5BA,SAC3CC,EAAW,CACf,CACElF,MAAO,QACPmF,UAAW,iBACX,wBAAsB,aACtB,+BAA6B,gBAC7B,yBAAuB,MACvB,iBAAkB,qBAEpB,CACEnF,MAAO,YACPmF,UAAW,cACX,wBAAsB,UACtB,+BAA6B,mBAC7B,yBAAuB,MACvB,iBAAkB,kBAEpB,CACEnF,MAAO,MACPmF,UAAW,eACX,wBAAsB,WACtB,+BAA6B,cAC7B,yBAAuB,MACvB,iBAAkB,oBAIhBC,EAAyB,uCAAG,WAAO1I,GAAP,SAAArJ,EAAA,sDAChCoJ,GAASC,GADuB,2CAAH,sDAI/B,OACE,qCACE,eAAC0H,GAAD,WACE,cAAC,KAAD,CAAK5L,UAAU,cAAf,SACG0M,EAASG,KAAI,SAACzH,EAAG0H,GAAJ,OACZ,eAAC,KAAD,CAAKC,KAAM,EAAG/M,UAAWwM,IAAUM,EAAI,OAAS,OAAhD,UACE,cAAC,KAAD,CACE9M,UAAS,sBAA2B,IAAVwM,EAAc,cAAgB,IACxDlM,QAAS,WACHkM,EAAQ,GAAGC,EAASD,EAAQ,MAGnCpH,EAAEoC,MACH,cAAC,KAAD,CACExH,UAAS,sBACPwM,IAAUE,EAASjN,OAAS,EAAI,cAAgB,IAElDa,QAAS,WACHkM,EAAQE,EAASjN,OAAS,GAAGgN,EAASD,EAAQ,cAM5D,eAAC,KAAD,CAAKxM,UAAU,gBAAf,UACE,cAAC,KAAD,CAAKA,UAAU,WAAf,uBACC0M,EAASG,KAAI,SAACzH,EAAG0H,GAAJ,OACZ,cAAC,KAAD,CAAKC,KAAM,EAAG/M,UAAWwM,IAAUM,EAAI,OAAS,OAAhD,SACG/K,GAAc,OAACwK,QAAD,IAACA,OAAD,EAACA,EAAcnH,EAAEuH,oBAItC,eAAC,KAAD,CAAK3M,UAAU,gBAAf,UACE,cAAC,KAAD,CAAKA,UAAU,WAAf,mCACC0M,EAASG,KAAI,SAACzH,EAAG0H,GAAJ,OACZ,cAAC,KAAD,CAAKC,KAAM,EAAG/M,UAAWwM,IAAUM,EAAI,OAAS,OAAhD,SACG/K,GAAc,OAACwK,QAAD,IAACA,OAAD,EAACA,EAAcnH,EAAE,mCAItC,eAAC,KAAD,CAAKpF,UAAU,gBAAf,UACE,cAAC,KAAD,CAAKA,UAAU,WAAf,0CACC0M,EAASG,KAAI,SAACzH,EAAG0H,GAAJ,OACZ,cAAC,KAAD,CAAKC,KAAM,EAAG/M,UAAWwM,IAAUM,EAAI,OAAS,OAAhD,SACG/K,GAAc,OAACwK,QAAD,IAACA,OAAD,EAACA,EAAcnH,EAAE,0CAItC,eAAC,KAAD,CAAKpF,UAAU,gBAAf,UACE,cAAC,KAAD,CAAKA,UAAU,WAAf,oCACC0M,EAASG,KAAI,SAACzH,EAAG0H,GAAJ,OACZ,cAAC,KAAD,CAAKC,KAAM,EAAG/M,UAAWwM,IAAUM,EAAI,OAAS,OAAhD,SACG1H,EAAE,kCAIT,eAAC,KAAD,CAAKpF,UAAU,gBAAf,UACE,cAAC,KAAD,CAAKA,UAAU,WAAf,4BACC0M,EAASG,KAAI,SAACzH,EAAG0H,GAAJ,OACZ,cAAC,KAAD,CAAKC,KAAM,EAAG/M,UAAWwM,IAAUM,EAAI,OAAS,OAAhD,SACG/K,GAAc,OAACwK,QAAD,IAACA,OAAD,EAACA,EAAcnH,EAAE,+BAMxC,cAAC,KAAD,CACE4H,OAAK,EACLC,UAAU,EACVC,mBAAmB,MACnBlN,UAAU,qBAJZ,SAME,eAAC,KAASmN,MAAV,CAEEC,OACE,cAAC,KAAWC,MAAZ,CAAkBC,MAAO,EAAG3K,MAAO,CAAEC,SAAU,QAA/C,yCAHJ,WAQc,OAAX2J,QAAW,IAAXA,GAAA,UAAAA,EAAagB,sBAAb,eAA6B9N,QAAS,GACrC,cAAC,EAAD,CACE7G,KAAK,UACL0H,QAAS,kBACPsM,EAAyB,OAACL,QAAD,IAACA,OAAD,EAACA,EAAaiB,eAEzC7K,MAAO,CACLC,SAAU,OACVC,aAAc,QAEhB4K,KACE,cAAC,KAAD,CACE9K,MAAO,CACL+K,MAAO,OACP9C,OAAQ,UAbhB,6BAqBF,cAACiB,GAAD,WACc,OAAXU,QAAW,IAAXA,GAAA,UAAAA,EAAagB,sBAAb,eAA6B9N,QAAS,IACzB,OAAX8M,QAAW,IAAXA,OAAA,EAAAA,EAAagB,iBAAkB,IAAIV,KAAI,SAACc,EAASb,GAAe,IAAD,EACxDc,GACF,OAAFD,QAAE,IAAFA,OAAA,EAAAA,EAAIlI,aAAJ,OAAiBkI,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAI3B,WACf,OAAF2B,QAAE,IAAFA,OAAA,EAAAA,EAAIlI,YAAJ,OAAgBkI,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAI3B,UAAW,EAC/B,EACN,OACE,cAAC,KAAD,CACErJ,MAAO,CACLE,aACEiK,KAAiB,OAAXP,QAAW,IAAXA,GAAA,UAAAA,EAAagB,sBAAb,eAA6B9N,QAAS,EACxC,IACA,UALV,SAQE,eAAC,KAAD,CAAKsN,KAAM,GAAX,UACE,cAAC,KAAD,CAAKc,GAAG,QAAR,gBAAiBF,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAIjI,OACrB,eAAC,KAAD,oBAAYgB,IAAM,OAACiH,QAAD,IAACA,OAAD,EAACA,EAAIG,MAAMC,OAAO,iBACpC,eAAC,KAAD,iCAAkBJ,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAInI,YACtB,eAAC,KAAD,WACE,cAAC,KAAWwI,KAAZ,CAAiBrL,MAAO,CAAEsL,YAAa,OAAvC,oBAGClM,GAAc,OAAC4L,QAAD,IAACA,OAAD,EAACA,EAAIO,gBAEtB,eAAC,KAAD,sBAEE,cAAC,KAAWF,KAAZ,CACErL,MAAO,CACL0J,MAAOuB,EAAU,EAAI,QAAU,MAC/BO,WAAY,OAHhB,SAMGpL,GAAmB6K,gBAQhC,qBAAKjL,MAAO,CAAEyL,UAAW,UAAzB,wEAvEA,WAkFDC,GAAkB,SAAC,GAA6F,IAAD,IAA1F9B,EAA0F,EAA1FA,YAAa+B,EAA6E,EAA7EA,SAAUhH,EAAmE,EAAnEA,KACjD3E,EAAQ,SAACmK,GAAD,MAAa,CACzBjK,aACEiK,MACc,OAAXP,QAAW,IAAXA,OAAA,EAAAA,EAAagB,iBAAkB,IAAIrI,QAClC,SAACyI,GAAD,MAA0B,cAAX,OAAFA,QAAE,IAAFA,OAAA,EAAAA,EAAI/U,SACjB6G,OACF,EACE,IACA,WATkH,ECxOrH,WACH,IAAM8O,EAAW,CAAC,QAAS,eACrBC,EAAgB,CAAC,QAAS,iBAC1BC,EAAe,CAAC,iBAAkB,gBAClCC,EAAU,CAAC,MAAO,WAExB,SAASC,EAAS3J,EAAWxF,EAAgBoP,GACV,IAAD,EACV,EADpB,QAAmBC,IAAfD,EACA,OAAIA,EACO,CAAEE,IAAKtP,EAAK,GAAIH,MAAK,UAAE2F,EAAKxF,EAAK,WAAZ,QAAmB,MAE5C,CAAEsP,IAAKtP,EAAK,GAAIH,MAAK,UAAE2F,EAAKxF,EAAK,WAAZ,QAAmB,MAEnD,IAAMuP,EAAIvP,EAAKwP,MAAK,SAACF,GAAD,OAAuB,OAAd9J,EAAK8J,SAA+BD,IAAd7J,EAAK8J,MAClDzP,EAAQ0P,EAAI/J,EAAK+J,GAAK,KAE5B,MAAO,CAAED,IADA,OAAGC,QAAH,IAAGA,IAAKvP,EAAK,GACRH,SAmBlB,MAAO,CAAE4P,YART,SAAqBjK,EAAW4J,GAC5B,OAAOD,EAAS3J,EAAMyJ,EAAcG,IAOlBM,QAhBtB,SAAiBlK,EAAW4J,GACxB,OAAOD,EAAS3J,EAAMuJ,EAAUK,IAeLO,aAZ/B,SAAsBnK,EAAW4J,GAC7B,OAAOD,EAAS3J,EAAMwJ,EAAeI,IAWIQ,OAJ7C,SAAgBpK,EAAW4J,GACvB,OAAOD,EAAS3J,EAAM0J,EAASE,KDmNkBS,GAA/CJ,EAXkH,EAWlHA,YAAaG,EAXqG,EAWrGA,OAAQF,EAX6F,EAW7FA,QAASC,EAXoF,EAWpFA,aAEhCG,EAAiB,SAAC,GAAD,IAAE3B,EAAF,EAAEA,GAAIb,EAAN,EAAMA,EAAN,OACrB,cAAC,KAAD,CAAKnK,MAAOA,EAAMmK,GAAlB,SACE,eAAC,KAAD,CAAKC,KAAM,GAAX,UACE,cAAC,KAAD,CAAKc,GAAG,QAAR,gBAAiBF,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAI4B,QACrB,eAAC,KAAD,uCACsB,IACnB7I,IAAM,OAACiH,QAAD,IAACA,OAAD,EAACA,EAAInS,MAAMuS,OAAO,iBAE3B,eAAC,KAAD,WACE,cAAC,KAAWC,KAAZ,CAAiBrL,MAAO,CAAEsL,YAAa,OAAvC,oBAGClM,GACc,cAAX,OAAF4L,QAAE,IAAFA,OAAA,EAAAA,EAAI/U,MAAJ,OACI+U,QADJ,IACIA,OADJ,EACIA,EAAI6B,oBADR,OAEI7B,QAFJ,IAEIA,OAFJ,EAEIA,EAAIzB,gBAOZuD,EAAoB,SAAC,GAAgC,IAA/B9B,EAA8B,EAA9BA,GAAIb,EAA0B,EAA1BA,EACxB4C,EAAuB,WAAX,OAAF/B,QAAE,IAAFA,OAAA,EAAAA,EAAI/U,MACpB,OACE,cAAC,KAAD,CAAK+J,MAAOA,EAAMmK,GAAlB,SACE,eAAC,KAAD,CAAKC,KAAM,GAAX,UACE,cAAC,KAAD,CAAKc,GAAG,QAAR,gBAAiBF,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAI4B,QACrB,eAAC,KAAD,mBACQ,IACL7I,IAAM,OAACiH,QAAD,IAACA,OAAD,EAACA,EAAInS,MAAMuS,OAAO,iBAGxB2B,IAAYpB,GACX,eAAC,KAAD,WACE,cAAC,KAAWN,KAAZ,CAAiBrL,MAAO,CAAEsL,YAAa,OAAvC,yBAGClM,GAAc,OAAC4L,QAAD,IAACA,OAAD,EAACA,EAAIgC,eAI1B,eAAC,KAAD,WACE,cAAC,KAAW3B,KAAZ,CAAiBrL,MAAO,CAAEsL,YAAa,OAAvC,SACGyB,EAAU,SAAW,sBAEvB3N,GAAgB,WACf,GAAIuM,EACF,MAAoB,cAAX,OAAFX,QAAE,IAAFA,OAAA,EAAAA,EAAI/U,MAAJ,OACL+U,QADK,IACLA,OADK,EACLA,EAAI6B,oBADC,OAEL7B,QAFK,IAELA,OAFK,EAELA,EAAIiC,YAER,cAAOjC,QAAP,IAAOA,OAAP,EAAOA,EAAI/U,MACT,IAAK,WACL,IAAK,WACH,cAAO+U,QAAP,IAAOA,OAAP,EAAOA,EAAI6B,oBACb,QACE,cAAO7B,QAAP,IAAOA,OAAP,EAAOA,EAAIiC,aAXA,OAiBhBF,IAAYpB,GACX,eAAC,KAAD,WACE,cAAC,KAAWN,KAAZ,CAAiBrL,MAAO,CAAEsL,YAAa,OAAvC,sBAGClC,GACCoD,EAAaxB,EAAIW,GAAUjP,MAC3B4P,EAAYtB,EAAIW,GAAUjP,MAFjB,OAGTsO,QAHS,IAGTA,OAHS,EAGTA,EAAIgC,WACJP,EAAOzB,EAAIW,GAAUjP,MACrB6P,EAAQvB,EAAIW,GAAUjP,gBAUtC,OACE,qCACGiI,GAAQA,GAAQ,MAAQ,eAACsE,GAAD,WACvB,eAAC,KAAD,CAAK5L,UAAU,gBAAgB2C,MAAO,CAAEiI,OAAQ,QAAhD,UACE,cAAC,KAAD,CAAK5K,UAAU,WAAf,yBACA,cAAC,KAAD,CAAK+M,KAAM,GAAI/M,UAAU,OAAzB,SACG+B,GAAc,OAACwK,QAAD,IAACA,OAAD,EAACA,EAAasD,kBAG/BvB,GAAY,eAAC,KAAD,CAAKtO,UAAU,gBAAgB2C,MAAO,CAAEiI,OAAQ,QAAhD,UACZ,cAAC,KAAD,CAAK5K,UAAU,WAAf,0CACA,cAAC,KAAD,CAAK+M,KAAM,GAAI/M,UAAU,OAAzB,SACG+B,GAAe+N,KAAKC,KAAe,OAAXxD,QAAW,IAAXA,OAAA,EAAAA,EAAayD,mBAAoB,SAG9D,eAAC,KAAD,CAAKhQ,UAAU,gBAAgB2C,MAAO,CAAEiI,OAAQ,QAAhD,UACE,cAAC,KAAD,CAAK5K,UAAU,WAAf,oCACA,eAAC,KAAD,CAAK+M,KAAM,GAAI/M,UAAU,OAAzB,UACGkD,OAAO+M,UAAP,OAAiB1D,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAa2D,gBAA9B,OACG3D,QADH,IACGA,OADH,EACGA,EAAa2D,eADhB,OAEG3D,QAFH,IAEGA,GAFH,UAEGA,EAAa2D,sBAFhB,aAEG,EAA6BlN,QAAQ,GAAI,IAH/C,UAOF,eAAC,KAAD,CAAKhD,UAAU,gBAAgB2C,MAAO,CAAEiI,OAAQ,QAAhD,UACE,cAAC,KAAD,CAAK5K,UAAU,WAAf,4BACA,cAAC,KAAD,CAAK+M,KAAM,GAAI/M,UAAU,OAAzB,SACG+B,GAAc,OAACwK,QAAD,IAACA,OAAD,EAACA,EAAa4D,uBAInC,cAAC,KAAD,CACEnD,OAAK,EACLC,UAAU,EACVC,mBAAmB,MACnBlN,UAAU,qBAJZ,SAME,cAAC,KAASmN,MAAV,CAEEC,OACE,cAAC,KAAWC,MAAZ,CAAkBC,MAAO,EAAG3K,MAAO,CAAEC,SAAU,QAA/C,SACG0E,GAAQA,GAAQ,KAAO,8BAA6B,wBAJ3D,SAQE,cAACuE,GAAD,WACc,OAAXU,QAAW,IAAXA,GAAA,UAAAA,EAAagB,sBAAb,eAA6B9N,QAAS,IACzB,OAAX8M,QAAW,IAAXA,OAAA,EAAAA,EAAagB,iBAAkB,IAC7BrI,QACC,SAACyI,GAAD,MACgB,cAAX,OAAFA,QAAE,IAAFA,OAAA,EAAAA,EAAI/U,OAAyC,UAAhB,OAAF+U,QAAE,IAAFA,OAAA,EAAAA,EAAI9I,YAClB,WAAX,OAAF8I,QAAE,IAAFA,OAAA,EAAAA,EAAI/U,OAAsC,UAAhB,OAAF+U,QAAE,IAAFA,OAAA,EAAAA,EAAI9I,YACf,cAAX,OAAF8I,QAAE,IAAFA,OAAA,EAAAA,EAAI/U,OAAyC,SAAhB,OAAF+U,QAAE,IAAFA,OAAA,EAAAA,EAAI9I,YAClB,cAAX,OAAF8I,QAAE,IAAFA,OAAA,EAAAA,EAAI/U,QAAwB0V,KAEhCzB,KAAI,SAACc,EAASb,GACb,OAAIwB,EAEF,cAACgB,EAAD,CAAgB3B,GAAIA,EAAIb,EAAGA,IAFR,cAAC2C,EAAD,CAAmB9B,GAAIA,EAAIb,EAAGA,OAMvD,qBAAKnK,MAAO,CAAEyL,UAAW,UAAzB,uEAxBA,W,qBE9WDgC,GAAmB,KC8LnBC,GAAiBlX,wBAC5B,IAGWmX,GAA4B,SAAC,GAAkB,IAAhBvX,EAAe,EAAfA,SAAe,EAC3BQ,mBAAoB,IADO,mBAClDgX,EADkD,KACzCC,EADyC,OAEfjX,mBAAiB,IAFF,mBAElDkX,EAFkD,KAEnCC,EAFmC,OAGfnX,oBACxC,IAAI8M,MAAOgB,eAJ4C,mBAGlDsJ,EAHkD,KAGnCC,EAHmC,OAMvBrX,mBAAgB,IANO,mBAMlDsX,EANkD,KAMvCC,EANuC,OAOnBvX,mBAAgB,IAPG,mBAOlDwX,EAPkD,KAOrCC,EAPqC,OAQjBzX,mBAA0B,IART,mBAQlD0X,EARkD,KAQpCC,EARoC,OASH3X,oBAAS,GATN,mBASlD4X,EATkD,KAS7BC,EAT6B,OAUT7X,oBAAkB,GAVT,mBAUlD8X,EAVkD,KAUhCC,EAVgC,OAWL/X,oBAAkB,GAXb,mBAWlDgY,EAXkD,KAW9BC,EAX8B,OAYjBjY,mBAAiB,GAZA,mBAYlDkY,EAZkD,KAYpCC,EAZoC,OAa/BnY,mBAAoB,IAbW,mBAalDoY,EAbkD,KAa3CC,EAb2C,QAcrBrY,mBAAiB,GAdI,qBAclDsY,GAdkD,MActCC,GAdsC,SAeTvY,mBAAS,IAfA,qBAelDwY,GAfkD,MAehCC,GAfgC,SAgBLzY,mBAAS,IAhBJ,qBAgBlD0Y,GAhBkD,MAgB9BC,GAhB8B,SAiBL3Y,mBAAiB,GAjBZ,qBAiBlD4Y,GAjBkD,MAiB9BC,GAjB8B,SAkBf7Y,mBAA0B,IAlBX,qBAkBlD8Y,GAlBkD,MAkBnCC,GAlBmC,SAmBb/Y,mBAAyB,MAnBZ,qBAmBlDgZ,GAnBkD,MAmBlCC,GAnBkC,SAoBbjZ,mBAAwB,MApBX,qBAoBlDkZ,GApBkD,MAoBlCC,GApBkC,SAsBvDnZ,mBAA+B,MAtBwB,qBAqBlDoZ,GArBkD,MAqB5BC,GArB4B,SAuBvBrZ,mBAAyB,MAvBF,qBAuBlDsZ,GAvBkD,MAuBvCC,GAvBuC,SAwBrBvZ,mBAAS,GAxBY,qBAwBlDwZ,GAxBkD,MAwBtCC,GAxBsC,SAyBrBzZ,oBAAS,GAzBY,qBAyBlD0Z,GAzBkD,MAyBtCC,GAzBsC,SA0BjB3Z,oBAAS,GA1BQ,qBA0BlD4Z,GA1BkD,MA0BpCC,GA1BoC,SA2BX7Z,oBAAS,GA3BE,qBA2BlD8Z,GA3BkD,MA2BjCC,GA3BiC,SA4BK/Z,mBAAS,IA5Bd,qBA4BlDga,GA5BkD,MA4BzBC,GA5ByB,SA6B7Bja,mBAAS,IA7BoB,qBA6BlDka,GA7BkD,MA6B1CC,GA7B0C,SA8BHna,mBAInD,IAlCsD,qBA8BlDoa,GA9BkD,MA8B7BC,GA9B6B,MAoCnDC,GAAY,uCAAG,WAAOrY,EAAWsY,GAAlB,mBAAAjZ,EAAA,sDACnBqY,IAAc,GACRa,IAAiBvY,EAAKuY,aAE5Blc,EACG4G,KAAKsV,EAAe,eAAiB,oBAAqB,CACzDpT,IAAKnF,EAAKC,SAAS6F,QAAQ,WAAY,IACvC5F,KAAMF,EAAKE,KACXmS,GAAG,eAAD,OAAiBiC,KAAKkE,UACxBC,KAAMzY,EAAKG,MACXqF,MAAK,UAAExF,EAAKwF,aAAP,QAAgB,GACrBkT,OAAM,iBAAE1Y,QAAF,IAAEA,OAAF,EAAEA,EAAM0Y,cAAR,QAAkB,GACxBhV,OAAO,EACP6U,eACAI,KAAM,MACNC,KAAM5Y,EAAK4Y,KACXC,WAAU,OAAE7Y,QAAF,IAAEA,OAAF,EAAEA,EAAM6Y,aAEnBvX,MAAK,SAACxB,GAAc,IAAD,EACZgZ,EAASP,EAAe,eAAiB,WAE/C,OAAIzY,QAAJ,IAAIA,GAAJ,UAAIA,EAAUE,YAAd,aAAI,EAAgB+Y,cAClBrB,IAAc,GACdU,GAAuB,CACrBY,WAAW,EACX9Y,KAAMF,EAAKE,KACXiF,IAAKnF,EAAKC,aAGW,gBAAvBH,EAASE,KAAKkK,KACV9G,IAAQmB,QAAQzE,EAASE,KAAKoD,SAC9BA,IAAQmB,QAAR,UAAmBuU,EAAnB,YAA6B9Y,EAAKE,KAAlC,4BAEJqY,EACIU,KACAC,GAAW,CAAEC,KAAI,OAAEb,QAAF,IAAEA,IAAe,QAGzC9W,OAAM,SAACC,GAAS,IAAD,MACd,OAC4B,OAAvB,OAAHA,QAAG,IAAHA,GAAA,UAAAA,EAAK3B,gBAAL,eAAe4C,SACW,OAAvB,OAAHjB,QAAG,IAAHA,GAAA,UAAAA,EAAK3B,gBAAL,eAAe4C,SACW,OAAvB,OAAHjB,QAAG,IAAHA,GAAA,UAAAA,EAAK3B,gBAAL,eAAe4C,QAERU,IAAQX,MACbhB,EAAI3B,SAASE,KAAKoD,SAAlB,wBACmBmV,EAAe,eAAiB,YAGhDnV,IAAQX,MAAR,wBACY8V,EAAe,eAAiB,eAlDpC,2CAAH,wDAsDZa,GAAY,uCAAG,WAAOpZ,EAAWmZ,GAAlB,+BAAA9Z,EAAA,sDAAiCga,EAAjC,+BAAgD,GAC7Dd,IAAiBvY,EAAKuY,aACxBe,EAAe,CACjBnU,IAAKnF,EAAKC,SAAS6F,QAAQ,WAAY,IACvC5F,KAAMF,EAAKE,KACXmS,GAAG,eAAD,OAAiBiC,KAAKkE,UACxBC,KAAMzY,EAAKG,MACXqF,MAAOxF,EAAKwF,MACZ9B,OAAO,EACP6U,eACAI,KAAM,MACNC,KAAM5Y,EAAK4Y,KACXC,WAAU,OAAE7Y,QAAF,IAAEA,OAAF,EAAEA,EAAM6Y,WAClBU,UAAS,OAAEvZ,QAAF,IAAEA,OAAF,EAAEA,EAAMuZ,UACjBC,OAAM,OAAExZ,QAAF,IAAEA,OAAF,EAAEA,EAAMwZ,QAGhBnd,EACGod,IAAIlB,EAAe,eAAiB,kBADvC,eAEOe,IAEJhY,MAAK,SAACxB,GACL,IAAMgZ,EAASP,EAAe,eAAiB,UAExB,gBAAvBzY,EAASE,KAAKkK,KACV9G,IAAQmB,QAAQzE,EAASE,KAAKoD,SAC9BA,IAAQmB,QAAR,UAAmBuU,EAAnB,YAA6B9Y,EAAKE,KAAlC,yBAEJwX,IAAc,GAEda,EAAeU,KAAqBC,GAAW,2BAAKG,GAAN,IAAeF,aAE9D3X,OAAM,SAACC,GAAS,IAAD,IACd,OAA8B,OAAvB,OAAHA,QAAG,IAAHA,GAAA,UAAAA,EAAK3B,gBAAL,eAAe4C,SAA4C,OAAvB,OAAHjB,QAAG,IAAHA,GAAA,UAAAA,EAAK3B,gBAAL,eAAe4C,QAC3CU,IAAQX,MACbhB,EAAI3B,SAASE,KAAKoD,SAAlB,4BACuBmV,EAAe,eAAiB,YAGpDnV,IAAQX,MAAR,4BACgB8V,EAAe,eAAiB,eAxCxC,2CAAH,wDA4CZmB,GAAkB,uCAAG,WAAO1Z,GAAP,SAAAX,EAAA,sDACzBhD,EACGod,IAAI,qBAAsB,CACzBtU,IAAKnF,EAAKC,SAAS6F,QAAQ,WAAY,IACvC5F,KAAMF,EAAKE,KACXmS,GAAG,eAAD,OAAiBiC,KAAKkE,UACxBC,KAAMzY,EAAKG,MACXuY,OAAQ1Y,EAAK0Y,OACbhV,OAAO,EACPiV,KAAM,QAEPrX,MAAK,SAACxB,GACkB,gBAAvBA,EAASE,KAAKkK,KACV9G,IAAQmB,QAAQzE,EAASE,KAAKoD,SAC9BA,IAAQmB,QAAR,mCAEJmT,IAAc,GAEduB,QAEDzX,OAAM,SAACC,GAAS,IAAD,IACd,OAA8B,OAAvB,OAAHA,QAAG,IAAHA,GAAA,UAAAA,EAAK3B,gBAAL,eAAe4C,SAA4C,OAAvB,OAAHjB,QAAG,IAAHA,GAAA,UAAAA,EAAK3B,gBAAL,eAAe4C,QAC3CU,IAAQX,MACbhB,EAAI3B,SAASE,KAAKoD,SAAW,kCAG1BA,IAAQX,MAAR,iCA1Bc,2CAAH,sDA8BlBkX,GAAY,uCAAG,WACnBxU,EACA2G,EACA1O,EACAwR,GAJmB,iBAAAvP,EAAA,0DAMf8F,EANe,wBAOjB2Q,GAAoB,GAPH,SAQMzZ,EAAIwD,IAAJ,iCAAkCsF,GAAO,CAC9DyU,OAAQ,CACN9N,OACA1O,UAXa,gBAQT4C,EARS,EAQTA,KAORwW,GAAoBxW,EAAK6Z,SACzB3E,EAAiB,YACjBI,GAAiB,OAAJtV,QAAI,IAAJA,OAAA,EAAAA,EAAMqV,YAAa,KAChC,OAAIrV,QAAJ,IAAIA,OAAJ,EAAIA,EAAM8Z,UACRC,GAAiB5U,GAGnB2Q,GAAoB,GAChBlH,GAAUA,EAAS5O,GAvBN,4CAAH,4DA2BZga,GAAc,uCAAG,WACrB7U,EACA/H,EACAwR,GAHqB,iBAAAvP,EAAA,0DAKjB8F,EALiB,wBAMnB6Q,GAAsB,GANH,SAOI3Z,EAAIwD,IAAJ,mCAAoCsF,GAAO,CAChEyU,OAAQ,CACNxc,UATe,gBAOX4C,EAPW,EAOXA,KAMR0W,GAAsB1W,EAAK6Z,SAC3BrE,GAAmB,OAAJxV,QAAI,IAAJA,OAAA,EAAAA,EAAMuV,cAAe,IACpCS,GAAsB,GACtBgB,IAAkB,SAACiD,GAAD,mBAAC,eACdA,GADa,IAEhBC,OAAO,2BAAD,OACDD,QADC,IACDA,OADC,EACDA,EAAQC,QADP,IAEJC,UAAc,OAAJna,QAAI,IAAJA,OAAA,EAAAA,EAAMuV,cAAe,UAG/B3G,GAAUA,EAAS5O,GAvBJ,4CAAH,0DA2Bd+Z,GAAgB,uCAAG,WAAO5U,GAAP,iBAAA9F,EAAA,6DACvBuW,GAAuB,GADA,SAEAvZ,EAAIwD,IAAJ,gCAAiCsF,IAFjC,gBAEfnF,EAFe,EAEfA,KACR0V,EAAgB1V,GAChB4V,GAAuB,GAJA,2CAAH,sDAOhBwE,GAAmB,uCAAG,WAAOH,GAAP,iBAAA5a,EAAA,sEACHhD,EAAIwD,IAAJ,8BACEoa,EAAOha,SAAS6F,QAAQ,WAAY,MAFnC,gBAClB9F,EADkB,EAClBA,KAGRwX,GAAc,GACVxX,GACFsX,GAAa,2BAAKtX,GAAN,IAAYE,MAAU,OAAJF,QAAI,IAAJA,OAAA,EAAAA,EAAMqa,WAAY,MANxB,2CAAH,sDAUnBC,GAAqBlZ,sBAAW,sBAAC,kCAAA/B,EAAA,6DAC/Bkb,EAAiB,GACvBxF,EAAQyF,SAAQ,SAAAC,GACXA,EAAEC,uBAAuBH,EAAKI,KAAKF,EAAExa,aAHL,SAKd5D,EAAI4G,KAAK,gCAAiC,CAC/D8R,QAASwF,IAN0B,gBAK7Bva,EAL6B,EAK7BA,KAIF4a,EAAa7F,EAAQ1D,KAAI,SAAAoJ,GAC7B,IAAMI,EAAgB7a,EAAKwT,MAAK,SAACrO,GAAD,OAAiBA,IAAQsV,EAAExa,YAC3D,OAAGwa,EAAEC,wBAA0BG,GAC1BJ,EAAExa,YAAF,OAAe8W,SAAf,IAAeA,QAAf,EAAeA,GAAgB9W,WAChC+W,GAAkB,2BAAID,IAAL,IAAqB+D,sBAAsB,EAAMJ,uBAAuB,KAEpF,2BAAID,GAAX,IAAcK,sBAAsB,EAAMJ,uBAAuB,KACrDD,KAGhBzF,EAAW4F,GAnB0B,2CAoBpC,CAAC7F,EAASgC,KAEPgE,GAAgB3Z,uBAAY,SAACpB,GACjC,IAAM0L,GAAe,IAAIb,MAAOc,WAKlC,OAJkB3L,EAAK0J,QAAO,SAACsR,GAC3B,OAAQ,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAMlP,OAAQ8I,KAAwB,OAAJoG,QAAI,IAAJA,OAAA,EAAAA,EAAMjP,QAASL,GAAgBV,UAA0B,EACnFgQ,OAGb,IAEG9B,GAAa9X,sBAAW,uCAAC,WAAOwY,GAAP,qFAAAva,EAAA,6DAE3B8Z,GAF2B,SAqBzBS,QArByB,IAqBzBA,IAAU,IAnBZT,KACA8B,EAH2B,EAG3BA,SACAC,EAJ2B,EAI3BA,WACAC,EAL2B,EAK3BA,WACAC,EAN2B,EAM3BA,KACAhe,EAP2B,EAO3BA,KACAie,EAR2B,EAQ3BA,YACAC,EAT2B,EAS3BA,SACAC,EAV2B,EAU3BA,iBACAC,EAX2B,EAW3BA,QACAC,EAZ2B,EAY3BA,eACA1P,EAb2B,EAa3BA,MACAD,EAd2B,EAc3BA,KACA4P,EAf2B,EAe3BA,YACAC,EAhB2B,EAgB3BA,eACAC,EAjB2B,EAiB3BA,iBACAC,EAlB2B,EAkB3BA,kBACAC,EAnB2B,EAmB3BA,YACAC,EApB2B,EAoB3BA,aAEFrE,IAAc,GAtBe,SAwBrBkC,EAAS,CACbT,KAAI,OAAEA,QAAF,IAAEA,IAAQ,EACd8B,SAAQ,OAAEA,QAAF,IAAEA,IAAY,GACtBE,aACAC,OACAM,cACAC,iBACAT,aACAvG,cAAe,mBACf0G,cACAC,WACAE,UACAC,iBACA1P,QACAD,OACA1O,OACAwe,mBACAC,oBACAC,eA1CyB,SA4CJzf,EAAIwD,IAAJ,kBACV0b,EAAmB,WAAa,IAC3C,CAAE3B,WA9CuB,cA4CrB9Z,EA5CqB,OAgDvB8b,EACFxY,IAAQ4Y,KAAR,0DAAqE,IAEjET,GACIvb,EAAO+a,GAAa,OAACjb,QAAD,IAACA,GAAD,UAACA,EAAUE,YAAX,aAAC,EAAgBA,MAC3CoW,EAASpW,GACTsW,GAAa,OAACxW,QAAD,IAACA,GAAD,UAACA,EAAUE,YAAX,aAAC,EAAgBic,SAE9BjH,EAAU,OAAClV,QAAD,IAACA,GAAD,UAACA,EAAUE,YAAX,aAAC,EAAgBA,MAC3BkW,EAAe,OAACpW,QAAD,IAACA,GAAD,UAACA,EAAUE,YAAX,aAAC,EAAgBic,OAC7BF,IACKG,IAAmB,OAARpc,QAAQ,IAARA,GAAA,UAAAA,EAAUE,YAAV,eAAgBA,OAAqB,IAAIwT,MAAK,SAACiH,GAAD,OAAgBA,EAAExa,WAAa8b,OAClF/E,GAAkBkF,IAGlChE,GAAS,OAACpY,QAAD,IAACA,GAAD,UAACA,EAAUE,YAAX,iBAAC,EAAgBiY,cAAjB,aAAC,EAAwBjY,OAEpC0X,IAAc,GAjEa,kBAkEpB,CACL3C,QAAO,OAAEjV,QAAF,IAAEA,GAAF,UAAEA,EAAUE,YAAZ,aAAE,EAAgBA,KACzBiY,OAAM,OAAEnY,QAAF,IAAEA,GAAF,UAAEA,EAAUE,YAAZ,iBAAE,EAAgBiY,cAAlB,aAAE,EAAwBjY,OApEP,kCAuE3B0X,IAAc,GACdtU,IAAQX,OAAM,2CAAK3C,gBAAL,mBAAeE,YAAf,eAAqBoD,UAAW,mBAxEnB,0DAAD,sDA0E3B,IAEG+Y,GAAmB,uCAAG,WAAOxD,EAAcU,GAArB,yBAAAha,EAAA,kEAGX,aAATsZ,EAHoB,gCAIHO,GAAW,CAAE2C,mBAAmB,IAJ7B,OAIhBT,EAJgB,OAKtBgB,GAAkB,OAAJhB,QAAI,IAAJA,OAAA,EAAAA,EAAMnD,cAAU5E,EALR,UAOX,UAATsF,EAPoB,iCAQHO,GAAW,CAC5B2C,mBAAmB,EACnBN,kBAAkB,EAClBxP,MAAK,OAAEsN,QAAF,IAAEA,OAAF,EAAEA,EAAStN,MAChBD,KAAI,OAAEuN,QAAF,IAAEA,OAAF,EAAEA,EAASvN,OAZK,OAQhBsP,EARgB,OActBgB,GAAkB,OAAJhB,QAAI,IAAJA,OAAA,EAAAA,EAAMnD,cAAU5E,EAdR,QAgBlBrT,EAAOqc,WAAW1D,KACb,eAATA,EAAwBZ,GAAxB,UAAkDqE,SAAlD,QAAiEnE,IAE7DqE,EAAO,IAAIC,KAAK,CAACvc,GAAO,CAAE5C,KAAM,uBACtCof,KAAUC,OAAOH,EAAjB,UAA0B3D,EAA1B,UApBwB,kDAsBxBvV,IAAQX,MAAR,MAtBwB,0DAAH,wDA0BnBwW,GAAmB7X,sBAAW,uCAClC,WAAO+X,EAAetV,EAAgB6Y,GAAtC,uBAAArd,EAAA,6DACEyY,IAAmB,GADrB,SAEyBzb,EAAIwD,IAAI,cAAe,CAC5C+Z,OAAQ,CACNT,OACAtV,QACA6Y,SANN,OAEQ5c,EAFR,OASQ6c,EATR,OASgB7c,QAThB,IASgBA,GAThB,UASgBA,EAAUE,YAT1B,aASgB,EAAgB6Y,WAAW+D,MAAK,SAACvd,EAAQwd,GAAT,cAAoBxd,QAApB,IAAoBA,OAApB,EAAoBA,EAAGa,KAAK4c,cAAR,OAAsBD,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAG3c,SAE3F8X,GAA0B,UAAClY,EAASE,YAAV,iBAAC,EAAeiY,cAAhB,aAAC,EAAuBjY,MAClD8W,GAAiB6F,GACjB/F,GAAsB9W,EAASE,KAAK+c,OACpCjF,IAAmB,GAdrB,2CADkC,0DAiBlC,IAuBIkF,GAAc,uCAAG,WAAO/C,GAAP,iBAAA5a,EAAA,sEACEhD,EAAI4G,KAAJ,yBAA2BgX,EAAOha,WADpC,uBACbD,EADa,EACbA,KADa,kBAEdA,EAAKV,OAFS,2CAAH,sDAKd2d,GAAa,uCAAG,WAAOhD,GAAP,eAAA5a,EAAA,sEAElBuY,IAAgB,GAFE,SAGEoF,GAAe/C,GAHjB,OAGZ3a,EAHY,OAIlBsY,IAAgB,GAChBzV,OAAO6G,KAAP,UACKvM,gCADL,kBACgD6C,GAC9CtC,KAAa,QAAU,UAPP,gDAUlB4a,IAAgB,GAVE,yDAAH,sDAcbsF,GAAY,uCAAG,WAAO/D,GAAP,SAAA9Z,EAAA,sEACbhD,EAAI8gB,OAAJ,0BAAuBpG,SAAvB,IAAuBA,QAAvB,EAAuBA,GAAgBqG,KAAO,CAClDpd,KAAM,CAAEiX,qBAFS,OAInBiC,GAAW,CAAEC,SAJM,2CAAH,sDAOZkE,GAAkB,uCAAG,WAAOrd,GAAP,SAAAX,EAAA,sEACnBhD,EAAI8gB,OAAJ,qBAAiC,CAAEnd,KAAM,CAAEmF,IAAKnF,EAAKC,YADlC,OAEzBgZ,KAFyB,2CAAH,sDAKlBqE,GAAa,uCAAG,WAAOrd,GAAP,iBAAAZ,EAAA,sEAElBqY,IAAc,GAFI,SAGKrb,EAAI4G,KAAJ,mBAA6B,CAAEhD,aAHpC,gBAIC,OAAX,QADAD,EAHU,EAGVA,YACA,IAAJA,OAAA,EAAAA,EAAMkK,MAAc9G,IAAQX,MAAR,OAAczC,QAAd,IAAcA,OAAd,EAAcA,EAAMoD,UAE1CA,IAAQmB,QAAQvE,EAAKoD,SACrB8V,MAPgB,gDAUlB9V,IAAQX,MACN,6FAXgB,yDAAH,sDAgBnB,OACE,cAACoS,GAAejR,SAAhB,CACEC,MAAO,CACL8T,gBACA9B,mBACAE,qBACAV,YACAE,cACAkC,cACAvC,mBACAD,gBACAG,mBACAU,sBACAf,UACA4E,gBACAK,kBACAD,oBACAtE,eACAE,sBACAD,kBACAV,aACAmB,QACAC,WACAjB,gBACAc,eACAI,cACAM,sBACAE,iBACAqC,cACAD,oBACAsE,cAjGgB,SAACC,GACrB,IAAMtC,EAAasC,EAAOC,oBAC1B,OAAO1I,EAAQrL,QACb,SAACuQ,GAAD,uBACE,UAAAA,EAAO9Z,aAAP,mBAAcsd,2BAAd,eAAmC1V,SAASmT,MAA5C,UACAjB,EAAO/Z,YADP,iBACA,EAAaud,2BADb,aACA,EAAkC1V,SAASmT,MAD3C,UAEAjB,EAAOha,gBAFP,iBAEA,EAAiB6F,QAAQ,QAAS,WAFlC,aAEA,EAAuCiC,SAASmT,QA4FhDwC,oBAxFsB,SAACF,GAC3B,IAAMtC,EAAasC,EAAOC,oBAC1B,OAAO5G,GAAcnN,QACnB,SAACuQ,GAAD,uBACE,UAAAA,EAAO9Z,aAAP,mBAAcsd,2BAAd,eAAmC1V,SAASmT,MAA5C,UACAjB,EAAO/Z,YADP,iBACA,EAAaud,2BADb,aACA,EAAkC1V,SAASmT,MAD3C,UAEAjB,EAAOha,gBAFP,iBAEA,EAAiB6F,QAAQ,QAAS,WAFlC,aAEA,EAAuCiC,SAASmT,QAmFhD+B,iBACAC,gBACAG,sBACAtG,kBACAI,wBACAC,2BACAJ,qBACAE,qBACAkD,uBACA7C,cACAF,aACAgB,gBACAb,iBACAF,gBACA0F,kBACAtF,iBACA0B,gBACAM,sBACA7B,mBACAsE,uBACAhE,uBACAC,0BACAkF,iBACA/G,oBACAE,sBACA6D,uBAxDJ,SA2DG/c,KAKMogB,GAAa,kBAAuBxZ,qBAAW0Q,KC9qB/C+I,GAAiB,SAAC,GAMhB,IAAD,oBALZC,EAKY,EALZA,oBACAC,EAIY,EAJZA,uBACAC,EAGY,EAHZA,gBACAC,EAEY,EAFZA,mBACAC,EACY,EADZA,eAEMzU,EAAOuU,EAAgB,GADjB,EAE0BhgB,qBAF1B,mBAELgT,EAFK,KAEQmN,EAFR,OAGcngB,mBAAS,GAHvB,mBAGLiT,EAHK,KAGEC,EAHF,OAI0B0M,KAA9BlG,EAJI,EAIJA,WAAYC,EAJR,EAIQA,cAJR,EAKkC3Z,oBAAS,GAL3C,mBAKLogB,EALK,KAKYC,EALZ,KAONC,EAA4B,cAAX,OAAJ7U,QAAI,IAAJA,OAAA,EAAAA,EAAMpM,MACnB0V,GAAW,iBAACtJ,QAAD,IAACA,OAAD,EAACA,EAAMsC,YAAP,QAAe,MAAQ8I,GAoBxCtS,qBAAU,WACoC,IAAD,GAAnC,OAAJkH,QAAI,IAAJA,OAAA,EAAAA,EAAMvJ,WAAY4d,GACpBnG,GAAc,GACdrb,EACGwD,IADH,4BAC4B2J,EAAKvJ,UAAY,CACzC2Z,OAAQ,CACN7N,MAAK,OAAEvC,QAAF,IAAEA,OAAF,EAAEA,EAAMuC,MACbD,KAAI,OAAEtC,QAAF,IAAEA,OAAF,EAAEA,EAAMsC,KACZ1O,KAAI,OAAEoM,QAAF,IAAEA,OAAF,EAAEA,EAAMpM,KACZkhB,MAAK,OAAE9U,QAAF,IAAEA,OAAF,EAAEA,EAAM8R,SACbiD,OACgC,WAA1B,OAAJ/U,QAAI,IAAJA,GAAA,UAAAA,EAAMpM,YAAN,eAAYohB,eAAZ,OACIhV,QADJ,IACIA,OADJ,EACIA,EAAMiV,YADV,OAEIjV,QAFJ,IAEIA,OAFJ,EAEIA,EAAMkV,eACZC,yBAAyB,EACzBC,gBAAgB,EAChBC,2BAA2B,EAC3BC,+BAA+B,EAC/BC,qBAAqB,EACrBC,qBAAqB,KAGxB1d,MAAK,SAACC,GACL2c,EAAe3c,EAAIvB,SAEpBwB,OAAM,SAACC,GACN2B,IAAQX,MACN,6EAEFqb,GAAuB,MAExBmB,SAAQ,WACPvH,GAAc,OAERmG,GACVK,OAAe7K,KAEhB,CAACyK,EAAwBD,EAAqBrU,EAAMkO,IAEvD,IAAMwH,EACW,cAAX,OAAJ1V,QAAI,IAAJA,OAAA,EAAAA,EAAMpM,MACFkX,KAAKjH,MAAgB,OAAX0D,QAAW,IAAXA,OAAA,EAAAA,EAAa4D,gBAAiB,IAA/B,iBAAqC5D,QAArC,IAAqCA,OAArC,EAAqCA,EAAaoO,oBAAlD,QAAkE,GAAI,GAC/E7K,KAAKjH,IACL,EACA3F,SACc,OAAXqJ,QAAW,IAAXA,OAAA,EAAAA,EAAaqO,oBAAqB,KACvB,OAAXrO,QAAW,IAAXA,OAAA,EAAAA,EAAasO,iBAAkB,KACpB,OAAXtO,QAAW,IAAXA,OAAA,EAAAA,EAAauO,kBAAmB,KAElC5X,QAAkB,OAAXqJ,QAAW,IAAXA,OAAA,EAAAA,EAAW,mBAA0B,GAC3CrJ,QAAkB,OAAXqJ,QAAW,IAAXA,OAAA,EAAAA,EAAW,YAAmB,KAGvCwO,EACW,cAAX,OAAJ/V,QAAI,IAAJA,OAAA,EAAAA,EAAMpM,OACS,OAAX2T,QAAW,IAAXA,OAAA,EAAAA,EAAa4D,gBAAb,iBACD5D,QADC,IACDA,OADC,EACDA,EAAaoO,oBADZ,QAC4B,GAFhC,OAGApO,QAHA,IAGAA,OAHA,EAGAA,EAAayO,kBAET7K,EACW,cAAX,OAAJnL,QAAI,IAAJA,OAAA,EAAAA,EAAMpM,OACS,OAAX2T,QAAW,IAAXA,OAAA,EAAAA,EAAa4D,gBAAiB,EAC9BjN,SACY,OAAXqJ,QAAW,IAAXA,OAAA,EAAAA,EAAaqO,oBAAqB,KACvB,OAAXrO,QAAW,IAAXA,OAAA,EAAAA,EAAasO,iBAAkB,KACpB,OAAXtO,QAAW,IAAXA,OAAA,EAAAA,EAAauO,kBAAmB,IAGvC,OACE,eAAC,GAAD,CACEpN,MAAO,IACPlJ,KAAM6U,EACNrZ,UAAU,kBACV8K,SAAU,kBAAMwO,GAAuB,IACvC9R,MACE,eAACmE,GAAD,WACE,cAAC,KAAD,IADF,UAEM/H,KAAgB,UAAA2V,EAAgB,UAAhB,eAAoBhS,QAAS,GAAK,GAFxD,yBAEiEgS,EAAgB,UAFjF,aAEiE,EAAoBjS,SAIvF8D,OACE2P,EAAe,EACb,cAAC,KAAD,UACE,cAAC,KAAD,CAAKhO,KAAM,GAAX,SAEqB,WAAX,OAAJ/H,QAAI,IAAJA,OAAA,EAAAA,EAAMpM,OAAoBqO,GAAyBsS,EAAgB,IAAIzgB,SAEvE,cAAC,KAAD,CACE0O,MAAOP,GAAyBsS,EAAgB,IAAI/R,MACpDhD,KAAMmV,EAFR,UAIG,UAAAJ,EAAgB,UAAhB,eAAoBjS,OAAQ,OAASuS,GAAc,mCAClD,cAAC,EAAD,CACEnP,OAAK,EACLhS,SAAO,EACPG,KAAK,QACLD,KAAK,UACL6U,KAAM,cAACnC,GAAD,CAActL,UAAU,cAC9BM,QAAS,WACPsZ,GAAoBD,GAEpBjc,YAAW,WACTkc,GAAmB,KAClB,OAXP,SAcGC,IAAevL,EAAW,sBAAqB,oBAKtD,qCAAK,UAAAiL,EAAgB,UAAhB,eAAoBjS,OAAQ,MAAQuS,IAAgBA,IAAe,cAAC,EAAD,CACtEnP,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL6U,KAAM,cAACnC,GAAD,CAActL,UAAU,cAC9BM,QAAS,YAEJ0E,EAAKiW,iBACJjW,EAAKkW,cACLlW,EAAKiV,aACLjV,EAAKkV,kBAHP,OAIAlV,QAJA,IAIAA,OAJA,EAIAA,EAAM6R,cAEN2C,EACgB,UAAdxU,EAAKpM,KACDoM,EAAKkW,aACLlW,EAAKiW,gBACK,UAAdjW,EAAKpM,KACDoM,EAAKiV,YACLjV,EAAKkV,gBAEXtb,IAAQmB,QAAQ,uCAEhB0Z,GAAe,GAAO,EAAM,CAACzU,KAGjClM,UACGygB,GAA8C,IAA3BA,EAAgB9Z,QAAgBwT,GAAchM,GAAyBsS,EAAgB,IAAIzgB,SA3B3C,SA8BrE+gB,IAAevL,EAAW,sBAAqB,sBAKxD,KAEN6M,UAAW,CAAEC,SAAU,YAhFzB,UAkFkB,WAAX,OAAJpW,QAAI,IAAJA,OAAA,EAAAA,EAAMpM,MACL,cAAC,GAAD,CACE2T,YAAaA,EACbC,MAAOA,EACPC,SAAUA,IAGZ,cAAC,GAAD,CAAiBF,YAAaA,EAAa+B,SAAUA,EAAUhH,KAAI,UAAEiS,EAAgB,UAAlB,aAAE,EAAoBjS,SAExF,UAAAiS,EAAgB,UAAhB,eAAoBjS,OAAQ,MAAQuS,IAAgBA,IAAe,eAAC,KAAD,CAAKlX,MAAO,CAAE0Y,UAAW,QAAzB,UACpE,cAAC,KAAD,CAAK1Y,MAAO,CAAE2Y,SAAU,KAAxB,SACE,cAAC,KAAWjO,MAAZ,CAAkBC,MAAO,EAAG3K,MAAO,CAAEC,SAAU,QAA/C,6BAIF,cAAC,KAAD,CACEmK,KAAM,GACNpK,MAAO,CACL4Y,QAAS,OACTC,eAAgB,SAChBC,WAAY,UALhB,SAQE,cAAC,KAAWpO,MAAZ,CAAkBC,MAAO,EAAG3K,MAAO,CAAEC,SAAU,QAA/C,SACGb,GAAe+N,KAAKjH,IAAIkS,EAAc,aAI1C,UAAAxB,EAAgB,UAAhB,eAAoBjS,OAAQ,MAAQuS,IAAgBA,IAAe,eAACjO,GAAD,WACpE,eAAC,KAAD,CAAK5L,UAAU,0BAAf,UACE,cAAC,KAAD,CAAKA,UAAU,WAAf,oCACA,cAAC,KAAD,CAAK+M,KAAM,GAAX,SAAgBhL,GAAe2Y,QAEjC,eAAC,KAAD,CAAK1a,UAAU,0BAAf,UACE,cAAC,KAAD,CAAKA,UAAU,qBAAf,gCACA,cAAC,KAAD,CAAK+M,KAAM,GAAX,SAAgBhL,GAAeoO,UAE9B0J,GAAcvL,IAAa,eAAC,KAAD,CAAKtO,UAAU,0BAAf,UAC5B,cAAC,KAAD,CAAKA,UAAU,qBAAf,gDAGA,cAAC,KAAD,CAAK+M,KAAM,GAAX,SAAgBhL,GAAc,OAACwK,QAAD,IAACA,OAAD,EAACA,EAAamP,yBAE3C7B,IAAevL,IAChB,eAAC,KAAD,CAAKtO,UAAU,0BAAf,UACE,cAAC,KAAD,CAAKA,UAAU,qBAAf,kDAGA,cAAC,KAAD,CAAK+M,KAAM,GAAX,SAAgBhL,IAA0B,OAAXwK,QAAW,IAAXA,OAAA,EAAAA,EAAaoP,aAAb,OAA0BpP,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAaoO,sBAGvEd,GAAcvL,IACf,qCACE,eAAC,KAAD,CAAKtO,UAAU,0BAAf,UACE,cAAC,KAAD,CAAKA,UAAU,WAAf,iCACA,cAAC,KAAD,CAAK+M,KAAM,GAAX,SACGhL,GAAe2Y,EAnPX,GAmP2C,GAAe,OAAXnO,QAAW,IAAXA,OAAA,EAAAA,EAAaqP,YAAb,OAAyBrP,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAasP,aAG9F,eAAC,KAAD,CAAK7b,UAAU,0BAAf,UACE,cAAC,KAAD,CAAKA,UAAU,WAAf,+CACA,cAAC,KAAD,CAAK+M,KAAM,GAAX,SACGhL,GAAe2Y,EAzPX,GAyP2C,GAAe,OAAXnO,QAAW,IAAXA,OAAA,EAAAA,EAAauP,YAAb,OAAyBvP,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAawP,mBAOnG9I,GACC,cAACnH,GAAD,UACE,cAAC1L,EAAA,EAAD,UC5RV,SAAS4b,KAA2Q,OAA9PA,GAAWzc,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAASO,GAAyBN,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxMW,CAA8BT,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,wkBACHC,OAAQ,QACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,UAGlB,SAASC,GAAQC,EAAMC,GACrB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQikB,GAAyBa,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAOvB,GAAS,CACtDtO,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,IAGpB,IAAIsW,GAA0B,aAAiBR,IAChC,ICnCf,SAAS,KAA2Q,OAA9P,GAAW/d,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDxO,MAAO,GACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,YAGJ,GAAqB,gBAAoB,OAAQ,CACnDV,EAAG,uCACHC,OAAQ,QACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,UAGlB,SAASW,GAAQT,EAAMC,GACrB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,GAAO,IAG3B,IAAI,GAA0B,aAAiBwW,IAChC,IC1Cf,SAAS,KAA2Q,OAA9P,GAAWze,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,ksBACHE,YAAa,IACbC,cAAe,QACfC,eAAgB,UAGlB,SAASY,GAAUV,EAAMC,GACvB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiByW,IAChC,IClCf,SAAS,KAA2Q,OAA9P,GAAW1e,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDxO,MAAO,GACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,YAGJ,GAAqB,gBAAoB,OAAQ,CACnDV,EAAG,gDACHC,OAAQ,QACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,UAGlB,SAASa,GAAcX,EAAMC,GAC3B,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,GAAO,ICwB3B,IDrBA,IAAI,GAA0B,aAAiB0W,I,IAChC,I,QEpBFzE,GAAc,uCAAG,+EAAA5e,EAAA,yDAC5BsjB,EAD4B,EAC5BA,eACAC,EAF4B,EAE5BA,eACAC,EAH4B,EAG5BA,aACA9E,EAJ4B,EAI5BA,gBACA+E,EAL4B,EAK5BA,oBACApL,EAN4B,EAM5BA,cACAqL,EAP4B,EAO5BA,uBACAC,EAR4B,EAQ5BA,WACAC,EAT4B,EAS5BA,cACAC,EAV4B,EAU5BA,qBACA7J,EAX4B,EAW5BA,QACAH,EAZ4B,EAY5BA,WACAiK,EAb4B,EAa5BA,aACAC,EAd4B,EAc5BA,gBAd4B,SAiBpBrO,EACJgJ,EAAgB9Z,OAAS,EAAI8Z,EAAkB8E,GAAgB,IAC7DC,EAnBsB,gBAoBxB3gB,OAAO6G,KAAK8Z,EAAqB,UACjCC,OAAuB1P,GArBC,8BAuBxBqE,GAAc,GACViL,GACFI,EAAuB,WAzBD,UA2BD1mB,EAAI4G,KAAK,aAAc,CAC5C8R,QAASA,EACTiO,aACAL,mBA9BsB,iBA2BhB3iB,EA3BgB,EA2BhBA,KAKFwF,EAAQuP,EAAQ,GAAGvP,MACnB6d,EAAerjB,EAAK,IAAM,GAC1BsjB,EAlCkB,OAkCND,QAlCM,IAkCNA,OAlCM,EAkCNA,EAAcC,UAE1BjF,EAAoC,cAAX,OAAZgF,QAAY,IAAZA,OAAA,EAAAA,EAAcjmB,MAC3B0V,GAAW,iBAACuQ,QAAD,IAACA,OAAD,EAACA,EAAcvX,YAAf,QAAuB,MAAQ8I,GAC1C2O,EAAYlF,IAAevL,EAAW,eAAc,OAEtDwQ,GAAaX,IACTa,EADyB,mBAEjB,OAAZH,QAAY,IAAZA,OAAA,EAAAA,EAAcnjB,OAAQ,UAFO,uBAGhBqjB,EAHgB,6BAGIF,QAHJ,IAGIA,OAHJ,EAGIA,EAActX,MAHlB,mBAI7BsX,QAJ6B,IAI7BA,OAJ6B,EAI7BA,EAAcvX,KAJe,aAK1BwX,GACCG,EANyB,uBAO7Bje,EAAK,aAASA,GAAU,GAPK,iBAQtBge,EAAK/W,WAAW,IAAK,QAC9BsW,OAAuB1P,GACvBlR,OAAO6G,KAAKya,EAAK,WAEdd,IACCC,EACF5E,GAAmBsF,IAEnBlgB,IAAQmB,QAAR,mBAA4Bgf,EAA5B,gBACAR,OAAuB1P,KAG3B6P,GAAqB,GACrBE,GAAgB,GAChBD,GAAa,GACbF,GAAc,GACd/J,EAAW,2BAAKG,GAAN,IAAekC,kBAAkB,EAAMJ,YAAY,KAhErC,0DAmE1B4H,OAAuB1P,GACnB,KAAMjQ,QAAQ2E,SAAS,OACzB3E,IAAQX,MAAM,kEAEdW,IAAQX,MAAM,sDAvEU,QA0E5BiV,GAAc,GA1Ec,0DAAH,sDA6EdsG,GAAkB,uCAAG,WAAOyF,EAAclF,GAArB,mBAAAlf,EAAA,0DAC5BokB,EAD4B,gBAE9BthB,OAAO6G,KAAKya,EAAK,UAFa,2BAGrBlF,EAHqB,wBAIxBjf,EAAQC,aAAaC,QAAQ,kBAJL,SAKPhC,EAASqC,IAAT,yBAA+B0e,GAAU,CAC9D7hB,QAAS,CACPgnB,cAAc,UAAD,OAAYpkB,MAPC,gBAKtBU,EALsB,EAKtBA,KAKRmC,OAAO6G,MAAS,OAAJhJ,QAAI,IAAJA,OAAA,EAAAA,EAAMyjB,MAAO,GAAI,UAVC,4CAAH,wDCvElBE,GAAgB,SAAC,GAUf,ICtCmBC,ED6BhCC,EASY,EATZA,QACAb,EAQY,EARZA,WACAC,EAOY,EAPZA,cACAlF,EAMY,EANZA,gBACA+F,EAKY,EALZA,kBACAC,EAIY,EAJZA,mBACAjB,EAGY,EAHZA,oBACAI,EAEY,EAFZA,qBACAH,EACY,EADZA,uBACY,EACsBhlB,oBAAS,GAD/B,mBACLimB,EADK,KACMb,EADN,OAE4BplB,oBAAS,GAFrC,mBAELkmB,EAFK,KAESb,EAFT,OAGsCzF,KAA1ClG,EAHI,EAGJA,WAAYyB,EAHR,EAGQA,WAAYxB,EAHpB,EAGoBA,cAE1B5E,IAAaiL,EAAgBvK,MAAK,SAAAiH,GAAC,QAAO,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG3O,OAAQ,MAAQ8I,IAAgC,cAAX,OAAD6F,QAAC,IAADA,OAAA,EAAAA,EAAGrd,OAAoC,cAAX,OAADqd,QAAC,IAADA,OAAA,EAAAA,EAAGrd,SAC9GmmB,EAAYzQ,EAAW,OAAS,eAEtC,OACE,eAAC,KAAD,CACElD,OAAQ,KACR5G,KAAM8a,EACNtf,UAAU,mBACVwH,OACGgY,GAAaC,GAAgBlG,EAAgB9Z,OAAS,KAAOwT,EAC1D,kBADJ,iBAEc3E,EAAW,OAAS,gBAEpCxD,SAAU,WACR4T,GAAqB,GACrBC,GAAa,GACbC,GAAgB,GAChBL,OAAuB1P,GACvB0Q,EAAmB,IACnBF,EAAQ,KAfZ,UAkBGpM,GACC,qCACE,cAAC,KAAD,CAAKyM,QAAQ,QAAb,SACE,cAAC,KAAD,CAAK3S,KAAM,GAAIpK,MAAO,CAAEgd,OAAQ,iBAAhC,SACE,cAAC,KAAW3R,KAAZ,UAC2B,YAAxBsQ,EAAA,4DACwDS,EADxD,sIAEoEA,EAFpE,uBAMP,cAAC,KAAD,CAAKW,QAAQ,SAAb,SACE,cAAC,KAAD,CAAK3S,KAAM,EAAGpK,MAAO,CAAEgd,OAAQ,iBAA/B,SACE,cAACvf,EAAA,EAAD,YAKNof,GAAajG,EAAgB9Z,OAAS,KAAOwT,GAC7C,qCACE,cAAC,KAAD,CAAKyM,QAAQ,MAAb,SACE,cAAC,KAAD,CAAK3S,KAAM,GAAIpK,MAAO,CAAEgd,OAAQ,gBAAhC,SACE,eAAC,KAAW3R,KAAZ,CAAiBrL,MAAO,CAAEC,SAAU,QAApC,UACE,oBACE2B,KAAO+J,EACH,iEACA,sEAEJ4N,OAAO,SACP0D,IAAI,aACJjd,MAAO,CAAE0J,MAAO,4BAPlB,gCADF,4GAiBJ,cAAC,KAAD,CAAKqT,QAAQ,MAAb,SACE,cAAC,KAAD,CAAK3S,KAAM,GAAIpK,MAAO,CAAEgd,OAAQ,gBAAhC,SACE,cAAC,KAAD,CACEtgB,MAAOmf,EACPqB,SAAU,SAACC,GAAD,OAAOrB,EAAcqB,EAAE5D,OAAO6D,UACxCpd,MAAO,CAAEC,SAAU,OAAQod,WAAY,OAHzC,sEASJ,cAAC,KAAD,CAAKN,QAAQ,MAAb,SACE,cAAC,KAAD,CAAK3S,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLE,SAAUma,EACV3S,QAAS,kBACPmZ,GAAe,CACb0E,gBAAgB,EAChB5E,kBACA1E,QAAS,GACTH,aACA8J,aACAtL,gBACAuL,gBACAE,eACAC,kBACAF,uBACAH,4BAjBN,SAqBGtL,EACC,cAAC7S,EAAA,EAAD,IAEA,sBAAKuC,MAAO,CAAE4Y,QAAS,OAAQE,WAAY,UAA3C,UACE,cAACwE,GAAA,EAAD,CAActd,MAAO,CAAEsL,YAAa,SACpC,yEAMTuR,GACC,cAAC,KAAD,CAAKE,QAAQ,QAAb,SACE,cAAC,KAAD,UACE,cAAC,EAAD,CACE9mB,KAAK,OACLC,KAAK,SACL4U,KAAM,cAAC,KAAD,IACN9K,MAAO,CACLiI,OAAQ,OACRsV,YAAa,IACbP,OAAQ,eAEVrf,QAAS,WACPqe,GAAa,IAVjB,2BAoBTc,IAAiBxM,GAChB,qCACE,cAAC,KAAD,CAAKyM,QAAQ,MAAb,SACE,cAAC,KAAD,CAAK3S,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLE,SAAUma,EACV3S,QAAS,kBACPmZ,GAAe,CACb0E,gBAAgB,EAChB5E,kBACA1E,QAAS,GACTH,aACA8J,aACAtL,gBACAuL,gBACAE,eACAC,kBACAF,uBACAH,4BAjBN,SAqBGtL,EACC,cAAC7S,EAAA,EAAD,IAEA,sBAAKuC,MAAO,CAAE4Y,QAAS,OAAQE,WAAY,UAA3C,UACE,cAAC,KAAD,CAAY9Y,MAAO,CAAEsL,YAAa,SAClC,2EAMV,cAAC,KAAD,CAAKyR,QAAQ,QAAb,SACE,cAAC,KAAD,UACE,cAAC,EAAD,CACE9mB,KAAK,OACLC,KAAK,SACL4U,KAAM,cAAC,KAAD,IACN9K,MAAO,CACLiI,OAAQ,OACRsV,YAAa,IACbP,OAAQ,eAEVrf,QAAS,WACPse,GAAgB,IAVpB,wBAiBJ,eAAC,KAAW5Q,KAAZ,CACErL,MAAO,CACL4Y,QAAS,QACT3Y,SAAU,OACVod,WAAY,MACZG,WAAY,OACZC,WAAY,OACZ/T,MAAO,gBACPsT,OAAQ,eACRU,UAAW,0BATf,UAYE,cAAC,KAAD,CAAS7Y,OC/Oa4X,ED+OY3a,KC9O5B,8BAAZ2a,EACI,iOAEQ,oBAAZA,EACI,mRAEQ,mBAAZA,EACI,4LAEQ,iBAAZA,EACI,8IAEQ,gCAAZA,EACI,gWAEF,2MD+NI,SACE,cAACkB,GAAA,EAAD,CACE3d,MAAO,CAAEsL,YAAa,SAAUsS,OAAQ,eAd9C,yHAkBiD,IAC/C,mEAnBF,4BAmB8D,IAC5D,gDApBF,WAwBFf,IAAcC,GAA2C,IAA3BlG,EAAgB9Z,QAC9C,qCACE,eAAC,KAAD,CAAKigB,QAAQ,MAAM/c,MAAO,CAAEE,aAAc,OAA1C,UACE,cAAC,KAAD,CAAKkK,KAAM,GAAX,SACE,eAAC,KAAWyT,UAAZ,yDAC8CzB,EAD9C,oCAKF,cAAC,KAAD,CAAKhS,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLE,SAAUma,EACV3S,QAAS,WACPse,GAAgB,GAChBD,GAAa,IAPjB,SAUG1L,EACC,cAAC7S,EAAA,EAAD,IAEA,sBACEuC,MAAO,CACL4Y,QAAS,OACTE,WAAY,UAHhB,UAME,cAACwE,GAAA,EAAD,CAActd,MAAO,CAAEsL,YAAa,SACpC,6CAAgB8Q,EAAUnZ,cAA1B,2BAMT0I,GAAY,cAAC,KAAD,CAAKoR,QAAQ,MAAb,SACX,cAAC,KAAD,CAAK3S,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLE,SAAUma,EACV3S,QAAS,WACPqe,GAAa,GACbC,GAAgB,IAPpB,SAUG3L,EACC,cAAC7S,EAAA,EAAD,IAEA,sBACEuC,MAAO,CACL4Y,QAAS,OACTE,WAAY,UAHhB,UAME,cAAC,KAAD,CAAY9Y,MAAO,CAAEsL,YAAa,SAClC,6CAAgB8Q,EAAUnZ,cAA1B,mCFxPP6a,GAA8B,GAClCxD,GAAI,EAAGA,IAAK,GAAIA,KACvBwD,GAAWtK,KAAK,CACd6I,KAAM/B,GAAEyD,WACRrhB,MAAO4d,KAIkCrZ,GAAeiJ,KAAI,SAAC8T,EAAG7T,GAAJ,MAAW,CACzEkS,KAAM2B,EACNthB,MAAOyN,EAAI,MAGb,IALO,IAIM8T,GAA+B,GACnCC,GAAI,KAAMA,IAAK,KAAMA,KAC5BD,GAAYzK,KAAK,CACf6I,KAAM6B,GAAEH,WACRrhB,MAAOwhB,KAIX,IAeIC,G,MAfEC,GAAc,CAClB,UACA,YACA,WACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,YAKIroB,GAAe,kBACnB,mBACEiK,MAAO,CACLgd,OAAQ,OACR/c,SAAU,OACV2Y,QAAS,OACTnN,UAAW,UALf,2MAcI4S,GACE,KAGKC,GAAkB,WAAO,IAAD,QACLvhB,IAAtBlF,EAD2B,EAC3BA,KAAMmC,EADqB,EACrBA,YADqB,EAS/Bwc,KANFlG,EAHiC,EAGjCA,WACAC,EAJiC,EAIjCA,cACAvB,EALiC,EAKjCA,MACA+C,EANiC,EAMjCA,WACA7C,EAPiC,EAOjCA,WACA8F,EARiC,EAQjCA,oBARiC,EAWLpe,oBAAS,GAXJ,mBAW5BK,EAX4B,KAWnBC,EAXmB,OAYXN,mBAAmB,IAZR,mBAY5BiG,EAZ4B,KAYtB6f,EAZsB,OAaL9lB,mBAAc,CAAE+N,KAAM,CAAC0Z,MAblB,mBAa5BnM,EAb4B,KAanBqM,EAbmB,OAcC3nB,mBAAS,IAdV,mBAc5Bmd,EAd4B,KAchByK,EAdgB,OAeD5nB,oBAAS,GAfR,mBAejBolB,GAfiB,aAgBCplB,oBAAS,GAhBV,mBAgB5BilB,EAhB4B,KAgBhBC,EAhBgB,OAiBKllB,oBAAS,GAjBd,mBAiBdqlB,GAjBc,aAkBGrlB,mBAAiB,GAlBpB,mBAkB5Bua,GAlB4B,KAkBfsN,GAlBe,QAmBS7nB,mBAAc,CAAE+N,KAAM,CAAC0Z,MAnBhC,qBAmB5BK,GAnB4B,MAmBZC,GAnBY,SAoBW/nB,oBAAS,GApBpB,qBAoB5BgoB,GApB4B,MAoBXC,GApBW,SAqBejoB,oBAAS,GArBxB,qBAqB5B+lB,GArB4B,MAqBTZ,GArBS,SAsBWnlB,mBAAoB,IAtB/B,qBAsB5BggB,GAtB4B,MAsBXgG,GAtBW,SAuBahmB,oBAAS,GAvBtB,qBAuB5BkoB,GAvB4B,MAuBVC,GAvBU,SAyBjCnoB,oBAAkB,GAzBe,qBAwB5B8f,GAxB4B,MAwBPC,GAxBO,SA0BmB/f,wBAEpDsV,GA5BiC,qBA0B5ByP,GA1B4B,MA0BPC,GA1BO,SA6BdhlB,mBAAgC,CACnDooB,QAAS7N,GACT2C,SAAU,GACVmL,gBAAiB,GACjBC,iBAAiB,EACjBC,gBAAiB,CAAC,IAAK,KAAM,KAAM,KAAM,SALpCC,GA7B4B,qBAqC7BC,GAAiB,SAAChd,GAAe,IAAD,EAMpC,mBALeA,EAAKU,MAAQ,IAAIR,QAC9B,SAACN,GAAD,uBACI,OAAFA,QAAE,IAAFA,GAAA,UAAAA,EAAIqd,oBAAJ,eAAkBvB,eAAlB,OAAiClmB,QAAjC,IAAiCA,GAAjC,UAAiCA,EAAMA,YAAvC,iBAAiC,EAAYuB,gBAA7C,aAAiC,EAAsB2kB,cACrD,OAAF9b,QAAE,IAAFA,GAAA,UAAAA,EAAI/I,kBAAJ,eAAgB6kB,eAAhB,OAA+BlmB,QAA/B,IAA+BA,GAA/B,UAA+BA,EAAMA,YAArC,iBAA+B,EAAYqB,kBAA3C,aAA+B,EAAwB6kB,eAE7CwB,MAAK,SAACtd,GAAD,SAAc,OAACA,QAAD,IAACA,OAAD,EAACA,EAAIud,wBAAtC,UAkBI1I,GAAc,uCAAG,WACrB0E,EACAC,EACAC,GAHqB,qCAAAxjB,EAAA,mEAMF4mB,IAA8C,IAA1BlI,GAAgB9Z,OANlC,gCAQPiV,EAAW,CACfqC,kBAAkB,EAClBJ,YAAY,EACZrP,KAAMuN,EAAQvN,KACd+P,mBAAmB,IAZR,mBAcb9G,QAda,2BAefgJ,GAAgB9Z,OAAS,EACzB8Z,GACA8E,GAAgB,GAjBD,UAMb9N,EANa,MAmBf+N,GAnBe,iBAoBjB3gB,OAAO6G,KAAK8Z,GAAqB,UACjCC,QAAuB1P,GArBN,+BAuBjBqE,GAAc,GACViL,GACFI,GAAuB,WAzBR,UA2BM1mB,EAAI4G,KAAK,aAAc,CAC5C8R,QAASA,EACTiO,aACAL,mBA9Be,iBA2BT3iB,EA3BS,EA2BTA,KAKFwF,EAAQuP,EAAQ,GAAGvP,MACnB6d,EAAerjB,EAAK,IAAM,GAC1BsjB,EAlCW,OAkCCD,QAlCD,IAkCCA,OAlCD,EAkCCA,EAAcC,UAE1BjF,EAAoC,cAAX,OAAZgF,QAAY,IAAZA,OAAA,EAAAA,EAAcjmB,MAC3B0V,GAAW,iBAACuQ,QAAD,IAACA,OAAD,EAACA,EAAcvX,YAAf,QAAuB,MAAQ8I,GAC1C2O,EAAYlF,IAAevL,EAAW,eAAc,OAEtDwQ,GAAaX,IACTa,EADyB,mBAEjB,OAAZH,QAAY,IAAZA,OAAA,EAAAA,EAAcnjB,OAAQ,UAFO,uBAGhBqjB,EAHgB,6BAGIF,QAHJ,IAGIA,OAHJ,EAGIA,EAActX,MAHlB,mBAI7BsX,QAJ6B,IAI7BA,OAJ6B,EAI7BA,EAAcvX,KAJe,aAK1BwX,GACCG,EANyB,uBAO7Bje,EAAK,aAASA,GAAU,GAPK,iBAQtBge,EAAK/W,WAAW,IAAK,QAC9BsW,QAAuB1P,GACvBlR,OAAO6G,KAAKya,EAAK,WAEdd,IACCC,EACF5E,GAAmBsF,IAEnBlgB,IAAQmB,QAAR,mBAA4Bgf,EAA5B,gBACAR,QAAuB1P,KAG3B6F,EAAW,2BAAKG,GAAN,IAAekC,kBAAkB,EAAMJ,YAAY,KA5D5C,QA8DnB+H,IAAqB,GACrBE,GAAgB,GAChBD,GAAa,GACbF,GAAc,GAjEK,kDAmEnBF,QAAuB1P,GACnB,KAAMjQ,QAAQ2E,SAAS,OACzB3E,IAAQX,MACN,kEAGFW,IAAQX,MAAM,sDAzEG,QA4ErBiV,GAAc,GA5EO,0DAAH,0DA+EdsG,GAAkB,uCAAG,WAAOyF,EAAclF,GAArB,mBAAAlf,EAAA,0DACrBokB,EADqB,gBAEvBthB,OAAO6G,KAAKya,GAFW,2BAGdlF,EAHc,wBAIjBjf,EAAQC,aAAaC,QAAQ,kBAJZ,SAKAhC,EAASqC,IAAT,yBAA+B0e,GAAU,CAC9D7hB,QAAS,CACPgnB,cAAc,UAAD,OAAYpkB,MAPN,gBAKfU,EALe,EAKfA,KAKRmC,OAAO6G,MAAS,OAAJhJ,QAAI,IAAJA,OAAA,EAAAA,EAAMyjB,MAAO,IAVF,4CAAH,wDAcxBnhB,qBAAU,WACR4W,EAAW,CAAEqC,kBAAkB,EAAMJ,YAAY,EAAMrP,KAAI,OAAEuN,QAAF,IAAEA,OAAF,EAAEA,EAASvN,SACrE,CAACoN,IAEJ5W,qBAAU,WACJ2jB,IACFpC,GAAQ,OAAC1N,QAAD,IAACA,IAAS,IAAI9E,KAAI,SAACjI,GAAD,OAAQA,EAAGiJ,IAAM,SAE5C,CAAC8D,EAAO8P,KAEX,IAAMW,GAA0B,uCAAG,8BAAAvnB,EAAA,sEAE/BhB,GAAW,GAFoB,SAGOW,QAHP,IAGOA,OAHP,EAGOA,EAAMA,KAApC6B,EAHuB,EAGvBA,0BAHuB,SAIzBxE,EAAI4G,KAAJ,kCAA4C,CAChDpC,2BAA4BA,IALC,uBAOzBM,IAPyB,OAQ/B9C,GAAW,GACNwC,EAKHuC,IAAQ4Y,KACN,6EALF5Y,IAAQmB,QACN,iEAX2B,kDAmB/BlG,GAAW,GACX+E,IAAQX,MACN,kFArB6B,0DAAH,qDAmGhC,OACE,eAAC,GAAD,WACE,eAACoN,GAAD,WACE,eAAC,KAAD,CACEgX,MAAM,SACNC,OAAQ,CAAC,GAAI,CAAEC,GAAI,GAAIC,GAAI,KAC3B7f,MAAO,CAAEyY,SAAU,YAHrB,UAKE,cAAC,KAAD,CAAKrO,KAAM,GAAX,SACE,cAAC,KAAWM,MAAZ,CAAkBC,MAAO,EAAGtN,UAAU,YAAtC,gCAIF,cAAC,KAAD,CAAK+M,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,GAAI,IAAKD,MAAM,SAAS3C,QAAQ,gBAA9C,UACE,cAAC,KAAD,2BAAUlnB,KAAa,CAAE+pB,GAAI,IAAO,IAApC,aACE,eAAC,KAAD,CAAKD,OAAQ,CAAC,GAAI,IAAKD,MAAM,SAA7B,UACE,cAAC,KAAD,CACE7a,MACG+R,IAA8C,IAA3BA,GAAgB9Z,OAEhC,GADA,oDAHR,SAOE,cAAC,KAAD,2BAAUjH,KAAa,CAAE+pB,GAAI,IAAO,IAApC,aACE,cAAC,EAAD,CACE7X,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL6U,KAAM,cAAC,GAAD,CAAUzN,UAAU,cAC1BM,QAAS,kBAAMoe,IAAqB,IACpC5lB,UACGygB,IAA8C,IAA3BA,GAAgB9Z,OAPxC,+BAcJ,cAAC,KAAD,2BAAUjH,KAAa,CAAE+pB,GAAI,IAAO,IAApC,aACE,cAAC,EAAD,CACE7X,OAAK,EACL7R,KAAK,QACLD,KAAK,QACLoH,UAAU,gBACVyN,KAAM,cAAC,KAAD,IACN3U,SAA2B,IAAjB6Y,EAAMlS,OAChBa,QAAS,kBAAMqX,EAAoB,QAAS9C,IAP9C,sCAcN,cAAC,KAAD,UACE,eAAC,KAAD,CAAKyN,OAAQ,CAAC,GAAI,IAAKD,MAAM,SAA7B,UACE,cAAC,KAAD,2BAAU7pB,KAAa,CAAE+pB,GAAI,IAAO,IAApC,aACE,cAAC,EAAD,CACE7X,OAAK,EACL7R,KAAK,QACLD,KAAK,QACL6U,KAAM,cAAC,GAAD,IACNnN,QAAS,kBAAMkhB,IAAmB,IAClCxhB,UACET,OAAOC,KAAK6hB,IAAgBnc,QAC1B,SAAC4J,GAAD,cAAU,UAAAuS,GAAevS,UAAf,eAAqBrP,SAAU,GAAK,KAC9CA,OAAS,EACP,6BACA,aAXR,iCAiBF,cAAC,KAAD,2BAAUjH,KAAa,CAAE+pB,GAAI,IAAO,IAApC,aACE,cAAC,IAAD,CACE1pB,KAAK,QACLgL,YAAY,iBACZlB,MAAO,CAAE8f,SAAU,SACnBzgB,OAAQ,cAAC,KAAD,CAAiBnJ,KAAM,KAC/BgnB,SAAU,SAACC,GAAD,OAzSRzgB,EAyS4BygB,EAAE5D,OAAO7c,MAxSzD8hB,EAAc9hB,GACVyhB,IAAU4B,aAAa5B,SAC3BA,GAAWpjB,YAAW,WACpBgX,EAAW,2BACNG,GADK,IAER6B,WAAYrX,EACZsV,KAAMoN,GAAWJ,QACjBlL,SAAUsL,GAAWtL,SACrBM,kBAAkB,EAClBJ,YAAY,OAEb,MAZgB,IAACtX,kBAgTd,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,KAAD,CACE4V,OAAO,KACP/oB,QAASqZ,EACT2P,WAAYjR,EACZoQ,WAAY,CACVH,gBAAiB,GACjBnK,MAAO5F,EACPgR,eAAgB,EAChBC,QAAQ,EACRnB,QAAS7N,IAEXiP,aAAc,CACZC,gBAAiBxjB,EACjBqgB,SAAU,SAACjY,EAAQqb,EAAczL,GACZ,SAAX,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM5e,QAAN,OAAwBqqB,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAcxjB,QACxCiiB,IAAoB,GACfA,IAAoB,GAC3BnC,GAAmB0D,GACnB5D,GAAQ,OAAC4D,QAAD,IAACA,IAAgB,IAAIpW,KAAI,SAACjI,GAAD,OAAQA,EAAGiJ,IAAM,QAEpDqV,iBAAkB,SAACC,GAAD,MAAkB,CAClCrqB,SAAUkpB,GAAemB,MAG7BtD,SAAU,SAACkC,EAAYqB,EAAMC,GAAY,IAAD,EAChCC,EAAaD,EACnBjC,GAAc,UAACW,EAAWJ,eAAZ,QAAuB,GACrCT,EAAWrM,GACXyM,GAAkBzM,GAClBH,EAAW,CACTgC,aACA/B,KAAMoN,EAAWJ,QACjBlL,SAAUsL,EAAWtL,SACrBlP,MAAOsN,EAAQtN,OAAS,GACxBD,KAAMuN,EAAQvN,MAAQ,CAAC,MACvB1O,KAAMic,EAAQjc,MAAQ,GACtB+d,YAAY,EACZxG,eAAgB0E,EAAQ1E,eAAiB,IAAI,GAC7C0G,aAAchC,EAAQgC,aAAe,IAAI,GACzCC,UAAWjC,EAAQiC,UAAY,IAAI,GACnCE,SAAc,OAALsM,QAAK,IAALA,OAAA,EAAAA,EAAOC,aAAS1U,EACzBoI,gBAAqB,OAALqM,QAAK,IAALA,OAAA,EAAAA,EAAOA,aAASzU,EAChCkI,kBAAkB,KAGtByM,OAAQ,CACNC,YAAa,UAEfC,QAAS,CACP,CACElc,MAAO,mBACP6b,OAAQ,SAACxoB,EAAGwd,GAAJ,OAAUxd,EAAEa,KAAK4c,cAAcD,EAAE3c,OACzCioB,OAAQ,SAAC/b,EAAG5C,GAAJ,OACN,qCACE,cAAC,KAAD,UACE,cAAC,KAAD,CACE+H,KAAM,GACNpK,MAAO,CAAE0J,MAAO,QAAS2T,WAAY,KAFvC,SAIGhb,EAAKtJ,SAGV,eAAC,KAAD,WACE,cAAC,KAAD,CAAKqR,KAAM,GAAIpK,MAAO,CAAEihB,WAAY,UAApC,SACGtgB,GAAQ0B,EAAKvJ,YAEfumB,GAAehd,IACd,cAAC,KAAD,CAAK+H,KAAM,EAAX,SACE,cAAC,KAAD,CAASvF,MAAO9O,GAAhB,SACE,cAAC4nB,GAAA,EAAD,gBAcd,CACE+B,MAAO,SACP7a,MAAO,SACPqc,UAAW,QACXR,OAAQ,SAACxoB,EAAQwd,GAAT,OACN0I,GAAY1c,QAAQxJ,EAAE0M,OAASwZ,GAAY1c,QAAQgU,EAAE9Q,QACvDoc,OAAQ,SAAC/b,EAAGpM,GACV,OACE,qBACEmH,MAAO,CACL4Y,QAAS,OACTE,WAAY,SACZD,eAAgB,UAJpB,SAOE,sBAAM7Y,MAAO,CAAEsL,YAAa,OAA5B,SACGrK,GAAeV,OAAO1H,EAAK+L,OAAS,SAM/C,CACE8a,MAAO,SACP7a,MAAO,MACPqc,UAAW,OACXR,OAAQ,SAACxoB,EAAQwd,GAAT,OAAoBxd,EAAEyM,KAAO+Q,EAAE/Q,MACvCqc,OAAQ,SAAC/b,EAAGpM,GACV,OACE,qBACEmH,MAAO,CACL4Y,QAAS,OACTE,WAAY,SACZD,eAAgB,UAJpB,SAOE,sBAAM7Y,MAAO,CAAEsL,YAAa,OAA5B,SAAsCzS,EAAK8L,WAKnD,CACE+a,MAAO,SACP7a,MAAO,UACPqc,UAAW,OACXR,OAAQ,SAACxoB,EAAQwd,GAAT,OAAoBxd,EAAEjC,KAAK0f,cAAcD,EAAEzf,OACnD+qB,OAAQ,SAAC/qB,EAAMuqB,GAAP,OAAkB,8BAAMvqB,MAElC,CACEypB,MAAO,SACP7a,MAAO,kBACPqc,UAAW,gBACXR,OAAQ,SAACxoB,EAAQwd,GAAT,OAAoBxd,EAAEsV,cAAgBkI,EAAElI,eAChDwT,OAAQ,SAACxT,EAAegT,GAAhB,OACN,8BACGhT,EAAgB,GACb,wBACApO,GAAemB,OAAOiN,QAIhC,CACEkS,MAAO,SACP7a,MAAO,WACPqc,UAAW,cACXR,OAAQ,SAACxoB,EAAQwd,GAAT,OACNxd,EAAEgc,cAAgBwB,EAAExB,YAChB,EACAhc,EAAEgc,aACD,EACD,GACN8M,OAAQ,SAAC9M,EAAasM,GACpB,OACE,qBAAKnjB,UAAU,cAAf,WACU,OAANmjB,QAAM,IAANA,OAAA,EAAAA,EAAQhT,gBAAiB,GAAK,GAC9B,MAEA,qCACG0G,EAAc,cAAC,GAAD,IAAgB,cAAC,GAAD,IAC9BA,EAAc,MAAQ,gBAOnC,CACEwL,MAAO,SACP7a,MAAO,QACPqc,UAAW,WACXR,OAAQ,SAACxoB,EAAQwd,GAAT,OACNxd,EAAEic,WAAauB,EAAEvB,SAAW,EAAIjc,EAAEic,UAAY,EAAI,GACpD6M,OAAQ,SAAC7M,EAAUqM,GACjB,OACE,qBAAKnjB,UAAU,cAAf,WACU,OAANmjB,QAAM,IAANA,OAAA,EAAAA,EAAQhT,gBAAiB,GAAK,GAC9B,MAEA,qCACG2G,EAAW,cAAC,GAAD,IAAgB,cAAC,GAAD,IAC3BA,EAAW,MAAQ,gBAOhC,CACEtP,MAAO,GACPqc,UAAW,UACXF,OAAQ,SAAC/b,EAAG5C,EAAMwH,GAAV,OAlWX,SAACxH,EAAWwH,EAAYsX,GACnC,IAMMC,EAA4B,CAChC,CACEjV,IAAK,EACLkV,MACE,eAACvY,GAAD,CACEnL,QAAS,WACPif,GAAmB,CAACva,IACpBsU,IAAuB,IAH3B,UAME,cAAC,KAAD,IANF,0BAWJ,CACExK,IAAK,EACLkV,MACE,eAACvY,GAAD,CACEnL,QAAS,YAEJ0E,EAAKiW,iBACJjW,EAAKkW,cACLlW,EAAKiV,aACLjV,EAAKkV,kBAHP,OAKAlV,QALA,IAKAA,OALA,EAKAA,EAAM6R,cAEN2C,GACgB,UAAdxU,EAAKpM,KACDoM,EAAKkW,aACLlW,EAAKiW,gBACK,UAAdjW,EAAKpM,KAAmBoM,EAAKiV,YAAcjV,EAAKkV,gBAElDtb,IAAQmB,QAAQ,uCAEhB0Z,IAAe,GAAO,EAAM,CAACzU,KAlBnC,UAsBE,cAAC,KAAD,IAtBF,mBA6BN,OACE,sBAAKhF,UAAU,cAAf,UACE,eAAC,EAAD,CACEM,QAxDc,WAClBoe,IAAqB,GACrBa,GAAmB,CAACva,IACpBqa,EAAQ,CAACra,EAAK6I,MAsDV/U,SAAUgrB,EACV9jB,UAAU,yBAHZ,UAKE,cAAC,GAAD,IALF,iBAQA,cAAC,KAAD,CAAUikB,KAAM,CAAEF,SAASG,QAAS,CAAC,SAAUjZ,UAAU,cAAzD,SACE,cAAC,EAAD,CAAQjL,UAAU,kBAAlB,SACE,cAAC,KAAD,WAiSQmkB,CACEnf,EACAwH,EACAtJ,OAAO8B,EAAKmL,eAAiB,GAAK,IAChC6R,GAAehd,cAO/B,cAAC,GAAD,CACEsa,kBAAmBA,GACnBZ,qBAAsBA,GACtBnF,gBAAiBA,GACjBgG,mBAAoBA,GACpBf,WAAYA,EACZC,cAAeA,EACfH,oBAAqBA,GACrBC,uBAAwBA,KAE1B,cAAC,GAAD,CACElF,oBAAqBA,GACrBC,uBAAwBA,GACxBC,gBAAiBA,GACjBC,mBAAoBA,GACpBC,eAAgBA,KAElB,cAAC,KAAD,CACErO,OAAQ,KACR5G,KAAM+c,GACN/Z,MAAM,mBACNxH,UAAU,eACV8K,SAAU,WACRoW,EAAWG,IACXG,IAAmB,IAPvB,SAUE,eAAC,KAAD,CAAKc,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,sBAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAD,CACEsX,YAAU,EACVxrB,KAAK,QACLyrB,KAAK,WACLjlB,MAAOwV,EAAQtN,MACf1D,YAAY,aACZ7D,UAAU,eACVukB,kBAAmB,SAACL,GAAD,OAAaA,EAAQM,YACxCC,QAAS7gB,GAAeiJ,KAAI,SAAC8T,EAAG7T,GAAJ,MAAW,CACrCkX,MAAOrD,EACPthB,MAAOyN,EAAI,MAEb+S,SAAU,SAACtY,GACT2Z,GAAW,SAACrM,GAAD,mBAAC,eAAuBA,GAAxB,IAAiCtN,uBAMtD,cAAC,KAAD,CAAKwF,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,mBAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAD,CACEsX,YAAU,EACVxrB,KAAK,QACLyrB,KAAK,WACLjlB,MAAOwV,EAAQvN,KACfmd,QAAS7D,GACT/c,YAAY,aACZlB,MAAO,CAAE+K,MAAO,QAChB6W,kBAAmB,SAACL,GAAD,OAAaA,EAAQM,YACxC3E,SAAU,SAACvY,GACT4Z,GAAW,SAACrM,GAAD,mBAAC,eAAuBA,GAAxB,IAAiCvN,sBAMtD,cAAC,KAAD,CAAKyF,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,uBAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAS2X,MAAV,CACErlB,MAAOwV,EAAQjc,KACfinB,SAAU,SAACjnB,GACTsoB,GAAW,SAACrM,GAAD,mBAAC,eACPA,GADM,IAETjc,aALN,SASE,eAAC,KAAD,CAAK0pB,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,QAAhB,qBAEF,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,WAAhB,oCAmCZ,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,6BAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAS2X,MAAV,CACErlB,MAAOwV,EAAQgC,YACfgJ,SAAU,SAAC8E,GACTzD,GAAW,SAACrM,GAAD,mBAAC,eACPA,GADM,IAETgC,YAAa8N,EAAM,SALzB,SASE,eAAC,KAAD,CAAKrC,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,MAAhB,mBAEF,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,SAAhB,kCAOZ,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,0BAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAS2X,MAAV,CACErlB,MAAOwV,EAAQiC,SACf+I,SAAU,SAAC8E,GACTzD,GAAW,SAACrM,GAAD,mBAAC,eACPA,GADM,IAETiC,SAAU6N,EAAM,SALtB,SASE,eAAC,KAAD,CAAKrC,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,MAAhB,mBAEF,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,SAAhB,kCAOZ,eAAC,KAAD,CAAK0N,KAAM,GAAX,UACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLgB,QAASqZ,EACT3S,QAAS,WACPghB,GAAkBzM,GAClBuM,GAAe,GACf1M,EAAW,CACTgC,aACA/B,KAAM,EACN8B,SAAUsL,GAAWtL,SACrBlP,MAAOsN,EAAQtN,OAAS,GACxBD,KAAMuN,EAAQvN,MAAQ,GACtB1O,KAAMic,EAAQjc,MAAQ,GACtBuX,cAAe,mBACfwG,YAAY,EACZE,YAAahC,EAAQgC,YACrBC,SAAUjC,EAAQiC,SAClBE,SAAUnC,EAAQmC,SAAW,IAAI,GACjCD,kBAAkB,IAEpBrZ,YAAW,WACT8jB,IAAmB,KAClB,MAxBP,qBA6BG3M,EAAQgC,aACThC,EAAQiC,UACRjC,EAAQvN,MACRuN,EAAQjc,MACRic,EAAQtN,MACR,qBACE5E,MAAO,CACL4Y,QAAS,OACTC,eAAgB,SAChBH,UAAW,QAJf,SAOE,cAAC,EAAD,CACEziB,KAAK,OACL0H,QAAS,WACP4gB,EAAW,KAHf,sBASA,kBAKN,OAAJ1mB,QAAI,IAAJA,GAAA,UAAAA,EAAMA,YAAN,eAAY+B,UAAZ,OAAsB/B,QAAtB,IAAsBA,GAAtB,UAAsBA,EAAMA,YAA5B,aAAsB,EAAYgC,SAClC,eAACgP,GAAD,WACE,cAAC,KAAD,CACE3S,KAAK,QACLC,SAAUc,EACVoG,UAAU,uBACV6f,SAAUuC,GACVrC,QAAO,OAAEvlB,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,aAAE,EAAY6B,0BACrBuoB,gBAAiBhrB,EAAU,cAACwG,EAAA,EAAD,IAAsB,KACjDykB,kBAAmBjrB,EAAU,cAACwG,EAAA,EAAD,IAAsB,QARvD,8BAWE,cAAC,KAAD,CACE6K,UAAU,WACVzD,MAAM,8HAFR,SAIE,cAAC8Y,GAAA,EAAD,CAAoB3d,MAAO,CAAEwL,WAAY,kB,8BIpvBtC2W,GAjJoB,SAAC,GAAkB,EAAhB9kB,UAAiB,IAC/C3G,EAAWC,cADmC,EAErC2Q,IAAKC,UAAbC,EAF6C,sBAGlBzK,IAA1Bb,EAH4C,EAG5CA,aAAcjF,EAH8B,EAG9BA,QAH8B,EAK5BL,oBAAS,GALmB,mBAK7CwrB,EAL6C,KAKvCC,EALuC,OAMdzrB,oBAAS,GANK,mBAM7C0rB,EAN6C,KAMhCC,EANgC,KAqB9CC,EACJ,eAAC,IAAD,CAAMhb,KAAMA,EAAMtR,KAAK,QAAQuR,SAdhB,SAAC5O,GAChBqD,EAAa,2BACRrD,GADO,IAEVuD,kBAAkB,EAClBtD,SAAUiG,OAAOlG,EAAKC,UAAU6F,QAAQ,WAAY,IACpDrC,mBAAoByC,OAAOlG,EAAKyD,oBAAoBqC,QAClD,WACA,IAEFtC,YAAa+lB,MAKf,UACE,cAAC,IAAK1a,KAAN,CAAW3O,KAAK,OAAO4O,MAAOpC,GAA9B,SACE,cAAC,IAAD,CAAOrE,YAAakhB,EAAO,kBAAiB,oBAG9C,cAAC,IAAK1a,KAAN,CAAW3O,KAAK,WAAW4O,MAAOya,EAAOhd,GAAiBN,GAA1D,SACE,cAAC,IAAD,CAAO8C,UAAW,GAAI1G,YAAakhB,EAAO,OAAS,WAGnDA,GACA,sBAAK/kB,UAAU,yBAAf,UACE,cAAC,IAAKqK,KAAN,CAAW3O,KAAK,qBAAqB4O,MAAOvC,GAA5C,SACE,cAAC,IAAD,CAAOlE,YAAY,gCAErB,cAAC,KAAWmK,KAAZ,CACE1N,QAAS,kBACP6J,EAAKib,cAAc,qBAAsB,uBAF7C,kCAUJ,cAAC,IAAK/a,KAAN,CAAW3O,KAAK,QAAQ4O,MAAOjC,GAA/B,SACE,cAAC,IAAD,CAAOxE,YAAY,aAGrB,sBAAK7D,UAAU,oBAAf,UACE,cAAC,IAAKqK,KAAN,CAAW3O,KAAK,OAAO4O,MAAOf,GAA9B,SACG0b,EACC,cAAC,IAAD,CAAOphB,YAAY,UAEnB,cAAC,IAAM2G,SAAP,CAAgB3G,YAAY,QAAQ4G,kBAAkB,MAG1D,cAAC,EAAD,CACE5R,KAAK,QACLD,KAAK,OACL0H,QAAS,kBAAM4kB,GAAe,SAACra,GAAD,OAAcA,MAC5C4C,KAAMwX,EAAc,cAACI,GAAA,EAAD,IAA2B,cAACC,GAAA,EAAD,SAInD,qBAAKtlB,UAAU,UAAf,SACE,cAAC,EAAD,CACE0K,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLyH,SAAS,SACTzG,QAASA,EALX,6BAaN,OACE,cAAC2G,EAAD,CAAeP,UAAU,mBAAzB,SACE,qBAAKA,UAAU,eAAf,SACE,sBAAKA,UAAU,0BAAf,UACE,oBAAIA,UAAU,YAAd,gCAEA,eAAC,KAAD,CACE6f,SAAU,SAAC0F,GACTP,EAAsB,eAAdO,IAFZ,UAKE,cAAC,KAAKC,QAAN,CAA+BC,IAAI,oBAAnC,SACGN,GADe,cAGlB,cAAC,KAAKK,QAAN,CAA6BC,IAAI,eAAjC,SACGN,GADe,eAKpB,eAAC,KAAW3E,UAAZ,CAAsBxgB,UAAU,SAAhC,kGAEgB,IACd,mBACEuE,KAAK,yGACL2X,OAAO,SACP0D,IAAI,aAHN,2BAHF,IAUI,IACF,mBACErb,KAAK,mIACL2X,OAAO,SACP0D,IAAI,aAHN,wCAMK,IAjBP,IAkBI,IACF,mBACErb,KAAK,wHACL2X,OAAO,SACP0D,IAAI,aAHN,oCAMK,IAzBP,gBA6BA,sBAAK5f,UAAU,SAAf,oCAEE,cAAC,EAAD,CACEpH,KAAK,OACLE,SAAUc,EACVoG,UAAU,iBACVM,QAAS,kBAAMjH,EAAS,aAJ1B,gC,+MC1JNlB,GAAYC,IAAOC,IAAV,uVAyBAqtB,GARW,WACxB,OACE,cAAC,GAAD,UACE,cAACtlB,EAAA,EAAD,O,6DCxBS,OAA0B,yCCiB5BulB,GAAW,SAAC,GAA0B,IAAxBC,EAAuB,EAAvBA,YAAuB,EACnBrsB,mBAAS,IADU,mBACzCiC,EADyC,KACnCqqB,EADmC,OAExBtsB,mBAAgB,IAFQ,mBAEzCusB,EAFyC,KAEnCC,EAFmC,OAGlBxsB,oBAAS,GAHS,mBAGzCK,EAHyC,KAGhCC,EAHgC,OAIdN,mBAAS,GAJK,mBAIzCysB,EAJyC,KAI9BC,EAJ8B,OAKhB1sB,mBAAS,GALO,mBAKzC2sB,EALyC,KAK/BC,EAL+B,OAMZ5sB,mBAAS,GANG,mBAMzC6sB,EANyC,KAM7BC,EAN6B,OAOZ9sB,mBAAS,GAPG,mBAOzC+sB,EAPyC,KAO7BC,EAP6B,OAQZhtB,mBAAS,GARG,mBAQzCitB,EARyC,KAQ7BC,EAR6B,OAUItN,KAA5CtI,EAVwC,EAUxCA,UAAWF,EAV6B,EAU7BA,cAAeF,EAVc,EAUdA,cAE5BiW,EAAc,CAClB,CAAEC,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,UAG5B4C,EAAmB,SAACC,EAAkBra,GAC1C,KAAOA,EAAQ,GAAG,CAEhBA,EADkBA,EAAQ,EACN,EAEtB,OAAOka,EAAYla,GAAOma,YAG5B7oB,qBAAU,WACRjE,GAAW,GACX,IAAImsB,EAAY,EACZE,EAAW,EACXE,EAAa,EACbE,EAAa,EACbE,EAAa,EA2PjB,GA1PsB,aAAlB/V,GAA+B,WACjC,IAAMqW,EAAuB,CAC3B,CACEprB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,GAET,CACExrB,KAAM,MACNqgB,MAAO,EACPgL,UAAW,EACXC,WAAY,EACZC,YAAa,EACbC,MAAO,IAILC,EAAmBvf,KAAEwf,QAAQvW,GAAW,SAAC7L,GAC7C,OAAO0B,IAAO1B,EAAK8I,MAAMC,OAAO,cArGF,WAwGrBe,GACT,IAAMxH,GAAQZ,IAAOoI,GAAKf,OAAO,KAC3BxG,GAASb,IAAOoI,GAAKf,OAAO,KAC5BsZ,EAAaF,EAAiBrY,GAChC5L,OAAOoE,KAAUqJ,GACnB0W,EAAWrR,SAAQ,SAACpR,GAAa,IAAD,YAG5B,EAQA,EAOA,EAOA,EAIiE,EA3BX,gBAApD,OAAFA,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBAEpC8M,EAAgBvf,EAAQ,GAAGyf,YACzB,UAAAF,EAAgBvf,EAAQ,UAAxB,eAA4Byf,YAAapiB,EAAG2iB,aAI5C,eADA,OAAF3iB,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,gBAEkB,gBAApD,OAAFpV,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBAEpC8M,EAAgBvf,EAAQ,GAAGwf,WACzB,UAAAD,EAAgBvf,EAAQ,UAAxB,eAA4Bwf,WAAYniB,EAAG2iB,aAI7C,oCADE,OAAF3iB,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBAGpC8M,EAAgBvf,EAAQ,GAAGwU,OACzB,UAAA+K,EAAgBvf,EAAQ,UAAxB,eAA4BwU,OAAQnX,EAAG2iB,aAIzC,uBADE,OAAF3iB,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBAGpC8M,EAAgBvf,EAAQ,GAAG0f,aACzB,UAAAH,EAAgBvf,EAAQ,UAAxB,eAA4B0f,aAAcriB,EAAG2iB,aAES,WAApD,OAAF3iB,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBACtC8M,EAAgBvf,EAAQ,GAAG2f,OACzB,UAAAJ,EAAgBvf,EAAQ,UAAxB,eAA4B2f,OAAQtiB,EAAG2iB,iBApCjD,IAAK,IAAMzY,KAAOqY,EAAmB,EAA1BrY,GAyCX,cAAiBgY,EAAjB,eAAkC,CAA7B,IAAMliB,EAAE,KACX4hB,GAAc5hB,EAAGqiB,aAAe,EAChCjB,GAAaphB,EAAGmX,OAAS,EACzBmK,GAAYthB,EAAGmiB,WAAa,EAC5BX,GAAcxhB,EAAGsiB,OAAS,EAC1BZ,GAAc1hB,EAAGoiB,YAAc,EAGjCP,EAAcD,GACdH,EAAcD,GACdD,EAAYD,GACZD,EAAaD,GACbO,EAAcD,GACdT,EAAaiB,GA9JoB,GAgKb,cAAlBrW,GAAgC,WAClC,IAAMqW,EAAuB,CAC3B,CACEprB,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,OAER,CACEA,KAAM,QAGJ8rB,EAAiB,GAEjBL,EAAmBvf,KAAEwf,QAAQvW,GAAW,SAAC7L,GAC7C,OAAOA,EAAKyiB,aA1CmB,WA6CtB3Y,GACT0Y,EAAUrR,KAAKrH,GACIqY,EAAiBrY,GACzBkH,SAAQ,SAACpR,GAClB,GAAI1B,OAAOwD,IAAO9B,EAAGkJ,MAAMC,OAAO,WAAa4C,EAAe,CAAC,IAAD,YACtDpJ,EAAQrE,OAAOwD,IAAO9B,EAAGkJ,MAAMC,OAAO,MAEY,gBAApD,OAAFnJ,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBAEpC8M,EAAgBvf,EAAQ,GAAGuH,IACxBgY,EAAgBvf,EAAQ,GAAGuH,IAAQ,GAAKlK,EAAG2iB,aAI5C,eADA,OAAF3iB,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,gBAEkB,gBAApD,OAAFpV,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBAEpC8M,EAAgBvf,EAAQ,GAAGuH,IACxBgY,EAAgBvf,EAAQ,GAAGuH,IAAQ,GAAKlK,EAAG2iB,aAI9C,oCADE,OAAF3iB,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBAGpC8M,EAAgBvf,EAAQ,GAAGuH,IACxBgY,EAAgBvf,EAAQ,GAAGuH,IAAQ,GAAKlK,EAAG2iB,aAI9C,uBADE,OAAF3iB,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBAGpC8M,EAAgBvf,EAAQ,GAAGuH,IACxBgY,EAAgBvf,EAAQ,GAAGuH,IAAQ,GAAKlK,EAAG2iB,aAEU,WAApD,OAAF3iB,QAAE,IAAFA,GAAA,UAAAA,EAAI0iB,sCAAJ,eAAoCtN,iBACtC8M,EAAgBvf,EAAQ,GAAGuH,IACxBgY,EAAgBvf,EAAQ,GAAGuH,IAAQ,GAAKlK,EAAG2iB,kBApCtD,IAAK,IAAMzY,KAAOqY,EAAmB,EAA1BrY,GA0CXiX,EAAQyB,GACR3B,EAAaiB,GAxFqB,GA0Fd,SAAlBrW,EAA0B,CAC5B,IAAMqW,EAAuB,CAC3B,CACEprB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,GAEb,CACEjsB,KAAM,MACNgsB,OAAQ,EACRC,UAAW,IAGTC,EAAQ,CACZ,aACA,iCACA,YACA,aACA,oBACA,SAGF/W,EAAUmF,SAAQ,SAACpR,GAEjB,GADa1B,OAAOwD,IAAO9B,EAAGkJ,MAAMC,OAAO,QAEhC4C,GACTiX,EAAMrkB,SAASqB,EAAG0iB,+BAA+BtN,eACjD,CACA,IAAMzS,EAAQrE,OAAOwD,IAAO9B,EAAGkJ,MAAMC,OAAO,MACxCnJ,EAAGijB,SACLf,EAAgBvf,EAAQ,GAAGmgB,QAAU9iB,EAAG2iB,YAExCT,EAAgBvf,EAAQ,GAAGogB,WAAa/iB,EAAG2iB,gBAIjD1B,EAAaiB,GAGfjtB,GAAW,KACV,CAAC8W,EAAeE,EAAWJ,IAE9B,IAIMqX,EAAiB,SAACzoB,GACtB,OAAOA,EAAQ,EACX,cACEA,QADF,IACEA,OADF,EACEA,EAAOiD,eAAe,QAAS,CAC7BC,sBAAuB,EACvBC,sBAAuB,KAE3B,IAiKN,OAAO5I,EACL,cAAC,GAAD,IASa,IARX4B,EAAK0J,QAAO,SAAC4H,GAAD,MACM,aAAlB2D,EACI3D,EAAEma,YAAcna,EAAEoa,MAAQpa,EAAEia,UAAYja,EAAEiP,MAAQjP,EAAEka,WAAa,EAC/C,SAAlBvW,EACA3D,EAAE4a,OAAS5a,EAAE6a,UAAY,EACzBpoB,OAAOC,KAAKsN,GACT5H,QAAO,SAAC4J,GAAD,MAAiB,SAARA,KAChB3J,QAAO,SAACtK,EAAGob,GAAJ,OAAUpb,EAAIiS,EAAEmJ,KAAI,GAAK,KACvCxW,OACF,sBAAKO,UAAU,aAAf,UACE,qBAAKC,IAAK8nB,GAAmB5nB,IAAI,uBACjC,2FAGF,cAAC6nB,GAAA,EAAD,CAAqBta,MAAM,OAAO9C,OAAO,MAAzC,SACE,eAACqd,GAAA,EAAD,CACEzsB,KAAMA,EACNmkB,OAAQ,CACNuI,IAAK,GACLC,MAAO,IAJX,UAOE,cAACC,GAAA,EAAD,CAAOC,QAAQ,OAAO1lB,MAAO,CAAEC,SAAU,UACzC,cAAC0lB,GAAA,EAAD,CAAOC,UAAU,EAAOC,MAAM,IAC9B,cAACC,GAAA,EAAD,CAASC,QAxLO,SAACrpB,GAAgB,IAC7ByV,EAAYzV,EAAZyV,QACR,GAAsB,aAAlBrE,EAA8B,CAAC,IAAD,gGAC1BgH,GACJ,UAAA3C,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBiS,YAArB,UACAjS,EAAQ,UADR,iBACA,EAAYA,eADZ,aACA,EAAqBkS,aADrB,UAEAlS,EAAQ,UAFR,iBAEA,EAAYA,eAFZ,aAEA,EAAqBiH,QAFrB,UAGAjH,EAAQ,UAHR,iBAGA,EAAYA,eAHZ,aAGA,EAAqBmS,aACvB,OAAO,UAAAnS,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBiS,WAAY,IACtC,UAAAjS,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBkS,YAAa,IAClC,UAAAlS,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBiH,OAAQ,IAC7B,UAAAjH,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBmS,aAAc,IACnC,UAAAnS,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBoS,OAAQ,EAC7B,sBAAKlnB,UAAU,oBAAf,WACG,UAAA8U,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBiS,WAAY,GAChC,uBAAMpkB,MAAO,CAAEC,SAAU,QAAzB,2BACiB,IADjB,UAEGkS,EAAQ,UAFX,iBAEG,EAAYA,eAFf,aAEG,EAAqBiS,UAAUzkB,eAAe,QAAS,CACtDC,sBAAuB,EACvBC,sBAAuB,IACrB,IALN,IAOGiV,EAAQ,GAC8B,KAAjC,UAAA3C,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBiS,WAAmBtP,GAAOzU,QAAQ,GACzD,EATN,SAaD,UAAA8R,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBkS,YAAa,GACjC,uBAAMrkB,MAAO,CAAEC,SAAU,QAAzB,2BACiB,IADjB,UAEGkS,EAAQ,UAFX,iBAEG,EAAYA,eAFf,aAEG,EAAqBkS,WAAW1kB,eAAe,QAAS,CACvDC,sBAAuB,EACvBC,sBAAuB,IACrB,IALN,IAOGiV,EAAQ,GAC+B,KAAlC,UAAA3C,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBkS,YAAoBvP,GAAOzU,QAAQ,GAC1D,EATN,SAaD,UAAA8R,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBiH,OAAQ,GAC5B,uBAAMpZ,MAAO,CAAEC,SAAU,QAAzB,+CACkC,IADlC,UAEGkS,EAAQ,UAFX,iBAEG,EAAYA,eAFf,aAEG,EAAqBiH,MAAMzZ,eAAe,QAAS,CAClDC,sBAAuB,EACvBC,sBAAuB,IACrB,IALN,IAOGiV,EAAQ,GAC0B,KAA7B,UAAA3C,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBiH,OAAetE,GAAOzU,QAAQ,GACrD,EATN,SAaD,UAAA8R,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBmS,aAAc,GAClC,uBAAMtkB,MAAO,CAAEC,SAAU,QAAzB,kCACkB,IADlB,UAEGkS,EAAQ,UAFX,iBAEG,EAAYA,eAFf,aAEG,EAAqBmS,YAAY3kB,eAAe,QAAS,CACxDC,sBAAuB,EACvBC,sBAAuB,IACrB,IALN,IAOGiV,EAAQ,GACgC,KAAnC,UAAA3C,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBmS,aAAqBxP,GAAOzU,QAAQ,GAC3D,EATN,SAaD,UAAA8R,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBoS,OAAQ,GAC5B,uBAAMvkB,MAAO,CAAEC,SAAU,QAAzB,sBACY,IADZ,UAEGkS,EAAQ,UAFX,iBAEG,EAAYA,eAFf,aAEG,EAAqBoS,MAAM5kB,eAAe,QAAS,CAClDC,sBAAuB,EACvBC,sBAAuB,IACrB,IALN,IAOGiV,EAAQ,GAC0B,KAA7B,UAAA3C,EAAQ,UAAR,mBAAYA,eAAZ,eAAqBoS,OAAezP,GAAOzU,QAAQ,GACrD,EATN,WAeJ,6BAGJ,GAAsB,cAAlByN,EAA+B,CAAC,IAAD,EAC3BjR,GAAOD,OAAOC,MAAK,UAAAsV,EAAQ,UAAR,eAAYA,UAAW,IAC5C2C,GAAQ,EAOZ,OANAjY,GAAKwW,SAAQ,SAACpR,GACQ,IAAD,EAAR,SAAPA,IACF6S,KAAS,UAAA3C,EAAQ,UAAR,eAAYA,QAAQlQ,KAAO,MAKtC,qBAAK5E,UAAU,oBAAf,SACGR,GAAKqN,KAAI,SAACjI,GACW,IAAD,IAAnB,MAAW,SAAPA,EAEA,uBAAMjC,MAAO,CAAEC,SAAU,QAAzB,UACGgC,EADH,OACW,IADX,UAEGkQ,EAAQ,UAFX,aAEG,EAAYA,QAAQlQ,GAAItC,eAAe,QAAS,CAC/CC,sBAAuB,EACvBC,sBAAuB,IACrB,IALN,IAOGiV,GAAQ,GACuB,KAA1B,UAAA3C,EAAQ,UAAR,eAAYA,QAAQlQ,IAAa6S,IAAOzU,QAAQ,GAClD,EATN,QAcG,kCAKf,GAAsB,SAAlByN,EAA0B,CAAC,IAAD,oCACtBgH,IACJ,WAAA3C,EAAQ,UAAR,sBAAYA,eAAZ,iBAAqB4S,SAArB,WAA8B5S,EAAQ,UAAtC,mBAA8B,GAAYA,eAA1C,cAA8B,GAAqB6S,WACrD,OAAOlQ,GAAQ,EACb,sBAAKzX,UAAU,oBAAf,UACE,uBAAM2C,MAAO,CAAEC,SAAU,QAAzB,uBACa,IADb,WAEGkS,EAAQ,UAFX,mBAEG,GAAYA,eAFf,cAEG,GAAqB4S,OAAOplB,eAAe,QAAS,CACnDC,sBAAuB,EACvBC,sBAAuB,IACrB,IALN,IAOGiV,GAAQ,GAC2B,KAA9B,WAAA3C,EAAQ,UAAR,sBAAYA,eAAZ,iBAAqB4S,QAAgBjQ,IAAOzU,QAAQ,GACtD,EATN,QAYA,uBAAML,MAAO,CAAEC,SAAU,QAAzB,0BACgB,IADhB,WAEGkS,EAAQ,UAFX,mBAEG,GAAYA,eAFf,cAEG,GAAqB6S,UAAUrlB,eAAe,QAAS,CACtDC,sBAAuB,EACvBC,sBAAuB,IACrB,IALN,IAOGiV,GAAQ,GAC8B,KAAjC,WAAA3C,EAAQ,UAAR,sBAAYA,eAAZ,iBAAqB6S,WAAmBlQ,IAAOzU,QAAQ,GACzD,EATN,WAcF,iCAgCA,cAAC2lB,GAAA,EAAD,CACEhmB,MAAO,CAAE0J,MAAO,SAChBgW,MAAM,SACNuG,OAAO,aACPC,SAAS,SACTC,cAAc,SACdC,UA7Ma,SAAC1pB,EAAe2pB,GACnC,OAAO,sBAAMrmB,MAAO,CAAE0J,MAAO,QAAS2T,WAAY,KAA3C,SAAmD3gB,OA8MnC,aAAlBoR,GACC,qCACGuV,EAAY,GACX,cAACiD,GAAA,EAAD,CACEZ,QAAQ,QACRa,QAAQ,IACRvL,KAAK,gCACLjiB,KAAK,iCACL4E,QAASslB,IAGZU,EAAa,GACZ,cAAC2C,GAAA,EAAD,CACEZ,QAAQ,aACRa,QAAQ,IACRvL,KAAK,UACLjiB,KAAK,aACL4E,QAASslB,IAGZM,EAAW,GACV,cAAC+C,GAAA,EAAD,CACEZ,QAAQ,YACRa,QAAQ,IACRvL,KAAK,2BACLjiB,KAAK,YACL4E,QAASslB,IAGZY,EAAa,GACZ,cAACyC,GAAA,EAAD,CACEZ,QAAQ,cACRa,QAAQ,IACRvL,KAAK,UACLjiB,KAAK,oBACL4E,QAASslB,IAGZQ,EAAa,GACZ,cAAC6C,GAAA,EAAD,CACEZ,QAAQ,QACRa,QAAQ,IACRvL,KAAK,UACLjiB,KAAK,QACL4E,QAASslB,KAGXptB,MACA,cAACywB,GAAA,EAAD,CACEZ,QAAQ,GACRa,QAAQ,IACRvL,KAAK,cACLjiB,KAAK,GACLsoB,MAAO,CAAE5I,SAAU,MAAO2N,UAAWjB,QAK1B,cAAlBrX,GACC,qCACGqV,EAAKjZ,KAAI,SAACjI,EAAI4H,GACb,OACE,cAACyc,GAAA,EAAD,CACEZ,QAASzjB,EACTskB,QAAQ,IACRvL,KAAMiJ,EAAiB,EAAIpa,GAC3B9Q,KAAMkJ,EACNtE,QAASslB,QAIbptB,MACA,cAACywB,GAAA,EAAD,CACEZ,QAAQ,GACRa,QAAQ,IACRvL,KAAK,cACLjiB,KAAK,GACLsoB,MAAO,CAAE5I,SAAU,MAAO2N,UAAWjB,QAK1B,SAAlBrX,GACC,qCACE,cAACwY,GAAA,EAAD,CACEZ,QAAQ,SACRa,QAAQ,IACRvL,KAAK,gCACLrd,QAASslB,EACTlqB,KAAK,WAEP,cAACutB,GAAA,EAAD,CACEZ,QAAQ,YACRa,QAAQ,IACRvL,KAAK,UACLjiB,KAAK,YACL4E,QAASslB,KAETptB,MACA,cAACywB,GAAA,EAAD,CACEZ,QAAQ,GACRa,QAAQ,IACRvL,KAAK,cACLjiB,KAAK,GACLsoB,MAAO,CAAE5I,SAAU,MAAO2N,UAAWjB,cC7rBxCqB,GAA0C,SAAC,GAAwB,IAAtBre,EAAqB,EAArBA,SAAUse,EAAW,EAAXA,KAClE,OACE,eAAC,KAAD,CAAK9G,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,EAAD,CAAQlU,KAAK,QAAQmH,UAAU,aAAaM,QAASwK,EAArD,wBAIF,cAAC,KAAD,CAAKiC,KAAM,GAAX,SACE,cAAC,EAAD,CACElU,KAAK,QACLD,KAAK,UACLoH,UAAU,aACVM,QAAS8oB,QAAcva,EACvBxO,SAAU+oB,OAAOva,EAAY,SAL/B,0BCFKwa,GAAsC,SAAC,GAS7C,IARLtiB,EAQI,EARJA,IACAuiB,EAOI,EAPJA,KACAC,EAMI,EANJA,KACA/hB,EAKI,EALJA,MACAsD,EAII,EAJJA,SACA0e,EAGI,EAHJA,WACAC,EAEI,EAFJA,WACA1wB,EACI,EADJA,SACI,EACWkR,IAAKC,UAAbC,EADH,sBAEkB5Q,oBAAS,GAAtBmwB,EAFL,oBAIJ5rB,qBAAU,WACH0rB,EAEMC,IACTC,GAAU,SAACC,GAAD,OAAaA,KACvBxf,EAAKyf,eAAeH,IAHpBtf,EAAK0f,gBAKN,CAACL,EAAYrf,EAAMsf,IAmCtB,OACE,cAAC,GAAD,CACEre,OAAQ,KACR5D,MAAOA,EACPsD,SAAUA,EACVD,QAAS2e,EAJX,SAME,eAAC,IAAD,CACErf,KAAMA,EACNtR,KAAK,QACL+vB,OAAO,WACPxe,SAnBW,SAAC5O,GACZiuB,EACFH,EAAK9tB,GAELuL,EAAIvL,IAgBFsuB,eA9CiB,SAACC,EAAoBC,GAC1CN,GAAU,SAACC,GAAD,OAAaA,KACvB,IAAMnuB,EAAI,2BACLwuB,GACAT,EACAU,OACApd,KAAI,SAACqd,GAAD,MACc,oBAAVA,EAAuBA,EAAM,CAAE1uB,KAAMwuB,IAAYE,KAEzDhlB,QAAO,SAACglB,GAAD,OAAWA,EAAMrK,YACxB1a,QACC,SAACglB,EAAKC,GAAN,yBAAC,eACID,GADL,mBAEGC,EAAI1uB,KAFP,UAEc0uB,EAAIvK,gBAFlB,aAEc,OAAAuK,EAAeL,EAAZ,2BAAgCC,GAAWG,QAE5D,KAGAE,EAAc9qB,OAAO+qB,QAAQ9uB,GACnC2O,EAAKogB,UAAUF,EAAYxd,KAAI,yCAAoB,CAAEnR,KAAtB,KAA4B2D,MAA5B,UAC/B8K,EAAK0f,YACHQ,EACGnlB,QAAO,gBAAI7F,EAAJ,gCAAyBwP,IAAVxP,GAAiC,OAAVA,KAC7CwN,KAAI,4CAkBP,UAOG0c,EAAK1c,KAAI,SAAC2d,EAAKhe,GAAN,OACR,cAAC,KAAD,CAAiB8V,OAAQ,CAAC,GAAI,IAA9B,SACGkI,EACE3d,KAAI,SAACqd,GAAD,MACc,oBAAVA,EACHA,EAAM,CAAE1uB,KAAM2O,EAAKsgB,mBACnBP,KAELhlB,QACC,SAACglB,GAAD,QAE0B,oBAAfA,EAAMQ,MACbR,EAAMQ,KAAK,CAAElvB,KAAM2O,EAAKsgB,uBAG7B5d,KAAI,SAACqd,EAAY1d,EAAeme,GAA5B,OACH,cAAC,KAAD,CAEE5d,KAAMmd,EAAMnd,KAAOmd,EAAMnd,KAAO,GAAK4d,EAAMlrB,OAF7C,SAIE,cAAC,IAAK4K,KAAN,CACE3O,KAAMwuB,EAAMxuB,KACZsoB,MAAOkG,EAAMlG,MACb1Z,MAAO4f,EAAM5f,MACbsgB,OAAQV,EAAMU,OACdC,cAAeX,EAAMW,cALvB,SAOGX,EAAMA,SAVJA,EAAMxuB,UAhBT8Q,MAgCXzT,EACD,cAAC,GAAD,CAAa+R,SAAUA,UCpHlBggB,GAAkB1yB,IAAOC,IAAV,2lCACf,qBAAG0yB,SAAkD,GAAtB,uBAItB,gBAAGA,EAAH,EAAGA,SAAU7uB,EAAb,EAAaA,oBAAb,OACnB6uB,EAEa,GADb7uB,EACC,UADqB,sBAEV,gBAAGA,EAAH,EAAGA,oBAAH,SAAwB6uB,UAA6B7uB,EAA2C,GAArB,sBAG7E,qBAAG6uB,SAAqC,GAAT,UAC3B,gBAAGA,EAAH,EAAGA,SAAU7uB,EAAb,EAAaA,oBAAb,OACV6uB,EAGM,GAFL7uB,EAAsB,QACrBA,EACD,GADuB,WClB/B,SAAS,KAA2Q,OAA9P,GAAWqD,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,4mBACHC,OAAQ,UACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,UAGlB,SAAS2N,GAAkBzN,EAAMC,GAC/B,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,IAGpB,ICpBYyjB,GDoBR,GAA0B,aAAiBD,IAChC,K,SCrBHC,K,oBAAAA,E,iBAAAA,Q,KAeL,IASKC,GATCC,GAA2B,CACtC,CACEzvB,KAAM,+CAER,CACEA,KAAM,uC,SAIEwvB,K,wCAAAA,E,oDAAAA,E,sCAAAA,E,oCAAAA,E,gDAAAA,E,gDAAAA,E,4DAAAA,E,4BAAAA,E,wCAAAA,E,wBAAAA,E,oCAAAA,E,oCAAAA,E,iDAAAA,Q,KAiCL,I,SCuBKE,GDvBCC,GAAwB,CACnC,CACEzyB,KAAMsyB,GAAaI,iBACnBC,SAAU,QACV/jB,MAAO,UACPgkB,cAAc,EACdC,MAAO,KACPC,cAAe,KACfC,gBAAiB,GACjBC,aAAc,uBACdC,WAAW,EACXC,iBAAkB,CAChB,CACEpwB,KAAM,4BACN+R,KAAM,cAAC,KAAD,CAAQ5U,KAAM,GAAIwT,MAAM,8BAEhC,CACE3Q,KAAM,2DACN+R,KAAM,cAAC,KAAD,CAAQ5U,KAAM,GAAIwT,MAAM,8BAEhC,CACE3Q,KAAM,sDACN+R,KAAM,cAAC,KAAD,CAAQ5U,KAAM,GAAIwT,MAAM,8BAEhC,CACE3Q,KAAM,mCACN+R,KAAM,cAAC,KAAD,CAAQ5U,KAAM,GAAIwT,MAAM,+BAGlC0f,aAAc,CACZ,CACE/H,MAAO,gDACPjE,SAAS,EACTtS,KAAM,cAAC,KAAD,CAAiB5U,KAAM,GAAIwT,MAAM,sBAEzC,CACE2X,MAAO,4CACPjE,SAAS,EACTtS,KAAM,cAAC,KAAD,CAAS5U,KAAM,GAAIwT,MAAM,sBAEjC,CACE2X,MAAO,0BACPjE,SAAS,EACTtS,KAAM,cAAC,GAAD,OAIZ,CACE7U,KAAMsyB,GAAac,uBACnBxkB,MAAO,UACP+jB,SAAU,SACVC,cAAc,EACdC,MAAO,KACPC,cAAe,KACfC,gBAAiB,EACjBE,WAAW,EACXC,iBAAkB,CAChB,CACEpwB,KAAM,4BACN+R,KAAM,cAAC,KAAD,CAAQ5U,KAAM,GAAIwT,MAAM,8BAEhC,CACE3Q,KAAM,2DACN+R,KAAM,cAAC,KAAD,CAAQ5U,KAAM,GAAIwT,MAAM,8BAEhC,CACE3Q,KAAM,sDACN+R,KAAM,cAAC,KAAD,CAAQ5U,KAAM,GAAIwT,MAAM,8BAEhC,CACE3Q,KAAM,mCACN+R,KAAM,cAAC,KAAD,CAAQ5U,KAAM,GAAIwT,MAAM,+BAGlC0f,aAAc,CACZ,CACE/H,MAAO,gDACPjE,SAAS,EACTtS,KAAM,cAAC,KAAD,CAAiB5U,KAAM,GAAIwT,MAAM,sBAEzC,CACE2X,MAAO,4CACPjE,SAAS,EACTtS,KAAM,cAAC,KAAD,CAAS5U,KAAM,GAAIwT,MAAM,sBAEjC,CACE2X,MAAO,0BACPjE,SAAS,EACTtS,KAAM,cAAC,GAAD,QE7JDtV,IFqKH8yB,GAASgB,SAQJ,KAIA,KAGId,GAAcvpB,MAAM,EAAG,GAGhCqpB,GAASiB,OAQJ,KAIA,KEnMU9zB,IAAOC,IAAV,q0FA0HT8zB,GAAkB/zB,IAAOC,IAAV,2rIAGX,qBAAGG,SAA0B,SAAW,MD5H5C4zB,GAAS,CACpB,CACExzB,KAAMsyB,GAAamB,mBACnB3wB,KAAM,QACN+vB,MAAO,KACPC,cAAe,KACfY,aAAc,GACdC,IAAK,uCACLhpB,SAAU,gBACVipB,SAAU,CACR,mCACA,0CAGJ,CACE5zB,KAAMsyB,GAAauB,yBACnB/wB,KAAM,QACN+vB,MAAO,KACPC,cAAe,KACfY,aAAc,GACdC,IAAK,uCACLhpB,SAAU,gBACVipB,SAAU,CACR,mCACA,0CAGJ,CACE5zB,KAAMsyB,GAAaI,iBACnB5vB,KAAM,UACN+vB,MAAO,KACPC,cAAe,KACfY,aAAc,GACdC,IAAK,2CACLhpB,SAAU,uBACVipB,SAAU,CACR,gCACA,+BACA,uCACA,mCACA,+BAGJ,CACE5zB,KAAMsyB,GAAac,uBACnBtwB,KAAM,UACN+vB,MAAO,KACPC,cAAe,KACfY,aAAc,GACdC,IAAK,2CACLhpB,SAAU,uBACVipB,SAAU,CACR,gCACA,+BACA,uCACA,mCACA,+BAGJ,CACE5zB,KAAMsyB,GAAawB,uBACnBhxB,KAAM,YACN+vB,MAAO,KACPC,cAAe,KACfY,aAAc,GACdC,IAAK,2CACLhpB,SAAU,yBACVipB,SAAU,CACR,qCACA,mCACA,kCAEFG,SAAS,GAEX,CACE/zB,KAAMsyB,GAAa0B,6BACnBlxB,KAAM,YACN+vB,MAAO,KACPC,cAAe,KACfY,aAAc,GACdC,IAAK,2CACLhpB,SAAU,yBACVipB,SAAU,CACR,qCACA,mCACA,kCAEFG,SAAS,K,SAIDvB,K,4BAAAA,E,wCAAAA,E,qCAAAA,Q,KAML,IE/EKyB,GF+ECC,IAAW,sBACrB1B,GAAoB2B,aAAe,IADd,gBAErB3B,GAAoB4B,mBAAqB,IAFpB,gBAGrB5B,GAAoB6B,iBAAmB,IAHlB,IAMXC,GAAe,SAC1B9Y,EACA+Y,GAF0B,OAIzBA,EAEGA,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,uBAC/CI,GAAY1B,GAAoB6B,kBAChCE,EAAQE,QAAa,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaI,iBAC7CwB,GAAY1B,GAAoB2B,cAChCI,EAAQE,QAAa,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,uBAC7CI,GAAY1B,GAAoB4B,oBADhC,OAEA5Y,QAFA,IAEAA,OAFA,EAEAA,EAAMqX,MARV,OACIrX,QADJ,IACIA,OADJ,EACIA,EAAMqX,OASC6B,GAAuB,SAClClZ,EACA+Y,GAFkC,OAIjCA,EAEGA,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,uBAC/CI,GAAY1B,GAAoB6B,kBAChCE,EAAQE,QAAa,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaI,iBAC7CwB,GAAY1B,GAAoB2B,cAChCI,EAAQE,QAAa,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,uBAC7CI,GAAY1B,GAAoB4B,oBADhC,OAEA5Y,QAFA,IAEAA,OAFA,EAEAA,EAAMsX,cARV,OACItX,QADJ,IACIA,OADJ,EACIA,EAAMsX,eG3HC6B,GAAaz1B,IAAMC,OAAO,CACrCC,QAASC,oCACTC,QAAS,CACP,iBAAkB,Y,UC2EPs1B,GAlEwB,SAAC,GAQjC,IAPLC,EAOI,EAPJA,YACAC,EAMI,EANJA,eACAC,EAKI,EALJA,cACAC,EAII,EAJJA,sBACAC,EAGI,EAHJA,aACAC,EAEI,EAFJA,UACAC,EACI,EADJA,WAEA,OACE,qCACE,cAAC,KAAD,CAAKprB,MAAO,CAAE0Y,UAAW,OAAzB,SACmB,IAAhBoS,IAAsBK,GACrB,cAAC,KAAD,CAAKvL,GAAI,GAAIC,GAAI,GAAIwL,GAAI,GAAzB,SACE,eAAC,KAAWxN,UAAZ,CAAsB7d,MAAO,CAAEyL,UAAW,SAAUxL,SAAU,IAA9D,4DAC+C,IAC7C,mBACE2B,KAAK,2IACL2X,OAAO,SACP0D,IAAI,aAHN,6CAMK,IARP,WAcW,IAAhB6N,GAAqC,IAAhBA,GACpB,cAAC,KAAD,CAAK/N,QAAQ,SAAS/c,MAAO,CAAEE,aAAc,QAA7C,SACE,cAAC,EAAD,CACEhK,KAAK,QACLD,KAAK,UACL+J,MAAO,CAAE+K,MAAO,QAChBpN,QAASqtB,EACT70B,SAAU80B,IALZ,SAOmB,IAAhBH,EACG,aACiB,WAAjBI,EACA,sBACA,uBAITJ,GAAe,GACd,cAAC,KAAD,CAAK/N,QAAQ,SAAb,SACE,cAAC,EAAD,CACE7mB,KAAK,QACL8J,MAAO,CAAE+K,MAAO,QAChBpN,QAAS,WACa,IAAhBmtB,EAIJC,GAAe,SAACO,GAAD,OAAUA,EAAO,KAH9BF,KALN,0B,qBCzBGG,GAAqC,SAAC,GAiB5C,IAhBL/jB,EAgBI,EAhBJA,KACAlH,EAeI,EAfJA,OACAkrB,EAcI,EAdJA,OACAC,EAaI,EAbJA,QACAC,EAYI,EAZJA,SACAC,EAWI,EAXJA,UACAC,EAUI,EAVJA,UACAC,EASI,EATJA,WACAC,EAQI,EARJA,kBACAC,EAOI,EAPJA,mBAOI,KANJC,YAMI,EALJC,kBAKI,EAJJC,WAII,EAHJC,UAGI,EAFJC,oBAEI,EADJC,mBAEkCz1B,mBAAyB,SADvD,mBACG01B,EADH,KACcC,EADd,KAEEC,EAAWC,mBAAQ,kBAAMxlB,IAAQC,IAAIslB,SAASlsB,KAAS,CAACA,IAyC9D,OACE,mCACE,cAAC,IAAD,CACEkH,KAAMA,EACNtR,KAAK,QACL+vB,OAAO,WACPkB,eAnCiB,SAACuF,EAAcrF,GAAiB,IAAD,sBACpDmE,EAAM,UAACnE,EAAOsF,WAAR,QAAe,IACrBf,EAAS,UAACvE,EAAOuF,cAAR,QAAkB,IAC3BnB,EAAO,UAACpE,EAAOwF,kBAAR,QAAsB,IAC7Bf,EAAiB,oBAACzE,EAAOrpB,WAAR,aAAC,EAAYW,QAAQ,SAAU,WAA/B,QAAsC,IACvD+sB,EAAQ,oBAACrE,EAAOhpB,aAAR,aAAC,EAAcM,QAAQ,UAAW,IAAIA,QAAQ,IAAK,WAAnD,QAA0D,IAClE,IAAMwN,EAAMvP,OAAOC,KAAK6vB,GAAS,GACjCb,EACW,eAAR1f,EAAuB,OAAiB,QAARA,EAAgB,MAAQA,GAE3D3E,EAAKyf,eAAL,2BACKI,GADL,IAEErpB,IAAG,oBAAEqpB,EAAOrpB,WAAT,aAAE,EAAYW,QAAQ,SAAU,WAAhC,QAAuC,GAC1CN,MAAK,oBAAEgpB,EAAOhpB,aAAT,aAAE,EAAcM,QAAQ,UAAW,IAAIA,QAAQ,IAAK,WAApD,QAA2D,GAChEgrB,aAAc,MAGhB5uB,YAAW,WACTyM,EACGslB,iBACA3yB,MAAK,WACJ4xB,GAAmB,MAEpB1xB,OAAM,WACL0xB,GAAmB,QAEtB,MAKD,SAME,eAAC,KAAD,CAAKpM,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,SACLsoB,MAAM,yBACNhkB,UAAU,eACVsK,MAAOX,GAJT,SAME,cAAC,KAAD,CACE+lB,KAAK,IACL1vB,UAAU,yBACV+N,OACe,eAAbohB,EACI,mBACa,SAAbA,EACA,oBACA,sBAENQ,QAAS,SAAC7P,GACPA,EAAE5D,OAAuB0T,aAAa,SAAU,QACjD,IAAMvwB,EAAQygB,EAAE+P,cAAcC,QAAQ,cACtCxB,EAAUjvB,IAEZwgB,SAAU,SAACC,GACJA,EAAE5D,OAAuB6T,aAAa,UACxCjQ,EAAE5D,OAAuB8T,gBAAgB,UAE1C1B,EAAUxO,EAAE5D,OAAO7c,cAM7B,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,SACLsoB,MAAM,qBACN1Z,MAAOvB,GAHT,SAKE,cAAC,KAAD,CACE2mB,KAAK,QACL7rB,YAAY,qBACZ7D,UAAU,+BAIhB,cAAC,KAAD,CAAK+M,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,MACL4O,MAAOhB,GACP0a,MAAM,4BAHR,SAKE,cAAC,IAAD,CAAOngB,YAAY,kCAGvB,cAAC,KAAD,CAAKkJ,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,aACLsoB,MAAM,gBACNhkB,UAAU,eACVsK,MAAO5B,GAJT,SAME,cAAC,IAAD,CAAO7E,YAAY,sBAGvB,cAAC,KAAD,CAAKkJ,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,MACLsoB,MAAM,sBACN1Z,MAAOtC,GAHT,SAKE,cAAC,KAAD,CACE0nB,KAAoB,QAAdT,EAAsB7rB,GAAeC,GAC3C4sB,cAAe,SAACp1B,GACd,IAAMwE,GAASxE,EAAEW,KAAKiE,OAAS,EAAI5E,EAAEW,KAAOX,EAAEqhB,OAAO7c,OAClD4I,WAAW,IAAK,IAChBA,WAAW,IAAK,IAChBA,WAAW,IAAK,IAChBA,WAAW,IAAK,IACbxI,EACJ5E,EAAEW,KAAKiE,OAAS,EAAIJ,EAAMI,OAAS,EAAIJ,EAAMI,OAE7CyvB,EADEzvB,EAAS,GACE,MAEA,SAGjBoE,YAAY,sBACZ7D,UAAU,+BAIhB,cAAC,KAAD,CAAK+M,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,QACLsoB,MAAM,WACN1Z,MAAO7B,GAHT,SAKE,cAAC,KAAD,CACEinB,KAAK,kBACL7rB,YAAY,WACZ7D,UAAU,uCCtMXqJ,GALHvR,IAAMC,OAAO,CACvBm4B,OAAQ,MACRl4B,QAAS,8BCwIIm4B,GA5HkC,SAAC,GAI3C,IAHLhmB,EAGI,EAHJA,KACAtQ,EAEI,EAFJA,WACAu2B,EACI,EADJA,sBAqCMC,EAAiB,WACrBlmB,EACGslB,iBACA3yB,MAAK,kBAAMszB,GAAsB,MACjCpzB,OAAM,kBAAMozB,GAAsB,OAGvC,OACE,mCACE,eAAC,IAAD,CACEjmB,KAAMA,EACNtR,KAAK,QACL+vB,OAAO,WACP/I,SAAUwQ,EAJZ,UAME,eAAC,KAAD,CAAK/N,OAAQ,EAAb,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CAAW3O,KAAK,MAAMsoB,MAAM,MAAM1Z,MAAOlB,GAAzC,SACE,cAAC,KAAD,CACEsmB,KAAK,IACLY,aAAa,GACbviB,OAAO,YACP/N,UAAU,yBACVuwB,cAAe,SAAClxB,GAAD,OA1DA,SAACA,GACN,KAAb,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOI,UACT5F,GAAW,GACXwP,GACGhO,IADH,UACUgE,EADV,UAEGvC,MAAK,SAACC,GACL,IAAMvB,EAAOuB,EAAIvB,KAEjB,IAAIA,EAAK6N,IAQP,MAAMvB,QAPNqC,EAAKyf,eAAe,CAClB4G,OAAQh1B,EAAKi1B,WACbC,aAAcl1B,EAAKm1B,OACnBC,KAAMp1B,EAAKq1B,WACXC,MAAOt1B,EAAKu1B,QAMjB/zB,OAAM,WACLmN,EAAKyf,eAAe,CAClB4G,YAAQ3hB,EACR6hB,kBAAc7hB,EACd+hB,UAAM/hB,EACNiiB,WAAOjiB,EACP5L,YAAQ4L,OAGX4L,SAAQ,WACP4V,IACAx2B,GAAW,OA4BqBm3B,CAAoB,OAAC3xB,QAAD,IAACA,OAAD,EAACA,EAAOA,cAI5D,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,SACLsoB,MAAM,aACN1Z,MAAO5B,GAHT,SAKE,cAAC,IAAD,WAKN,eAAC,KAAD,CAAK4Z,OAAQ,EAAb,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,eACLsoB,MAAM,SACN1Z,MAAO5B,GAHT,SAKE,cAAC,IAAD,QAGJ,cAAC,KAAD,CAAKqE,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,SACLsoB,MAAM,YACN1Z,MAAO5B,GAHT,SAKE,cAAC,IAAD,WAKN,eAAC,KAAD,CAAK4Z,OAAQ,EAAb,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,OACLsoB,MAAM,SACN1Z,MAAO5B,GAHT,SAKE,cAAC,IAAD,QAGJ,cAAC,KAAD,CAAKqE,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,QACLsoB,MAAM,SACN1Z,MAAO3B,GAHT,SAKE,cAAC,IAAD,CAAO4B,UAAW,iBC1HnB0mB,GAA2C,SAAC,GAElD,IADLvD,EACI,EADJA,eAOA,OACE,eAAC,KAAD,CAAKhO,QAAQ,SAAS/c,MAAO,CAAE0Y,UAAW,QAA1C,UACE,cAAC,KAAD,UACE,cAAC,KAAD,CAAYxiB,KAAM,GAAIwT,MAAM,6BAG9B,cAAC,KAAD,CAAKU,KAAM,GAAIpK,MAAO,CAAE0Y,UAAW,QAAnC,SACE,cAAC,KAAWmF,UAAZ,CAAsB7d,MAAO,CAAEC,SAAU,GAAIwL,UAAW,UAAxD,yEAKF,cAAC,EAAD,CACEvV,KAAK,QACLyH,QAAS,WAnBE,IAAC4wB,IAoBD,aAnBfxD,EAAe,GACfhwB,YAAW,kBAAMwzB,MAAM,MAerB,mDCpBOC,GAAkD,SAAC,GAAc,IAAZ/c,EAAW,EAAXA,KAKhE,OACE,eAAC,KAAD,CAAKsL,QAAQ,SAAb,UACE,cAAC,KAAD,UACE,cAAC,KAAD,CAASrT,MAAO,2BAA4BxT,KAAM,QAEpD,cAAC,KAAD,UACE,cAAC,KAAW2nB,UAAZ,CACE4D,QAAM,EACNzhB,MAAO,CACLqd,WAAY,IACZpd,SAAU,OACVwL,UAAW,SACXuR,OAAQ,eANZ,SASGvL,EAAI,uGAEDA,QAFC,IAEDA,OAFC,EAEDA,EAAM5M,MAAM5B,cAFX,KAGD,0CCrBDwrB,GAAwC,SAAC,GAI/C,IAHLhd,EAGI,EAHJA,KACAsZ,EAEI,EAFJA,eAEI,IADJxvB,cACI,MADK,UACL,EACJ,OACE,mCACc,WAAXA,EACC,cAAC,GAAD,CAAiBkW,KAAMA,IAEvB,cAAC,GAAD,CAAasZ,eAAgBA,OCfxB2D,GAA+C,WAI1D,OACE,eAAC,KAAD,CAAK3R,QAAQ,SAAS/c,MAAO,CAAE0Y,UAAW,QAA1C,UACE,cAAC,KAAD,UACE,cAAC,KAAD,CAAgBxiB,KAAM,GAAIwT,MAAM,+BAGlC,cAAC,KAAD,CACEU,KAAM,GACNpK,MAAO,CACL4Y,QAAS,OACTF,UAAW,OACXG,eAAgB,QALpB,SAQE,cAAC,KAAWgF,UAAZ,CAAsB7d,MAAO,CAAEyL,UAAW,UAAWxL,SAAU,IAA/D,SAhBJ,iI,STaQiqB,K,UAAAA,E,gBAAAA,E,wCAAAA,E,oDAAAA,E,oCAAAA,E,gDAAAA,E,gDAAAA,E,6DAAAA,Q,KA6BL,I,MUpCHyE,GAeCC,GVsSUC,GAjR+C,SAAC,GAYxD,IAXLpd,EAWI,EAXJA,KACAya,EAUI,EAVJA,WACA4C,EASI,EATJA,oBACA5D,EAQI,EARJA,aACA6D,EAOI,EAPJA,SAGA1C,GAII,EANJ2C,cAMI,EALJC,aAKI,EAJJ5C,oBACA6C,EAGI,EAHJA,WAEAC,GACI,EAFJC,eAEI,EADJD,iBAEQvf,EAAmB4G,KAAnB5G,eACA/X,EAASkF,IAATlF,KAFJ,EAGeyP,IAAKC,UAAjB8nB,EAHH,sBAIkB/nB,IAAKC,UAApB+nB,EAJH,sBAMkB14B,mBAAS,IAN3B,mBAMG24B,EANH,KAMQ/D,EANR,OAOoB50B,mBAAS,IAP7B,mBAOGmC,EAPH,KAOS0yB,EAPT,OAQsB70B,mBAAS,IAR/B,mBAQGyH,EARH,KAQUqtB,EARV,OASa90B,mBAAS,IAAnB2E,EATH,sBAUwB3E,mBAAS,IAVjC,mBAUG0J,EAVH,KAUWqrB,EAVX,OAWwB/0B,mBAAS,IAXjC,mBAWGg2B,EAXH,KAWWhB,EAXX,OAY0Bh1B,qBAZ1B,mBAYG44B,EAZH,KAYY3D,EAZZ,OAawCj1B,mBAAS,IAbjD,mBAaG64B,EAbH,KAamB3D,EAbnB,OAcoCl1B,mBAAS,GAd7C,oBAcG+yB,GAdH,MAciB+F,GAdjB,SAgB0B94B,oBAAS,GAhBnC,qBAgBGK,GAhBH,MAgBYC,GAhBZ,SAiBkCN,mBAAS,GAjB3C,qBAiBGk0B,GAjBH,MAiBgBC,GAjBhB,SAkB0Cn0B,oBAAS,GAlBnD,qBAkBG+4B,GAlBH,MAkBoB5D,GAlBpB,SAmBgDn1B,oBAAS,GAnBzD,qBAmBGg5B,GAnBH,MAmBuBnC,GAnBvB,MAqBEoC,GAASpD,mBAAQ,WACrB,MAAO,CACL,qBACA,2BACA,mBACA,yBACA,yBACA,+BACA,cACA,qBACA7rB,UAAa,OAAJ6Q,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,OAAQ,MACxB,CAACwb,IAEE/U,GAAQ+vB,mBAAQ,WACpB,OAAIoD,GAAepe,GAAsB,IAAV,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAMqX,OACjC,OAAOiG,QAAP,IAAOA,OAAP,EAAOA,EAAU1W,oBAChB,QAAC0W,QAAD,IAACA,OAAD,EAACA,EAAU1W,kBAAmB5G,EAAMoe,KAEvC10B,qBAAU,WACJ2vB,GAAc,GACZoB,GAAYA,MAEjB,CAACpB,GAAaoB,IAgKjB,OACE,8BACE,eAAC,KAAD,CAAM4D,SAAU74B,GAAhB,UACmB,IAAhB6zB,IACC,mCACE,cAAC,GAAD,CACEtjB,KAAM6nB,EACN/uB,OAAQA,EACRkrB,OAAQA,EACRC,QAASA,EACT+D,QAASA,EACT9D,SAAUA,EACVC,UAAWA,EACXC,UAAWA,EACXC,WAAYA,EACZC,kBAAmBA,EACnBC,mBAAoBA,GACpBC,YAAatvB,GACbyvB,UAA4C,YAAjC,OAAC1a,QAAD,IAACA,OAAD,EAACA,EAAmBmX,UAC/BqD,kBAAmB4D,GAAS,QAAK3jB,EACjCggB,WAxBe,SAACxvB,GAC1BgzB,GAAgBhzB,IAwBN0vB,oBAAqBzC,GACrB0C,mBAAoBA,MAKT,IAAhBvB,IACC,cAAC,GAAD,CACEtjB,KAAM8nB,EACNp4B,WAAYA,GACZu2B,sBAAuBA,KAIV,IAAhB3C,IACC,cAAC,GAAD,CACErZ,KAAMA,EACNlW,OAAQA,EACRwvB,eAAgBA,KAIH,IAAhBD,IAAqB,cAAC,GAAD,IACtB,cAAC,GAAD,CACEA,YAAaA,GACbC,eAAgBA,GAChBI,WAAS,EACTH,cAtFe,WACD,IAAhBF,GACFC,GAAe,GACU,IAAhBD,KACY,WAAjBI,EArDoB,WAAO,IAAD,MAC1B6E,EAAcT,EAAYxH,iBAG1BkI,EAAQ,OAAGpD,QAAH,IAAGA,GAAH,UAAGA,EAAQ9rB,MAAM,YAAjB,aAAG,EAAqB,GAChCmvB,EAAS,OAAGrD,QAAH,IAAGA,GAAH,UAAGA,EAAQ9rB,MAAM,YAAjB,aAAG,EAAqB,GAEvC5J,IAAW,GACX43B,GAAoB,GAEpB55B,EACG4G,KARO,QAOV,2BAEOizB,GAFP,IAGImB,YAAa,cACb1e,KAAM,SACN2e,aAAY,OAAEvgB,QAAF,IAAEA,OAAF,EAAEA,EAAgBqG,IAC9Bma,YAAa,CACXzG,aAAcA,GACd0G,SAAU,CACRC,OAAO,GAAD,cAAKP,QAAL,IAAKA,OAAL,EAAKA,EAAahC,aAAlB,qBAAoCgC,QAApC,IAAoCA,OAApC,EAAoCA,EAAalC,OAAjD,qBAA6DkC,QAA7D,IAA6DA,OAA7D,EAA6DA,EAAazvB,QAChFiwB,SAAQ,OAAER,QAAF,IAAEA,GAAF,UAAEA,EAAarpB,WAAf,aAAE,EAAkB/H,QAAQ,IAAK,IACzCsvB,KAAI,OAAE8B,QAAF,IAAEA,OAAF,EAAEA,EAAa9B,KACnBE,MAAK,OAAE4B,QAAF,IAAEA,OAAF,EAAEA,EAAa5B,MAAMlrB,cAC1ButB,YAAa/xB,GAAwB1F,GACrCuH,SACAmwB,UAAWT,EACXU,SAAUT,EACVtD,IAAK4C,GAEPoB,WAAY,CACV53B,KAAMlB,EAAKA,KAAKkB,KAChBC,MAAOnB,EAAKA,KAAKmB,MACjBwK,SAAU3L,EAAKA,KAAKiB,SACpBuF,aAILlE,MAAK,SAACC,GACL2wB,GAAe,MAEhB1wB,OAAM,SAACC,GAAS,IAAD,IACd2B,IAAQX,MAAR,UAAchB,EAAI3B,gBAAlB,iBAAc,EAAcE,YAA5B,aAAc,EAAoBoD,YAEnC6b,SAAQ,WACP5gB,IAAW,GACX43B,GAAoB,MASpB8B,GAEA,CACE,qBACA,2BACA,mBACA,yBACA,yBACA,+BACA,cACA,qBACAhwB,SAASsqB,IAxIa,WAAO,IAAD,MAC5B6E,EAAcT,EAAYxH,iBAC1BkI,EAAQ,OAAGpD,QAAH,IAAGA,GAAH,UAAGA,EAAQ9rB,MAAM,YAAjB,aAAG,EAAqB,GAChCmvB,EAAS,OAAGrD,QAAH,IAAGA,GAAH,UAAGA,EAAQ9rB,MAAM,YAAjB,aAAG,EAAqB,GACjC2f,EAAO,CACX4P,SAAU,CACRC,OAAO,GAAD,cAAKP,QAAL,IAAKA,OAAL,EAAKA,EAAahC,aAAlB,qBAAoCgC,QAApC,IAAoCA,OAApC,EAAoCA,EAAalC,OAAjD,qBAA6DkC,QAA7D,IAA6DA,OAA7D,EAA6DA,EAAazvB,QAChFiwB,SAAQ,OAAER,QAAF,IAAEA,GAAF,UAAEA,EAAarpB,WAAf,aAAE,EAAkB/H,QAAQ,IAAK,IACzCsvB,KAAI,OAAE8B,QAAF,IAAEA,OAAF,EAAEA,EAAa9B,KACnBE,MAAK,OAAE4B,QAAF,IAAEA,OAAF,EAAEA,EAAa5B,MAAMlrB,cAC1ButB,YAAa/xB,GAAwB1F,GACrCuH,SACAmwB,UAAWT,EACXU,SAAUT,EACVR,iBACA9C,IAAK4C,GAEPoB,WAAY,CACV53B,KAAMlB,EAAKA,KAAKkB,KAChBC,MAAOnB,EAAKA,KAAKmB,MACjBwK,SAAU3L,EAAKA,KAAKiB,SACpBuF,QACAhC,YAAY,IAIhB8yB,EAAgB1O,GAgHZoQ,KAqEE5F,sBAhEsB,WAC5B,OAAQH,IACN,KAAK,EACH,OAAQ6E,GACV,KAAK,EACH,OAAQC,GACV,QACE,OAAO,IA0DL1E,aAAcA,EACdE,WAAY8D,UWtTT4B,ICJcr7B,IAAOC,IAAV,0UAoBED,IAAOsT,OAAV,41xHAKR,SAACgoB,GAAD,OACXA,EAAkB,OAAS,U,ODtBkB,SAAC,GAA4B,IAA1B36B,EAAyB,EAAzBA,SAAaN,EAAY,6BAe3E,OACE,+CACMA,GADN,IAEE6H,QAAS,SAACwf,GAAO,IAAD,GAjBD,WACjB,GAAK3Z,SAAiBwtB,UAAW,CAAC,IAAD,MAEzBC,EAAK,WAAI,EAAAztB,SAASid,MAAayQ,uBAA1B,aAAG,UACT,OAALD,QAAK,IAALA,GAAA,UAAAA,EAAOE,yBAAP,cAAAF,EAA2BztB,SAAS4tB,eAAet7B,EAAMoV,KACpD,OAAL+lB,QAAK,IAALA,KAAOI,cACF,GAAIr2B,OAAOs2B,aAAc,CAAC,IAAD,sBACxBL,EAAK,WAAG,EAAAztB,UAAS+tB,mBAAZ,aAAG,UACT,OAALN,QAAK,IAALA,GAAA,UAAAA,EAAOO,kBAAP,cAAAP,EAAoBztB,SAAS4tB,eAAet7B,EAAMoV,KAClD,aAAAlQ,QAAOs2B,oBAAP,qDAAyBG,uBAAzB,iBACA,aAAAz2B,QAAOs2B,oBAAP,qDAAyBI,gBAAzB,gBAAoCT,IAQlCU,GACA,UAAA77B,EAAM6H,eAAN,cAAA7H,EAAgBqnB,IAJpB,SAOG/mB,Q,SDAFw4B,K,gCAAAA,E,0BAAAA,E,wBAAAA,E,kBAAAA,E,qBAAAA,Q,KAQL,IGoEKA,GHpECgD,GAA+C,CACnD,kBAAmB,IACnB,sBAAuB,IACvB,gBAAiB,IACjB,mBAAoB,IACpB,iBAAkB,KAGPC,GAAkC,SAAC,GAWzC,IAAD,EAVJC,EAUI,EAVJA,YAGAC,GAOI,EATJ9C,aASI,EARJ+C,SAQI,EAPJD,UACAE,EAMI,EANJA,eACAh8B,EAKI,EALJA,KACAi8B,EAII,EAJJA,QACA/pB,EAGI,EAHJA,SAEA+J,GACI,EAFJT,KAEI,EADJS,SACI,EACsDsE,KAAlD5G,EADJ,EACIA,eAAgBmC,EADpB,EACoBA,WAAYlC,EADhC,EACgCA,kBADhC,EAE0BjZ,oBAAS,GAFnC,mBAEGK,EAFH,KAEYC,EAFZ,OAGwBN,mBAAiB,IAHzC,mBAGGu7B,EAHH,KAGWC,EAHX,OAIwBx7B,mBAAiB,IAJzC,mBAIGy7B,EAJH,KAIWC,EAJX,KAKEpO,EAAW4N,EAAYjC,OAAS,UAAY,YAC1Ch4B,EAASkF,IAATlF,KAERsD,qBAAU,WACS,YAAb+oB,GACFiL,MAGD,IAEH,IAAMoD,EAAet4B,uBACnB,WAAwB,IAAvBu4B,EAAsB,uDAAN,EACXC,EAAW,EACf9D,GAAY+D,YAAW,sBAAC,sBAAAx6B,EAAA,sDACtBhD,EACG4G,KADH,yBACkC,CAAChD,SAAUm5B,IAC1C93B,KAFH,+BAAAjC,EAAA,MAEQ,WAAOkC,GAAP,uBAAAlC,EAAA,qEACAkC,EAAIvB,YADJ,aACA,EAAUse,OADV,wBAEFwb,cAAchE,IACd1yB,IAAQmB,QAAQ,qCAChB80B,EAAQtD,GAAUgE,UAJhB,SAKwB7gB,EAAW,eAAKG,GAAW,KALnD,gBAKMtE,EALN,EAKMA,QACFkF,EAASlD,EACTM,EAAYtC,EAAQvB,MAAK,SAACiH,GAAD,OAAYA,EAAExa,YAAF,OAAega,QAAf,IAAeA,OAAf,EAAeA,EAAQha,aAClE+W,EAAkB,MAClB9U,YAAW,WACT8U,EAAkBK,KACjB,KAXD,4CAFR,uDAgBG4H,SAAQ,YACP2a,GAAY,GACG,KACbE,cAAchE,OApBE,2CAuBb,IAAR6D,KAEL,IAGFr3B,qBAAU,cAEP,CAACo3B,IAEJ,IAAMpD,EAAkB,WACtB,IAAM1O,EAAO,CACXwR,iBACAh8B,OACAub,KAAM,SACN2Y,YAAa2H,EAAY3H,cAAe,EACxC0F,QAAQ,EACRgD,aAAa,EACblC,WAAY,CACV53B,KAAMlB,EAAKA,KAAKkB,KAChBC,MAAOnB,EAAKA,KAAKmB,MACjBwK,SAAU3L,EAAKA,KAAKiB,SACpBuD,YAAY,GAEd6zB,YAAa,OAEfh5B,GAAW,GACXhC,EACG4G,KAAK,uBAAwB2kB,GAC7BtmB,KAFH,+BAAAjC,EAAA,MAEQ,WAAOkC,GAAP,SAAAlC,EAAA,sDACAkC,EAAIvB,KAAKi6B,SAAW14B,EAAIvB,KAAKw5B,QAC/BD,EAAUh4B,EAAIvB,KAAKi6B,SACnBR,EAAUl4B,EAAIvB,KAAKw5B,QACnBE,MAEAt2B,IAAQ4Y,KACN,0EAEFqd,EAAQtD,GAAUmE,gBACd5qB,GAAUA,KAVZ,2CAFR,uDAeG9N,OAAM,WACL4B,IAAQX,MAAM,gDACd42B,EAAQtD,GAAUmE,gBAClBjB,EAAYkB,qBAEblb,QApBH,cAAA5f,EAAA,MAoBW,sBAAAA,EAAA,sDACPhB,GAAW,GADJ,6CAiBP+7B,EAAQxJ,GAAOpd,MAAK,SAAA6mB,GAAC,OAAIA,EAAEj9B,OAAS67B,EAAY77B,QAChD6yB,EAAK,UAAGyB,GAAa0I,GAAQ,UAAxB,QAAkC,KACvCtJ,GAAoB,OAALsJ,QAAK,IAALA,OAAA,EAAAA,EAAOtJ,eAAgB,EACxCwJ,EAAarK,EAAQa,EACzBpvB,QAAQC,IAAI3C,EAAKA,KAAK2B,UAElB3B,EAAKA,KAAK2B,UAAYs4B,EAAY77B,OAASsyB,GAAamB,qBAC1DyJ,GAAcA,GAnBI,WAAO,IAAD,EACgC,IAIM,IAJ9D,OAAIrB,EAAY77B,OAASsyB,GAAaI,kBAC5B,OAAJ9wB,QAAI,IAAJA,GAAA,UAAAA,EAAMA,YAAN,eAAY2B,WAAa,GAAW,UACxB,OAAJ3B,QAAI,IAAJA,GAAA,UAAAA,EAAMA,YAAN,eAAY2B,WAAY,EAElCs4B,EAAY77B,OAASsyB,GAAawB,wBAC5B,OAAJlyB,QAAI,IAAJA,GAAA,UAAAA,EAAMA,YAAN,eAAY2B,WAAa,GAAW,UAC7B,OAAJ3B,QAAI,IAAJA,GAAA,UAAAA,EAAMA,YAAN,eAAY2B,WAAY,GAEjB,OAAJ3B,QAAI,IAAJA,GAAA,UAAAA,EAAMA,YAAN,eAAY2B,WAAY,EAUR45B,GAAgB,MAC9C,IAAMC,EAAYF,EAAaxJ,EAE/B,OACE,cAAC,KAAD,UACE,eAAC,KAAD,WACE,eAAC,KAAD,CACEhK,OAAQ,CAAC,GAAI,IADf,UAGE,cAAC,KAAD,UACE,eAAC,KAAD,CAAY3f,MAAO,CAAE0J,MAAO,kCAA5B,iJAE6D,IAC1DooB,EAAYjC,QACX,eAAC,KAAD,CACE7vB,MAAO,CACL+K,MAAO,OACP6N,QAAS,OACToE,OAAQ,SACRsW,cAAe,SACfza,eAAgB,UANpB,UASE,cAAC,KAAWxN,KAAZ,CACEoW,QAAM,EACNzhB,MAAO,CACLyL,UAAW,SACX/B,MAAO,kCAJX,yBASA,eAAC,KAAW2B,KAAZ,CACErL,MAAO,CACLyL,UAAW,SACX/B,MAAO,kCAHX,oBAMUtK,GAAei0B,GANzB,KAMuC,IACpCj0B,GAA2B,GAAZi0B,cAM1B,eAAC,KAAD,CACErzB,MAAO,CACL4Y,QAAS,OACTC,eAAgB,SAChB3Y,aAAc,OACd6K,MAAO,QALX,WASIsnB,IAAWA,GACX,cAAC,KAAD,CAAMvC,SAAU74B,EAAS+I,MAAO,CAAEgd,OAAQ,UAG3CqV,GACC,qBACE70B,IAAI,aACJwC,MAAO,CAAE+K,MAAO,KAChBzN,IAAK+0B,UAKb,cAAC,KAAD,CAAK1S,OAAQ,CAAC,GAAI,IAAK5C,QAAQ,SAA/B,SACGoV,EACC,mCACE,cAAC,KAAD,CAAK/nB,KAAM,GAAX,SACE,cAAC,KAAWyT,UAAZ,CACE7d,MAAO,CACLyL,UAAW,SACX8nB,UAAW,YACXlW,WAAY,IACZpd,SAAU,OACVuzB,SAAU,QACVxW,OAAQ,SACRtT,MAAO,kCARX,SAWE,cAAC,GAAD,CAAUwB,GAAG,WAAb,SAAyBinB,UAK/B,MAGFL,EAAYjC,QACZ,cAAC,KAAD,CAAK7vB,MAAO,CAAE0Y,UAAW,OAAzB,SACE,cAAC,KAAD,UACE,eAAC,KAAWmF,UAAZ,CAAsB7d,MAAO,CAAEyL,UAAW,OAAQxL,SAAU,IAA5D,gCACmB,IAChBb,IACqB,OAApBwyB,SAAoB,IAApBA,QAAA,EAAAA,GAAuBE,EAAY2B,eAAgB,YAM7D,cAAC,EAAD,CACEv9B,KAAK,SACLD,KAAK,UACL0H,QAAS,kBAAMo0B,GAAYA,KAH7B,SAKE,sBAAM10B,UAAU,oBAAhB,6B,SGzKLuxB,K,gCAAAA,E,0BAAAA,E,wBAAAA,E,kBAAAA,E,qBAAAA,Q,KAUE,IC3FHD,G,eD2FS+E,GAA4C,SAAC,GAmBnD,IAAD,MAlBJC,EAkBI,EAlBJA,KACAxrB,EAiBI,EAjBJA,SACA2pB,EAgBI,EAhBJA,YAGA8B,GAaI,EAfJC,SAeI,EAdJC,iBAcI,EAbJF,yBACAG,EAYI,EAZJA,yBACAC,EAWI,EAXJA,YACAC,EAUI,EAVJA,YACAC,EASI,EATJA,mBACA7H,EAQI,EARJA,mBAQI,KAPJ8H,YAOI,EANJC,aAMI,EALJC,iBAKI,SAJJjF,EAII,EAJJA,eACAkF,EAGI,EAHJA,oBACAC,EAEI,EAFJA,cACAriB,EACI,EADJA,QAEQra,EAASkF,IAATlF,KADJ,EAEsD2e,KAAlD5G,EAFJ,EAEIA,eAAgBmC,EAFpB,EAEoBA,WAAYlC,EAFhC,EAEgCA,kBAFhC,EAG0BjZ,oBAAS,GAHnC,mBAGGK,EAHH,KAGYC,EAHZ,OAIoBN,mBAAoBg4B,GAAUmE,gBAJlD,mBAIGzH,EAJH,KAIS4G,EAJT,OAK4Bt7B,qBAL5B,mBAKG49B,EALH,KAKaC,EALb,OAM8B79B,mBAChCiB,EAAKA,KAAK0B,sBAAwB1B,EAAKA,KAAKwB,YAAcxB,EAAKA,KAAK+B,QAD/D86B,EANH,oBAUEC,EAA6B7C,EAAY3H,YACzCyK,IAAgC9C,EAAY3H,YAElDhvB,qBAAU,WACR,IAAMhD,EAAQC,aAAaC,QAAQ,kBAC9BF,EAEFq8B,GACDlJ,IAASsD,GAAUmE,gBAClBa,IAED18B,GAAW,GACX0zB,GACGlyB,IAAI,iBAAkB,CACrBnD,QAAS,CAAEgnB,cAAc,UAAD,OAAYpkB,MAErCgC,MAAK,SAACC,GAAS,IAAD,EACbq6B,GAAe,OAAHr6B,QAAG,IAAHA,GAAA,UAAAA,EAAKvB,YAAL,eAAWg8B,OAAQ,OAEhCx6B,OAAM,eACNyd,SAAQ,kBAAM5gB,GAAW,OAflB+E,IAAQX,MAAM,uDAiBzB,CAACgwB,EAAMkJ,EAAUZ,IAEpB,IAAMzE,EAAkB,SAACt2B,GACvB,IAAM4nB,EAAI,aACRwR,eAAc,OAAE7C,QAAF,IAAEA,OAAF,EAAEA,EAAgBt2B,SAChC7C,KAAI,OAAEg+B,QAAF,IAAEA,OAAF,EAAEA,EAAah+B,KACnBub,KAAM,SACN2Y,YAAa2H,EAAY3H,cAAe,EACxC+F,YAAa,cACbL,QAAQ,EACRgD,aAAa,GACVh6B,GAEL3B,GAAW,GACXg7B,EAAQtD,GAAUkG,SAClB5/B,EACG4G,KAAK,uBAAwB2kB,GAC7BtmB,KAFH,+BAAAjC,EAAA,MAEQ,WAAOkC,GAAP,qBAAAlC,EAAA,0DACAkC,EAAIvB,KAAKse,MADT,wBAEF+a,EAAQtD,GAAUgE,UAFhB,SAGwB7gB,EAAW,eAAKG,GAAW,KAHnD,gBAGMtE,EAHN,EAGMA,QACFkF,EAASlD,EACTM,EAAYtC,EAAQvB,MAAK,SAACiH,GAAD,OAAYA,EAAExa,YAAF,OAAega,QAAf,IAAeA,OAAf,EAAeA,EAAQha,aAClE+W,EAAkB,MAClB9U,YAAW,WACT8U,EAAkBK,GAClBgkB,GAAsBA,MACrB,KAVD,wBAYFj4B,IAAQ4Y,KACN,0EAEFqd,EAAQtD,GAAUmE,gBACd5qB,GAAUA,IAhBZ,4CAFR,uDAqBG9N,OAAM,WACL4B,IAAQX,MAAM,gDACd42B,EAAQtD,GAAUmE,mBAEnBjb,QAzBH,cAAA5f,EAAA,MAyBW,sBAAAA,EAAA,+EAAYhB,GAAW,IAAvB,6CASP69B,GAA+D,oBAClEnG,GAAUmE,eAAiB,CAC1BhN,QACE,cAAC,KAAD,CAAM+J,SAAUuE,EAAhB,SACE,eAAC,KAAD,CAAK1U,OAAQ,CAAC,GAAI,GAAlB,WACIgV,GAA8B,cAAC,KAAD,CAAKvqB,KAAM,GAAX,SAC9B,cAAC,KAAD,CACEvF,MACE6vB,EACI,uFACA,GAJR,SAOE,cAAC,EAAD,CACE3sB,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL+J,MAAO,CACLqd,WAAY,IACZ2X,gBAAiBN,EACb,eACA,GACJO,OAAQP,EAA0B,OAAS,GAC3C9W,OAAQ8W,EAA0B,UAAY,WAEhD/2B,QAAS,SAACwf,GACR,GAAKtlB,EAAKA,KAAK0B,oBAQJm7B,GACJJ,EAAoBnX,OATS,CAClC,IAEMb,EAAG,2CADP,2DACmDhX,WACnD,IACA,QAEFtK,OAAO6G,KAAKya,EAAK,YApBvB,SAyBGzkB,EAAKA,KAAK0B,oBACP,qCACA,qCAIV,cAAC,KAAD,CAAK6Q,KAAM,GAAX,SACE,cAAC,KAAD,CAASvF,MAAOkvB,EAAhB,SACE,eAAC,EAAD,CACEhsB,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL0H,QAAS,WACFi2B,GAAyB1B,EAAQtD,GAAUsG,aAElDl1B,MAAO,CACLqd,WAAY,IACZ2X,gBAAiBpB,EACb,eACA,GACJqB,OAAQrB,EAA0B,OAAS,GAC3ChW,OAAQgW,EAA0B,UAAY,WAblD,WAgBIY,GAAY,IAAI13B,OAAS,GAA1B,aAhBH,iCAoBJ,cAAC,KAAD,CAAKsN,KAAM,GAAX,SACI,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL+J,MAAO,CACLqd,WAAY,IACZ2X,gBAAmC,WAAlBT,EACb,eACA,GACJU,OAA0B,WAAlBV,EAA6B,OAAS,GAC9C3W,OAA0B,WAAlB2W,EAA6B,UAAY,WAEnDp+B,SAAUy+B,EACVj3B,QAAS,SAACwf,GACHyW,GAAyB1B,EAAQtD,GAAUuG,cAdpD,8BAoBJ,cAAC,KAAD,CAAK/qB,KAAM,GAAX,SACE,cAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,SAEI,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAD,CAAK2S,QAAQ,SAAS/c,MAAO,CAAEgd,OAAQ,eAAvC,SACE,cAAC,KAAD,CAAM8S,SAAU74B,iBAqDhC4N,MAAO,oCAjJ0D,eAmJlE+pB,GAAUuG,YAAc,CACvBpP,QACE,cAAC,GAAD,CACEtU,KAAMwiB,EACNnC,YAAaA,EACbE,SAAUgC,EACVjC,SAAU,kBAAMG,EAAQtD,GAAUmE,iBAClCd,eAAc,OAAE7C,QAAF,IAAEA,OAAF,EAAEA,EAAgBt2B,SAChC7C,KAAI,OAAEg+B,QAAF,IAAEA,OAAF,EAAEA,EAAah+B,KACnBkS,SAAUA,EACV+pB,QAASA,EACThgB,QAASA,IAGbrN,MAAO,mBAjK0D,eAmKlE+pB,GAAUsG,WAAa,CACtBnP,QACE,cAAC,GAAD,CACEqP,aAAa,EACblK,cA5KS,OAAX+I,QAAW,IAAXA,OAAA,EAAAA,EAAah+B,QAAQi0B,GAAe,OAAO+J,QAAP,IAAOA,OAAP,EAAOA,EAAah+B,KAErDi0B,GAAcmL,OA2KfvG,oBAAqB,aACrBvzB,OAAO,GACPkW,KAAMwiB,EACNjF,cAAekF,EACfoB,eAAgB,aAChBvG,SAAU+C,EACVzF,mBAAoBA,EACpB6C,WAAY,kBAAMgD,EAAQtD,GAAUmE,iBACpC3D,eAAgBA,EAChBD,gBAAiBA,IAGrBtqB,MAAO,4BApL0D,eAsLlE+pB,GAAUkG,QAAU,CACnB/O,QACE,cAAC,KAAD,UACE,eAAC,KAAD,CACE3b,KAAM,GACNpK,MAAO,CACL4Y,QAAS,OACTC,eAAgB,SAChB0c,QAAS,QALb,UAQE,cAAC,KAAD,CAAMzF,SAAU74B,IAChB,sBAAM+I,MAAO,CAAEwL,WAAY,QAA3B,yDAMN3G,MAAO,wBAxM0D,eA0MlE+pB,GAAUgE,SAAW,CACpB7M,QACE,eAAC,KAAD,WACE,cAAC,KAAD,CACE/lB,MAAO,CACL4Y,QAAS,OACTC,eAAgB,SAChB9N,MAAO,QAJX,SAOE,cAAC,KAAD,CAASrB,MAAO,2BAA4BxT,KAAM,QAEpD,sBACE8J,MAAO,CACL0Y,UAAW,OACXzY,SAAU,OACVwL,UAAW,SACXvL,aAAc,OACdmd,WAAY,MACZtS,MAAO,QAPX,wDAcJlG,MAAO,mCApO0D,GAwO/DA,EAAK,OAAGkwB,QAAH,IAAGA,GAAH,UAAGA,EAAsBzJ,UAAzB,aAAG,EAA6BzmB,MACrCkhB,EAAO,OAAGgP,QAAH,IAAGA,GAAH,UAAGA,EAAsBzJ,UAAzB,aAAG,EAA6BvF,QAEvCyP,GAAgB,SAACrY,GACrB+U,EAAQtD,GAAUmE,gBAClBJ,cAnVAhE,WAqVIxmB,GACFA,KAIEstB,GACJz6B,OAAO06B,YAAc,IAAM,cAAgB,cAE7C,OACE,cAAC,KAAD,CACE7zB,KAAM8xB,EACN5oB,MAAO,IACPlG,MAAOA,EACP4D,OAAQ,KACRktB,UAAU,EACVC,cAAc,EACdv4B,UAAU,eACV8K,SAAU,SAACgV,GAAD,OAAOqY,MACjBhd,UAAW,CAAE+c,QAASE,IATxB,SAWG1P,KC1bM8P,GAAS,SAAC,GAAsK,IAArKrL,EAAoK,EAApKA,QAAS5a,EAA2J,EAA3JA,eAAgBkmB,EAA2I,EAA3IA,OAAQruB,EAAmI,EAAnIA,SAAUyK,EAAyH,EAAzHA,QACzDra,EAASkF,IAATlF,KADkL,GAEzKlB,cACuBC,sBAHkJ,mBAGnLm/B,EAHmL,KAGrKC,EAHqK,OAIlJp/B,oBAAS,GAJyI,mBAInLq/B,EAJmL,KAIrKC,EAJqK,OAKpJt/B,qBALoJ,mBAKnLuzB,EALmL,KAKtKgM,EALsK,OAMhJv/B,mBAAS,SANuI,mBAMnL29B,EANmL,KAMpK6B,EANoK,OAOhJ5f,KAAlCzE,EAPkL,EAOlLA,WAAYlC,EAPsK,EAOtKA,kBAEdwmB,EAAmB,SAAC5kB,GACxBykB,GAAgB,GAChBF,EAAgBvkB,IAGZ8gB,EAAet4B,uBACnB,SAACiR,GAAmC,IAAvBsnB,EAAsB,uDAAN,EACvBC,EAAW,EACf9D,GAAY+D,YAAW,sBAAC,4BAAAx6B,EAAA,sDAChBC,EAAQC,aAAaC,QAAQ,kBACnCuyB,GACGlyB,IADH,uBAC+B,CAC3BnD,QAAS,CAAEgnB,cAAc,UAAD,OAAYpkB,MAErCgC,MAAK,SAACC,GAAS,IAAD,GACb,UAAIA,EAAIvB,YAAR,aAAI,EAAUy9B,UACZ3D,cAAchE,IACd1yB,IAAQmB,QAAQ,yCAGnB0a,SAAQ,YACP2a,GAAY,GACG,KACbE,cAAchE,OAfE,2CAkBb,IAAR6D,KAEL,IAYFr3B,qBAAU,cAEP,CAACo3B,IAOJ,IAKMgE,EAA4B,uCAAG,gCAAAr+B,EAAA,sEAE3Bs+B,EAAY,CAAC5mB,EAAe9W,UAFD,SAGV5D,EAAI4G,KAAK,SAAU,CACxC06B,YACAC,SAAQ,OAAEV,QAAF,IAAEA,OAAF,EAAEA,EAAc9/B,KACxBA,KAAMs+B,IANyB,gBAGzB17B,EAHyB,EAGzBA,KAKRkZ,IACA9V,IAAQmB,QAAR,UACKvE,EAAK+c,MADV,uDATiC,kDAajC3Z,IAAQmB,QAAQ,qDAbiB,yBAejC84B,GAAgB,GAChBrmB,EAAkB,MAhBe,6EAAH,qDAoB5B6mB,EAAiB,SAACC,EAAkBn9B,GACxC,MAAsB,WAAlB+6B,EACEoC,EAAS/1B,SAAS,QAChBpH,GAAY,GAAW,SACfA,EAELm9B,EAAS/1B,SAAS,eACrBpH,GAAY,GAAW,SAGjBA,EAGRm9B,EAAS/1B,SAAS,QAChBpH,GAAY,GAAW,SACfA,EAELm9B,EAAS/1B,SAAS,eACrBpH,GAAY,GAAW,SAGjBA,GA6BhB,OACE,eAAC,GAAD,CAAW6D,UAAU,oBAArB,UACE,sBAAKA,UAAU,kBAAf,UACE,eAAC,KAAWqN,MAAZ,CAAkBrN,UAAU,aAA5B,UACGy4B,GAAU,cAAC,KAAD,CAASjxB,MAAM,SAAf,SACT,wBAAQlH,QAASm4B,EAAjB,SACE,cAAC,KAAD,QAHN,yBAQA,qBAAKz4B,UAAU,YA0BdxF,EAAKA,KAAK0B,sBAAwBixB,GACjC,sBAAKntB,UAAU,sBAAf,UACE,qDACA,cAAC,KAAD,CAAQA,UAAU,mBAAmB6f,SAnH9B,SAACC,GACTiZ,EAAHjZ,EAAoB,SACF,YAkHd,yDAGHtlB,EAAKA,KAAK0B,oBAET,cAACiwB,GAAD,CAAiB3zB,SAAUA,KAA3B,SACG4zB,GAAOvf,KAAI,SAACuH,GAAD,0BAxEOklB,EAAkBn9B,EAwEzB,MACQ,UAAjB+6B,GAA8B9iB,EAAKxb,KAAK2K,SAAS,UAClD,mCACA,sBAAKvD,UAAS,iCACQ,SAAjBk3B,GAA4B9iB,EAAKxb,KAAK2K,SAAS,UAAa,YAAc,GADjE,8BAEV,UAAA/I,EAAKA,YAAL,eAAW2B,UAAW,WAAa,GAFzB,oBAAd,UAIGiY,EAAKuY,SAAW,qBAAK3sB,UAAU,eAAf,0BACjB,cAAC,KAAWwgB,UAAZ,CAAsBxgB,UAAU,YAAhC,SACGoU,EAAK1Y,OAER,cAAC,KAAWsS,KAAZ,CAAiBhO,UAAU,WAA3B,SAAuCoU,EAAKmY,OAC1C,UAAA/xB,EAAKA,YAAL,eAAW2B,WAAY3B,EAAKA,KAAK0B,sBAAwBkY,EAAKxb,KAAK2K,SAAS,UAE5E,qCACE,qBAAKvD,UAAU,gBACf,uBAAMA,UAAU,oBAAhB,eACK,IADL,UAGIstB,GAAqBlZ,EAAM+Y,UAH/B,aAGI,EACI7qB,eAAe,QAAS,CACxBC,sBAAuB,EACvBC,sBAAuB,OAI/B,uBAAMxC,UAAU,6BAAhB,WAA8C,UAAAxF,EAAKA,YAAL,eAAW2B,UAAX,WAlGnCm9B,EAkGgFllB,EAAKxb,KAlGnEuD,EAkG6D,UAAY3B,EAAKA,YAAjB,aAAY,EAAW2B,SAjG3G,WAAlB+6B,EACEoC,EAAS/1B,SAAS,QAChBpH,GAAY,GAAW,GACfA,EAELm9B,EAAS/1B,SAAS,eACrBpH,GAAY,GAAW,GAGjBA,EAGRm9B,EAAS/1B,SAAS,QAChBpH,GAAY,GAAW,GACfA,EAELm9B,EAAS/1B,SAAS,eACrBpH,GAAY,GAAW,GAGjBA,GA6EgD,KAAkF,KAAhI,kBAEA,wBACA,eAAC,KAAWqkB,UAAZ,CAAsBxgB,UAAU,aAAhC,UACGmtB,IAAO,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAASE,SACpBjZ,EAAKxb,OAASsyB,GAAawB,wBAC5BtY,EAAKxb,OAASsyB,GAAaI,kBAC3BlX,EAAKxb,OAASsyB,GAAaqO,kBAC3BnlB,EAAKxb,OAASsyB,GAAasO,aAExB,qBAAKx5B,UAAU,OAAf,eACFmtB,IAAO,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAASC,WAAYhZ,EAAKxb,OAASsyB,GAAawB,wBAA0BtY,EAAKxb,OAASsyB,GAAaqO,mBAAqB,qBAAKv5B,UAAU,OAAf,eARxI,KASK,IACH,sBAAMA,UAAU,kBAAhB,UAEK,UAAAxF,EAAKA,YAAL,eAAW2B,YAAaiY,EAAKxb,KAAK2K,SAAS,UAA5C,UACK+pB,GAAqBlZ,EAAM+Y,GAAaG,GAAqBlZ,EAAM+Y,GAAWkM,EAAejlB,EAAKxb,KAAN,UAAY4B,EAAKA,YAAjB,aAAY,EAAW2B,UAAY,WADpI,aACI,EACEmG,eAAe,QAAS,CACxBC,sBAAuB,EACvBC,sBAAuB,IAJ7B,UAMI8qB,GAAqBlZ,EAAM+Y,UAN/B,aAMI,EACE7qB,eAAe,QAAS,CACxBC,sBAAuB,EACvBC,sBAAuB,IAExBiB,MAAM,KAAK,QAGlB,UAACjJ,EAAKA,YAAN,aAAC,EAAW2B,WAAYiY,EAAKxb,KAAK2K,SAAS,YAC7C,mDAGE2pB,GAAa9Y,EAAM+Y,UAHrB,aAGE,EACI7qB,eAAe,QAAS,CACxBC,sBAAuB,EACvBC,sBAAuB,IAExBiB,MAAM,KAAK,SAKtB,cAAC,KAAWuK,KAAZ,CAAiBhO,UAAU,kBAA3B,SACqB,UAAjBk3B,EAA6B,aAAY,8BAE7C,cAAC,EAAD,CACExsB,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLE,SACGq0B,IAEIA,EAAQE,QAAa,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAamB,oBAC7Cc,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAamB,oBAC/Cc,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaI,kBAC/C6B,EAAQE,QAAa,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAauO,cAC7CtM,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAauO,cAC/CtM,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAasO,YAC/CrM,EAAQuM,WAGfp5B,QAAS,WACH6sB,GACF2L,EACE3L,EAAQC,UACF,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,uBAC1BtB,GAAoB6B,iBACpBE,EAAQE,QACJ,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaI,iBAC1BF,GAAoB2B,aACpBI,EAAQE,QACJ,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,uBAC1BtB,GAAoB4B,wBACpBne,GAGZmqB,EAAiB5kB,IA/BrB,SAkCI+Y,EAEGA,EAAQE,QACL,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAamB,oBAC3Bc,EAAQC,UACL,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaI,kBAC3B6B,EAAQuM,YACH,OAAJtlB,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,wBAC7BS,EAAQE,QACH,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAauO,cAC7BtM,EAAQC,UACH,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAasO,YAC7BrM,EAAQuM,YACH,OAAJtlB,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaqO,iBAC5B,QACA,gBAdF,eAgBN,cAAC,KAAWvrB,KAAZ,CAAiBhO,UAAU,gBAA3B,SACGoU,EAAK7Q,WAER,qBAAKvD,UAAU,gBAAf,SACGoU,EAAKoY,SAAS3f,KAAI,SAAC8sB,EAASntB,GAAV,iBACjB,sBAAKxM,UAAU,eAAf,UACE,cAAC,KAAD,CAASA,UAAU,UAClB25B,EAAQl2B,MAAM,KAAK,IACnB,UAAAk2B,EAAQl2B,MAAM,YAAd,mBAAqB,UAArB,eAAyBhE,QAAS,EACjC,cAAC,KAAD,CACE+H,MAAK,UAAEmyB,EAAQl2B,MAAM,YAAhB,aAAE,EAAqB,GAAGnC,QAAQ,IAAK,IAC5CijB,kBAAmB,SAACrI,GAAD,OAAYA,EAAO0d,eAFxC,SAIE,cAACtZ,GAAA,EAAD,CAAoBtgB,UAAU,WAGhC,+BAX+BwM,UA1HjC4H,EAAK1Y,QALkD,kCAoJnE,cAACywB,GAAD,CAAiB3zB,SAAUA,KAA3B,SACG4zB,GAAOvf,KAAI,SAACuH,GAAD,eACV,mCACCA,EAAKxb,KAAK2K,SAAS,UAAY,6BAChC,sBAAKvD,UAAU,OAAf,UACGoU,EAAKuY,SAAW,qBAAK3sB,UAAU,eAAf,0BACjB,cAAC,KAAWwgB,UAAZ,CAAsBxgB,UAAU,YAAhC,SACGoU,EAAK1Y,OAER,cAAC,KAAWsS,KAAZ,CAAiBhO,UAAU,WAA3B,SAAuCoU,EAAKmY,MAC5C,eAAC,KAAW/L,UAAZ,CAAsBxgB,UAAU,aAAhC,UACOmtB,IAAO,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAASE,SACpBjZ,EAAKxb,OAASsyB,GAAawB,wBAC5BtY,EAAKxb,OAASsyB,GAAaI,kBAC3BlX,EAAKxb,OAASsyB,GAAaqO,kBAC3BnlB,EAAKxb,OAASsyB,GAAasO,aACxB,qBAAKx5B,UAAU,OAAf,eACFmtB,IAAO,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAASC,UAAWhZ,EAAKxb,OAASsyB,GAAawB,wBAA0B,qBAAK1sB,UAAU,OAAf,eAP3F,KAQK,IACH,sBAAMA,UAAU,kBAAhB,mBAEIstB,GAAqBlZ,EAAM+Y,UAF/B,aAEI,EACI7qB,eAAe,QAAS,CACxBC,sBAAuB,EACvBC,sBAAuB,IAExBiB,MAAM,KAAK,KAhBpB,cAqBI6pB,GAAqBlZ,EAAM+Y,UArB/B,aAqBI,EACI7qB,eAAe,QAAS,CACxBC,sBAAuB,EACvBC,sBAAuB,IAExBiB,MAAM,KAAK,MAGlB,cAAC,KAAWuK,KAAZ,CAAiBhO,UAAU,kBAA3B,uCAIA,cAAC,EAAD,CACE0K,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLE,SACGq0B,IAEIA,EAAQE,QAAa,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAamB,oBAC7Cc,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAamB,oBAC/Cc,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaI,kBAC/C6B,EAAQE,QAAa,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAauO,cAC7CtM,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAauO,cAC/CtM,EAAQC,UAAe,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAasO,YAC/CrM,EAAQuM,WAGfp5B,QAAS,WACH6sB,GACF2L,EACE3L,EAAQC,UACF,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,uBAC1BtB,GAAoB6B,iBACpBE,EAAQE,QACJ,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaI,iBAC1BF,GAAoB2B,aACpBI,EAAQE,QACJ,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,uBAC1BtB,GAAoB4B,wBACpBne,GAGZmqB,EAAiB5kB,IA/BrB,SAkCI+Y,EAEGA,EAAQE,QACL,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAamB,oBAC3Bc,EAAQC,UACH,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaI,kBAC7B6B,EAAQuM,YACH,OAAJtlB,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAawB,wBAC7BS,EAAQE,QACH,OAAJjZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAauO,cAC7BtM,EAAQC,UACH,OAAJhZ,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAasO,YAC7BrM,EAAQuM,YACH,OAAJtlB,QAAI,IAAJA,OAAA,EAAAA,EAAMxb,QAASsyB,GAAaqO,iBAC5B,QACA,gBAdF,eAgBN,cAAC,KAAWvrB,KAAZ,CAAiBhO,UAAU,gBAA3B,SACGoU,EAAK7Q,WAER,qBAAKvD,UAAU,gBAAf,SACGoU,EAAKoY,SAAS3f,KAAI,SAAC8sB,EAASntB,GAAV,iBACjB,sBAAKxM,UAAU,eAAf,UACE,cAAC,KAAD,CAASA,UAAU,UAClB25B,EAAQl2B,MAAM,KAAK,IACnB,UAAAk2B,EAAQl2B,MAAM,YAAd,mBAAqB,UAArB,eAAyBhE,QAAS,EACjC,cAAC,KAAD,CACE+H,MAAK,UAAEmyB,EAAQl2B,MAAM,YAAhB,aAAE,EAAqB,GAAGnC,QAAQ,IAAK,IAC5CijB,kBAAmB,SAACrI,GAAD,OAAYA,EAAO0d,eAFxC,SAIE,cAACtZ,GAAA,EAAD,CAAoBtgB,UAAU,WAGhC,+BAX+BwM,UA/Fd4H,EAAK1Y,gBAsHxC,cAAC,GAAD,CACE+6B,kBAAgB,EAChBH,KAAMsC,EACNpC,SAAU,aACVI,YAAa8B,EACb/B,YAAazB,EACb2B,mBAjagB,SAACr7B,GACrB4O,GAAYA,KAiaRmsB,wBAA0C,UAAjBW,EACzBD,oBAAqBiC,EACrBzE,YAAa,CACX3H,cACAl0B,KAAI,OAAE8/B,QAAF,IAAEA,OAAF,EAAEA,EAAc9/B,KACpB45B,QAAQ,EACRmD,gBAnagB,WAClBrE,IAAWgE,cAAchE,MAoazBxmB,SAAU,WACR+tB,GAAgB,GAChBF,OAAgB9pB,IAGlBkjB,eAAgBxf,EAChB2kB,cAAeA,EACfriB,QAASA,QC1dJglB,GAAS,SAAC,GAWT,EAVZnB,aAUY,EATZC,gBASY,EARZmB,eAQa,IAAD,IAPZC,EAOY,EAPZA,2BAGAC,GAIY,EANZC,oBAMY,EALZC,QAKY,EAJZF,sBACAG,EAGY,EAHZA,oBAEAtlB,GACY,EAFZ0K,mBAEY,EADZ1K,SACY,EACuCsE,KAA3C5G,EADI,EACJA,eAAgB/B,EADZ,EACYA,WADZ,KACwBkE,WACInb,oBAAS,IAFrC,mBAEL6gC,EAFK,KAESC,EAFT,OAGkC9gC,oBAAS,GAH3C,mBAGL+gC,EAHK,KAGYC,EAHZ,KAII,SAAGhoB,QAAH,IAAGA,GAAH,UAAGA,EAAgBioB,2BAAnB,aAAG,EAAqC5hC,MAC7BmhC,GAA8B,IAAIt6B,OAE7D3B,qBAAU,WACRu8B,GAAgB,GAChBE,GAAmB,KAClB,CAAChoB,IAEJ,IAAMkoB,EAAgB,uCAAG,WAAO7hC,GAAP,SAAAiC,EAAA,sEAER,UAATjC,EACFyhC,GAAgB,GAEhBE,GAAmB,GALA,SAOf1iC,EAAIod,IAAI,6BAA8B,CAC1CtU,IAAG,OAAE4R,QAAF,IAAEA,OAAF,EAAEA,EAAgB9W,SACrB7C,SATmB,OAWrB4X,GAAW,SAACD,GAAD,OACTA,EAAQ1D,KAAI,SAAC4I,GAAD,mBAAC,eACRA,GADO,IAEVilB,sBACEjlB,EAAOha,YAAP,OAAoB8W,QAApB,IAAoBA,OAApB,EAAoBA,EAAgB9W,WAAqB,UAAT7C,GAE5C6c,EAAOilB,sBACbC,yBACEllB,EAAOha,YAAP,OAAoB8W,QAApB,IAAoBA,OAApB,EAAoBA,EAAgB9W,WAAqB,aAAT7C,GAE5C6c,EAAOklB,iCArBI,uGAAH,sDA2BhB5P,GACU,OAAdxY,QAAc,IAAdA,OAAA,EAAAA,EAAgBoE,aAChBjQ,IAAO,IAAIL,MAAmB,OAAdkM,QAAc,IAAdA,OAAA,EAAAA,EAAgBqoB,cAAe,OAAOC,QACpDn0B,IAAO,IAAIL,QAEgB,cAAf,OAAdkM,QAAc,IAAdA,OAAA,EAAAA,EAAgB+mB,UACZwB,EAAqD,4BAAlB,OAAdvoB,QAAc,IAAdA,OAAA,EAAAA,EAAgB2E,aACrC6jB,EAC+B,4BAArB,OAAdxoB,QAAc,IAAdA,OAAA,EAAAA,EAAgB4E,gBAElB,OACE,cAAC2T,GAAD,CACEC,SAAUA,EACV7uB,qBAAqB,EACrB8D,UAAY+qB,EAA8B,GAAnB,iBAHzB,SAKE,iCAEKA,GACA,cAAC,GAAD,CAAQoC,SAAS,EAAO5a,eAAgBA,EAAgBsC,QAASA,IAGnEkW,IACE+P,IACAV,KACD,OAAC7nB,QAAD,IAACA,OAAD,EAACA,EAAgBmoB,wBACf,sBAAK16B,UAAU,0BAAf,UACE,cAAC,KAAD,IACA,sBAAKA,UAAU,kCAAf,UACE,cAAC,KAAWqN,MAAZ,CAAkBC,MAAO,EAAzB,iDAGA,cAAC,KAAWkT,UAAZ,kKAKA,eAAC,IAAD,CACE5nB,KAAK,OACL0H,QAAS,WACP65B,EAAoB,MACpBH,EAAqBznB,IAJzB,uBAQE,cAAC,KAAD,UAGJ,cAAC,KAAD,CACEvS,UAAU,UACVM,QAAS,kBAAMm6B,EAAiB,eAIvC1P,IACEgQ,IACAT,KACD,OAAC/nB,QAAD,IAACA,OAAD,EAACA,EAAgBooB,2BACf,sBAAK36B,UAAU,0BAAf,UACE,cAAC,KAAD,IACA,sBAAKA,UAAU,kCAAf,UACE,cAAC,KAAWqN,MAAZ,CAAkBC,MAAO,EAAzB,gDAGA,cAAC,KAAWkT,UAAZ,4KAKA,eAAC,IAAD,CACE5nB,KAAK,OACL0H,QAAS,WACP65B,EAAoB,wBACpBH,EAAqBznB,IAJzB,uBAQE,cAAC,KAAD,UAGJ,cAAC,KAAD,CACEvS,UAAU,UACVM,QAAS,kBAAMm6B,EAAiB,wB,UCjKnCtiC,GAAYC,IAAOC,IAAV,0hCC6EP2iC,GAhD+B,SAAC,GAcxC,IAbLC,EAaI,EAbJA,OACAC,EAYI,EAZJA,SACAC,EAWI,EAXJA,SACAtb,EAUI,EAVJA,SACAub,EASI,EATJA,SACAC,EAQI,EARJA,aACAC,EAOI,EAPJA,cAOI,IANJ1hC,eAMI,aALJ2hC,gBAKI,aAJJC,gBAII,MAJO,GAIP,MAHJC,sBAGI,aAFJC,gBAEI,MAFO,eAEP,MADJC,kBACI,MADS,oBACT,EACJ,OACE,cAAC,GAAD,UACE,cAAC,KAAD,CACEV,OAAQA,EACRniC,SAAUc,EACV2hC,SAAUA,EACVL,SAAUA,EACVQ,SAAUA,EACVP,SAAUA,EACVtb,SAAUA,EACVub,SAAUA,EACVC,aAAcA,EACdC,cAAeA,EACfG,eAAgBA,EAChBz7B,UAAU,yBAZZ,SAcGpG,EACC,sBAAKoG,UAAU,oBAAf,UACE,cAACI,EAAA,EAAD,IACA,gFAGF,sBAAKJ,UAAU,mBAAf,UACE,cAAC,KAAD,CAAsBnH,KAAM,KAC3B8iC,EACAH,GAAY,sBAAMx7B,UAAU,mBAAhB,SAAoCw7B,YCrEhDI,GAAuBxjC,IAAOC,IAAV,yyNA+SpBwjC,GAAWzjC,IAAOC,IAAV,uxLAMjB,qBAAGi+B,KAEC39B,YADA,iGAKAA,YALA,6JC3RKmjC,GAA6B,WAAO,IAAD,UAC/B7xB,IAAKC,UAAbC,EADuC,oBAEtCoI,EAAmB4G,KAAnB5G,eAFsC,EAGlBhZ,qBAHkB,mBAGvCwiC,EAHuC,KAG/BC,EAH+B,OAIhBziC,oBAAS,GAJO,mBAIvCK,EAJuC,KAI9BC,EAJ8B,OAKdN,oBAAS,GALK,mBAKvC0iC,EALuC,KAK7BC,EAL6B,OAMF3iC,mBAAc,UANZ,mBAMvC4iC,EANuC,KAMvBC,EANuB,OAOF7iC,mBAAc,SAPZ,mBAOvC8iC,EAPuC,KAOvBC,EAPuB,OAQI/iC,mBAAc,SARlB,mBAQvCgjC,EARuC,KAQpBC,EARoB,OASAjjC,mBAAc,SATd,mBASvCkjC,EATuC,KAStBC,EATsB,OAUFnjC,mBAAc,IAVZ,mBAUvCojC,EAVuC,KAUvBC,EAVuB,OAWZrjC,qBAXY,mBAWvCsjC,EAXuC,KAW5BC,EAX4B,OAYIvjC,oBAAS,GAZb,oBAYvCwjC,GAZuC,MAYpBC,GAZoB,MAcxC5yB,GAAQ,uCAAG,WAAO4f,GAAP,uBAAAnvB,EAAA,6DACfhB,GAAW,GACLiB,EAAQC,aAAaC,QAAQ,kBACnC4hC,EAAkB5S,GAHH,SAIThxB,EACHyF,KADG,wBAGF,CACEw+B,qBAAoB,OAAEd,QAAF,IAAEA,IAAkB,SACxCe,iBAAgB,UAAE/5B,GAAgB,OAAC6mB,QAAD,IAACA,OAAD,EAACA,EAAQmT,oBAA3B,QAA2C,EAC3DC,mBAAyB,OAANpT,QAAM,IAANA,OAAA,EAAAA,EAAQqT,aAAc,EACzCC,kCACQ,OAANtT,QAAM,IAANA,OAAA,EAAAA,EAAQqT,aAAc,EACxBE,qCACQ,OAANvT,QAAM,IAANA,OAAA,EAAAA,EAAQqT,aAAc,EACxBG,uBAA6B,OAANxT,QAAM,IAANA,OAAA,EAAAA,EAAQqT,aAAc,EAC7CI,sBACQ,OAANzT,QAAM,IAANA,OAAA,EAAAA,EAAQqT,aAAc,EAAtB,OAA0BrT,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAQqT,YAAc,EAClDK,+BAAgC,SAChCC,2BAA4B,EAC5BC,kCAAmC,SACnCC,8BAA+B,EAC/BC,qBAAoB,OAAEzB,QAAF,IAAEA,IAAkB,QACxC0B,wBAAuB,OAAExB,QAAF,IAAEA,IAAqB,QAC9CyB,2BAA0B,OAAEvB,QAAF,IAAEA,IAAmB,QAC/CwB,iBAAgB,UAAE96B,GAAgB,OAAC6mB,QAAD,IAACA,OAAD,EAACA,EAAQkU,mBAA3B,QAA0C,EAC1DC,oBAAmB,UAAEh7B,GAAgB,OAAC6mB,QAAD,IAACA,OAAD,EAACA,EAAQoU,sBAA3B,QAA6C,EAChEC,uBAAsB,UAAEl7B,GAAgB,OAAC6mB,QAAD,IAACA,OAAD,EAACA,EAAQsU,oBAA3B,QAA2C,GAEnE,CACEpmC,QAAS,CACPgnB,cAAc,UAAD,OAAYpkB,MAI9BgC,MAAK,SAACxB,GACL0gC,EAAU1gC,EAASE,MACnB0gC,GAAY,MAEbl/B,OAAM,SAACC,GACNC,QAAQC,IAAIF,EAAI2B,SAChBA,IAAQX,MAAM,6DAEfwc,SAAQ,WACP5gB,GAAW,MA5CA,2CAAH,sDAmDR0kC,GACJ,yHAEE,uBACA,uBACA,qBAAI57B,MAAO,CAAE67B,UAAW,WAAxB,UACE,8VAKA,gEACA,gFACA,4IAIA,qIAIA,4FAIF,uBAxBF,uVA+BIC,GACJ,qhBAwEIC,GAAkB,SACtB9lC,GADsB,OAOtB,qEACyB,6CADzB,4BAC2E,IACxEA,EAFH,oDAEmD,8CAFnD,0BAGqBA,EAHrB,mBAOI+lC,GAAiB,CACrBzB,iBAAkB,CAAE9Z,KAAMmb,GAAa/2B,MAAO,oBAC9Cy2B,iBAAkB,CAAE7a,KA7EpB,2dA6EqC5b,MAAO,uBAC5C22B,oBAAqB,CAAE/a,KAAMqb,GAAcj3B,MAAO,6BAClD41B,kBAAmB,CAAEha,KArErB,sHAGE,uBAHF,sGAME,uBANF,uDAQE,uBARF,iSAaE,uBAbF,4JAgBE,uBAhBF,wNAoBE,uBApBF,uRAyBE,uBAzBF,sXA+BE,uBA/BF,2HAkCE,uBAlCF,uGAqCE,uBArCF,2FAqE2C5b,MAAO,eAClDg2B,sBAAuB,CAAEpa,KA1BzB,4OA0B2C5b,MAAO,uCAClDo3B,iBAAkB,CAChBxb,KAAMsb,GAAgB,eACtBl3B,MAAO,mBAETq3B,iBAAkB,CAChBzb,KAAMsb,GAAgB,sBACtBl3B,MAAO,mBAETs3B,oBAAqB,CACnB1b,KAAMsb,GAAgB,6BACtBl3B,MAAO,mBAETu3B,kBAAmB,CACjB3b,KAAMsb,GAAgB,wBACtBl3B,MAAO,oBAIX,OACE,eAACo0B,GAAD,WACE,qBAAK57B,UAAU,mBAAf,SACE,qBAAKA,UAAU,2BAAf,UACI+7B,GAAUE,EACV,qCACE,cAAC,KAAW5uB,MAAZ,CAAkBrN,UAAU,QAA5B,iDAGA,eAAC,IAAD,CACEmK,KAAMA,EACNtR,KAAK,QACL+vB,OAAO,WACPxe,SAAUA,GAJZ,UAME,cAAC,KAAD,CAAKkY,OAAQ,CAAC,EAAG,GAAItiB,UAAU,OAA/B,SACE,eAAC,KAAD,CAAKA,UAAU,OAAO+M,KAAM,GAA5B,UACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,cACLsoB,MAAO,yDAAgB,cAAC,IAAD,CAAQhkB,UAAU,mBAAmBpH,KAAK,OAAO0H,QAAS,kBAAMw8B,EAAa6B,GAAezB,mBAA5F,SACvB,cAAC5c,GAAA,EAAD,SAGAtgB,UAAU,YACV2C,MAAO,CAAEqd,WAAY,QACrB1V,MAAO,CACL,CACE1L,QAAS,0CACT+I,UAAW,SAACC,EAAGvI,GACb,OAAI8D,GAAiB9D,GAAS,EACrBlB,QAAQ0J,UAEV1J,QAAQC,OACb,8CAhBV,SAuBE,cAAC,KAAD,CACE+D,iBAAiB,IACjBC,kBAAkB,IAClBpC,UAAU,yBACVgC,OAAO,MACP6B,YAAY,UACZ5B,aAAc,MAGlB,eAAC,KAAD,CACEquB,aAAa,SACb3tB,MAAO,CAAE+K,MAAO,KAChBrO,MAAO88B,EACPtc,SAAU,SAACxgB,GAAD,OAAW+8B,EAAkB/8B,IACvCklB,kBAAmB,SAACrI,GAAD,OAAYA,EAAO0d,eALxC,UAOE,cAAC,KAAOoF,OAAR,CAAe3/B,MAAM,SAArB,oBACA,cAAC,KAAO2/B,OAAR,CAAe3/B,MAAM,QAArB,2BAKN,eAAC,KAAD,CAAKW,UAAU,OAAO+M,KAAM,GAA5B,UACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,aACLsoB,MAAO,4DAAmB,cAAC,IAAD,CAAQhkB,UAAU,mBAAmBpH,KAAK,OAAO0H,QAAS,kBAAMw8B,EAAa6B,GAAeV,mBAA5F,SACxB,cAAC3d,GAAA,EAAD,SAEFtgB,UAAU,YACV2C,MAAO,CAAEqd,WAAY,QANvB,SAQE,cAAC,KAAD,CACE7d,iBAAiB,IACjBC,kBAAkB,IAClBpC,UAAU,yBACVgC,OAAO,MACP6B,YAAY,UACZ5B,aAAc,MAGlB,eAAC,KAAD,CACEquB,aAAa,QACb3tB,MAAO,CAAE+K,MAAO,KAChBrO,MAAOg9B,EACPxc,SAAU,SAACxgB,GAAD,OAAWi9B,EAAkBj9B,IACvCklB,kBAAmB,SAACrI,GAAD,OAAYA,EAAO0d,eALxC,UAOE,cAAC,KAAOoF,OAAR,CAAe3/B,MAAM,SAArB,oBACA,cAAC,KAAO2/B,OAAR,CAAe3/B,MAAM,QAArB,yBAGJ,eAAC,KAAD,CAAKW,UAAU,OAAO+M,KAAM,GAA5B,UACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,gBACLsoB,MAAO,kEAAsB,cAAC,IAAD,CAAQhkB,UAAU,mBAAmBpH,KAAK,OAAO0H,QAAS,kBAAMw8B,EAAa6B,GAAeR,sBAA5F,SAC3B,cAAC7d,GAAA,EAAD,SAEFtgB,UAAU,YACV2C,MAAO,CAAEqd,WAAY,QANvB,SAQE,cAAC,KAAD,CACE7d,iBAAiB,IACjBC,kBAAkB,IAClBpC,UAAU,yBACVgC,OAAO,MACP6B,YAAY,UACZ5B,aAAc,MAGlB,eAAC,KAAD,CACEquB,aAAa,QACb3tB,MAAO,CAAE+K,MAAO,KAChBrO,MAAOk9B,EACP1c,SAAU,SAACxgB,GAAD,OAAWm9B,EAAqBn9B,IAC1CklB,kBAAmB,SAACrI,GAAD,OAAYA,EAAO0d,eALxC,UAOE,cAAC,KAAOoF,OAAR,CAAe3/B,MAAM,SAArB,oBACA,cAAC,KAAO2/B,OAAR,CAAe3/B,MAAM,QAArB,yBAGJ,eAAC,KAAD,CAAKW,UAAU,OAAO+M,KAAM,GAA5B,UACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,cACLsoB,MAAO,4EAAgC,cAAC,IAAD,CAAQhkB,UAAU,mBAAmBpH,KAAK,OAAO0H,QAAS,kBAAMw8B,EAAa6B,GAAenB,wBAA5F,SACrC,cAACld,GAAA,EAAD,SAEFtgB,UAAU,YACV2C,MAAO,CAAEqd,WAAY,QANvB,SAQE,cAAC,KAAD,CACE7d,iBAAiB,IACjBC,kBAAkB,IAClBpC,UAAU,yBACVgC,OAAO,MACP6B,YAAY,UACZ5B,aAAc,MAGlB,eAAC,KAAD,CACEquB,aAAa,QACb3tB,MAAO,CAAE+K,MAAO,KAChBrO,MAAOo9B,EACP5c,SAAU,SAACxgB,GAAD,OAAWq9B,EAAmBr9B,IACxCklB,kBAAmB,SAACrI,GAAD,OAAYA,EAAO0d,eALxC,UAOE,cAAC,KAAOoF,OAAR,CAAe3/B,MAAM,SAArB,oBACA,cAAC,KAAO2/B,OAAR,CAAe3/B,MAAM,QAArB,yBAGJ,cAAC,KAAD,UACE,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,cACLsoB,MAAO,oDAAc,cAAC,IAAD,CAAQhkB,UAAU,mBAAmBpH,KAAK,OAAO0H,QAAS,kBAAMw8B,EAAa6B,GAAevB,oBAA5F,SACrB,cAAC9c,GAAA,EAAD,SAEAtgB,UAAU,YACV2C,MAAO,CAAEqd,WAAY,QANvB,SAQE,cAAC,IAAD,CAAOnc,YAAY,YAIzB,cAAC,IAAD,CACEhL,KAAK,SACLD,KAAK,UACLyH,SAAS,SACTL,UAAU,aACVpG,QAASA,EACT+I,MAAO,CAAE0J,MAAO,OAAQzJ,SAAU,OAAQgI,OAAQ,QANpD,oCAaJ,mCACE,cAAC,KAAD,CAAK0X,OAAQ,CAAC,EAAG,GAAjB,SACE,eAACuZ,GAAD,CAAUvF,MAAM,EAAMt2B,UAAU,mBAAhC,UACE,eAAC,KAAD,CAAK+M,KAAM,GAAI/M,UAAU,aAAzB,UACE,cAAC,KAAD,CAAYA,UAAU,iBAAtB,6BAGA,cAAC,IAAD,CACEA,UAAU,eACVlH,SAAUikC,GACVnjC,QAASmjC,GACTtvB,KAAM,cAAC,KAAD,CAAmBpB,MAAM,6BAC/B/L,QAAO,sBAAE,oCAAAzF,EAAA,6DACPmiC,IAAqB,GACfliC,EAAQC,aAAaC,QAAQ,kBAF5B,SAGDhC,EAASyF,KAAT,+BAEJ,CAAEiqB,QAASqT,EACTvkB,KAAMjF,EACN0qB,qBAAoB,OAAEd,QAAF,IAAEA,IAAkB,SACxCe,iBAAgB,UAAE/5B,GAAgB,OAACw5B,QAAD,IAACA,OAAD,EAACA,EAAgBQ,oBAAnC,QAAmD,EACnEC,mBAAiC,OAAdT,QAAc,IAAdA,OAAA,EAAAA,EAAgBU,aAAc,EACjDC,kCACc,OAAdX,QAAc,IAAdA,OAAA,EAAAA,EAAgBU,aAAc,EAC9BE,qCACc,OAAdZ,QAAc,IAAdA,OAAA,EAAAA,EAAgBU,aAAc,EAC9BG,uBAAqC,OAAdb,QAAc,IAAdA,OAAA,EAAAA,EAAgBU,aAAc,EACrDI,sBACc,OAAdd,QAAc,IAAdA,OAAA,EAAAA,EAAgBU,aAAc,EAA9B,OAAkCV,QAAlC,IAAkCA,OAAlC,EAAkCA,EAAgBU,YAAc,EAChEK,+BAAgC,SAChCC,2BAA4B,EAC5BC,kCAAmC,SACnCC,8BAA+B,EAC/BC,qBAAoB,OAAEzB,QAAF,IAAEA,IAAkB,QACxC0B,wBAAuB,OAAExB,QAAF,IAAEA,IAAqB,QAC9CyB,2BAA0B,OAAEvB,QAAF,IAAEA,IAAmB,QAC/CwB,iBAAgB,UAAE96B,GAAgB,OAACw5B,QAAD,IAACA,OAAD,EAACA,EAAgBuB,mBAAnC,QAAkD,EAClEC,oBAAmB,UAAEh7B,GAAgB,OAACw5B,QAAD,IAACA,OAAD,EAACA,EAAgByB,sBAAnC,QAAqD,EACxEC,uBAAsB,UAAEl7B,GAAgB,OAACw5B,QAAD,IAACA,OAAD,EAACA,EAAgB2B,oBAAnC,QAAmD,GAE3E,CACEpmC,QAAS,CACPgnB,cAAc,UAAD,OAAYpkB,GACzBmkC,MAAO,UAIZniC,MAAK,SAACxB,GACL,IAAI+Z,EACA6pB,EACU,IAAV5jC,IACF+Z,EAAO,OAAG/Z,QAAH,IAAGA,GAAH,UAAGA,EAAUE,YAAb,aAAG,EAAgB6Z,QAC1B6pB,EAAI,OAAG5jC,QAAH,IAAGA,GAAH,UAAGA,EAAUE,YAAb,aAAG,EAAgB0jC,MAErB7pB,EACFpR,GAASoR,GACA6pB,GACTp5B,GACEo5B,EACA,qBAILliC,OAAM,SAACC,GACNC,QAAQC,IAAIF,EAAI2B,SAChBA,IAAQX,MAAM,+EAEfwc,SAAQ,WACPuiB,IAAqB,MAxDhB,2CALX,uBAoEDjB,EAAOoD,EAAI,EACV,mCACE,eAAC,KAAD,CAAKpyB,KAAM,GAAX,UACE,eAAC,KAAD,CAAK/M,UAAU,cAAcsiB,OAAQ,CAAC,EAAG,GAAzC,UACE,cAAC,KAAD,CAAK3f,MAAO,CAAC+K,MAAO,OAApB,SACE,eAAC,KAAW8S,UAAZ,WACE,qBAAKxgB,UAAU,gDAAf,qCAGA,sBAAKA,UAAU,2BAA2B2C,MAAO,CAACu1B,QAAQ,GAAD,OAAK1/B,KAAa,MAAQ,SAAnF,UACE,qBAAKwH,UAAU,yBAAyB2C,MAAO,CAAC+K,MAAO,OAAvD,SACE,cAAC,KAAD,CAAU1N,UAAU,kBAEtB,sBAAMA,UAAU,mBAAmB2C,MAAO,CAACyL,UAAW,SAAUV,MAAO,OAAvE,SACG3L,GAAc,OACbg6B,QADa,IACbA,OADa,EACbA,EAAQ7vB,iBAOlB,cAAC,KAAD,CAAKvJ,MAAO,CAAC+K,MAAO,OAApB,SACE,eAAC,KAAW8S,UAAZ,WACE,qBAAKxgB,UAAS,wCAAyC,OAAN+7B,QAAM,IAANA,OAAA,EAAAA,EAAQpb,GAAI,EAAK,mBAAqB,kBAAvF,sCAGA,qBAAK3gB,UAAU,iBAAf,SACE,sBAAMA,UAAS,WAAY,OAAN+7B,QAAM,IAANA,OAAA,EAAAA,EAAQpb,GAAI,EAAK,aAAe,WAAtC,qBACfhe,MAAO,CAACyL,UAAW,SAAUV,MAAO,QADpC,SAEG3L,GAAc,OACbg6B,QADa,IACbA,OADa,EACbA,EAAQpb,eAOpB,eAAC,KAAD,CAAK3gB,UAAU,aAAf,UACE,cAAC,KAAD,CAAK2C,MAAO,CAAC+K,MAAO,OAApB,SACA,eAAC,KAAW8S,UAAZ,WACE,qBAAKxgB,UAAU,mEAAf,wBAGA,qBAAKA,UAAU,2CAAf,4GAGA,qBAAKA,UAAU,2CAAf,4EAGA,qBAAKA,UAAU,sFAAf,SACE,6FAMJ,cAAC,KAAD,CAAK2C,MAAO,CAAC+K,MAAO,OAApB,SACA,eAAC,KAAW8S,UAAZ,WACE,qBAAKxgB,UAAU,oEAAf,mBAGA,qBAAKA,UAAU,6CAAf,SACG+B,GAAc,OACbg6B,QADa,IACbA,GADa,UACbA,EAAQqD,gBADK,aACb,EAAkBC,oBAGtB,qBAAKr/B,UAAU,6CAAf,SACG+B,GAAc,OACbg6B,QADa,IACbA,GADa,UACbA,EAAQuD,oBADK,aACb,EAAsBD,oBAG1B,qBAAKr/B,UAAU,wFAAf,SACE,iCACG+B,IACO,OAANg6B,QAAM,IAANA,GAAA,UAAAA,EAAQqD,gBAAR,eAAkBC,mBAAlB,OAAqCtD,QAArC,IAAqCA,GAArC,UAAqCA,EAAQuD,oBAA7C,aAAqC,EAAsBD,oCAUzE,cAAC,KAAD,CAAKtyB,KAAM,GAAX,SACE,cAAC,KAAWyT,UAAZ,qFAMJ,cAAC,KAAD,CAAKzT,KAAM,GAAX,SACE,cAAC,IAAD,CACElU,KAAK,SACLD,KAAK,UACLyH,SAAS,SACTL,UAAU,aACV2C,MAAO,CACL0J,MAAO,OACPzJ,SAAU,OACVgI,OAAQ,QAEVtK,QArfD,WACjB47B,GAAY,IA0eI,mDAsCXH,GAAUE,IAAe,qBAAKj8B,UAAU,+BAAf,SAC1B,sBAAKA,UAAU,+CAAf,UACE,cAAC,KAAWgO,KAAZ,CAAiBhO,UAAU,YAA3B,+HAIA,qBAAK2C,MAAO,CAACwL,WAAW,GAAD,OAAM3V,KAAa,OAAS,KAAnD,SACE,+BACE,mDACA,uEACA,6CACA,qCACA,0FACA,qDACA,oEAKR,cAAC,KAAD,CACI4S,OAAQ,KACRP,UAAWgyB,EACXr1B,MAAK,OAAEq1B,QAAF,IAAEA,OAAF,EAAEA,EAAWr1B,MAClBsD,SAAU,kBAAMgyB,OAAajuB,IAJjC,gBAMKguB,QANL,IAMKA,OANL,EAMKA,EAAWzZ,WCnmBTmc,GAAY,SAAC,GAAD,IAAG17B,EAAH,EAAGA,YAAa/K,EAAhB,EAAgBA,SAAa0mC,EAA7B,kDACvB,cAAC,IAAD,CACE37B,YAAaA,EACb/K,SAAUA,EACV2mC,OAAQ,SAAC3f,GACH0f,EAAKC,QACPD,EAAKC,OAAOD,EAAK9jC,KAAMokB,EAAE5D,OAAO7c,WAM3BqgC,GAAc,SAAC,GAAD,IACzB77B,EADyB,EACzBA,YACA/K,EAFyB,EAEzBA,SACA2rB,EAHyB,EAGzBA,QAHyB,4DAMzB,cAAC,KAAD,CACE5gB,YAAaA,EACb/K,SAAUA,EACV2rB,QAASA,EACTF,kBAAmB,SAACL,GAAD,OAAaA,EAAQM,eAI/Bmb,GAAsB,SAAC,GAKxB,IAJV7mC,EAIS,EAJTA,SACA8mC,EAGS,EAHTA,mBACAC,EAES,EAFTA,uBAES,IADTxtB,qBACS,MADO,GACP,EACT,OACE,cAAC,KAAD,CACEiS,KAAK,WACLD,YAAU,EACVxrB,KAAK,QACL8J,MAAO,CAAE+K,MAAO,OAAQ9C,OAAQ,QAChC/G,YAAY,oCACZxE,MAAOugC,EACP/f,SAAUggB,EACV/mC,SAAUA,EACVgnC,iBAAiB,QACjBvb,kBAAmB,SAACL,GAAD,OAAaA,EAAQM,YAV1C,SAYGnS,EAAcxF,KAAI,SAACkH,GAAD,OACjB,cAAC,KAAOirB,OAAR,CAAe3/B,MAAO0U,EAAa6E,IAAKoL,MAAOjQ,EAAarY,KAA5D,SACE,qBAAKsE,UAAU,yBAAf,SAAyC+T,EAAarY,eA0BnDqkC,GAAY,SAAC,GAAD,QACvBrQ,YADuB,MAChB,GADgB,MAEvB7rB,mBAFuB,MAET,GAFS,MAGvB/K,gBAHuB,SAIpB0mC,EAJoB,yDAMvB,cAAC,KAAD,CACE9P,KAAMA,EACN52B,SAAUA,EACV+K,YAAaA,EACb7D,UAAU,yBACVy/B,OAAQ,SAAC3f,GACH0f,EAAKC,QACPD,EAAKC,OAAOD,EAAK9jC,KAAMokB,EAAE5D,OAAO7c,WC5E3B2gC,GAAe,SAAC,GAAD,IAC1BtQ,EAD0B,EAC1BA,KACA7rB,EAF0B,EAE1BA,YACA/K,EAH0B,EAG1BA,SACG0mC,EAJuB,qEAAC,eAMxBA,GANuB,IAO1BtV,MAAO6V,GAAU,aACfrQ,OACA7rB,cACA/K,YACG0mC,OAmCMS,GAAe,SAAC,GAAD,IAC1B31B,EAD0B,EAC1BA,MACAzG,EAF0B,EAE1BA,YACA/K,EAH0B,EAG1BA,SACG0mC,EAJuB,sEAAC,eAMxBA,GANuB,IAO1Bl1B,MAAOA,GAAS,GAChB4f,MAAOqV,GAAU,aAAE17B,cAAa/K,YAAa0mC,OAGlCU,GAAiB,SAAC,GAAD,IAC5Br8B,EAD4B,EAC5BA,YACA/K,EAF4B,EAE5BA,SACA2rB,EAH4B,EAG5BA,QACAna,EAJ4B,EAI5BA,MACGk1B,EALyB,gFAAC,eAO1BA,GAPyB,IAQ5Bl1B,MAAK,OAAEA,QAAF,IAAEA,IAAS5B,GAChBwhB,MAAOwV,GAAY,aAAE77B,cAAa/K,WAAU2rB,WAAY+a,OAG7CW,GAAyB,SAAC,GAAD,IACpCt8B,EADoC,EACpCA,YACA/K,EAFoC,EAEpCA,SACA2rB,EAHoC,EAGpCA,QAEAmb,GALoC,EAIpCt1B,MAJoC,EAKpCs1B,oBACAC,EANoC,EAMpCA,uBACAxtB,EAPoC,EAOpCA,cACGmtB,EARiC,8IAAC,eAUlCA,GAViC,IAWpCtV,MAAOyV,GAAoB,CACzB97B,cACA/K,WACA2rB,UACAmb,qBACAC,yBACAxtB,qBCjIS+tB,GAAa,CACxB,CACEpc,MAAO,qBACPqc,UAAU,EACVC,SAAS,EACT9jC,OAAO,GAET,CACEwnB,MAAO,+BACPqc,UAAU,EACVC,SAAS,EACT9jC,OAAO,GAET,CACEwnB,MAAO,8CACPqc,UAAU,EACVC,SAAS,EACT9jC,OAAO,GAET,CACEwnB,MAAO,iCACPqc,UAAU,EACVC,SAAS,EACT9jC,OAAO,GAET,CACEwnB,MAAO,6BACPqc,UAAU,EACVC,SAAS,EACT9jC,OAAO,GAET,CACEwnB,MAAO,qDACPqc,UAAU,EACVC,SAAS,EACT9jC,OAAO,GAET,CACEwnB,MAAO,uDACPqc,UAAU,EACVC,SAAS,EACT9jC,OAAO,GAET,CACEwnB,MAAO,sDACPqc,UAAU,EACVC,SAAS,EACT9jC,OAAO,IC/CX,SAAS,KAA2Q,OAA9P,GAAW+C,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,IAAK,CAChDqkB,SAAU,2BACI,gBAAoB,UAAW,CAC7CC,QAAS,IACTC,GAAI,QACJC,GAAI,QACJ3iB,GAAI,IACJ4iB,GAAI,IACJC,UAAW,8BACXjjB,KAAM,YACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,IACHhgB,EAAG,IACHnT,MAAO,IACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,UACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,IACHhgB,EAAG,IACHnT,MAAO,IACP9C,OAAQ,EACRmT,GAAI,EACJJ,KAAM,YACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,IACHhgB,EAAG,IACHnT,MAAO,GACP9C,OAAQ,EACRmT,GAAI,EACJJ,KAAM,YACS,gBAAoB,SAAU,CAC7C8iB,GAAI,IACJC,GAAI,IACJI,EAAG,GACHnjB,KAAM,YACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,GACHhgB,EAAG,GACHnT,MAAO,IACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,UACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,IACHhgB,EAAG,GACHnT,MAAO,IACP9C,OAAQ,EACRmT,GAAI,EACJJ,KAAM,YACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,IACHhgB,EAAG,GACHnT,MAAO,GACP9C,OAAQ,EACRmT,GAAI,EACJJ,KAAM,YACS,gBAAoB,SAAU,CAC7C8iB,GAAI,GACJC,GAAI,GACJI,EAAG,GACHnjB,KAAM,aAGJ,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CACtG9P,GAAI,qBACU,gBAAoB,OAAQ,CAC1CH,MAAO,IACP9C,OAAQ,IACR+S,KAAM,YAGR,SAASojB,GAASxjB,EAAMC,GACtB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,IACP9C,OAAQ,IACR8S,QAAS,cACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,GAAO,IAG3B,I,6FCrCIsZ,G,mDChCAwQ,G,wBFqEA,GAA0B,aAAiByP,IGXhCC,IHYA,IGlF0D,SAAC,GAUnE,IATLx5B,EASI,EATJA,MACAgiB,EAQI,EARJA,WACA1e,EAOI,EAPJA,SACAse,EAMI,EANJA,KACAhG,EAKI,EALJA,KACA6d,EAII,EAJJA,WACAC,EAGI,EAHJA,cACAC,EAEI,EAFJA,YAEI,IADJC,iBACI,WAC0B7nC,oBAAS,GADnC,mBACGK,EADH,KACYC,EADZ,KAqBJ,OACE,eAAC,KAAD,CACE2N,MAAOA,EACP4D,OAAQ,KACRJ,gBAAc,EACdF,SAAUA,EACVD,QAAS2e,EACT+O,cAAc,EANhB,UAQE,4BAAInV,IACJ,cAAC,KAAD,IACA,eAAC,KAAD,CAAKd,OAAQ,GAAb,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,EAAD,CACElU,KAAK,QACLC,SAAUc,EACV0G,QAASwK,EACT9K,UAAU,aAJZ,wBASF,cAAC,KAAD,CAAK+M,KAAM,GAAX,SACE,eAAC,EAAD,CACElU,KAAK,QACLD,KAAK,UACLE,SAAUc,EACV0G,QA9CS,WACjBzG,GAAW,GACX,IAAMwnC,EAAS,WACbxnC,GAAW,GACD,OAAVonC,QAAU,IAAVA,OACAC,GAAc,GACdE,GAAaxiC,IAAQmB,QAAQ,yBAE3BqpB,EACFA,IACGtsB,MAAK,kBAAMukC,OACXrkC,OAAM,SAACC,GACNmkC,GAAaxiC,IAAQX,MAAM,mBAC3BpE,GAAW,MAGfwnC,KA+BMrhC,UAAU,aALZ,UAOGpG,GAAW,cAACwG,EAAA,EAAD,IACX+gC,GAAe,uBC7EfhpC,GAAYC,IAAOC,IAAV,sTAgBTipC,GAA0BlpC,IAAOC,IAAV,i8DAyKvBkpC,IAxEcnpC,IAAOC,IAAV,stBAoCYD,IAAOC,IAAV,stBAoCND,IAAOC,IAAV,kiKAiOXgT,GAAUjT,IAAOC,IAAV,43GA8KPmpC,GAAoBppC,IAAOC,IAAV,meA0BjBopC,GAAiBrpC,IAAOC,IAAV,g/CA8EdqpC,GAAkBtpC,IAAOC,IAAV,gxZAksBfspC,IA7HWvpC,IAAOC,IAAV,qRAcYD,IAAOC,IAAV,gDAIKD,IAAOC,IAAV,4BAEND,IAAOC,IAAV,oGAMED,IAAOy9B,EAAV,gXAoBAz9B,IAAOyC,EAAV,6OAcKzC,IAAOsT,OAAV,+KAWItT,IAAOC,IAAV,oWAwBMD,IAAOy9B,EAAV,yEAKAz9B,IAAOy9B,EAAV,2DAEX,gBAAGxpB,EAAH,EAAGA,MAAH,cAAeA,QAAf,IAAeA,IAAS,MAGHjU,IAAOC,IAAV,uFAMED,IAAOy9B,EAAV,uEAKIz9B,IAAOC,IAAV,oMASDD,IAAOy9B,EAAV,iEAEd,gBAAGjoB,EAAH,EAAGA,QAAH,OACPA,EAAU,EACN,2BACAA,EAAU,EACV,yBACA,oBA0BKg0B,IAvBkBxpC,IAAOsT,OAAV,0bAuBGtT,IAAOC,IAAV,sXAkBfwpC,GAAiBzpC,IAAOC,IAAV,0IAQdypC,GAAU1pC,IAAOC,IAAV,udAuBP0pC,GAAc3pC,IAAOC,IAAV,ihBA+BX2pC,GAAmB5pC,IAAOsT,OAAV,mTAMP,qBAAGu2B,SAA2B,QAAU,WACnD,qBAAGA,SAA2B,QAAU,WAK3B,qBAAGA,SACV,QAAU,kBAKdC,GAAW9pC,IAAOC,IAAV,8+EA4IR8pC,GAAgB/pC,IAAOC,IAAV,mJHhlDb+pC,GAAkB,kBAC7B,6BACE,oBAAIz/B,MAAO,CAAEgd,OAAQ,QAArB,uLAUS0iB,GAA0B,WAAO,IACpC7nC,EAASkF,IAATlF,KADmC,EAavC2e,KAVFtG,EAHyC,EAGzCA,UACAgB,EAJyC,EAIzCA,aACAf,EALyC,EAKzCA,aACAT,EANyC,EAMzCA,cACAgB,EAPyC,EAOzCA,gBACAoB,EARyC,EAQzCA,iBACAtC,EATyC,EASzCA,mBACA0G,EAVyC,EAUzCA,mBACA3D,EAXyC,EAWzCA,mBACAyC,EAZyC,EAYzCA,oBAZyC,EAefpe,mBAAc,IAfC,mBAepC+oC,EAfoC,KAe5BC,EAf4B,OAgBLhpC,oBAAS,GAhBJ,mBAgBpCipC,EAhBoC,KAgBvBC,EAhBuB,OAiBPlpC,mBAAc,IAjBP,mBAiBpCmpC,EAjBoC,KAiBxBC,EAjBwB,OAkBLppC,oBAAS,GAlBJ,mBAkBpCqpC,EAlBoC,KAkBvBC,EAlBuB,OAmBHtpC,oBAAS,GAnBN,mBAmBpCupC,EAnBoC,KAmBtBC,EAnBsB,OAoBFxpC,oBAAS,GApBP,mBAoBpCypC,EApBoC,KAoBrBC,EApBqB,OAqBG1pC,oBAAS,GArBZ,mBAqBpC2pC,EArBoC,KAqBnBC,EArBmB,OAsBO5pC,oBAAS,GAtBhB,mBAsBpC6pC,EAtBoC,KAsBjBC,EAtBiB,OAuBS9pC,oBAAS,GAvBlB,oBAuBpC+pC,GAvBoC,MAuBhBC,GAvBgB,SAwBShqC,oBAAS,GAxBlB,qBAwBpCiqC,GAxBoC,MAwBhBC,GAxBgB,SAyBelqC,oBAAS,GAzBxB,qBAyBpCmqC,GAzBoC,MAyBbC,GAzBa,SA2BzCpqC,qBA3ByC,qBA0BpCoZ,GA1BoC,MA0BdC,GA1Bc,MA6BrCgQ,GAAavQ,EAEbuxB,GADQ,CAAC,OAAQ,SACL1hB,MAAK,SAAC2hB,GAAD,OAAUlmC,OAAOC,SAASimC,KAAKtgC,SAASsgC,MAC3D,OACA,GAEE3vB,GAAc,CAClB1X,MAAO,gBACP8jC,QAAS,UACTD,SAAU,YAuGZ,OAXAviC,qBAAU,WACR2W,MACC,CAACA,IAEJ3W,qBAAU,YACHtF,OAAewqC,IAA8B,OAAb3wB,QAAa,IAAbA,OAAA,EAAAA,EAAe5S,QAAS,IAC3DwjC,GAAgB,GAChBrwB,GAAwBP,EAAc,OAEvC,CAACA,EAAe2wB,IAGjB,eAAC,GAAD,WACE,cAACzB,GAAD,UACE,eAAC,KAAD,CAAKjf,OAAQ,CAAC,GAAI,CAAEC,GAAI,GAAIC,GAAI,KAAhC,UACE,cAAC,KAAD,CAAKzV,KAAM,GAAX,SACE,cAAC,KAAWM,MAAZ,CAAkBC,MAAO,EAAGtN,UAAU,YAAtC,0BAIF,cAAC,KAAD,CAAK+M,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL6U,KAAM,cAAC,KAAD,IACNnN,QA3DsB,WAChCyiC,GAAiBD,GACjBhwB,EAAa,OAoDL,yBAUF,cAAC,KAAD,CAAK/F,KAAM,GAAX,SACE,cAAC,IAAD,CACElU,KAAK,QACLgL,YAAY,qBACZ7B,OAAQ,cAAC,KAAD,CAAiBnJ,KAAM,KAC/BgnB,SAAU,SAACC,GAAD,OAhDAzgB,EAgDoBygB,EAAE5D,OAAO7c,MA/C7CyhB,IAAU4B,aAAa5B,SAC3BA,GAAWpjB,YAAW,WACpB+W,EAAiB,EAAGpV,KACnB,MAJgB,IAACA,OAmDd,cAAC,KAAD,CAAK0N,KAAM,GAAI/M,UAAU,wBAAzB,SACE,cAAC,KAAD,CACE2iB,OAAO,MACPC,WAAYA,GACZhpB,QAASyZ,EACTywB,aAAc,SAAC9+B,GAAD,OACZA,EAAK4T,OAAL,OAAajG,SAAb,IAAaA,QAAb,EAAaA,GAAsBiG,KAAM,kBAAoB,IAE/DmJ,WAAY,CACVH,gBAAiB,GACjBnK,MAAOtF,EACP4xB,eAAe,EACfliB,iBAAiB,GAEnBhC,SAAU,SAACkC,GACTtN,EAAiBsN,EAAWJ,UAE9B+B,QAAS,CACP,CACElc,MACE,mCACE,qBAAKxH,UAAU,oCAAf,SACE,qBAAKA,UAAU,2BAAf,SACE,cAAC,EAAD,CACEyN,KAAM,cAAC,KAAD,IACNnN,QAAS,WACH+R,EAAc5S,OAAS,GACzBkY,EAAoB,uBAQlCgM,OAAQ,SAAC/b,EAAG5C,GAAJ,OACN,eAAC,KAAD,CACE1E,QAAS,WACPsS,GAAwB5N,IAF5B,UAKE,cAAC,KAAD,CAAK+H,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBhO,UAAU,cAA3B,SACGgF,EAAKtJ,SAGV,cAAC,KAAD,CAAKqR,KAAM,GAAX,SACE,cAACy0B,GAAD,UACE,cAAC,KAAWxzB,KAAZ,CAAiBhO,UAAU,cAA3B,SACGkU,GAAM,OAAClP,QAAD,IAACA,OAAD,EAACA,EAAMkP,6BAYpC,eAAC,GAAD,CACElU,UAAWgkC,aAAK,mBAAoB,CAClC,eAA4B,OAAb3xB,QAAa,IAAbA,OAAA,EAAAA,EAAe5S,QAAS,GAAKkT,KAFhD,UAK6B,KAAb,OAAbN,QAAa,IAAbA,OAAA,EAAAA,EAAe5S,QACd,eAACgiC,GAAD,WACE,cAAC,GAAD,IACA,eAAC,KAAWp0B,MAAZ,CAAkBC,MAAO,EAAzB,qBACQ9S,EAAKA,KAAKkB,KADlB,OAGA,cAAC,KAAW8kB,UAAZ,6GAKA7N,GACF,eAAC+uB,GAAD,WACE,sBAAK1hC,UAAU,iBAAf,UACE,cAAC,EAAD,CACEyN,KAAM,cAAC,KAAD,IACNnN,QAAS,WAlNJ,IAAC0E,IAmNO2N,GAlNzB8wB,IAAuBD,IACvB1wB,EAAa9N,IA8MH,oBAQA,cAAC,KAAD,CACEkf,QAAS,CAAC,SACVD,KAAM,CACJF,MAAO,CACL,CACEjV,IAAK,UACLkV,MAAO,UACPvW,KAAM,cAAC,KAAD,CAASzN,UAAU,cACzBM,QAAS,kBA5IP9E,EA4I0BmX,GA3I9C4wB,IAAuBD,SACvBX,EAAcnnC,GAFK,IAACA,MAoIV,SAaE,cAAC,EAAD,CACEiS,KAAM,cAAC,KAAD,IACNnN,QAAS,SAACwf,GAAD,OAAOA,EAAEmkB,sBAGtB,cAAC,EAAD,CACEjkC,UAAU,eACVyN,KAAM,cAAC,KAAD,IACNnN,QAAS,WACPsS,QAAwB/D,SAI9B,sBAAK7O,UAAU,iBAAf,UACE,cAAC,KAAWqN,MAAZ,CAAkBC,MAAO,EAAzB,SACGqF,GAAqBjX,OAExB,cAAC,KAAW8kB,UAAZ,UACE,cAACghB,GAAD,UACE,eAAC,KAAWxzB,KAAZ,CAAiBhO,UAAU,2BAA3B,UACGkU,GAAM,OAACvB,SAAD,IAACA,QAAD,EAACA,GAAsBuB,QAC9B,cAAC,KAAD,CAAS1M,MAAM,+BAAf,SACE,cAAC,KAAD,CACE7E,MAAO,CAAE4d,OAAQ,WACjBjgB,QAAS,kBAAMqjC,IAAyB,eAMlD,eAAC,KAAD,CAAKrhB,OAAQ,CAAC,GAAI,IAAKtiB,UAAU,2BAAjC,UACE,eAAC,KAAD,WACE,qBAAKA,UAAU,oBAAf,kBACA,qBAAKA,UAAU,mBAAf,SACGsD,GAAQqP,GAAqBlX,eAGlC,eAAC,KAAD,WACE,qBAAKuE,UAAU,oBAAf,qBACA,qBAAKA,UAAU,mBAAf,SACG2S,GAAqBhX,oBAOhC,6BAEF,cAAC,KAAD,CACEyP,OAAQ,KACR5D,MAAM,2BACNqD,QAASi4B,EACTh4B,SAAU,kBAAMi4B,GAAiBD,IAJnC,SAME,eAAC,KAAD,CAAKxgB,OAAQ,CAAC,GAAI,IAAK3f,MAAO,CAAEE,aAAc,QAA9C,UACE,cAAC,KAAD,UACE,cAAC,KAAW2d,UAAZ,CACE7d,MAAO,CAAEE,aAAc,EAAGmd,WAAY,OADxC,gEAMF,cAAC,KAAD,CAAKjT,KAAMvU,KAAa,GAAK,GAA7B,SACE,eAAC,KAAD,CAAMwH,UAAU,WAAWM,QA9NP,WAC9BmjC,IAAuBP,GACvBH,GAAiBD,GACjBhwB,EAAa,OA2NH,UACE,cAAC,KAAD,CAAsBja,KAAM,GAAImH,UAAU,cAC1C,cAAC,KAAD,CAAKA,UAAU,YAAf,SACE,sDACuB,sDAK7B,cAAC,KAAD,CAAK+M,KAAMvU,KAAa,GAAK,GAA7B,SACE,eAAC,KAAD,CAAMwH,UAAU,WAAWM,QAlPT,WAC5B6iC,GAAoBD,GACpBH,GAAiBD,GACjBhwB,EAAa,OA+OH,UACE,cAAC,KAAD,CAAiBja,KAAM,GAAImH,UAAU,cACrC,cAAC,KAAD,CAAKA,UAAU,YAAf,SACE,wDACyB,8DAOnC,cAAC,KAAD,CACEoL,OAAQ,KACR5D,MAAM,wBACNqD,QAASq4B,EACTp4B,SAAU,kBAAMq4B,GAAmB,IAJrC,SAME,eAAC,KAAD,CAAK7gB,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CACEzpB,KAAM,GACN8J,MAAO,CAAEgd,OAAQ,WACjB3f,UAAU,cAEZ,mBACE2C,MAAO,CACL4d,OAAQ,UACRZ,OAAQ,UACRK,WAAY,OAEd1f,QAAS,kBACP3C,OAAO6G,KAAP,0EACqEo/B,GADrE,WAPJ,oCAcA,cAAC,KAAD,CAAK72B,KAAM,GAAX,SACE,cAAC,GAAD,CACEkuB,OAAO,MACPrhC,QAASgpC,EACTvH,aAnVO,SAAC6D,GACpBuD,GAAe,GAEZ,CACC,oEACA,2BACA,aACA,aACA,4BACA,gCACA,8BACA,oBACA,mBACAl/B,SAAS27B,EAAKtmC,QAEhBgG,IAAQX,MAAM,gCACdwkC,GAAe,KAoULnH,cAhUQ,SAAC,GAAmC,IAAjC4D,EAAgC,EAAhCA,KACjBgF,EAAW,IAAIC,SAChB3B,IACL0B,EAASE,OAAO,OAAQlF,GACxB2D,GAAe,GACfhrC,EACG4G,KAAK,oBAAqBylC,EAAU,CACnChsC,QAAS,CACP,eAAgB,yBAGnB4E,MAAK,YAAe,IAAD,EAAXtB,EAAW,EAAXA,KACPqnC,GAAe,GACfM,GAAoBD,GACS,KAArB,OAAJ1nC,QAAI,IAAJA,GAAA,UAAAA,EAAM8mC,cAAN,eAAc7iC,QAChBb,IAAQmB,QAAQ,0CAEhBnB,IAAQX,MACN,qEAEFskC,EAAU/mC,EAAK8mC,QACfe,GAAqB,IAEvB5uB,OAEDzX,OAAM,SAACiB,GACN4kC,GAAe,GACfjkC,IAAQX,MAAMA,EAAM3C,SAASE,KAAKoD,uBA0SlC,cAAC,GAAD,CACE4I,MAAM,uBACN4b,KAAI,yCAAoCsf,EAAWhnC,KAA/C,6BACJ8tB,WAAY8Z,GACZx4B,SAAU,WACRy4B,IAAsB,IAExBrC,cAlSwB,WAC9BqC,IAAuBD,KAkSjBla,KAAM,kBAAMvQ,EAAmB6pB,MAEjC,cAAC,GAAD,CACEl7B,MAAOqL,EAAY,sBAAwB,yBAC3C4W,WAAY5W,EACZ2W,WAAYga,GACZja,KAAM8a,GAAqB,EAAGxxB,GAC9B/H,SAAU,WACR24B,IAAsB,IAExB18B,IAAK,SAACvL,GACJqY,EAAa,2BAAKrY,GAAN,IAAYuY,cAAc,KACtC0vB,IAAsB,GACtBV,GAAgB,IAElBzZ,KAAM,SAAC9tB,GACL0Z,EAAmB1Z,GACnBioC,IAAsB,GACtBV,GAAgB,MAGpB,cAAC,KAAD,CACE33B,OAAQ,KACR5D,MAAM,yDACNqD,QAASu4B,EACTt4B,SAAU,kBAAMu4B,GAAqB,IAJvC,SAME,cAAC,KAAD,CAAK/gB,OAAQ,CAAC,EAAG,GAAjB,SACE,cAAC,KAAD,CACE3f,MAAO,CAAE+K,MAAO,QAChBiV,OAAO,MACP/oB,QAASyZ,EACTuP,WAAY0f,EACZ5e,QAAS,CACP,CACElc,MAAO,YACPmc,OAAQ,SAAC/b,EAAG5C,GAAJ,OACN,qCACE,cAAC,KAAD,UACE,cAAC,KAAD,CAAK+H,KAAM,GAAX,SAAgB/H,EAAKxK,SAEvB,cAAC,KAAD,UACE,cAAC,KAAD,CAAKuS,KAAM,GAAX,SACE,mBAAGpK,MAAO,CAAEC,SAAU,QAAtB,SACGU,GAAQ0B,EAAKrE,gBAO1B,CACE6G,MAAO,iBACP6a,MAAO,SACPsB,OAAQ,SAAC/b,EAAG5C,GAAJ,OACN,cAAC,KAAD,UACE,cAAC,KAAD,CAAK+H,KAAM,GAAX,SAAgB/H,EAAKoW,eAI3B,CACE5T,MAAO,WACPmc,OAAQ,SAAC/b,EAAG5C,GAAJ,OACN,cAAC,KAAD,UACE,cAAC,KAAD,CAAK+H,KAAM,GAAX,SAAgB/H,EAAKpG,qBAQnC,cAAC,GAAD,CACE8O,MAAO,IACPtC,OAAQ,KACR5D,MAAM,0BACNhD,KAAMk/B,GACN1jC,UAAU,0BACV8K,SAAU,kBAAM64B,IAAyB,IAN3C,SAQE,cAAC,KAAD,CACE/gB,WAAYwd,GACZ5c,OAAQ,CACNC,YAAa,UAEf1B,YAAY,EACZ2B,QAAS,CACP,CACElc,MAAO,GACPmc,OAAQ,SAAC/b,EAAG5C,GAAJ,OACN,cAAC,KAAWgJ,KAAZ,CAAiBrL,MAAO,CAAEqd,WAAY,OAAtC,SACGhb,EAAKgf,UAIZ,CACExc,MAAO,WACP6a,MAAO,SACPsB,OAAQ,SAAC/b,EAAG5C,GAAJ,OACNA,EAAKq7B,SACH,cAAC,KAAD,CAASrgC,UAAU,UAEnB,cAAC,KAAD,CAAKA,UAAU,YAGrB,CACEwH,MAAO,UACP6a,MAAO,SACPsB,OAAQ,SAAC/b,EAAG5C,GAAJ,OACNA,EAAKs7B,QACH,cAAC,KAAD,CAAStgC,UAAU,UAEnB,cAAC,KAAD,CAAKA,UAAU,YAGrB,CACEwH,MAAO,gBACP6a,MAAO,SACPsB,OAAQ,SAAC/b,EAAG5C,GAAJ,OACNA,EAAKxI,MACH,cAAC,KAAD,CAASwD,UAAU,UAEnB,cAAC,KAAD,CAAKA,UAAU,wBI1dtBskC,GAAsB,SAAC7uB,GAClC,MAAO,CACL5H,GAAIoyB,GAAa,CACfvkC,KAAM,KACNsoB,MAAO,KACP4G,QAAQ,EACR9xB,WAAY2c,IAEd/Z,KAAMukC,GAAa,CACjBvkC,KAAM,OACNmI,YAAa,OACbyG,MAAOpC,GACPpP,WAAY2c,IAEdha,SAAUwkC,GAAa,CACrBvkC,KAAM,WACNmI,YAAa,MACbyG,MAAO7C,GACP3O,WAAY2c,IAEd9Z,MAAOskC,GAAa,CAClBvkC,KAAM,QACNmI,YAAa,SACbyG,MAAOjC,GACPvP,UAAU,IAEZob,OAAQgsB,GAAe,CACrBxkC,KAAM,SACNmI,YAAa,6BACbmgB,MACE,8CAEE,cAAC,KAAD,CAASxc,MAAO46B,GAAhB,SACE,cAAC,KAAD,CAAkBz/B,MAAO,CAAEgd,OAAQ,cAIzC7mB,UAAU,EACV2rB,QAAS,CACP,CACEplB,MAAO,QACP2kB,MAAO,iBAET,CACE3kB,MAAO,UACP2kB,MAAO,WAET,CACE3kB,MAAO,WACP2kB,MAAO,iBAOJugB,GAAqB,SAAC,GAQP,IAAD,IAPzB/pC,EAOyB,EAPzBA,KACAib,EAMyB,EANzBA,OACApB,EAKyB,EALzBA,WACAhC,EAIyB,EAJzBA,cACAwtB,EAGyB,EAHzBA,uBACAJ,EAEyB,EAFzBA,OACA+E,EACyB,EADzBA,aAEI/uB,IACFA,EAAO6jB,SACL7jB,EAAOmlB,aAAc,IAAIv0B,MAAOo+B,UAAY,OAAShvB,EAAO6jB,UAChE,IAAMoL,EApJwB,SAAC,GAOL,IAAD,QANzBlqC,EAMyB,EANzBA,KACAib,EAKyB,EALzBA,OACApB,EAIyB,EAJzBA,WACAhC,EAGyB,EAHzBA,cACAwtB,EAEyB,EAFzBA,uBACAJ,EACyB,EADzBA,OAEA,MAAO,CACL5xB,GAAIoyB,GAAa,CACfvkC,KAAM,KACNsoB,MAAO,KACP4G,QAAQ,EACR9xB,WAAY2c,IAEd/Z,KAAMukC,GAAa,CACjBvkC,KAAM,OACNmI,YAAa,OACbyG,MAAOpC,GACPpP,UAAU,IAEZ2C,SAAUukC,GAAa,CACrBtkC,KAAM,WACNmI,YAAa,MACbyG,MAAO7C,GACPioB,KAAMtsB,GACNtK,WAAY2c,IAEd9Z,MAAOskC,GAAa,CAClBvkC,KAAM,QACNmI,YAAa,SACbyG,MAAOjC,GACPvP,UAAU,EACV2mC,WAEFz+B,MAAOg/B,GAAa,CAClBtkC,KAAM,QACNmI,YAAa,UACbyG,MAAO9B,GACPknB,K5DnEwB,kB4DoExB52B,UAAU,IAEZsb,KAAM8rB,GAAe,CACnBxkC,KAAM,OACNmI,YAAa,QACb/K,UAAU,EACV2rB,QAAS,CACP,CACEplB,MAAO,OACP2kB,MAAO,WACPlrB,UAAgB,OAAN2c,QAAM,IAANA,OAAA,EAAAA,EAAQkvB,YAAkC,WAAf,OAANlvB,QAAM,IAANA,OAAA,EAAAA,EAAQ6jB,WAEzC,CACEj6B,MAAO,SACP2kB,MAAO,uBACPlrB,WACE,UAAC0B,EAAKA,YAAN,aAAC,EAAW0B,uBAAZ,OACAuZ,QADA,IACAA,OADA,EACAA,EAAQkvB,YACa,WAAf,OAANlvB,QAAM,IAANA,OAAA,EAAAA,EAAQ6jB,YAFR,OAGA7jB,QAHA,IAGAA,OAHA,EAGAA,EAAQmvB,iBAEZ,CACEvlC,MAAO,QACP2kB,MAAO,sBACPlrB,WAAU,UAAC0B,EAAKA,YAAN,aAAC,EAAW0B,uBAAZ,OAAmCuZ,QAAnC,IAAmCA,OAAnC,EAAmCA,EAAQkvB,aAGzDlF,WAEFprB,WAAY8rB,GAAuB,CACjCzkC,KAAM,aACNmI,YAAa,aACb+7B,mBAAoBvrB,EACpBwrB,uBAAwBA,EACxBxtB,gBACAvZ,WAAU,OAAC0B,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAY+B,WAAU,OAAC/B,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAYgC,UAyEhCqoC,CAAiB,CACjCrqC,OACAib,SACApB,aACAhC,gBACAwtB,yBACAJ,WAEItzB,EAAM,GAWZ,OAVAA,EAAIgK,KAAK,CAACuuB,EAAU72B,KACpB1B,EAAIgK,KAAK,CAACuuB,EAAUjpC,WACpB0Q,EAAIgK,KAAK,CAACuuB,EAAUhpC,OACpByQ,EAAIgK,KAAK,CAACuuB,EAAU/oC,QACpBwQ,EAAIgK,KAAK,CAACuuB,EAAU1jC,SAChB,OAACwjC,QAAD,IAACA,OAAD,EAACA,EAAclL,YAAY,OAACkL,QAAD,IAACA,OAAD,EAACA,EAAc/oC,WAC5C0Q,EAAIgK,KAAK,CAACuuB,EAAUtwB,OACtBjI,EAAIgK,KAAJ,MAAAhK,EAAG,cACO,OAAJ3R,QAAI,IAAJA,GAAA,UAAAA,EAAMA,YAAN,eAAY+B,UAAZ,OAAsB/B,QAAtB,IAAsBA,GAAtB,UAAsBA,EAAMA,YAA5B,aAAsB,EAAYgC,OAAQ,CAAC,CAACkoC,EAAUrwB,aAAe,KAEpElI,GAGIk4B,GAAuB,SAACpW,EAAcxY,GAAf,MAA2C,CAC7E,CAAC6uB,GAAoB7uB,GAAQ5H,IAC7B,CAACy2B,GAAoB7uB,GAAQha,UAC7B,CAAC6oC,GAAoB7uB,GAAQ/Z,MAC7B,CAAC4oC,GAAoB7uB,GAAQ9Z,OAC7B,CAAC2oC,GAAoB7uB,GAAQvB,U,UC1MlB4wB,GAAU1sC,IAAOC,IAAV,4MAiBP0sC,GAAa3sC,YAAO4sC,KAAP5sC,CAAH,iQAIL,qBAAG2nB,QAAyB,2BAA6B,MACrD,qBAAGA,QAAyB,YAAc,MAC5C,qBAAGklB,aAAmC,GAAK,UAQlDC,GAAc9sC,IAAOC,IAAV,6YAaX8sC,GAAW/sC,IAAOy9B,EAAV,kPAWRuP,GAAQhtC,IAAOy9B,EAAV,oMAULwP,GAAOjtC,IAAOy9B,EAAV,gGCvCJyP,ID6CQltC,IAAOC,IAAV,+OAYI,qBAAG0nB,QACX,2BAA6B,kBC1Db,SAAC,GAWhB,IAAD,EAVZwlB,EAUY,EAVZA,SACAC,EASY,EATZA,UACAC,EAQY,EARZA,WACA/M,EAOY,EAPZA,aACAgN,EAMY,EANZA,aACAnzB,EAKY,EALZA,eACAunB,EAIY,EAJZA,eACAnB,EAGY,EAHZA,gBACAgN,EAEY,EAFZA,kBACA5L,EACY,EADZA,2BAEQv/B,EAASkF,IAATlF,KADI,EAGwBjB,oBAAS,GAHjC,mBAGLqsC,EAHK,KAGOC,EAHP,KAKZ,OACE,qCACE,cAAC,KAAWx4B,MAAZ,CACEC,MAAO,EACP3K,MAAO,CAAEqd,WAAY,IAAKpd,SAAU,OAAQC,aAAc,QAF5D,yCAMA,qBAAKF,MAAO,CAAE+K,MAAO,OAAQ4N,SAAU,KAAvC,SACE,cAAC,KAAD,CAAKvO,KAAM,GAAX,SACGse,GAAU,GAAGS,iBAAiBjf,KAAI,SAACi5B,GAAD,OACjC,eAAChB,GAAD,CAAS9kC,UAAU,UAAnB,UACE,sBAAMA,UAAU,eAAhB,SAAgC8lC,EAAQr4B,OACxC,uBAAMzN,UAAU,eAAhB,UACG8lC,EAAQpqC,KADX,OAEGoqC,QAFH,IAEGA,OAFH,EAEGA,EAASC,mBAJoBD,EAAQpqC,aAUhD,cAAC,KAAD,CAAK4mB,OAAQ,CAAC,EAAG,GAAItiB,UAAU,aAA/B,SACGqrB,GAAUxe,KAAI,SAACuH,EAAMtH,GAAP,OACb,cAAC,KAAD,CACEk5B,aAAc,kBAAMH,GAAc,IAClCI,aAAc,kBAAMJ,GAAc,IAClC94B,KAAM,GAHR,SAME,cAAC,KAAD,CACE9B,UAAU,UACVzG,KACEohC,GACkB,WAAlBxxB,EAAKmX,WACJ/wB,EAAKA,KAAK0B,oBAEbsL,MAAM,kDAPR,SASE,eAACu9B,GAAD,CACEE,aAAczqC,EAAKA,KAAK0B,oBACxB6jB,QAAS2Y,IAAiB5rB,EAC1BxM,QAAS,WACPq4B,EAAgB7rB,GAChBgtB,EAAe1lB,EAAKmX,SAASvR,gBALjC,UAQE,cAAC,KAAD,UACE,eAACmrB,GAAD,WACE,cAAC,KAAD,CAAOplB,QAAS2Y,IAAiB5rB,IADnC,SAISsH,EAAKmX,SAAS3lB,mBAGzB,cAAC,KAAD,UACE,cAACw/B,GAAD,UAAQrjC,GAAeqS,EAAKqX,WAE9B,cAAC,KAAD,UACE,eAAC4Z,GAAD,kCAAwBjxB,EAAKmX,SAASvR,mBAEtCxf,EAAKA,KAAK0B,qBAAyC,UAAlBkY,EAAKmX,SAEpC,KADF,cAAC2Z,GAAD,UAlCDp4B,QAyCX,cAAC,KAAD,IACA,sBAAK9M,UAAU,mBAAf,UACE,cAAC,KAAWwgB,UAAZ,CACE7d,MAAO,CAAE0J,MAAO,2BAA4BxJ,aAAc,OAD5D,SAGG8iC,GAAsC,IAAjBjN,EAClB,iBACA,sBAELiN,GAAsC,IAAjBjN,EACpB,qCACE,cAAC,KAAWlY,UAAZ,CACE7d,MAAO,CACL0J,MAAO,aACPzJ,SAAU,OACVod,WAAY,OAJhB,6IAUA,8BACI+Z,GAA8B,IAAIltB,KAAI,SAAC4I,EAAQ3I,GAAT,OACtC,+BACG2I,EAAO/Z,KADV,WACwB+Z,EAAOha,WADtBqR,WAOf,eAAC,KAAW0T,UAAZ,CAAsB7d,MAAO,CAAEC,SAAU,OAAQod,WAAY,OAA7D,UACGje,GAAespB,GAAUqN,GAAcjN,MAAQ+Z,GADlD,gBAEIA,EAFJ,IAEgBA,EAAY,EAAI,cAAa,aAF7C,UAOJ,cAAC,KAAD,CAAK9lB,QAAQ,MAAb,SACE,cAAC,IAAD,CACE5mB,SACG2sC,GAAcF,KACbla,GAAUqN,GAAcwN,MACzBP,GAAsC,IAAjBjN,EAExB9/B,KAAK,UACLC,KAAK,QACLyH,QAASolC,EACT/iC,MAAO,CACL+K,MAAO,OACPrB,MAAO,QACP2T,WAAY,MACZ3E,UAAW,QAbf,SAgBGoqB,GACDF,GACAla,GAAUqN,GAAc9/B,QAAxB,OACE2Z,QADF,IACEA,GADF,UACEA,EAAgBioB,2BADlB,aACE,EAAqC5hC,MACrC,oBAEA,kDACU,IACR,cAAC,KAAD,CACE+J,MAAO,CAAEi+B,UAAW,qCC7EvBuF,IAhGY/tC,IAAOC,IAAV,05DAgGSD,YAAOguC,KAAPhuC,CAAH,yWAqBfiT,GAAUjT,IAAOC,IAAV,4BAEPqtB,GAAUttB,IAAOC,IAAV,8PN3FPguC,IMwGUjuC,IAAOC,IAAV,wEAKMD,YAAO4sC,KAAP5sC,CAAH,+MAIL,qBAAG2nB,QAAyB,2BAA6B,MAQnD3nB,IAAOy9B,EAAV,mIAMAz9B,IAAOy9B,EAAV,qFAKEz9B,IAAOy9B,EAAV,gGAMIz9B,IAAOC,IAAV,+OAYI,qBAAG0nB,QACX,2BAA6B,kBNvJY,SAAC,GAoBjD,IAAD,YAnBJvb,EAmBI,EAnBJA,KAEA01B,GAiBI,EAlBJ1yB,MAkBI,EAjBJ0yB,SAEAsL,GAeI,EAhBJ16B,SAgBI,EAfJ06B,WAEAc,GAaI,EAdJC,WAcI,EAbJD,YACA7R,EAYI,EAZJA,YAEAqF,GAUI,EAXJ0M,YAWI,EAVJ1M,gBACAvgB,EASI,EATJA,gBACAktB,EAQI,EARJA,iBACAlnB,EAOI,EAPJA,mBACA0X,EAMI,EANJA,oBACAgD,EAKI,EALJA,oBACAF,EAII,EAJJA,2BACArB,EAGI,EAHJA,aACAC,EAEI,EAFJA,gBACG6G,EACC,+SACmCrmB,KAA/B5G,EADJ,EACIA,eAAgBmC,EADpB,EACoBA,WADpB,EAEcnb,oBAAS,GAApBK,EAFH,sBAGeL,oBAAS,GAArB4R,EAHH,oBAIEo6B,EAAQ,OAAGhzB,QAAH,IAAGA,GAAH,UAAGA,EAAgBioB,2BAAnB,aAAG,EAAqCvB,OAChDwM,EAAU,iBAAGlzB,QAAH,IAAGA,GAAH,UAAGA,EAAgBioB,2BAAnB,aAAG,EAAqC5hC,YAAxC,QAAgD,GAC1D+sC,GAAqB5L,GAA8B,IAAIt6B,OAAS,EAMhEy1B,EAAe,SAACrnB,GAAmC,IAAvBsnB,EAAsB,uDAAN,EAC5CC,EAAW,EAEf9D,GAAY+D,YAAW,sBAAC,sBAAAx6B,EAAA,sDACtBhD,EACGwD,IADH,+BAEqBkX,QAFrB,IAEqBA,OAFrB,EAEqBA,EAAgB9W,SAFrC,0BAEwD8W,QAFxD,IAEwDA,OAFxD,EAEwDA,EAAgBqG,MAErE9b,MAAK,SAACC,GAAS,IAAD,GACb,UAAIA,EAAIvB,YAAR,aAAI,EAAU4Y,QACZkhB,cAAchE,IACd1yB,IAAQmB,QAAQ,oCAChBumC,IACA5xB,QAGH+F,SAAQ,YACP2a,GAAY,GAEG,KACbE,cAAchE,OAjBE,2CAoBb,IAAR6D,IAEL,OACE,mCACGsR,EACC,cAAC,GAAD,CACEhQ,kBAAgB,EAChBH,KAAMmQ,EACN9P,YAAazB,EACbsB,SAAU,SAACn3B,KACXw3B,mBArCc,SAACr7B,GACrB05B,EAAa15B,EAAKkrC,UAAW,IAqCvB9P,YAAavL,GAAUqN,GACvB3G,eAAc,OAAExY,QAAF,IAAEA,OAAF,EAAEA,EAAkB,GAClC0d,oBAAqBA,EACrBV,yBAAyB,UAAChd,GAAmB,UAApB,eAAyB9Z,QAAS,EAC3DqL,SAAU,WACRmvB,GAAoB,GACpBqM,GAAW,IAEb7R,YAAW,2BACNA,GADM,IAET77B,KAAI,UAAEyyB,GAAUqN,UAAZ,aAAE,EAAyB9/B,KAC/B45B,QAAQ,IAEVkE,0BACE,UAACnd,GAAmB,UAApB,eAAyB9Z,QAAS,EAC9B,oEACA,KAIR,cAAC0mC,GAAD,yBACE3hC,KAAMA,EACN4G,OAAQ,KACRJ,gBAAc,EACdG,SAAUA,EACVnL,UAAU,gBACVwH,MAAM,wBACNsD,SAAU,SAACgV,GACToa,GAAQ,GACR3a,EAAmB,MAEjBigB,GAXN,aAaE,eAAC,GAAD,WACG5lC,GACC,cAAC,GAAD,UACE,cAACwG,EAAA,EAAD,CAAiBiM,MAAM,2BAA2BxT,KAAM,OAI5D,cAAC,GAAD,CACE0sC,SAAUA,EACVC,UAAWA,EACXC,WAAYA,EACZ/M,aAAcA,EACdnmB,eAAgBA,EAChBunB,eAAgBA,EAChBnB,gBAAiBA,EACjBgN,kBAAmBA,EACnB5L,2BAA4BA,EAC5B2L,aAAc,SAAC5lB,GACbma,GAAoB,GACpBC,GAAQ,gB,oBOnJXyM,GAAsBvuC,IAAOC,IAAV,+xDCAnBuuC,GAAsBxuC,IAAOC,IAAV,+kBCenBwuC,GAAmB,SAAC,GAKlB,IAJbriC,EAIY,EAJZA,KACA5K,EAGY,EAHZA,QACAktC,EAEY,EAFZA,QACA57B,EACY,EADZA,QAEA,OACE,cAAC,KAAD,yBACE1G,KAAMA,EACNyG,UAAU,QACVC,QAASA,EACT67B,UAAW,cAAC,KAAD,IACXv/B,MACE,qBAAKlH,QAAS4K,EAASvI,MAAO,CAAE4d,OAAQ,WAAxC,qBAIG/nB,KAAa,CAAEkV,MAAO,QAAW,CAAEA,MAAO,UAVjD,aAYE,eAACk5B,GAAD,WACE,gCACE,cAAC,KAAWv5B,MAAZ,CAAkBC,MAAO,EAAzB,oBACA,qBAAKtN,UAAU,eAEjB,8BACE,cAAC,KAAWgO,KAAZ,CAAiBrL,MAAO,CAAEC,SAAU,QAApC,mDAIF,sBAAK5C,UAAU,WAAf,UACE,cAACsgB,GAAA,EAAD,CAAoB3d,MAAO,CAAE0Y,UAAW,SACxC,iCACG,IADH,2HAMF,eAAC,IAAD,CACE3Q,OAAK,EACL7R,KAAK,QACLD,KAAK,QACLE,SAAUc,EACVoG,UAAU,iBACVM,QAAS,kBAAMwmC,EAAQ,QANzB,UAQE,cAAC,KAAD,CACEnkC,MAAO,CACL+K,MAAO,OACP9C,OAAQ,OACRqD,YAAa,MACb5B,MAAO,8BAbb,cAgBa,sCAhBb,4CAkBA,eAAC,IAAD,CACE3B,OAAK,EACL7R,KAAK,QACLD,KAAK,QACL0H,QAAS,kBAAMwmC,EAAQ,SACvB9mC,UAAU,iBACVlH,SAAUc,EANZ,UAQE,cAAC,KAAD,CACE+I,MAAO,CACL+K,MAAO,OACP9C,OAAQ,OACRqD,YAAa,MACb5B,MAAO,8BAbb,cAgBa,wCAhBb,uCAkBCzS,GACC,cAACwG,EAAA,EAAD,CACEuC,MAAO,CACLyY,SAAU,WACV8M,IAAK,MACLC,KAAM,MACN9b,MAAO,qCCnEf26B,GAAc,CAClBC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,GACLC,IAAK,GACLC,IAAK,IAGMC,GAAgC,SAAC,GASvC,IARLrjC,EAQI,EARJA,KACA+C,EAOI,EAPJA,MACAugC,EAMI,EANJA,aACAn3B,EAKI,EALJA,cACA4B,EAII,EAJJA,eACAlB,EAGI,EAHJA,iBACAT,EAEI,EAFJA,iBACAm3B,EACI,EADJA,kBAEMj6B,EAAO,IAAIzH,KADb,EAGoB9M,mBAAS,IAH7B,mBAGGiC,EAHH,KAGSwsC,EAHT,OAIoCzuC,mBAAS,IAJ7C,mBAIG0uC,EAJH,KAIiBC,EAJjB,OAKoC3uC,mBAAS,IAL7C,mBAKG4uC,EALH,KAKiBC,EALjB,OAM0C7uC,oBAAS,GANnD,mBAMGgoB,EANH,KAMoBC,EANpB,OAO0BjoB,mBAAc,IAPxC,mBAOGsb,EAPH,KAOYqM,EAPZ,KAQEmnB,EAAa,aARf,EAS0C9uC,mBAAS,IATnD,mBASG+uC,EATH,KASoBC,EATpB,KAUEC,EAAeC,iBAAO,MAVxB,EAWsClvC,mBACxCmN,MAASqH,OAAO,eAZd,mBAWG26B,EAXH,KAWkBC,EAXlB,OAcwCpvC,mBAAc,IAdtD,mBAcG8nB,EAdH,KAcmBC,EAdnB,QAesB/nB,mBAAS,GAf/B,qBAeGke,GAfH,MAeUmxB,GAfV,SAgB0BrvC,oBAAS,GAhBnC,qBAgBGK,GAhBH,MAgBYC,GAhBZ,SAiBsDN,oBAAS,GAjB/D,qBAiBGsvC,GAjBH,MAiB0BC,GAjB1B,MAkBIj4B,GAAcsI,KAAdtI,UAEFk4B,GAA0B,uCAAG,WAAOnwC,GAAP,6BAAAiC,EAAA,kEAEzBonB,EACJ1P,IAAc,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAgB7M,MAAlC,OACI6M,QADJ,IACIA,OADJ,EACIA,EAAgB7M,KAAK,GAAGuc,aACxB,KACNpoB,IAAW,GACE,QAATjB,EAP2B,wBAQzByc,EAAU,GACV6pB,EAAO,GATkB,SAUXrnC,EAAI4G,KAAK,sCAAuC,CAChEoS,UAAWs3B,EACXlmB,aAAcA,EACdxmB,SAAQ,OAAE8W,QAAF,IAAEA,OAAF,EAAEA,EAAgB9W,WAbC,QAUvB0Q,EAVuB,UAgB3BkJ,EAAO,OAAGlJ,QAAH,IAAGA,GAAH,UAAGA,EAAK3Q,YAAR,aAAG,EAAW6Z,QACrB6pB,EAAI,OAAG/yB,QAAH,IAAGA,GAAH,UAAGA,EAAK3Q,YAAR,aAAG,EAAW0jC,MAEhB7pB,EACFpR,GAASoR,GACA6pB,GACTp5B,GAAYo5B,EAAM,aAEpBrlC,IAAW,GAxBkB,QA0BlB,SAATjB,IACIowC,EAAWC,KAAWC,WACtBC,EAAYF,KAAWG,cAAc5tC,GAC3CytC,KAAWI,kBAAkBL,EAAUG,EAAW,aAClDF,KAAeD,EAAU,kBACzBnvC,IAAW,IA/BkB,kDAkC/BA,IAAW,GACX+E,IAAQX,MACN,yFApC6B,0DAAH,sDAyD1BqrC,GAAgB,SAAC9tC,EAAW5C,GA2BhC,OA1BuB4C,EAAKqR,KAAI,SAACjI,GAC/B,MAAa,SAAThM,EACK,CACL8M,KAAMd,EAAGc,MAAQ,GACjBoI,KAAMpH,IAAM,OAAC9B,QAAD,IAACA,OAAD,EAACA,EAAIkJ,MAAMC,OAAO,cAC9BuZ,+BAAgC1f,KAAE2hC,WAAF,OAC9B3kC,QAD8B,IAC9BA,OAD8B,EAC9BA,EAAI0iB,gCAENG,UAAS,OAAE7iB,QAAF,IAAEA,OAAF,EAAEA,EAAI6iB,UACfjiB,UAAY,OAAFZ,QAAE,IAAFA,OAAA,EAAAA,EAAIY,WAAY,IAC1BgkC,WAAa,OAAF5kC,QAAE,IAAFA,OAAA,EAAAA,EAAI4kC,YAAa,IAC5BjiB,YAAW,OAAE3iB,QAAF,IAAEA,OAAF,EAAEA,EAAI2iB,aAED,UAAT3uB,EACF,CACL8M,KAAMd,EAAE,SAAe,GACvBkJ,KAAMlJ,EAAE,UACR0iB,+BAAgC1f,KAAE2hC,WAAW3kC,EAAE,MAC/C6iB,UAAW7iB,EAAG,qBACdY,SAAUZ,EAAG,UAAY,IACzB4kC,UAAW5kC,EAAG,mBAAkB,IAChC2iB,YAAa3iB,EAAG,qBAGb,OAoDX,OA/CA9G,qBAAU,WACR,IAAI2Z,EAAQ,EACNgyB,EAAczC,GAAOz/B,GAErBmiC,EAAe74B,GAAU3L,QAAO,SAACN,GACrC,IAAM+kC,EAAUzmC,OAAOwD,IAAM,OAAC9B,QAAD,IAACA,OAAD,EAACA,EAAIkJ,MAAMC,OAAO,MACzC67B,EAAS1mC,OAAOwD,IAAM,OAAC9B,QAAD,IAACA,OAAD,EAACA,EAAIkJ,MAAMC,OAAO,SAC9C,OAAI07B,IAAgBE,GAAWh5B,IAAkBi5B,KAKnDxB,EAAgBkB,GAAcI,EAAc,SAC5C,IAAMG,EAAiBH,EAAa78B,KAAI,SAACjI,GAAa,IAAD,IAGnD,OAFA6S,GAAK,OAAI7S,QAAJ,IAAIA,OAAJ,EAAIA,EAAI2iB,YAEN,CACLuiB,QAAO,OAAEllC,QAAF,IAAEA,OAAF,EAAEA,EAAIc,KACbqkC,UAAWrjC,IAAM,OAAC9B,QAAD,IAACA,OAAD,EAACA,EAAIkJ,MAAMC,OAAO,cACnCi8B,KAAMpiC,KAAE2hC,WAAF,OAAa3kC,QAAb,IAAaA,OAAb,EAAaA,EAAI0iB,gCACvB2iB,oBAAW,OAAErlC,QAAF,IAAEA,OAAF,EAAEA,EAAI6iB,UACjB,SAAW,OAAF7iB,QAAE,IAAFA,OAAA,EAAAA,EAAIY,WAAY,IACzB,kBAAe,OAACZ,QAAD,IAACA,OAAD,EAACA,EAAI4kC,WAEhB,cACA5kC,QADA,IACAA,GADA,UACAA,EAAI4kC,iBADJ,aACA,EAAelnC,eAAe,QAAS,CACrCC,sBAAuB,EACvBC,sBAAuB,KAJzB,IAMJ,mBACE,cACAoC,QADA,IACAA,GADA,UACAA,EAAI2iB,mBADJ,aACA,EAAiBjlB,eAAe,QAAS,CACvCC,sBAAuB,EACvBC,sBAAuB,SAI/BomC,GAASnxB,GACTuwB,EAAQ6B,GACR3B,EAAgB2B,KACf,CAACtiC,EAAOoJ,EAAeE,KAE1B/S,qBAAU,YACJyB,OAAOC,KAAKqV,GAASpV,OAAS,GAAM6oC,GAAmBI,IACzDV,EAAQC,KACT,CAACpzB,EAASyzB,EAAiBI,EAAeT,IAG3C,qCACE,cAAC,KAAD,CACEzjC,KAAMA,EACN4G,OAAQ,KACR5D,MAAM,YACN+wB,cAAc,EACdvtB,gBAAgB,EAChBhL,UAAU,iBACV8K,SAAU,kBAAMg9B,GAAa,IAP/B,SASE,eAACnB,GAAD,WACE,sBAAK3mC,UAAU,cAAf,UACE,eAAC,KAAD,CAAKA,UAAU,4BAAf,UACE,cAAC,KAAD,CACEX,MAAOkI,EACP+oB,aAAc/oB,EACd5E,MAAO,CAAE8f,SAAU,SACnB5C,SAAU,SAACnkB,GAAD,OAAUqsC,EAAkB,CAAErsC,UACxC+oB,QAASllB,OAAOC,KAAKwnC,IAAQn6B,KAAI,SAAC8T,EAAG7T,GAAJ,MAAW,CAC1CzN,MAAOshB,EACPqD,MAAOpgB,GAAekJ,SAG1B,cAAC,KAAD,CACEzN,MAAOsR,EACP2f,aAAc3f,EACdkP,SAAU,SAACC,GAAD,OAAOlP,EAAiBkP,IAClC2E,QApLM,CAAC,EAAG,GAAI,GAAI,GAAI,GAoLD5X,KAAI,SAACgU,GAAD,MAAQ,CAC/BxhB,MAAOyO,EAAKzG,cAAgBwZ,EAC5BmD,MAAOlW,EAAKzG,cAAgBwZ,WAIlC,eAAC,KAAD,CAAK7gB,UAAU,4BAAf,UACE,cAAC,EAAD,CACEyN,KAAM,cAAC,GAAD,IACNnN,QAlIgB,WAC5BkhB,GAAmB,IAkIPxhB,UACET,OAAOC,KAAK6hB,GAAgBnc,QAC1B,SAAC4J,GAAD,cAAU,UAAAuS,EAAevS,UAAf,eAAqBrP,SAAU,GAAK,KAC9CA,OAAS,EACP,kBACA,GARR,qBAaA,cAAC,EAAD,CACEgO,KAAM,cAAC,KAAD,IACNnN,QAAS,WACPwoC,IAAyB,IAH7B,0BAUJ,cAAC,GAAD,CACEtkC,KAAMqkC,GACNjvC,QAASA,GACTktC,QAAS,SAACluC,GAAD,OAAkBmwC,GAA2BnwC,IACtDsS,QAAS,kBAAM49B,IAAyB,MAE1C,cAAC,KAAD,UACE,sBAAK9oC,UAAU,cAAf,UACE,cAAC,KAAWwgB,UAAZ,wCAGA,cAAC,KAAWA,UAAZ,UACGze,GAAe0V,WAItB,cAAC,KAAD,UACE,qBAAKzX,UAAU,kBAAf,SACE,cAAC,KAAD,CACE+hB,WAAY,CACVH,gBAAiB,GACjBiB,eAAgB,EAChBhB,iBAAiB,GAEnBe,WAAYpnB,EACZmH,MAAO,CAAE+K,MAAO,QAChB9T,QAASyX,EACTqS,QAAS,CACP,CACElc,MAAO,UACP6a,MAAO,OACP3U,MAAO,QACPmW,UAAW,WAEb,CACErc,MAAO,YACP6a,MAAO,OACP3U,MAAO,OACPmW,UAAW,aAEb,CACErc,MAAO,OACP6a,MAAO,OACP3U,MAAO,QACPmW,UAAW,QAEb,CACErc,MAAO,YACP6a,MAAO,OACP3U,MAAO,QACPmW,UAAW,qBAEb,CACErc,MAAO,QACP6a,MAAO,OACP3U,MAAO,OACPmW,UAAW,SAEb,CACErc,MAAO,iBACP6a,MAAO,OACP3U,MAAO,QACPmW,UAAW,kBAEb,CACErc,MAAO,mBACP6a,MAAO,OACP3U,MAAO,QACPmW,UAAW,gCAQzB,cAAC,KAAD,CACEzY,OAAQ,KACR8+B,OAAQ,KACRx8B,MAAM,QACNlJ,KAAM+c,EACNvhB,UAAU,eACVwH,MAAM,oBACNsD,SAAU,WACRoW,EAAWG,GACXG,GAAmB,IATvB,SAYE,eAAC,KAAD,CAAKc,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,iCAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAS2X,MAAV,CACErlB,MAAOwV,EAAQs1B,WACftqB,SAAU,SAACsqB,GACTjpB,GAAW,SAACrM,GAAD,mBAAC,eAAuBA,GAAxB,IAAiCs1B,mBAHhD,SAME,cAAC,KAAD,CAAK7nB,OAAQ,CAAC,EAAG,GAAjB,SAxPS,WACvB,IAAM8nB,EAAmB,GAQzB,OAPInC,GAAgBA,EAAaxoC,OAAS,GACxCwoC,EAAajyB,SAAQ,SAACpR,GAChBwlC,EAAU7mC,SAASqB,EAAG,uBAExBwlC,EAAUj0B,KAAKvR,EAAG,yBAGjBwlC,EAgPUC,GAAmBx9B,KAAI,SAACjI,GACvB,IAAMvF,EAAK,UAAMuF,EAAGnB,MAAM,KAAK,GAApB,YAA0BmB,EAAGnB,MAAM,KAAK,IACnD,OACE,cAAC,KAAD,CAAKsJ,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAK,iBAAYA,GAA3B,SAAqCuF,eAOjD,cAAC,KAAD,CAAKmI,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,uCAEF,eAAC,KAAD,CAAKrX,KAAM,GAAX,UACE,cAAC,KAAWiB,KAAZ,2BACA,cAAC,KAAD,CACE6P,IAAK2qB,EACL7lC,MAAO,CACL0Y,UAAW,MACXxY,aAAc,OACd6K,MAAO,OAETpN,QAAS,kBAAMioC,EAAmB,KAClC1oB,SAAU,SAACjb,GACLA,GAAI2jC,EAAmB7hC,IAAO9B,GAAImJ,OAAO,gBAE/CA,OAAQs6B,IAEV,cAAC,KAAWr6B,KAAZ,yBACA,cAAC,KAAD,CACErL,MAAO,CACL0Y,UAAW,MACXxY,aAAc,OACd6K,MAAO,OAETpN,QAAS,kBAAMqoC,EAAiB,KAChCrY,aAAc5pB,MACdmZ,SAAU,SAACjb,GACLA,GAAI+jC,EAAiBjiC,IAAO9B,GAAImJ,OAAO,gBAE7CA,OAAQs6B,YAKhB,cAAC,KAAD,CAAKt7B,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLgB,QAASA,GACT0G,QAAS,WACPghB,EAAkBzM,IACa,SAACA,GAC9B,IAAMs1B,GAAoB,OAAPt1B,QAAO,IAAPA,OAAA,EAAAA,EAASs1B,aAAc,GACpCT,EAAoB,GACpBY,EAAiB,GACvB,GAAIH,EAAW1qC,OAAS,EAAxB,CAUE,GATA0qC,EAAWn0B,SAAQ,SAACu0B,GAClB/uC,EAAKwa,SAAQ,SAACpR,GAAa,IAAD,IACV,2BACZA,EAAG,4BADS,aACZ,EAAmBnB,MAAM,KAAK,GADlB,sBAEVmB,EAAG,4BAFO,aAEV,EAAmBnB,MAAM,KAAK,MACjB8mC,GAAQb,EAAavzB,KAAKvR,SAG/CojC,EAAQ0B,GACJpB,GAAmBI,EAAe,CACpC,IAAM8B,EAAY9jC,IAChB4hC,EACAD,GACAoC,SACIC,EAAUhkC,IACdgiC,EACAL,GACAoC,SACFf,EAAa1zB,SAAQ,SAACpR,GACpB,IAAM+lC,EAAgBjkC,IACpB9B,EAAE,UACFyjC,GACAoC,SAEAE,GAAiBH,GACjBG,GAAiBD,GAEjBJ,EAAUn0B,KAAKvR,MAEnBojC,EAAQsC,GAEVlC,EACEkB,GACuB,IAArBgB,EAAU7qC,OAAeiqC,EAAeY,EACxC,cAnCN,CAuCO,GAAIhC,GAAmBI,EAAe,CAC3C,IAAM8B,EAAY9jC,IAChB4hC,EACAD,GACAoC,SACIC,EAAUhkC,IAAOgiC,EAAeL,GAAYoC,SAclD,OAbAjvC,EAAKwa,SAAQ,SAACpR,GACZ,IAAM+lC,EAAgBjkC,IACpB9B,EAAE,UACFyjC,GACAoC,SAEAE,GAAiBH,GACjBG,GAAiBD,GAEjBJ,EAAUn0B,KAAKvR,MAEnBojC,EAAQsC,QACRlC,EAAgBkB,GAAcgB,EAAW,UAG3CtC,EAAQC,IAEV2C,CAAuB/1B,GACvBnX,YAAW,WACT8jB,GAAmB,KAClB,MA5EP,gC,UC9ZG,OAA0B,iCCA1B,OAA0B,qCCE5BqpB,GAASzyC,IAAOyC,EAAV,qRAeNiwC,GAAW1yC,IAAOsT,OAAV,+KAWRq/B,GAAY3yC,IAAOC,IAAV,oWAwBT2yC,GAAe5yC,IAAOy9B,EAAV,yECpDV,OAA0B,6CCA1B,OAA0B,uDCkBnCoV,GACJ,2QAIWC,GAAmB,SAAC,GAKlB,IAJbC,EAIY,EAJZA,iBACAhR,EAGY,EAHZA,oBACAiR,EAEY,EAFZA,kBACAC,EACY,EADZA,SAEQ7wC,EAASkF,IAATlF,KACR,OACE,eAAC,GAAD,CACEkT,MAAO,IACPtC,OAAQ,KACR5G,OAAQ2mC,EACR3jC,MAAK,wCAAgC2jC,GACrCrgC,SAAU,WACRqvB,EAAoB,OANxB,UASwB,OAArBgR,EACC,cAAC,KAAWn9B,KAAZ,0IAKA,cAAC,KAAWA,KAAZ,wIAKF,qBACErL,MAAO,CACL4Y,QAAS,OACTC,eAAgB,SAChB9N,MAAO,OACPiS,OAAQ,UALZ,SAQE,cAAC,KAAD,CACEjS,MAAO,IACPzN,IACuB,OAArBkrC,EACIG,GACAC,OAKY,OAArBJ,EACC,qCACE,cAAC,GAAD,CAAQ5mC,KAAM0mC,GAAQ/uB,OAAO,SAAS0D,IAAI,aAA1C,SACGqrB,KAGH,qBACEtoC,MAAO,CACL+K,MAAO,OACP6N,QAAS,OACTC,eAAgB,SAChBmE,OAAQ,UALZ,SAQE,cAAC,GAAD,CACErf,QAAS,WACPyD,UAAUynC,UAAUC,UAAUR,IAC9BrsC,IAAQmB,QAAQ,iBAHpB,8BAWJ,qCACE,cAAC,KAAWsN,MAAZ,CAAkBC,MAAO,EAAG3K,MAAO,CAAEC,SAAU,QAA/C,8BAGA,gCACE,eAAC,GAAD,WACE,6CADF,oBAC4C,IAC1C,yDAFF,qCAKA,eAAC,GAAD,WACE,6CADF,0CACkE,IAChE,gEAEF,eAAC,GAAD,WACE,6CADF,cACsC,IACpC,+DAFF,+BAQN,cAAC,KAAD,IAEA,eAAC,KAAWyK,MAAZ,CAAkBC,MAAO,EAAG3K,MAAO,CAAEC,SAAU,QAA/C,yBACoC,OAArBuoC,EAA4B,SAAW,sBAAiB,IADvE,sBAIA,sBAAKxoC,MAAO,CAAE4Y,QAAS,OAAQF,UAAW,QAA1C,UACE,eAAC,GAAD,CACE/a,QAAS,WACH8qC,IACFC,EACuB,OAArBF,EACI,iBACA,uBACJ,CAACC,IAEHjR,EAAoB,QAT1B,UAaE,qBAAKl6B,IAAKyrC,GAAUvrC,IAAI,uBACxB,0CAEF,eAAC,GAAD,CACEG,QAAS,WACP,IAEM2e,EAAG,wBAAoC,OAAjBmsB,QAAiB,IAAjBA,OAAA,EAAAA,EAAmBpqC,OAAnB,oBAAiCoqC,QAAjC,IAAiCA,OAAjC,EAAiCA,EAAmBpqC,OAAU,GAAjF,iBACuB,OAArBmqC,EAAA,UACFQ,UAAU,cAAD,OACDnxC,EAAKA,KAAKkB,KADT,2MADP,OA3HrB,4TAwHoB,+LASViC,OAAO6G,KAAKya,EAAK,WAXrB,UAcE,qBAAKhf,IAAK2rC,GAAWzrC,IAAI,yBACzB,mDCxJGhI,GAAYC,IAAOC,IAAV,mtCC0CPwzC,GA/B6B,SAAC,GAMtC,IALLjyC,EAKI,EALJA,QACA4hC,EAII,EAJJA,SACA1iC,EAGI,EAHJA,SAGI,IAFJ6iC,kBAEI,MAFS,oBAET,EADDljC,EACC,+DACJ,OACE,cAAC,GAAD,UACE,cAAC,KAAD,yBACEK,SAAUc,GAAWd,EACrBkH,UAAU,0BACNvH,GAHN,aAKGmB,EACC,sBAAKoG,UAAU,oBAAf,UACE,cAACI,EAAA,EAAD,IACA,gFAGF,sBAAKJ,UAAU,mBAAf,UACE,cAAC,KAAD,CAAsBnH,KAAM,KAC3B8iC,EACAH,GAAY,sBAAMx7B,UAAU,mBAAhB,SAAoCw7B,aCjChDsQ,GAAoB1zC,YAAO2zC,KAAS5+B,MAAhB/U,CAAH,o1H,8BCgBxB0K,GAAqB,SAACJ,GAAD,OAAgBA,EAAI,GAAS,EAALA,EAASA,GAEtDspC,GAAS,SAACtpC,GAAD,OAAgBA,EAAI,EAAI,IAAMA,EAAI,EAAI,IAAM,IAErDD,GAAQ,SAACC,GAAD,OAAgBA,EAAI,EAC9B,cAAC,KAAD,CAAkBC,MAAO,CAACC,SAAU,OAAQC,aAAc,UAC1DH,EAAI,EACJ,cAAC,KAAD,CAAoBC,MAAO,CAACC,SAAU,OAAQC,aAAc,UAC5D,IAEE7C,GAAY,SAAC0C,GAAD,OAAsB,IAANA,EAAU,GAAKA,EAAI,EAAI,UAAY,SAExDupC,GAIR,SAAC,GAAD,IAAGvpC,EAAH,EAAGA,EAAGmzB,EAAN,EAAMA,EAAGqW,EAAT,EAASA,QAAT,OACH,uBAAMlsC,UAAWA,GAAU0C,GAAK,GAAhC,UACGD,GAAMC,GAAK,GACXX,GAAee,GAAmBJ,GAAK,IAF1C,KAEiDD,GAAMC,GAAK,GACzDK,GAAmBD,GAAmB+yB,GAAK,IAH9C,IAIGqW,GACC,uBAAMlsC,UAAS,mBAAcA,GAAU0C,GAAK,IAA5C,UACGspC,GAAOtpC,GAAK,GACZX,GAAee,GAAmBJ,EAAIA,EAAIwpC,EAAU,GAAI,eAMpDC,GAIR,SAAC,GAAwC,IAAtCzhC,EAAqC,EAArCA,MAAO0Z,EAA8B,EAA9BA,OAA8B,IAAtBgoB,SACf/sC,EAAK,eADgC,SACf,MAAQ,GAAzB,QACLqpB,EAAUtE,EAAS,iCAAS/kB,IAAkBA,EACpD,OAAOqL,EAAQ,8BAAMge,IAAiB,+BAAOA,KAmClC2jB,GAAgB,SAACC,EAAwBC,GAAzB,OAC3B,sBAAKvsC,UAAU,SAAf,UACE,sBAAKA,UAAU,QAAQ2C,MAAO,CAAE+K,MAAO,OAAQ4N,SAAU,GAAzD,WACU,OAAPgxB,QAAO,IAAPA,OAAA,EAAAA,EAASE,SAAU,QACpB,uBACExsC,UACyB,WAAhB,OAAPssC,QAAO,IAAPA,OAAA,EAAAA,EAASG,WACLzsC,IAAiB,OAAPssC,QAAO,IAAPA,OAAA,EAAAA,EAASI,qBAAsB,GACzC1sC,IAAiB,OAAPssC,QAAO,IAAPA,OAAA,EAAAA,EAASK,sBAAuB,GAJlD,UAO0B,WAAhB,OAAPL,QAAO,IAAPA,OAAA,EAAAA,EAASG,WACNhqC,IAAa,OAAP6pC,QAAO,IAAPA,OAAA,EAAAA,EAASI,qBAAsB,GACrCjqC,IAAa,OAAP6pC,QAAO,IAAPA,OAAA,EAAAA,EAASK,sBAAuB,GACzC5pC,GACwB,WAAhB,OAAPupC,QAAO,IAAPA,OAAA,EAAAA,EAASG,WACL3pC,IAA0B,OAAPwpC,QAAO,IAAPA,OAAA,EAAAA,EAASM,+BAAgC,GAC5D9pC,IAA0B,OAAPwpC,QAAO,IAAPA,OAAA,EAAAA,EAASO,gCAAiC,UAIvE,qBACE7sC,UAAU,UACV2C,MAAO,CAAEwL,WAAY,MAAOqN,eAAgB,YAF9C,SAIG+wB,EACC,cAAC,GAAD,IAEAxqC,GACyB,mBAAhB,OAAPuqC,QAAO,IAAPA,OAAA,EAAAA,EAASG,YACE,OAAPH,QAAO,IAAPA,OAAA,EAAAA,EAASQ,aAAc,GAChB,OAAPR,QAAO,IAAPA,OAAA,EAAAA,EAASA,UAAW,SAOrBS,GAAkB,CAC7BvlC,MAAO,iBACPkhB,QACE,8BACE,0EACyC,IACvC,cAAC,IAAD,CAAMskB,GAAG,8BAAT,SACE,2DAHJ,UAWOC,GAAc,SACzBX,EACAxP,EACAyP,EACAW,EACAtzC,EACAuzC,GACI,IAAD,gBACH,OACE,qCACE,gCACE,+CACA,+BACGZ,EAAa,cAAC,GAAD,CAAYH,UAAU,IAAYE,EAAQ38B,gBAG5D,gCACyB,kBAAtB28B,EAAQG,UACP,qDAEA,mDAEF,iCACGF,EACC,cAAC,GAAD,IAEAxqC,GAAeuqC,EAAQQ,YAAc,GAEtCK,GACC,sBAAMntC,UAAU,WAAhB,SACG+B,GACCuqC,EAAQQ,WAAaR,EAAQQ,WAAaK,EAAe,EACzD,gBAMV,8BAC+B,aAArB,OAAPb,QAAO,IAAPA,GAAA,UAAAA,EAASc,YAAT,eAAeC,WACd,qCACE,sDACA,+BACGd,EACC,cAAC,GAAD,IAEAxqC,GAAeuqC,EAAQgB,YAAc,UAM9ChB,EAAQiB,iBAA+C,aAArB,OAAPjB,QAAO,IAAPA,GAAA,UAAAA,EAASc,YAAT,eAAeC,WACzC,sBACE1qC,MAAO,CAAE4d,OAAQ,WACjBjgB,QAAS,kBAAMw8B,EAAaiQ,KAF9B,UAIE,8DACA,+BACE,cAACzsB,GAAA,EAAD,CAAoBtgB,UAAU,0BAIlCssC,EAAQiB,iBAA+C,aAArB,OAAPjB,QAAO,IAAPA,GAAA,UAAAA,EAASc,YAAT,eAAeC,WAC1C,gCACyB,kBAAtBf,EAAQG,UACP,mDAEA,6DAEF,iCAC0B,IAAvBH,EAAQkB,YAAqBlB,EAAQkB,WAElCjB,EACF,cAAC,GAAD,IAEAxqC,GAAeuqC,EAAQkB,YAJvB,MAMDL,GAAgBb,EAAQkB,YACvB,sBAAMxtC,UAAU,WAAhB,SACG+B,GACCuqC,EAAQkB,WAAalB,EAAQkB,WAAaL,EAAe,EACzD,gBAOW,kBAAtBb,EAAQG,WACe,UAAtBH,EAAQG,WACN,gCACE,iEACCF,EACC,cAAC,GAAD,IAEA,cAAC,GAAD,CACE7pC,EAAG4pC,EAAQK,oBACX9W,EAAGyW,EAAQO,8BACXX,QAASiB,IAEV,OAGRb,EAAQiB,iBACP,sBACE5qC,MAAO,CAAE4d,OAAQ,WACjBjgB,QAAS,kBAAMw8B,EAAaiQ,KAF9B,UAIE,4DAAmC,IACnC,cAACzsB,GAAA,EAAD,CAAoBtgB,UAAU,wBAGhCssC,EAAQiB,iBACR,gCACE,6DACwB,IAAvBjB,EAAQkB,YAAqBlB,EAAQkB,WAElCjB,EACF,cAAC,GAAD,IAEA,cAAC,GAAD,CACE7pC,EAAG4pC,EAAQI,mBACX7W,EAAGyW,EAAQM,6BACXV,QAASiB,IAPX,SAYLD,IACyB,SAAhB,OAAPA,QAAO,IAAPA,OAAA,EAAAA,EAASO,YACU,SAAX,OAAPP,QAAO,IAAPA,OAAA,EAAAA,EAASQ,OACY,SAAd,OAAPR,QAAO,IAAPA,OAAA,EAAAA,EAASS,UACgB,SAAlB,OAAPT,QAAO,IAAPA,OAAA,EAAAA,EAASU,cACkB,SAApB,OAAPV,QAAO,IAAPA,OAAA,EAAAA,EAASW,gBACgB,SAAlB,OAAPX,QAAO,IAAPA,OAAA,EAAAA,EAASY,cAC2B,SAA7B,OAAPZ,QAAO,IAAPA,OAAA,EAAAA,EAASa,yBAC0B,SAA5B,OAAPb,QAAO,IAAPA,OAAA,EAAAA,EAASc,yBACT,qCACE,oBAAIhuC,UAAU,eACd,sBAAKA,UAAU,cAAf,UACE,sBAAKA,UAAU,eAAf,UACE,cAAC,KAAWqN,MAAZ,CAAkBC,MAAO,EAAGtN,UAAU,aAAtC,8BAGA,gCACE,kEACA,+BACGusC,EACC,cAAC,GAAD,CAAYH,UAAU,IAEtB,qCACGrqC,GACCmB,QAAc,OAAPgqC,QAAO,IAAPA,OAAA,EAAAA,EAASO,YAAa,GAAK,KACjC,IAHL,YASN,gCACE,gEACA,+BACGlB,EACC,cAAC,GAAD,CAAYH,UAAU,IACY,kBAAhC,OAAOc,QAAP,IAAOA,OAAP,EAAOA,EAASY,aAAhB,OACFZ,QADE,IACFA,OADE,EACFA,EAASY,YAET/rC,GAAc,OAACmrC,QAAD,IAACA,OAAD,EAACA,EAASY,kBAI9B,gCACE,0DACA,+BACGvB,EACC,cAAC,GAAD,CAAYH,UAAU,IACc,kBAAlC,OAAOc,QAAP,IAAOA,OAAP,EAAOA,EAASW,eAAhB,OACFX,QADE,IACFA,OADE,EACFA,EAASW,cADP,oBAG2B,KAAlB,OAAPX,QAAO,IAAPA,OAAA,EAAAA,EAASW,sBAHX,aAGC,EAAgC7qC,QAAQ,GAHzC,UAOR,gCACE,mEACA,+BACGupC,EACC,cAAC,GAAD,CAAYH,UAAU,IADb,OAGTc,QAHS,IAGTA,OAHS,EAGTA,EAASU,iBAIf,cAAC,KAAWvgC,MAAZ,CAAkBC,MAAO,EAAGtN,UAAU,aAAtC,6BASA,gCACE,sDACA,+BACGusC,EACC,cAAC,GAAD,CAAYH,UAAU,IADb,UAIoC,kBAA3C,OAAOc,QAAP,IAAOA,OAAP,EAAOA,EAASa,wBAAhB,iBACOb,QADP,IACOA,GADP,UACOA,EAASa,8BADhB,aACO,EAAiC/qC,QAAQ,GADhD,aAEIkqC,QAFJ,IAEIA,OAFJ,EAEIA,EAASa,6BAKrB,gCACE,qDACA,+BACGxB,EACC,cAAC,GAAD,CAAYH,UAAU,IADb,UAImC,kBAA1C,OAAOc,QAAP,IAAOA,OAAP,EAAOA,EAASc,uBAAhB,iBACOd,QADP,IACOA,GADP,UACOA,EAASc,6BADhB,aACO,EAAgChrC,QAAQ,GAD/C,aAEIkqC,QAFJ,IAEIA,OAFJ,EAEIA,EAASc,4BAKrB,gCACE,+CACA,+BACGzB,EACC,cAAC,GAAD,CAAYH,UAAU,IADb,UAIqB,kBAA5B,OAAOc,QAAP,IAAOA,OAAP,EAAOA,EAASS,SAAhB,iBACOT,QADP,IACOA,GADP,UACOA,EAASS,eADhB,aACO,EAAkB3qC,QAAQ,IADjC,OAEIkqC,QAFJ,IAEIA,OAFJ,EAEIA,EAASS,QANN,eAYT,OAAPT,QAAO,IAAPA,GAAA,UAAAA,EAASe,aAAT,eAAgBxuC,SACf,qBAAKO,UAAU,gBAAf,SACE,cAACgoB,GAAA,EAAD,CAAqBta,MAAM,OAAO9C,OAAQ,IAA1C,SACE,eAACsjC,GAAA,EAAD,CACE1yC,KAAM0xC,EAAQe,MACdtuB,OAAQ,CAAEuI,IAAK,GAAIimB,MAAO,GAAIhmB,KAAM,EAAGimB,OAAQ,GAFjD,UAIE,+BACE,iCACEvgC,GAAG,UACHwgC,GAAG,IACHC,GAAG,IACHC,GAAG,IACHC,GAAG,IALL,UAOE,sBACEC,OAAO,KACPC,UAAU,UACVC,YAAa,KAEf,sBACEF,OAAO,MACPC,UAAU,UACVC,YAAa,SAInB,cAACvmB,GAAA,EAAD,CACEC,QAAQ,OACRumB,UAAW,EACXh2C,KAAK,WACL2yB,SAAU,GACVsjB,cAAe,SAACC,GACd,IAAMhhC,EAAO,IAAIzH,KAAKyoC,GACtB,MAAM,GAAN,OAAUhhC,EAAK3G,WAAa,EAA5B,YAAiC2G,EAAKzG,kBAG1C,cAACihB,GAAA,EAAD,CAAOymB,YAAY,UACnB,cAACC,GAAA,EAAD,CAAeC,gBAAgB,QAC/B,cAACxmB,GAAA,EAAD,CACEC,QAAS,kBAAG5T,EAAH,EAAGA,QAASkP,EAAZ,EAAYA,MAAZ,OACP,sBAAKhkB,UAAU,gBAAf,UACE,+BACG0G,IAAO,IAAIL,KAAK2d,IAAQjW,OAAO,gBAElC,kDACW,IACRhM,GAAemB,QAAc,OAAP4R,QAAO,IAAPA,GAAA,UAAAA,EAAU,UAAV,eAAczV,QAAS,aAKtD,cAAC6vC,GAAA,EAAD,CACEt2C,KAAK,WACLyvB,QAAQ,QACRnL,OAAO,UACPiyB,YAAa,EACbxxB,KAAK,+BAStB/jB,GACC,qBAAK+I,MAAO,CAAEiI,OAAQ,SAAtB,SACE,cAAC,GAAD,UAOGwkC,GAAc,SAAC,GAQH,IAPvBtgC,EAOsB,EAPtBA,IACAo+B,EAMsB,EANtBA,QACAZ,EAKsB,EALtBA,QACAC,EAIsB,EAJtBA,WACA3yC,EAGsB,EAHtBA,QACAkjC,EAEsB,EAFtBA,aACAqQ,EACsB,EADtBA,aAEA,OACE,cAACrB,GAAD,CAA6B1+B,OAAQi/B,GAAcC,EAASC,GAA5D,SACGD,EACGW,GACEX,EACAxP,EACAyP,EACAW,EACAtzC,EACAuzC,GAEF,MAVkBr+B,IAefugC,GAAa,SAAC,GAAD,SAAG9J,SAEzB,cAAC,KAAD,CACE5iC,MAAO,CACLC,SAAU,OACVyJ,MAAO,8BAIX,cAAC,KAAD,CACE1J,MAAO,CACLC,SAAU,OACVyJ,MAAO,+BCtff,SAAS,KAA2Q,OAA9P,GAAW9M,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,qgDACHU,KAAM,YAGJ,GAAqB,gBAAoB,OAAQ,CACnDV,EAAG,kCACHC,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,UAGlB,SAASiyB,GAAQ/xB,EAAMC,GACrB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,GAAO,IAG3B,I,GAAI,GAA0B,aAAiB8nC,I,IAChC,I,QCTFC,GAAmB,SAAC,GAM1B,IAAD,IALJ7zC,EAKI,EALJA,KACA8zC,EAII,EAJJA,UAKMrF,EAAa,CACjB,CACEzuC,KAAM,6BACN8zC,UAAW,oBAEb,CACE9zC,KAAM,sCACN8zC,UAAW,UAEb,CACE9zC,KAAM,4DACN8zC,UAAW,SAEb,CACE9zC,KAAM,kBACN8zC,UAAW,SAEb,CACE9zC,KAAM,6BACN8zC,UAAW,mBAEb,CACE9zC,KAAM,WACN8zC,UAAW,yBAIf,OAAI9zC,GAAa,UAAAyuC,EAAWn7B,MAAK,SAACiH,GAAD,OAAOA,EAAEva,OAASA,YAAlC,eAAyC8zC,YAAa9zC,EACnE8zC,GACK,UAAArF,EAAWn7B,MAAK,SAACiH,GAAD,OAAOA,EAAEu5B,YAAcA,YAAvC,eAAmD9zC,OAAQ8zC,EAC7D,IAGHC,GAAwB,SAAChD,GAC7B,OAAIA,EAAUlpC,SAAS,2BAAmC,MACtDkpC,EAAUlpC,SAAS,OAAe,OAClCkpC,EAAUlpC,SAAS,OAAe,OAClCkpC,EAAUlpC,SAAS,OAAe,OAClCkpC,EAAUlpC,SAAS,2BAAgC,iBACnDkpC,EAAUlpC,SAAS,iBAAyB,iBACzCkpC,GAGHiD,GAAyB,SAAC/5B,EAAeg6B,GAC7C,IAAMC,EAAuBhoC,KAAEwf,QAAQzR,GAAU,SAACkgB,GAAD,OAAOA,EAAEpO,aACpDooB,EAAmB,GACzB,IAAK,IAAMpoB,KAAamoB,EAAsB,CAC5C,IAAME,EAAQF,EAAqBnoB,GAAWtiB,QAAO,SAAC4qC,EAAMC,GAC1D,OAAQD,GAAQ,KAAU,OAAJC,QAAI,IAAJA,OAAA,EAAAA,EAAM1D,UAAW,KACtC,GACHuD,EAAiB15B,KAAK,CACpBza,KAAM6zC,GAAiB,CAAE7zC,KAAM+rB,IAC/BpoB,MAAOywC,IAIX,OAAOG,GAA8BJ,IAGjCK,GAAuB,SAACv6B,GAC5B,IAAMi6B,EAAuBhoC,KAAEwf,QAAQzR,GAAU,SAACkgB,GAAD,OAAOA,EAAEpO,aAK1D,OAJmBloB,OAAOC,KAAKowC,GACQ/iC,KAAI,SAACoJ,GAAD,OACzCs5B,GAAiB,CAAE7zC,KAAMua,OAEAmC,MAAK,SAACvd,EAAGwd,GAAJ,OAAUxd,EAAEyd,cAAcD,OAGtD83B,GAAuB,SAACx6B,EAAeg6B,GAC3C,IAAMS,EAAuBxoC,KAAEwf,QAAQzR,GAAU,SAACkgB,GAAD,OAAOA,EAAE4W,aACpD4D,EAAmB,GACzB,IAAK,IAAM5D,KAAa2D,EAAsB,CAC5C,IAAMN,EAAQM,EAAqB3D,GAAWtnC,QAAO,SAAC4qC,EAAMC,GAC1D,OAAQD,GAAQ,KAAU,OAAJC,QAAI,IAAJA,OAAA,EAAAA,EAAM1D,UAAW,KACtC,GACH+D,EAAiBl6B,KAAK,CACpBza,KAAM+zC,GAAsBhD,GAC5BptC,MAAOywC,IAIX,OAAOG,GAA8BI,IAGjCJ,GAAgC,SACpCI,GAEA,IAAMC,EAAcD,EAAiBlrC,QACnC,SAACglB,EAAK6lB,GAAN,OAAe7lB,EAAM6lB,EAAK3wC,QAC1B,GASF,OANqBgxC,EAAiBxjC,KAAI,SAAC4/B,GAAD,MAAgB,CACxD/wC,KAAM+wC,EAAU/wC,KAChB2D,MAAOotC,EAAUptC,MACjBkxC,WAAYrtC,QAASupC,EAAUptC,MAAQixC,EAAe,KAAKttC,QAAQ,SAMjEwtC,GAA6B,SACjC76B,GAWA,IAAKA,GAAgC,IAApBA,EAASlW,OAAc,MAAO,GAY/C,IAVA,IAAMgxC,EAAkBvtC,OACtByS,EAASxQ,QAAO,SAAC4qC,EAAMC,GAAP,OAAgBD,EAAOC,EAAK1D,UAAS,GAAGtpC,QAAQ,IAG5D0tC,EAAoB/6B,EAASyC,MAAK,SAACvd,EAAGwd,GAC1C,OAAOA,EAAEi0B,QAAUzxC,EAAEyxC,WAGjBqE,EAAe,GAGf7jC,EAAI,EACRA,GACC4jC,EAAkBjxC,OANe,EAO9BixC,EAAkBjxC,OAPY,GASlCqN,IACA,CACA,IAAMw/B,EAAUoE,EAAkB5jC,GAClC,GAA0B,aAAtBw/B,EAAQG,YAA6BH,EAAQiB,gBAAiB,CAChE,IAAMqD,EAAetE,EAAQA,QAAUmE,EAAmB,IAC1DE,EAAax6B,KAAK,CAChBza,KAAM4wC,EAAQE,OACdntC,MAAO6D,OAAOopC,EAAQA,SACtBiE,WAAYrtC,OAAO0tC,EAAY5tC,QAAQ,OAK7C,IAAI6tC,EAAwBF,EAAav4B,MACvC,SAACvd,EAAGwd,GAAJ,OAAUxd,EAAE01C,WAAal4B,EAAEk4B,cAGzBM,EAAsBpxC,OA1BU,IA2BlCoxC,EAAwBA,EAAsBjvC,MAC5C,EA5BgC,IAiCpC,IA3CG,EA2CCkvC,EAAkC,EAClCC,EAA6B,EA5C9B,eA6CcF,GA7Cd,IA6CH,2BAAwC,CAAC,IAA9BG,EAA6B,QACtCF,GAAmCE,EAAGT,WACtCQ,GAA8BC,EAAG3xC,OA/ChC,8BAkDH,IAAM8M,EAAM0kC,EAAsBz4B,MAAK,SAACvd,EAAGwd,GAAJ,OAAUA,EAAEk4B,WAAa11C,EAAE01C,cAUlE,OARIO,EAAkC,KACpC3kC,EAAIgK,KAAK,CACPza,KAAM,SACN2D,MAAOoxC,EAAkBM,EACzBR,WAAYrtC,QAAQ,IAAM4tC,GAAiC9tC,QAAQ,MAIhEmJ,GChNI8kC,GAAwB74C,IAAOC,IAAV,uwGCsBrB64C,GAAqB,SAAC,GAMpB,IAAD,IALZ1sC,EAKY,EALZA,KACA0G,EAIY,EAJZA,QACA2J,EAGY,EAHZA,QACA6B,EAEY,EAFZA,WACA5C,EACY,EADZA,YACY,EAORqF,KALF5G,EAFU,EAEVA,eACAtB,EAHU,EAGVA,aACAC,EAJU,EAIVA,gBACAC,EALU,EAKVA,oBACAuD,EANU,EAMVA,WANU,EAQ4Bnb,mBAAgC,MAR5D,mBAQL43C,EARK,KAQSC,EART,KASNC,GAASpgC,GAAgB,IAAI/L,QAAO,SAACxC,GAAD,OAAOA,EAAE4uC,UAC7CC,GAAYtgC,GAAgB,IAAI/L,QAAO,SAACxC,GAAD,OAAQA,EAAE4uC,UAEjDE,EAAqB,SAAChlC,GAC1B,IAAMilC,EAAgBxgC,EAAapE,KAAI,SAACnK,EAAGoK,GACzC,YAAc+B,IAAVrC,GAAuBA,IAAUM,EAC5B,2BAAKpK,GAAZ,IAAe4uC,QAAQ,EAAMI,WAAY,IAAIrrC,OACxC3D,KAGT0uC,OAA0BviC,IAAVrC,EAAsB,MAAQA,GAC9C3U,EACG85C,MADH,uCACkCp/B,QADlC,IACkCA,OADlC,EACkCA,EAAgB9W,UAAY,CAC1Dg2C,kBAED30C,MAAK,WACJoU,EAAgBugC,GAChBL,EAAgB,MAChB18B,EAAW,2BACNG,GADK,IAERF,KAAMb,EACN4C,WAAYA,EAAWjX,OAAS,EAAIiX,EAAa,WAGpD1Z,OAAM,WACL4B,IAAQX,MAAM,wDAYpB,OACE,cAAC,KAAD,yBACEuG,KAAMA,EACN3L,KAAK,QACLoS,UAAU,QACVC,QAASA,EACT67B,UAAW,cAAC,KAAD,IACXv/B,MACE,qBAAKlH,QAAS4K,EAASvI,MAAO,CAAE4d,OAAQ,WAAxC,qBAIG/nB,KAAa,CAAEkV,MAAO,QAAW,IAXxC,aAaE,eAACujC,GAAD,WACE,gCACE,cAAC,KAAW5jC,MAAZ,CAAkBC,MAAO,EAAzB,gCACA,qBAAKtN,UAAU,gBAGfmR,IAAwBF,EAAaxR,SACrC,sBAAKO,UAAU,eAAf,UACE,qBAAKC,IClGF,qgZDkG0BE,IAAI,uBAChCgR,EACC,sBAAKnR,UAAU,UAAf,UACE,cAACI,EAAA,EAAD,IACA,cAAC,KAAWiN,MAAZ,CAAkBC,MAAO,EAAzB,6CAIA,OAAC2D,QAAD,IAACA,OAAD,EAACA,EAAcxR,QAKjB,6BAJA,cAAC,KAAW4N,MAAZ,CAAkBC,MAAO,EAAzB,yEAUJ,OAACikC,QAAD,IAACA,OAAD,EAACA,EAAU9xC,UAAW0R,GACtB,sBAAKnR,UAAU,UAAf,UACE,cAAC,KAAWqN,MAAZ,CAAkBC,MAAO,EAAzB,0BACA,wBAAQhN,QAAS,kBAAMkxC,KAAvB,wCAKFrgC,IAAD,UACEF,GAAgB,UADlB,aACC,EAAsBpE,KAAI,SAAC7H,EAAM8H,GAAO,IAAD,EACrC,OAAI9H,EAAKssC,OAAe,6BAEtB,8BACE,sBACEtxC,UAAU,OACVM,QAAS,WACD6wC,IAAiBrkC,GAAsB,QAAjBqkC,GAC1BK,EAAmB1kC,IAJzB,WAOIqkC,IAAiBrkC,GAAsB,QAAjBqkC,IACtB,qBAAKnxC,UAAU,UAAf,SACE,cAACI,EAAA,EAAD,MAGJ,sBAAKJ,UAAU,SAAf,UACE,cAAC,KAAD,IACA,cAAC,KAAWqN,MAAZ,CAAkBC,MAAO,EAAzB,oCAGK,OAAJtI,QAAI,IAAJA,OAAA,EAAAA,EAAM8I,OACL,cAAC,KAAWE,KAAZ,oBACG,IAAI3H,KAAJ,OAASrB,QAAT,IAASA,OAAT,EAASA,EAAM8I,aADlB,aACG,EAAsB8jC,mBAAmB,QAAS,CACjDtqC,KAAM,UACNC,MAAO,UACPsqC,IAAK,iBAKb,sBAAK7xC,UAAU,OAAf,UACE,cAAC,KAAWgO,KAAZ,UAAkBhJ,EAAKpG,UACvB,cAAC,KAAD,CAAS4I,MAAM,sBAAsByD,UAAU,OAA/C,SACE,wBACE3K,QAAS,SAACwf,IA7FX,SAAC6E,EAAY3jB,EAAege,GAC/C2F,EAAMmtB,kBACN,IAAM7yB,EAAG,uBACPje,EAAK,aAASA,GAAU,GADjB,iBAEAge,EAAK/W,WAAW,IAAK,QAC9BtK,OAAO6G,KAAKya,EAAKzmB,UAAaqW,EAAY,UAyFpBkjC,CAAajyB,EAAD,OAAIvN,QAAJ,IAAIA,OAAJ,EAAIA,EAAgBvR,MAAQgE,EAAKpG,UAFjD,SAKE,cAAC,GAAD,eApCAkO,UA8Cd,OAACukC,QAAD,IAACA,OAAD,EAACA,EAAO5xC,UAAW0R,GACnB,qBAAKnR,UAAU,UAAf,SACE,cAAC,KAAWqN,MAAZ,CAAkBC,MAAO,EAAzB,sBAGF6D,IAAD,UACEF,GAAgB,UADlB,aACC,EAAsBpE,KAAI,SAAC7H,EAAM8H,GAAO,IAAD,EACrC,OAAK9H,EAAKssC,OAER,8BACE,sBAAKtxC,UAAU,cAAf,UACE,sBAAKA,UAAU,SAAf,UACE,cAAC,KAAD,IACA,cAAC,KAAWqN,MAAZ,CAAkBC,MAAO,EAAzB,oCAGK,OAAJtI,QAAI,IAAJA,OAAA,EAAAA,EAAM8I,OACL,cAAC,KAAWE,KAAZ,oBACG,IAAI3H,KAAJ,OAASrB,QAAT,IAASA,OAAT,EAASA,EAAM8I,aADlB,aACG,EAAsB8jC,mBAAmB,QAAS,CACjDtqC,KAAM,UACNC,MAAO,UACPsqC,IAAK,iBAKb,qBAAK7xC,UAAU,OAAf,SACE,cAAC,KAAWgO,KAAZ,UAAkBhJ,EAAKpG,gBAlBnBkO,GAFa,wCEtLrC,SAAS,KAA2Q,OAA9P,GAAWvN,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,IAAK,CAChDqkB,SAAU,2BACI,gBAAoB,UAAW,CAC7CC,QAAS,IACTC,GAAI,QACJC,GAAI,QACJ3iB,GAAI,IACJ4iB,GAAI,IACJC,UAAW,8BACXjjB,KAAM,YACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,IACHhgB,EAAG,IACHnT,MAAO,GACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,UACS,gBAAoB,SAAU,CAC7C8iB,GAAI,IACJC,GAAI,IACJI,EAAG,GACHnjB,KAAM,YACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,IACHhgB,EAAG,IACHnT,MAAO,GACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,UACS,gBAAoB,SAAU,CAC7C8iB,GAAI,IACJC,GAAI,IACJI,EAAG,GACHnjB,KAAM,YACS,gBAAoB,OAAQ,CAC3CV,EAAG,8CACHC,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3CwjB,EAAG,IACHhgB,EAAG,IACHnT,MAAO,GACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,UACS,gBAAoB,SAAU,CAC7C8iB,GAAI,IACJC,GAAI,IACJI,EAAG,GACHnjB,KAAM,YACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,IACHhgB,EAAG,GACHnT,MAAO,GACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,UACS,gBAAoB,SAAU,CAC7C8iB,GAAI,IACJC,GAAI,GACJI,EAAG,GACHnjB,KAAM,YACS,gBAAoB,OAAQ,CAC3CkjB,EAAG,IACHhgB,EAAG,GACHnT,MAAO,GACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,UACS,gBAAoB,SAAU,CAC7C8iB,GAAI,IACJC,GAAI,GACJI,EAAG,GACHnjB,KAAM,YACS,gBAAoB,OAAQ,CAC3CV,EAAG,4CACHC,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3CwjB,EAAG,GACHhgB,EAAG,GACHnT,MAAO,GACP9C,OAAQ,GACRmT,GAAI,EACJJ,KAAM,UACS,gBAAoB,SAAU,CAC7C8iB,GAAI,GACJC,GAAI,GACJI,EAAG,GACHnjB,KAAM,YACS,gBAAoB,OAAQ,CAC3CV,EAAG,0CACHC,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,WAGd,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CACtGxP,GAAI,qBACU,gBAAoB,OAAQ,CAC1CH,MAAO,IACP9C,OAAQ,IACR+S,KAAM,YAGR,SAASq0B,GAAaz0B,EAAMC,GAC1B,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,IACP9C,OAAQ,IACR8S,QAAS,cACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,GAAO,IAG3B,IC2GIsZ,G,YD3GA,GAA0B,aAAiBkxB,I,IAChC,I,mBEvHTC,GAAc,SAAC/S,GAAD,MAAoC,oBAAdA,EAAKtmC,MDwHzCs5C,GAAc,CAClBC,EAAG,UACHC,EAAG,YACHC,EAAG,WACHC,EAAG,QACHC,EAAG,OACHC,EAAG,QACHC,EAAG,QACHC,EAAG,SACHC,EAAG,WACHC,EAAG,UACHC,GAAI,WACJC,GAAI,YAMAC,GAAY,CAChB,CACE1zC,MAAO,iBACP2zC,gBACE,0MACF9uC,KAPF,2TAQE8f,MAAO,kBACL,mEACuB,uCAGzBvW,KAAM,kBACJ,cAAC,KAAD,CACE9K,MAAO,CACLE,aAAc,OACd6K,MAAO,OACP9C,OAAQ,OACRyB,MAAO,gCAKf,CACEhN,MAAO,uBACP2zC,gBACE,wLACF9uC,KAAM,8CACN8f,MAAO,kBACL,mEACuB,6CAGzBvW,KAAM,kBACJ,cAAC,KAAD,CACE9K,MAAO,CACLE,aAAc,OACd6K,MAAO,OACP9C,OAAQ,OACRyB,MAAO,gCAKf,CACEhN,MAAO,eACP2zC,gBACE,wGACF9uC,KAAM,wCACN8f,MAAO,kBACL,sDACgB,wDAGlBvW,KAAM,kBACJ,cAAC,KAAD,CACE9K,MAAO,CACLE,aAAc,OACd6K,MAAO,OACP9C,OAAQ,OACRyB,MAAO,gCAKf,CACEhN,MAAO,cACP2zC,gBACE,qMACA9uC,KAAM,wCACR8f,MAAO,kBACL,wDACkB,6DAGpBvW,KAAM,kBACJ,cAAC,KAAD,CACE9K,MAAO,CACLE,aAAc,OACd6K,MAAO,OACP9C,OAAQ,OACRyB,MAAO,iCA0BX4mC,GAA0B,kBAC9B,cAAC,KAAD,CAASzrC,MAAM,6DAAf,SACE,cAACpH,EAAA,EAAD,OAIE1H,GAAe,kBACnB,mBACEiK,MAAO,CACLgd,OAAQ,OACR/c,SAAU,OACV2Y,QAAS,OACTnN,UAAW,UALf,2MAcI8kC,GAAmB,SAAC13C,GAGxB,GAAMA,EAAKmb,aAAcnb,EAAK23C,oBAAsB33C,EAAKo/B,YAoBvD,MAAO,GAnBP,IAAM1zB,GAAe,IAAIb,MAAOc,WAC1BC,GAAc,IAAIf,MAAOgB,cACzB+rC,GAAa,IAAI/sC,MAAOgtC,UACxBC,GAAc,IAAIjtC,MAAOktC,WAAa,EACtCC,GAAgB,IAAIntC,MAAOotC,aAUjC,OAREj4C,EAAKo/B,aACLv0B,KAAKqtC,IACHtsC,EACAF,EACAksC,EACAE,EACAE,GAGK9sC,IAAO,IAAIL,KAAK7K,EAAKo/B,cAAc7sB,OAAO,cAE5C,IAML2Y,GAAc,CAClB,CAAEC,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,SAChC,CAAE2C,WAAY,UAAW3C,MAAO,UAGrB2vB,GAAoB,WAAO,IAAD,8DACpBj0C,IAATlF,EAD6B,EAC7BA,KAD6B,EC5SL,WAChC,IAAMo5C,EAAgBnL,iBAAiB,IADD,EAEAlvC,oBAAS,GAFT,mBAE/Bs6C,EAF+B,KAElBC,EAFkB,OAGZv6C,mBAA4B,IAHhB,mBAG/Bw6C,EAH+B,KAGxBC,EAHwB,OAIRz6C,mBAAqB,IAJb,mBAI/B06C,EAJ+B,KAItBC,EAJsB,OAMpC36C,oBAAS,GAN2B,mBAK/B46C,EAL+B,KAKLC,EALK,KAuEhCC,EAAU,uCAAG,WACjB54C,EACA2Z,GAFiB,6BAAAva,EAAA,6DAWXy5C,GAAkB,OAANl/B,QAAM,IAANA,GAAA,UAAAA,EAAQP,eAAR,eAAiBg9B,MAAO,KACpC0C,GAAoB,OAANn/B,QAAM,IAANA,GAAA,UAAAA,EAAQP,eAAR,eAAiBtN,QAAS,KACxCitC,GAAmB,OAANp/B,QAAM,IAANA,GAAA,UAAAA,EAAQP,eAAR,eAAiBvN,OAAQ,KAC5CwsC,GAAe,GAdE,kBAgBQj8C,EAAIwD,IAAJ,mCAAoCI,GAAY,CACrE2Z,OAAQ,CACNy8B,IAAKyC,EACL/sC,MAAOgtC,EACPjtC,KAAMktC,KApBK,iBAuBf,QAPQh5C,EAhBO,EAgBPA,YAOR,IAAIA,OAAJ,EAAIA,EAAMoD,SAASA,IAAQX,MAAMzC,EAAKoD,SAEpCs1C,EACE14C,EAAKqR,KAAI,SAAC4nC,GAAD,mBAAC,eACLA,GADI,IAEP5mC,GAAG,GAAD,OAAK4mC,EAAK5C,KAAV,OAAgB4C,EAAKltC,OAArB,OAA6BktC,EAAKntC,YA5B3B,kDAgCf1I,IAAQX,MAAM,sDAhCC,QAkCjB61C,GAAe,GAlCE,0DAAH,wDAoDVY,EAA2B,CAC/BxZ,SAAU6Y,EACVxY,UAAU,EACVG,SAAU,OACVT,OAAQ,kBACRE,SAtFmB,SAAC+D,GACpB8U,GAAS,SAACD,GAAD,OAAWA,EAAM7uC,QAAO,SAACuvC,GAAD,OAAUA,EAAKE,MAAQzV,EAAKyV,WAsF7D90B,SA7GoB,SAAC,GAMhB,IALLqf,EAKI,EALJA,KACAhE,EAII,EAJJA,SAKIgE,GAAwB,YAAhBA,EAAKhhC,QACZ+zC,GAAY/S,KACb0U,EAAcjyB,QAAQpe,SAAS27B,EAAKxjC,MACtCk4C,EAAcjyB,QAAUiyB,EAAcjyB,QAAQzc,QAC5C,SAACxJ,GAAD,OAAUA,IAASwjC,EAAKxjC,QAI5Bs4C,EACE9Y,EACGh2B,QAAO,SAACg6B,GAAD,MAA0B,YAAhBA,EAAKhhC,UACtB2O,KAAI,SAACqyB,GAAD,mBAAC,eAAeA,GAAhB,IAAsBhhC,OAAQ,eA4FvCm9B,aA1HuB,SAAC6D,GACxB,OAAK+S,GAAY/S,GAZA,SAACA,EAAkB0V,GAAnB,OACnBA,EAAMC,WAAU,SAAC7vC,GAAD,OAAUA,EAAKtJ,OAASwjC,EAAKxjC,SAAS,EAehDo5C,CAAa5V,EAAM6U,IACrBH,EAAcjyB,QAAQxL,KAAK+oB,EAAKxjC,MAChCkD,IAAQX,MAAM,qCACP82C,KAAOC,kBAHhB,GAHEp2C,IAAQX,MAAM,mDACP82C,KAAOC,cAwHhB1Z,cAAe,aACfG,eAAgB,CACdwZ,gBAAgB,EAChBC,iBAAiB,EACjBC,kBAAkB,IAItB,MAAO,CACLP,MAAOb,EACPqB,SAAUpB,EACVqB,UAhGgB,SAACC,GACjB,IAAMpR,EAAW,IAAIC,SACrB4P,EAAM/9B,SAAQ,SAACy+B,GACbvQ,EAASE,OAAO,QAASqQ,EAAKc,kBAEhCzB,GAAe,GACf,IAAMh5C,EAAQC,aAAaC,QAAQ,kBACnChC,EACGyF,KADH,qCACsC62C,GAAWpR,EAAU,CACvDhsC,QAAS,CACPgnB,cAAc,UAAD,OAAYpkB,MAG5BgC,MAAK,WACJ8B,IAAQmB,QAAQ,8CAChBs0C,EAAWiB,MAEZt4C,OAAM,SAACC,GAAS,IAAD,IACRu4C,GACJ,UAAAv4C,EAAIw4C,eAAJ,mBAAa72C,eAAb,eAAsBX,QAAS,gDACjCW,IAAQX,MAAMu3C,GACd1B,GAAe,OA4EnBD,cACAa,cACAP,2BACAC,8BACAH,UACAI,aACAqB,aAzCgB,uCAAG,WAAOC,EAAcpuC,EAAeD,GAApC,mBAAAzM,EAAA,sEAEXC,EAAQC,aAAaC,QAAQ,kBAFlB,SAGMhC,EAASqC,IAAI,4BAA6B,CAC/DnD,QAAS,CAAEgnB,cAAc,UAAD,OAAYpkB,IACpCsa,OAAQ,CAAEugC,KAAMA,EAAKr0C,QAAQ,SAAU,IAAKiG,QAAOD,UALpC,iBAGT9L,EAHS,EAGTA,MAICyjB,KACPthB,OAAO6G,KAAKhJ,EAAKyjB,IAAK,UARP,gDAWjBrgB,IAAQX,MAAM,sDAXG,yDAAH,2DD6Md23C,GAVFhB,EAHmC,EAGnCA,MACAX,EAJmC,EAInCA,QACAmB,EALmC,EAKnCA,SACAC,EANmC,EAMnCA,UACAhB,EAPmC,EAOnCA,WACAR,EARmC,EAQnCA,YACAa,GATmC,EASnCA,YACAgB,GAVmC,EAUnCA,aACAvB,GAXmC,EAWnCA,yBACAC,GAZmC,EAYnCA,4BAZmC,GAkDjCj7B,KAnCF5I,GAfmC,GAenCA,QACAsC,GAhBmC,GAgBnCA,UACAI,GAjBmC,GAiBnCA,WACAyB,GAlBmC,GAkBnCA,WACAS,GAnBmC,GAmBnCA,aACAK,GApBmC,GAoBnCA,eACAD,GArBmC,GAqBnCA,iBACA1E,GAtBmC,GAsBnCA,UAEAI,GAxBmC,GAwBnCA,aACAkC,GAzBmC,GAyBnCA,aACAuF,GA1BmC,GA0BnCA,aACA7E,GA3BmC,GA2BnCA,aACAf,GA5BmC,GA4BnCA,aACArB,GA7BmC,GA6BnCA,aACAmD,GA9BmC,GA8BnCA,aACA6D,GA/BmC,GA+BnCA,cACAvF,GAhCmC,GAgCnCA,cACAb,GAjCmC,GAiCnCA,cACAyG,GAlCmC,GAkCnCA,cACAvG,GAnCmC,GAmCnCA,eACAkC,GApCmC,GAoCnCA,iBACAjC,GArCmC,GAqCnCA,kBACAmF,GAtCmC,GAsCnCA,oBACAhE,GAvCmC,GAuCnCA,oBACAlD,GAxCmC,GAwCnCA,cACAC,GAzCmC,GAyCnCA,iBACAa,GA1CmC,GA0CnCA,mBACAqC,GA3CmC,GA2CnCA,uBACAhD,GA5CmC,GA4CnCA,iBACAD,GA7CmC,GA6CnCA,cACAU,GA9CmC,GA8CnCA,iBACAU,GA/CmC,GA+CnCA,iBACAE,GAhDmC,GAgDnCA,mBACA6D,GAjDmC,GAiDnCA,mBAjDmC,GAoDVvc,mBAAS,IApDC,qBAoD5Bs8C,GApD4B,SAqDTt8C,oBAAS,GArDA,qBAqD5Bu8C,GArD4B,SAsDTv8C,mBAAc,IAtDL,qBAsD9B+oC,GAtD8B,MAsDtBC,GAtDsB,SAuDbhpC,oBAAS,GAvDI,qBAuD9BiL,GAvD8B,MAuDxB01B,GAvDwB,SAwDH3gC,oBAAS,GAxDN,qBAwD9Bw8C,GAxD8B,MAwDnBjO,GAxDmB,SAyDHvuC,mBAAmB,IAzDhB,qBAyD5By8C,GAzD4B,SA0DDz8C,mBAAmB,IA1DlB,qBA0D9B08C,GA1D8B,MA0DlBC,GA1DkB,SA2DO38C,mBAAc,IA3DrB,qBA2D9B48C,GA3D8B,MA2DdpO,GA3Dc,SA4DWxuC,oBAAS,GA5DpB,qBA4D9B68C,GA5D8B,MA4DZC,GA5DY,SA6Da98C,mBAAgB,IA7D7B,qBA6D9B+8C,GA7D8B,MA6DXC,GA7DW,SA8DhBh9C,oBAAS,GA9DO,qBA8D9BgzC,GA9D8B,SA+DZhzC,qBA/DY,qBA+D5BujC,GA/D4B,SAgEbvjC,mBAAmB,IAhEN,qBAgE9BiG,GAhE8B,MAgExB6f,GAhEwB,SAiEP9lB,mBAAc,IAjEP,qBAiE9Bsb,GAjE8B,MAiErBqM,GAjEqB,SAkED3nB,mBAAS,IAlER,qBAkE9Bmd,GAlE8B,MAkElByK,GAlEkB,SAmED5nB,mBAAc,IAnEb,qBAmE9BmpC,GAnE8B,MAmElBC,GAnEkB,SAoECppC,oBAAS,GApEV,qBAoE9BqpC,GApE8B,MAoEjBC,GApEiB,SAqEGtpC,oBAAS,GArEZ,qBAqE9BupC,GArE8B,MAqEhBC,GArEgB,SAsESxpC,oBAAS,GAtElB,qBAsE9BogB,GAtE8B,MAsEb68B,GAtEa,SAuETj9C,oBAAS,GAvEA,qBAuE5Bk9C,GAvE4B,SAwECl9C,oBAAS,GAxEV,qBAwE9Bm9C,GAxE8B,MAwEjBC,GAxEiB,SAyEIp9C,oBAAS,GAzEb,qBAyE9BypC,GAzE8B,MAyEfC,GAzEe,SA0EH1pC,mBAAS,cA1EN,qBA0E9Bq9C,GA1E8B,MA0EnBC,GA1EmB,SA2ECt9C,mBAAiB,GA3ElB,qBA2E9Bua,GA3E8B,MA2EjBsN,GA3EiB,SA4EG7nB,mBAAc,IA5EjB,qBA4E9BirC,GA5E8B,MA4EhBsS,GA5EgB,SA6ECC,IAAMx9C,UAAS,GA7EhB,qBA6E9BipC,GA7E8B,MA6EjBC,GA7EiB,SA8EClpC,mBAAc,SA9Ef,qBA8E9BitC,GA9E8B,MA8EjB1M,GA9EiB,SA+EOvgC,mBAAc,IA/ErB,qBA+E9B8nB,GA/E8B,MA+EdC,GA/Ec,SAgFS/nB,oBAAS,GAhFlB,qBAgF9B2pC,GAhF8B,MAgFbC,GAhFa,SAiFS5pC,oBAAS,GAjFlB,qBAiF9BgoB,GAjF8B,MAiFbC,GAjFa,SAmFnCjoB,oBAAS,GAnF0B,qBAkF9By9C,GAlF8B,MAkFJC,GAlFI,SAoFmB19C,mBACtD,IArFmC,qBAoF9B29C,GApF8B,MAoFRC,GApFQ,SAuFL59C,oBAAS,GAAhC69C,GAvF4B,wBAwFa79C,oBAAS,GAxFtB,qBAwF9B6pC,GAxF8B,MAwFXC,GAxFW,SAyFe9pC,oBAAS,GAzFxB,qBAyF9B+pC,GAzF8B,MAyFVC,GAzFU,SA0FehqC,oBAAS,GA1FxB,qBA0F9BiqC,GA1F8B,MA0FVC,GA1FU,SA2FelqC,oBAAS,GA3FxB,qBA2F9B89C,GA3F8B,MA2FVC,GA3FU,SA4Fe/9C,mBAAc,IA5F7B,qBA4F9BqmC,GA5F8B,MA4FV2X,GA5FU,SA6FiBh+C,oBAAS,GA7F1B,qBA6F9Bi+C,GA7F8B,MA6FTC,GA7FS,SA8FiBl+C,oBAAS,GA9F1B,qBA8F9Bm+C,GA9F8B,MA8FTC,GA9FS,SA+FSp+C,mBAAoB,IA/F7B,qBA+F9BggB,GA/F8B,MA+FbgG,GA/Fa,SAgGChmB,mBAAc,GAhGf,qBAgG9Bq+C,GAhG8B,MAgGjBC,GAhGiB,SAiGOt+C,mBAAc,GAjGrB,qBAiG9Bu+C,GAjG8B,MAiGdC,GAjGc,SAkGmBx+C,mBAAc,GAlGjC,qBAkG9By+C,GAlG8B,MAkGRC,GAlGQ,SAoGnC1+C,mBAAc,GApGqB,qBAmG9B2+C,GAnG8B,MAmGLC,GAnGK,SAqGmB5+C,oBAAS,GArG5B,qBAqG9B6+C,GArG8B,MAqGRC,GArGQ,SAsGe9+C,mBAAmB,IAtGlC,qBAsG9B++C,GAtG8B,MAsGVC,GAtGU,SAuGeh/C,mBAAmB,IAvGlC,qBAuG9Bi/C,GAvG8B,MAuGVC,GAvGU,SAwGuBl/C,oBAAS,GAxGhC,qBAwG9Bm/C,GAxG8B,MAwGNC,GAxGM,SAyGWp/C,oBAAS,GAzGpB,qBAyG9BktC,GAzG8B,MAyGZxM,GAzGY,SA0GG1gC,mBAAS,GA1GZ,qBA0G9Bm/B,GA1G8B,MA0GhBC,GA1GgB,SA4GnCp/B,oBAAS,GA5G0B,qBA2G9Bq/C,GA3G8B,MA2GGC,GA3GH,SA6G2Bt/C,wBAE9DsV,GA/GmC,qBA6G9BiqC,GA7G8B,MA6GJC,GA7GI,SAgHWx/C,mBAE9C,MAlHmC,qBAgH9B4xC,GAhH8B,MAgHZhR,GAhHY,SAmHa5gC,mBAChD,MApHmC,qBAmH9B6xC,GAnH8B,MAmHXpR,GAnHW,SAsHDzgC,mBAAiB,iBAtHhB,qBAsH9By/C,GAtH8B,MAsHlBC,GAtHkB,SAuHX1/C,mBAAqB,IAvHV,qBAuH9BoY,GAvH8B,MAuHvBC,GAvHuB,SAwHLrY,mBAAS,IAxHJ,qBAwH9B2/C,GAxH8B,MAwHpBC,GAxHoB,SAyHL5/C,mBAAS,MAzHJ,qBAyH9B6/C,GAzH8B,MAyHpBC,GAzHoB,SA0Ha9/C,qBA1Hb,qBA0H9B+/C,GA1H8B,MA0HXC,GA1HW,SA6HChgD,oBAAS,GA7HV,qBA6H9BigD,GA7H8B,MA6HjBC,GA7HiB,SA8HiBlgD,oBAAS,GA9H1B,qBA8H9B8f,GA9H8B,MA8HTC,GA9HS,SA+HD/f,oBAAS,GA/HR,qBA+H9BilB,GA/H8B,MA+HlBC,GA/HkB,SAgIallB,oBAAS,GAhItB,qBAgI9B+lB,GAhI8B,MAgIXZ,GAhIW,SAiIGnlB,mBAAoB,IAjIvB,qBAiI9BmgD,GAjI8B,MAiIhBC,GAjIgB,SAkIiBpgD,wBAEpDsV,GApImC,qBAkI9ByP,GAlI8B,MAkITC,GAlIS,SAqIuBhlB,oBAAS,GArIhC,qBAqI9BqgD,GArI8B,MAqINC,GArIM,SAsIetgD,oBAAS,GAtIxB,qBAsI9BugD,GAtI8B,MAsIVC,GAtIU,SAuIqBxgD,oBAAS,GAvI9B,qBAuI9BsvC,GAvI8B,MAuIPC,GAvIO,SAwIOvvC,mBAAS,IAxIhB,qBAwI9BygD,GAxI8B,MAwIdC,GAxIc,SAyIhB1gD,mBAAgC,CACnDooB,QAAS7N,GACT2C,SAAU,GACVmL,gBAAiB,GACjBC,iBAAiB,EACjBC,gBAAiB,CAAC,IAAK,KAAM,KAAM,KAAM,SALpCC,GAzI8B,wBAgJmBxoB,qBAhJnB,qBAgJ9B2gD,GAhJ8B,MAgJRC,GAhJQ,SAmJS5gD,oBAAS,GAnJlB,qBAmJ9B6gD,GAnJ8B,MAmJbC,GAnJa,MAqJ/BC,GAAmB/gC,GAAgBrU,QACvC,SAACuQ,GAAD,OAAYA,EAAO2jB,WAAa3jB,EAAO8kC,cAAgB9kC,EAAO2jB,SAAS71B,SAAS,gBAG5EusB,GAAO,uCAAG,sBAAAj1B,EAAA,+EAGNhD,EAAIwD,IAAI,cAHF,sDAKZuD,IAAQX,MAAM,+DALF,wDAAH,qDASbH,qBAAU,WACRgyB,OACC,IAEHhyB,qBAAU,WAAO,IAAD,EACdm8C,GAAiB,OAAC1nC,SAAD,IAACA,IAAD,UAACA,GAAgBmD,cAAjB,aAAC,EAAwBb,WACzC,CAACtC,KAEJzU,qBAAU,WACR,IAAIytB,EAAkC,KAatC,OAZqChb,GAAQrL,QAC3C,SAAC+Q,GAAD,OAAOA,EAAEC,yBAEsBzW,OAC/B8rB,EAAW8J,aAAY,WACrBvf,OACC,KAECyV,GACF+J,cAAc/J,GAGX,kBAAM+J,cAAc/J,MAC1B,CAAChb,GAASuF,KAEbhY,qBAAU,WACH08C,GACIA,KAAqBxB,IAAYC,GAAc,iBADjCA,GAAc,WAEpC,CAAC1mC,KAEJzU,qBAAU,WACQ,KAAbo7C,IAAmB3mC,KACe,4BAAlB,OAAdA,SAAc,IAAdA,QAAA,EAAAA,GAAgB2E,aACjBiiC,GAAY,SACgC,4BAArB,OAAd5mC,SAAc,IAAdA,QAAA,EAAAA,GAAgB4E,gBACzBgiC,GAAY,YAEZA,GAAY,YAGf,CAAC5mC,GAAgB2mC,KAEpB,IACMtV,GADQ,CAAC,OAAQ,SACL1hB,MAAK,SAAC2hB,GAAD,OAAUlmC,OAAOC,SAASimC,KAAKtgC,SAASsgC,MAC3D,OACA,GACE4W,IAAoB,UAAAjgD,EAAKA,YAAL,eAAWwB,aAAX,OAAwBxB,QAAxB,IAAwBA,GAAxB,UAAwBA,EAAMA,YAA9B,aAAwB,EAAY+B,QAhNzB,GAkNuB6yB,mBAC1D,kBLnhB+B,SACjCsrB,EACAC,GACI,IAAD,MACCC,GAAkC,OAAdF,QAAc,IAAdA,GAAA,UAAAA,EAAgBhlC,cAAhB,eAAwBC,WAAY,GACtDw0B,EAAa+F,GAAqB0K,GACxC,GAAID,GAAmBA,EAAgBl7C,OAAS,EAAG,CAAC,IAAD,EAC3Co7C,EAAiBF,EAAgB9tC,KAAI,SAACoJ,GAAD,OACzCs5B,GAAiB,CAAEC,UAAWv5B,OAEhC2kC,EAAiB,UAAGA,SAAH,aAAG,EAAmB11C,QAAO,SAAC2wB,GAAD,OAC5CglB,EAAet3C,SAASsyB,EAAEpO,cAe9B,MAAO,CAAEqzB,WAXUpL,GACjBkL,GACc,OAAdF,QAAc,IAAdA,GAAA,UAAAA,EAAgBhlC,cAAhB,eAAwBi6B,cAAe,IASpBoL,cANC5K,GACpByK,GACc,OAAdF,QAAc,IAAdA,GAAA,UAAAA,EAAgBhlC,cAAhB,eAAwBi6B,cAAe,IAILh6B,SAFnB66B,GAA2BoK,GAEEzQ,cKyftC6Q,CAAoBzoC,GAAgBimC,MAC1C,CAACjmC,GAAgBimC,KAFXsC,GAlN6B,GAkN7BA,WAAYC,GAlNiB,GAkNjBA,cAAeplC,GAlNE,GAkNFA,SAAUw0B,GAlNR,GAkNQA,WAKvC8Q,GAAW9Q,GAAW1qC,SAAW64C,GAAmB74C,OACpDy7C,GACJ5C,GAAmB74C,OAAS,GAC5B64C,GAAmB74C,OAAS0qC,GAAW1qC,OAEnCuiB,GAAiB,SAAChd,GAAe,IAAD,EAMpC,mBALeA,EAAKU,MAAQ,IAAIR,QAC9B,SAACN,GAAD,uBACI,OAAFA,QAAE,IAAFA,GAAA,UAAAA,EAAIqd,oBAAJ,eAAkBvB,eAAlB,OAAiClmB,QAAjC,IAAiCA,GAAjC,UAAiCA,EAAMA,YAAvC,iBAAiC,EAAYuB,gBAA7C,aAAiC,EAAsB2kB,cACrD,OAAF9b,QAAE,IAAFA,GAAA,UAAAA,EAAI/I,kBAAJ,eAAgB6kB,eAAhB,OAA+BlmB,QAA/B,IAA+BA,GAA/B,UAA+BA,EAAMA,YAArC,iBAA+B,EAAYqB,kBAA3C,aAA+B,EAAwB6kB,eAE7CwB,MAAK,SAACtd,GAAD,SAAc,OAACA,QAAD,IAACA,OAAD,EAACA,EAAIud,wBAAtC,UAGIg5B,GAAY,uCAAG,sBAAAtgD,EAAA,sDACnBqY,IAAc,GACdrb,EAAI85C,MAAM,yBAA0B,CAClCl2C,SAAQ,OAAE8W,SAAF,IAAEA,QAAF,EAAEA,GAAgB9W,SAC1BoZ,QAASmlC,IAAkB,KAE1Bl9C,MAAK,WACJ4X,GAAW,2BACNG,IADK,IAER6B,WAAYA,IAA0B,GACtC/B,KAAMb,GACN2C,SAAUsL,GAAWtL,SACrBc,aAAY,OAAEhF,SAAF,IAAEA,QAAF,EAAEA,GAAgB9W,eAGjCuB,OAAM,SAACC,GACNC,QAAQC,IAAIF,MAhBG,2CAAH,qDAmBZm+C,GAAiChsB,mBACrC,0BACgB,OAAd7c,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,mBAAwBC,gBAAxB,eAAkCxQ,QAChC,SAACglB,EAAUC,GAAX,mBAAC,eACID,GADL,mBAEGC,EAAIqiB,UAFP,uBAEwBtiB,EAAIC,EAAIqiB,YAAc,IAF9C,CAEmDriB,QAEnD,MACG,KACP,QAAC7X,SAAD,IAACA,QAAD,EAACA,GAAgBmD,SAGb2lC,GAAuBjsB,mBAC3B,4BACgB,OAAd7c,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,mBAAwBC,gBAAxB,mBACIzQ,QAAO,SAAC2wB,GAAD,kBAA2B,OAAdtjB,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,mBAAwBb,eAAxB,eAAiCpV,QAAjC,OAA0C8S,SAA1C,IAA0CA,IAA1C,UAA0CA,GAAgBmD,cAA1D,aAA0C,EAAwBb,QAAU,CAACghB,EAAE2W,SAASjpC,SAASsyB,EAAE2W,kBAD3H,eAEIrnC,QACA,SAACglB,EAAUC,GAAX,mBAAC,eACID,GADL,mBAEGC,EAAIqiB,UAFP,uBAEwBtiB,EAAIC,EAAIqiB,YAAc,IAF9C,CAEmDriB,QAEnD,MACG,KACT,QAAC7X,SAAD,IAACA,IAAD,UAACA,GAAgBmD,cAAjB,aAAC,EAAwBC,WAuBrB2lC,GAAoB,SAACt2C,GACzB29B,GAAc39B,GACdsyC,IAAuBD,KA4CnBzwB,GAAmB,SAACC,EAAkBra,GAC1C,KAAOA,EAAQ,GAAG,CAEhBA,EADkBA,EAAQ,EACN,EAEtB,OAAOka,GAAYla,GAAOma,YAmDtB40B,GAAe,uCAAG,WAAO9lC,GAAP,SAAA5a,EAAA,sDAClB4a,GACFqgC,IAAgB,GAChBtjC,GAAkBiD,GAClBqgC,IAAgB,KAEhBz2B,GAAQ,IACRE,GAAmB,IACnB63B,IAAoB,GACpByB,IAAmC,IATf,2CAAH,sDAaf2C,GAA2B,uCAAG,kCAAA3gD,EAAA,sEAE1B4gD,EAAkBliC,GAAgBrU,QACtC,SAACuQ,GAAD,OAAaA,EAAOkB,cAEhBwiB,EAAYsiB,EAAgB5uC,KAAI,SAAC4I,GAAD,OAAYA,EAAOha,YALzB,SAMT5D,EAAI4G,KAAK,SAAU,CACxC06B,YACAvgC,KAAM4tC,GAAYxsB,gBARY,gBAMxBxe,EANwB,EAMxBA,KAIRkZ,GAAW,2BACNG,IADK,IAER6B,WAAYA,GAAWjX,OAAS,EAAIiX,GAAa,KACjD/B,KAAMb,MAERlV,IAAQmB,QAAR,UACKvE,EAAK+c,MADV,uDAfgC,kDAmBhC3Z,IAAQmB,QAAQ,qDAnBgB,yBAqBhCk6B,IAAoB,GACpBmd,IAAoB,GACpB/3B,GAAQ,IACRE,GAAmB,IAxBa,6EAAH,qDA4B3B8rB,GAAQ,uCAAG,WAAOzyC,EAAc2X,GAArB,SAAA1V,EAAA,sEAEbw9C,IAAwB,GACxBU,QAA4BlqC,GAC5BqE,IAAc,GACd2iC,GAAej9C,GALF,SAMPf,EAAI4G,KAAK,qBAAsB,CACnC7F,OACA2X,QAAO,OAAEA,QAAF,IAAEA,IAAWgJ,KART,OAUb8+B,IAAwB,GACxBU,QAA4BlqC,GAC5B0Q,GAAmB,IACnBF,GAAQ,IAbK,kDAebzgB,IAAQX,MAAM,8CAfD,yBAiBbW,IAAQmB,QAAQ,0CAChBmT,IAAc,GACd2iC,GAAe,IAnBF,6EAAH,wDAsDR6F,GAAsB,uCAAG,WAAO12C,GAAP,iBAAAnK,EAAA,0DACzB28C,GADyB,gBAE3B9iC,GAAW,2BACNG,IADK,IAER6B,WAAYA,GAAWjX,OAAS,EAAIiX,GAAa,KACjD/B,KAAMb,GACNsD,kBAAkB,KAEpBuhC,IAA0B,GAC1BlB,IAAuB,GATI,uCAYzBvkC,IAAc,GAZW,UAaFrb,EAAIwD,IACzB,6BAA+B2J,EAAKvJ,UAdb,kBAgBzB,QAHQD,EAbiB,EAajBA,YAGR,IAAIA,OAAJ,EAAIA,EAAMoD,SAASA,IAAQ4Y,KAAKhc,EAAKoD,QAAS,GACzC4T,IAAkB,SAACxN,GAAD,mBAAC,eAAoBA,GAArB,IAA2B0Q,OAAQla,OAC1DkZ,GAAW,2BACNG,IADK,IAER6B,WAAYA,GAAWjX,OAAS,EAAIiX,GAAa,KACjD/B,KAAMb,MArBiB,kDAwBzBZ,IAAc,GACdtU,IAAQX,MACN,gFA1BuB,0DAAH,sDA+B5BH,qBAAU,WAAO,IAAD,IACdy5C,GAAqB,OAEnBhnC,SAFmB,IAEnBA,IAFmB,UAEnBA,GACIrL,QAAO,SAACF,GAAD,OAAeA,EAAKvJ,YAAL,OAAkB8W,SAAlB,IAAkBA,QAAlB,EAAkBA,GAAgB9W,aAAU,UAHnD,iBAEnB,EAEImb,YAJe,aAEnB,EAEU/J,KAAI,SAAC8uC,GAAD,OAAqBA,EAAW/iC,UAG/C,CAAC8+B,GAAqBlU,GAAoBjzB,KAE7CzS,qBAAU,WAAO,IAAD,MACN,OAAJtD,QAAI,IAAJA,GAAA,UAAAA,EAAMA,YAAN,eAAY+B,UAAZ,OAAsB/B,QAAtB,IAAsBA,GAAtB,UAAsBA,EAAMA,YAA5B,aAAsB,EAAYgC,SACpCiY,QAAiB5F,OAAWA,GAAW,KAExC,IAEH/Q,qBAAU,WACR4W,OACC,CAACA,KAEJ5W,qBAAU,WACR0X,GAAc,OAACjD,SAAD,IAACA,QAAD,EAACA,GAAgB9W,UAC/B8Z,GAAgB,OAAChD,SAAD,IAACA,QAAD,EAACA,GAAgB9W,YAEhC,QAAC8W,SAAD,IAACA,QAAD,EAACA,GAAgB9W,WAEpBqC,qBAAU,WACRqX,GAAY,OAAC5C,SAAD,IAACA,QAAD,EAACA,GAAgB9W,SAAWkV,MAEvC,CAACA,GAAD,OAAgB4B,SAAhB,IAAgBA,QAAhB,EAAgBA,GAAgB9W,WAEnCqC,qBAAU,WACRjG,EACG4G,KADH,oCAC6C,CACzChD,SAAQ,OAAE8W,SAAF,IAAEA,QAAF,EAAEA,GAAgB9W,SAC1B8L,OAAO,IAAIlB,MAAOc,WAAa,IAEhCrK,MAAK,SAACC,GACL86C,GAAetyC,GAAY,OAACxI,QAAD,IAACA,OAAD,EAACA,EAAKvB,KAAK,KACtCy8C,GAAwB,IAAQ1yC,GAAY,OAACxI,QAAD,IAACA,OAAD,EAACA,EAAKvB,KAAK,KACvDu8C,GAAkBhzC,GAAe,OAAChI,QAAD,IAACA,OAAD,EAACA,EAAKvB,KAAK,KAC5C28C,GAA2B,KAAQpzC,GAAe,OAAChI,QAAD,IAACA,OAAD,EAACA,EAAKvB,KAAK,QAE9DwB,OAAM,iBACR,CAACuV,KAEJzU,qBAAU,YACHtF,OAAewqC,KAAwB,OAAPzyB,SAAO,IAAPA,QAAA,EAAAA,GAAS9Q,QAAS,IACrDwjC,IAAgB,GAChBzwB,GAAkBjC,GAAQ,OAE3B,CAACA,GAASyyB,GAAexwB,KAE5B1U,qBAAU,YACR8S,IAAiB,IAAIvK,MAAOgB,gBACvB7O,OAAe,OAAC+Z,SAAD,IAACA,QAAD,EAACA,GAAgB9W,aACrB8U,GAAQskC,WACpB,SAAC5+B,GAAD,OAAOA,EAAEjB,SAAWzC,GAAeyC,UAEzB,IACVxC,GAAkBjC,GAAQ,IAC1BqrC,GAAkBrrC,GAAQ,IAC1B2lC,GAAc,IACdK,GAAqB,IACrBP,GAAsB,IACtBuC,GAAsB,IACtBE,GAAsB,IACtBtB,GAAwB,IACxBR,IAAe,GACfj5C,YAAW,WACTi5C,IAAe,KACd,SAGN,QACDpkC,SADC,IACDA,QADC,EACDA,GAAgB9W,SADf,OAED8W,SAFC,IAEDA,QAFC,EAEDA,GAAgByC,OAChBzE,GACAiC,GACA5B,KAGF,IAAMgrC,GAAoB,SAAC52C,GAAmB,IAAD,OACtC,OAACA,QAAD,IAACA,OAAD,EAACA,EAAM0Q,WAAe,OAAJ1Q,QAAI,IAAJA,GAAA,UAAAA,EAAM0Q,cAAN,mBAAcC,gBAAd,eAAwBlW,SAAU,GAAK,EAC5Dw5C,GAAc,kBACT,OAAIj0C,QAAJ,IAAIA,GAAJ,UAAIA,EAAMU,YAAV,aAAI,EAAa,GAAGyc,eACzB82B,GAAc,UAIZpZ,GAAyB,SAACxgC,GAC9Bk4C,GAAsBl4C,IAoBlBw8C,GAAmB,uCAAG,WAAO72C,GAAP,SAAAnK,EAAA,+EAElBhD,EAAI4G,KAAK,+BAAgC,CAC7ChD,UAAc,OAAJuJ,QAAI,IAAJA,OAAA,EAAAA,EAAMvJ,WAAY,KAHN,OAKxBmD,IAAQmB,QAAQ,iDALQ,+CAOxBnB,IAAQX,MACN,qGARsB,wDAAH,sDAanB69C,GAAqB1sB,mBACzB,0BACgB,OAAd7c,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,mBAAwBC,gBAAxB,eAAkCxQ,QAChC,SAACglB,EAAUC,GAAX,mBACE8sB,GAAqB3zC,SAAS6mB,EAAI3C,WAC9B,CACAs0B,wBACE5xB,EAAI4xB,wBAA0B3xB,EAAIkiB,QACpCK,oBACExiB,EAAIwiB,oBAAsBviB,EAAIuiB,oBAChCqP,uCACE7xB,EAAI6xB,wCACe,kBAAlB5xB,EAAIqiB,UACD,EADH,UAEGriB,EAAI6xB,cAFP,aAEG,EAAYD,wCAClBE,yCACE/xB,EAAI+xB,0CACe,kBAAlB9xB,EAAIqiB,UACD,EADH,UAEGriB,EAAI6xB,cAFP,aAEG,EAAYC,0CAClBxP,mBACEviB,EAAIuiB,mBAAqBtiB,EAAIsiB,mBAC/ByP,sCACEhyB,EAAIgyB,uCAAJ,UACA/xB,EAAI6xB,cADJ,aACA,EAAYE,uCACdC,wCACEjyB,EAAIiyB,yCAAJ,UACAhyB,EAAI6xB,cADJ,aACA,EAAYG,0CAEdjyB,IACN,CACEwiB,oBAAqB,EACrBqP,uCAAwC,EACxCE,yCAA0C,EAC1CxP,mBAAoB,EACpByP,sCAAuC,EACvCC,wCAAyC,EACzCL,wBAAyB,MAExB,CACHpP,oBAAqB,EACrBqP,uCAAwC,EACxCE,yCAA0C,EAC1CxP,mBAAoB,EACpByP,sCAAuC,EACvCC,wCAAyC,EACzCL,wBAAyB,KAE7B,QAACxpC,SAAD,IAACA,IAAD,UAACA,GAAgBmD,cAAjB,aAAC,EAAwBC,SAAUuhC,KAG/BmF,GAAiB,uCAAG,WACxBzjD,EACA0jD,EACAt3C,GAHwB,qCAAAnK,EAAA,kEAMtBqY,IAAc,GAED,QAATta,EARkB,oBAShByc,EAAU,GACV6pB,EAAO,GACM,mBAAbod,EAXgB,iCAYAzkD,EAAI4G,KAAK,6BAA8B,CACvDhD,SAAUuJ,EAAKvJ,SACfuZ,OAAQhQ,EAAKgQ,OACbiN,aAAcjd,EAAKU,KAAK,GAAGuc,aAC3BkoB,WAAY+M,KAhBI,OAYZ/qC,EAZY,OAkBlBuI,GAAW,2BACNG,IADK,IAER6B,WAAYA,GAAWjX,OAAS,EAAIiX,GAAa,KACjD/B,KAAMb,MAEJ3H,IACFkJ,EAAO,OAAGlJ,QAAH,IAAGA,GAAH,UAAGA,EAAK3Q,YAAR,aAAG,EAAW6Z,QACrB6pB,EAAI,OAAG/yB,QAAH,IAAGA,GAAH,UAAGA,EAAK3Q,YAAR,aAAG,EAAW0jC,MAzBF,2BA2BI,cAAbod,EA3BS,wBA4BZr6B,EACJ1P,KAAc,OAAIA,SAAJ,IAAIA,QAAJ,EAAIA,GAAgB7M,MAAlC,OACI6M,SADJ,IACIA,QADJ,EACIA,GAAgB7M,KAAK,GAAGuc,aACxB,KACAs6B,EAAe1rC,GAAUhE,KAAI,SAACjI,GAClC,MAAO,CACLc,KAAMd,EAAGc,MAAQ,GACjBoI,KAAMpH,IAAM,OAAC9B,QAAD,IAACA,OAAD,EAACA,EAAIkJ,MAAMC,OAAO,cAC9BuZ,+BAAgC1f,KAAE2hC,WAAF,OAC9B3kC,QAD8B,IAC9BA,OAD8B,EAC9BA,EAAI0iB,gCAENG,UAAS,OAAE7iB,QAAF,IAAEA,OAAF,EAAEA,EAAI6iB,UACfjiB,UAAY,OAAFZ,QAAE,IAAFA,OAAA,EAAAA,EAAIY,WAAY,IAC1BgkC,UAAS,OAAE5kC,QAAF,IAAEA,OAAF,EAAEA,EAAI4kC,UACfjiB,YAAW,OAAE3iB,QAAF,IAAEA,OAAF,EAAEA,EAAI2iB,gBA1CH,UA6CA1vB,EAAI4G,KAAK,sCAAuC,CAChEoS,UAAW0rC,EACXt6B,aAAcA,EACdxmB,SAAQ,OAAE8W,SAAF,IAAEA,QAAF,EAAEA,GAAgB9W,WAhDV,SA6CZ0Q,EA7CY,UAmDhBkJ,EAAO,OAAGlJ,QAAH,IAAGA,GAAH,UAAGA,EAAK3Q,YAAR,aAAG,EAAW6Z,QACrB6pB,EAAI,OAAG/yB,QAAH,IAAGA,GAAH,UAAGA,EAAK3Q,YAAR,aAAG,EAAW0jC,MApDF,QAuDhB7pB,EACFpR,GAASoR,GACA6pB,GACTp5B,GACEo5B,EADS,UAEO,mBAAbod,EAA6B,qBAAuB,cA5DvC,2BA+DF,SAAT1jD,EA/DW,oBAgEH,mBAAb0jD,EAhEgB,sBAiEdpF,GAAqBz3C,OAAS,GAAKu6C,GAAev6C,OAAS,GAjE7C,kCAkEE5H,EAAI4G,KACpB,2CACA,CACEhD,SAAUuJ,EAAKvJ,SACf0uC,WAAY+M,GACZvhC,SAAUqkC,KAvEE,QAkEVj9C,EAlEU,OA0EhBkH,GAAQ,OAAClH,QAAD,IAACA,GAAD,UAACA,EAAKvB,YAAN,aAAC,EAAW6Z,SA1EJ,wBA4EhBpR,GAASgO,IA5EO,gCA8EI,cAAbqqC,GACTr4C,GAAS8N,IA/ES,QAkFtBmB,IAAc,GAlFQ,kDAoFtBA,IAAc,GACdhW,QAAQe,MAAR,MACAW,IAAQX,MAAR,0DAC4Cq+C,EAD5C,iCAtFsB,0DAAH,0DAgGjBE,GAAU,SAACx3C,GAAc,IAAD,cAC5B,OACE,qCACG,UACI,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAMo0B,gBAAN,eAAgB71B,SAAS,WAAY,SAAW,IAC5C,OAAJyB,QAAI,IAAJA,GAAA,UAAAA,EAAMo0B,gBAAN,eAAgB71B,SAAS,eAAgB,aAAe,IACpD,OAAJyB,QAAI,IAAJA,GAAA,UAAAA,EAAMo0B,gBAAN,eAAgB71B,SAAS,SAAU,WAAa,IAC5C,OAAJyB,QAAI,IAAJA,GAAA,UAAAA,EAAMo0B,gBAAN,eAAgB71B,SAAS,aAAc,YAAc,GAClC,aAAlByB,EAAKs0B,UACG,OAAJt0B,QAAI,IAAJA,GAAA,UAAAA,EAAMo0B,gBAAN,eAAgB71B,SAAS,aAAzB,OAAsCyB,QAAtC,IAAsCA,GAAtC,UAAsCA,EAAMs0B,gBAA5C,aAAsC,EAAgB/1B,SAAS,WAAa,SAAW,SACzF,UAAAyB,EAAKo0B,gBAAL,eAAe71B,SAAS,aAAc,GACtC,oBACe,aAAlByB,EAAKs0B,SACF,GACAt0B,EAAK2/B,UACH,aACA,uBAKN8X,GAA4D,SAAC,GAE5D,IAAD,EADJz3C,EACI,EADJA,KAGM03C,EAAYh2C,MAEZi2C,EAAsBj2C,IAAO1B,EAAK41B,aAExC,OACE,cAAC4G,GAAD,UACGx8B,EAAK2R,YAAc3R,EAAK41B,aAAe+hB,GAAuBD,GAA+B,aAAlB13C,EAAKs0B,SAC/E,eAAC,KAAWtrB,KAAZ,CAAiBhO,UAAU,cAA3B,UACGw8C,GAAQx3C,GACRgd,GAAehd,GACd,4FACEA,EAAK0Q,OACP,2EAEG3T,IAAe,UAAAiD,EAAK0Q,cAAL,eAAa+6B,kBAAmB,MAGlD,MAIJ,eAAC,KAAWziC,KAAZ,CAAiBhO,UAAU,iBAA3B,UACE,cAAC,KAAD,CAAiBnH,KAAM,KADzB,sBASF+jD,GAAkB,SAACnQ,GACvB,GAAkB,gBAAdA,GAAuC,aAAdA,EAA0B,CACrD,IAAMoQ,EAAuB,gBAAdpQ,EAAwBmL,GAAcE,GAC/CgF,EACU,gBAAdrQ,EAAwBuL,GAAuBE,GAC3C6E,EAAsB,gBAAdtQ,EAAwB,IAAQ,KACxCuQ,EAAYH,EAAM,aACdn7C,OACNm7C,EAAOv6C,eAAe,QAAS,CAC7BC,sBAAuB,EACvBC,sBAAuB,MAGzB,UACEy6C,EAAWJ,EAAUA,EAASE,EAAS,IAAM,EACnD,OACE,eAACnb,GAAD,WACGkb,GAAY,EACX,cAAC,KAAW9uC,KAAZ,CAAiBhO,UAAU,qBAA3B,sEAIA,eAAC,KAAWgO,KAAZ,CAAiBhO,UAAU,qBAA3B,iCACoB,IAClB,uBAAM2C,MAAO,CAAEqd,WAAY,OAA3B,UACGje,GAAe+6C,GAAW,OACrB,IAJV,uBAKuB,IACrB,uBAAMn6C,MAAO,CAAEqd,WAAY,OAA3B,UACGkyB,IAAO,IAAI7rC,MAAOc,YADrB,KACmC,IAAId,MAAOgB,oBAIlD,qBAAKrH,UAAU,qBAAf,SACE,cAAC,KAAD,CAASwH,MAAK,4BAAoBw1C,GAAlC,SACE,qBACEh9C,UAAU,cACV2C,MAAO,CACL+K,MAAM,GAAD,OAAKuvC,GAAY,IAAM,IAAMA,EAA7B,KACLC,wBAAyBD,GAAY,IAAM,OAAS,EACpDE,qBAAsBF,GAAY,IAAM,OAAS,GALrD,SAQE,qBAAKj9C,UAAU,uCAAf,SACG68C,EAAS,KAAO96C,GAAe86C,GAAU,gBAcpDj3B,GAAc,SAACpqB,EAAYgR,GAE/B,GADAs7B,IAAa,GACTtsC,EACFusC,GAAkBvsC,OACb,CACL,IAAMsS,EAAO,IAAIzH,KACXwa,EAAI/S,EAAKzG,cACTsZ,EAAI7S,EAAKxL,eAAe,QAAS,CAAEiF,MAAO,UAC1C7L,EAAI,UAAMilB,EAAE,GAAG/a,eAAX,OAA2B+a,EAAEhb,UAAU,EAAG,IACpDoiC,GAAkB,CAAErsC,SACpBkV,GAAiBiQ,KAIfrH,GAAkB,uCAAG,WAAOyF,EAAclF,GAArB,mBAAAlf,EAAA,0DACrBokB,EADqB,gBAEvBthB,OAAO6G,KAAKya,GAFW,2BAGdlF,EAHc,wBAIjBjf,EAAQC,aAAaC,QAAQ,kBAJZ,SAKAhC,EAASqC,IAAT,yBAA+B0e,GAAU,CAC9D7hB,QAAS,CACPgnB,cAAc,UAAD,OAAYpkB,MAPN,gBAKfU,EALe,EAKfA,KAKRmC,OAAO6G,MAAS,OAAJhJ,QAAI,IAAJA,OAAA,EAAAA,EAAMyjB,MAAO,IAVF,4CAAH,wDAclBm+B,GAAoB,uCAAG,WAC3Bj/B,EACAC,EACAC,GAH2B,iBAAAxjB,EAAA,sDAKrBwiD,EALqB,OAKPh/B,QALO,IAKPA,OALO,EAKPA,EAAe,IAClB,iBAACg/B,QAAD,IAACA,OAAD,EAACA,EAAa/1C,YAAd,QAAsB,MAAQ8I,GAE7CqJ,GAAe0E,EAAgBC,EAAgBC,IAE/C/E,IAAuB,GACvBoF,IAAqB,IAXI,2CAAH,0DAepBjF,GAAc,uCAAG,WACrB0E,EACAC,EACAC,GAHqB,qCAAAxjB,EAAA,kEAMb0V,EACJgJ,GAAgB9Z,OAAS,EAAI8Z,GAAkB8E,GAAgB,IAC7DC,GARe,gBAQM3gB,OAAO6G,KAAK8Z,IARlB,8BAUjBpL,IAAc,GACViL,GAAgBI,GAAuB,WAX1B,UAYM1mB,EAAI4G,KAAK,aAAc,CAC5C8R,QAASA,EACTiO,cACAL,mBAfe,iBAYT3iB,EAZS,EAYTA,KAKFwF,EAAQuP,EAAQ,GAAGvP,MACnB6d,EAAerjB,EAAK,IAAM,GAC1BsjB,EAnBW,OAmBCD,QAnBD,IAmBCA,OAnBD,EAmBCA,EAAcC,UAE1BjF,EAAoC,cAAX,OAAZgF,QAAY,IAAZA,OAAA,EAAAA,EAAcjmB,MAC3B0V,GAAW,iBAACuQ,QAAD,IAACA,OAAD,EAACA,EAAcvX,YAAf,QAAuB,MAAQ8I,GAC1C2O,EAAYlF,IAAevL,EAAW,eAAc,OAEtDwQ,GAAaX,IACTa,EADyB,mBACE,OAAZH,QAAY,IAAZA,OAAA,EAAAA,EAAcnjB,OAAQ,UADZ,uBAEdqjB,EAFc,6BAEMF,QAFN,IAEMA,OAFN,EAEMA,EAActX,MAFpB,mBAE6BsX,QAF7B,IAE6BA,OAF7B,EAE6BA,EAAcvX,KAF3C,aAGxBwX,GACDG,EAJyB,uBAIHje,EAAK,aAASA,GAAU,GAJrB,iBAKpBge,EAAK/W,WAAW,IAAK,QAChCsW,GAAuBU,GACvBthB,OAAO6G,KAAKya,IAETd,IACCC,EACF5E,GAAmBsF,IAEnBlgB,IAAQmB,QAAR,mBAA4Bgf,EAA5B,gBACAL,IAAqB,KAGzBD,IAAc,GACd/J,GAAW,2BACNG,IADK,IAERkC,kBAAkB,EAClBJ,YAAY,EACZW,aAAa,KA/CE,0DAmDnBiH,QAAuB1P,GACnB,KAAMjQ,QAAQ2E,SAAS,OACzB3E,IAAQX,MACN,wDAGFW,IAAQX,MAAM,sDAzDG,QA4DrBiV,IAAc,GA5DO,0DAAH,0DA+DdoqC,GAAe,WACnB,IAAMxvC,EAAO,IAAIzH,KACXk3C,EAAc,CAAC,EAAG,GAAI,GAAI,GAAI,GAMpC,MAJkC,8BAAlB,OAAdhrC,SAAc,IAAdA,QAAA,EAAAA,GAAgB2E,cACmB,4BAArB,OAAd3E,SAAc,IAAdA,QAAA,EAAAA,GAAgB4E,iBAEhBomC,EAAY75C,OAAO,EAAG,GAEtB,eAAC49B,GAAD,CAAoB9oC,SAAUA,KAA9B,UACE,qCACE,sBAAKwH,UAAU,mBAAf,UACE,cAAC,KAAD,CACEX,MAAOsR,GACP2f,aAAc3f,GACdkP,SAAU,SAACC,GAAD,OAAOlP,GAAiBkP,IAClC2E,QAAS84B,EAAY1wC,KAAI,SAACgU,GAAD,MAAQ,CAC/BxhB,MAAOyO,EAAKzG,cAAgBwZ,EAC5BmD,MAAOlW,EAAKzG,cAAgBwZ,QAGhC,cAAC,KAAD,CACEyP,aAAa,WACbjxB,MAAOoR,IAAiB,WACxBoP,SAAU,SAACC,GAAD,OAAOpP,GAAiBoP,IAClC2E,QAAS,CACP,CACET,MAAO,uBACP3kB,MAAO,YAET,CACE2kB,MAAO,gBACP3kB,MAAO,aAET,CACE2kB,MAAO,0BACP3kB,MAAO,WAIb,sBAAKW,UAAU,4BAAf,UACE,cAAC,EAAD,CACEyN,KAAM,cAAC,KAAD,CAAiBzN,UAAU,SACjCM,QAAS,kBAAMslB,MAFjB,0BAMA,cAAC,EAAD,CACEnY,KAAM,cAAC,KAAD,IACNnN,QAAS,WACPwoC,IAAyB,IAH7B,0BAUHz3B,GACC,cAAC,GAAD,IAEA,cAAC,GAAD,CACEuU,YAAaA,GACbwwB,iBAAkBA,GAClBC,oBAAqBA,QAI3B,cAAC,GAAD,CACE7xC,KAAMqkC,GACNjvC,QAASqZ,GACT6zB,QAAS,SAACluC,GAAD,OACPyjD,GAAkBzjD,EAAM,YAAaiY,KAEvC3F,QAAS,kBAAM49B,IAAyB,UAM1C0U,GAAqB,SAACh+C,GAC1B02C,GAAc12C,GACd,IAAMi+C,EAAaj+C,EAAKA,EAAKC,OAAS,GAElC+sC,GACQ,OAAViR,QAAU,IAAVA,OAAA,EAAAA,EAAYx1C,WAAW,IAAK,IAAIxE,MAAM,KAAK,MAA3C,OACAg6C,QADA,IACAA,OADA,EACAA,EAAYx1C,WAAW,IAAK,IAAIxE,MAAM,KAAK,IACzCi6C,GACQ,OAAVD,QAAU,IAAVA,OAAA,EAAAA,EAAYx1C,WAAW,IAAK,IAAIxE,MAAM,KAAK,MAA3C,OACAg6C,QADA,IACAA,OADA,EACAA,EAAYx1C,WAAW,IAAK,IAAIxE,MAAM,KAAK,IACzC+I,EAAK,OAAGixC,QAAH,IAAGA,OAAH,EAAGA,EAAYx1C,WAAW,IAAK,IAAIxE,MAAM,KAAK,IAErDg6C,EAAWl6C,SAAS,mBACpBk6C,EAAWl6C,SAAS,WACpBk6C,EAAWl6C,SAAS,gBAEpBipC,EAAM,OAAGiR,QAAH,IAAGA,OAAH,EAAGA,EAAYx1C,WAAW,IAAK,IAAI3G,QAAQ,IAAK,IAAImC,MAAM,KAAK,GACrE+I,EAAK,OAAGixC,QAAH,IAAGA,OAAH,EAAGA,EAAYx1C,WAAW,IAAK,IAAI3G,QAAQ,IAAK,IAAImC,MAAM,KAAK,IAGlEg6C,GACFzH,IAAsB,SAAC2H,GA4BrB,OA1BGA,EAAmBp6C,SAASk6C,IAC7Bj+C,EAAKC,OAASk+C,EAAmBl+C,SAEjC06C,GAAwBj3C,OAAOsJ,IAC/B3U,EACGwD,IADH,4BAC4BmxC,GAAU,CAClCp3B,OAAQ,CACNwoC,SAC2B,aAAzBF,EAAO1jC,oBAAsCnL,KAGlD/R,MAAK,YAAe,IAAZtB,EAAW,EAAXA,KASP,OARA+6C,IAAqB,SAACsH,GAAD,6BAChBA,GADgB,CAEnB,CACErxC,QACAggC,OAAQA,EACRU,QAAS1xC,QAGP,GAAN,oBAAWmiD,GAAX,CAA+BF,OAEhChjC,SAAQ,WACP0/B,QAAwBtrC,OAGvB8uC,MAKPG,GACJ,eAAC,KAAD,WACE,eAAC,KAAD,CACE99C,UAAU,4BACV2C,MAAO,CAAE6Y,eAAgB,WAAY3Y,aAAc,QAFrD,WAIIoQ,KAAD,OAAeV,SAAf,IAAeA,QAAf,EAAeA,GAAgBmD,SAC9B,cAAC,EAAD,CACEjI,KAAM,cAAC,GAAD,IACNnN,QAAS,kBAAM22C,IAA4B,IAC3Cj3C,UAAWw4C,GAAmB/4C,OAAS,EAAI,kBAAoB,GAHjE,sBAQAwT,KAAD,OAAeV,SAAf,IAAeA,QAAf,EAAeA,GAAgBmD,SAC9B,cAAC,KAAD,CAASlO,MAAOhP,KAAa,GAAK,sBAAlC,SACE,cAAC,EAAD,CACEiV,KAAM,cAAC,KAAD,IACNnN,QAAS,WACPy5C,IAAsB,QAK9B,cAAC,GAAD,CACEv1C,KAAMs1C,GACNlgD,QAASqZ,GACT6zB,QAAS,SAACluC,GAAD,OACPyjD,GAAkBzjD,EAAM,iBAAe2Z,KAEzCrH,QAAS,kBAAM6uC,IAAsB,SAGzC,eAAC,KAAD,CAAK/5C,UAAU,0BAAf,UACE,eAAC,KAAD,CAAKuiB,GAAI,GAAIC,GAAI,GAAIxiB,UAAU,mBAA/B,gCACsB,IACnBiT,GACC,cAAC7S,EAAA,EAAD,CAAiBuC,MAAO,CAAEwL,WAAY,UAEtC,cAAC,KAAWd,MAAZ,CAAkBC,MAAO,EAAzB,SACGvL,GACCm1C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBC,wBAFvB,OAGIxpC,SAHJ,IAGIA,IAHJ,UAGIA,GAAgBmD,cAHpB,aAGI,EAAwB+6B,sBAKpC,eAAC,KAAD,CAAKluB,GAAI,GAAIC,GAAI,GAAIxiB,UAAU,8BAA/B,UACE,oDAEE,eAAC2hC,GAAD,CACE/zB,QAAS1K,OACPg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBnP,qBACL,OAAdp6B,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eAAwBi3B,sBAAuB,GALvD,UAQGlqC,GACCS,OACEg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBnP,qBACL,OAAdp6B,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eAAwBi3B,sBAAuB,IAGtD5qC,GAAee,GACdI,OACEg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBnP,qBACL,OAAdp6B,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eAAwBi3B,sBAAuB,KAEnD,IACHuK,GAAqBz3C,OAAS,GAC7By3C,GAAqBz3C,OAAS0qC,GAAW1qC,QACzC8R,KACCwsC,MACCjC,GAAmBE,yCAEnB+B,MACEjC,GAAmBI,2CAEvB,cAAC,GAAD,IAEA,yCAEGz5C,GACCS,OACEg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBE,uCACrBF,GAAmBI,0CACH,OAAd3pC,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eACEm3B,gCAAiC,IAG1C9pC,GAAmBD,GAClBI,OACEg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBE,uCACrBF,GAAmBI,0CACH,OAAd3pC,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eACEm3B,gCAAiC,KAnB7C,aA2BN,gDAEE,eAAClL,GAAD,CACE/zB,QAAS1K,OACPg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBpP,oBACL,OAAdn6B,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eAAwBg3B,qBAAsB,GALtD,UAQGjqC,GACCS,OACEg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBpP,oBACL,OAAdn6B,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eAAwBg3B,qBAAsB,IAGrD3qC,GAAee,GACdI,OACEg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBpP,oBACL,OAAdn6B,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eAAwBg3B,qBAAsB,KAElD,IACHwK,GAAqBz3C,OAAS,GAC7By3C,GAAqBz3C,OAAS0qC,GAAW1qC,QACzC8R,KACCwsC,MACCjC,GAAmBK,wCAEnB4B,MACEjC,GAAmBM,0CAEvB,cAAC,GAAD,IAEA,yCAEG35C,GACCS,OACEg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBK,sCACrBL,GAAmBM,yCACH,OAAd7pC,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eACEk3B,+BAAgC,IAGzC7pC,GAAmBD,GAClBI,OACEg0C,GAAqBz3C,OAAS,GAC5By3C,GAAqBz3C,OAAS0qC,GAAW1qC,OACvCq8C,GAAmBK,sCACrBL,GAAmBM,yCACH,OAAd7pC,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eACEk3B,+BAAgC,KAnB5C,iBA4BO,OAAdr6B,SAAc,IAAdA,QAAA,EAAAA,GAAgBmD,QACf,qCACE,cAAC,KAAD,CAAK3I,KAAM,GAAI/M,UAAU,oBAAzB,SACE,cAACgoB,GAAA,EAAD,CAAqBta,MAAM,OAA3B,SACE,qCACE,eAACswC,GAAA,EAAD,CACEtwC,MAAOlV,KAAa,IAAM,IAC1BoS,OAAQpS,KAAa,IAAM,IAF7B,WAIkB,eAAdo+C,IACc,aAAdA,IACe,WAAdA,IAA0BmE,GAAct7C,OAAS,IAChD,cAACkpB,GAAA,EAAD,CACEtG,MAAM,QACNuG,OAAO,WACPC,SAAS,SACTC,cAAc,SACdC,UA9gCH,SAAC1pB,EAAe2pB,GACnC,OAAO,sBAAMrmB,MAAO,CAAE0J,MAAO,QAAS2T,WAAY,KAA3C,SAAmD3gB,OAghC1C,cAAC4+C,GAAA,EAAD,CACEvd,GAAG,MACHD,GAAIjoC,KAAa,QAAU,OAC3B6vB,QAAQ,QACR1K,KAAK,UACLugC,YAAa1lD,KAAa,GAAK,GAC/B2lD,YAAa3lD,KAAa,GAAK,IAC/B4lD,WAAW,EACXC,WAAW,SACXr6B,MAthCU,SAAC,GAQnB,IAAD,EAPTyc,EAOS,EAPTA,GACAC,EAMS,EANTA,GACA4d,EAKS,EALTA,SACAJ,EAIS,EAJTA,YACAC,EAGS,EAHTA,YACAI,EAES,EAFTA,QACAzpC,EACS,EADTA,QAEM0pC,EAAS1uC,KAAK2uC,GAAK,IACnBC,EAASR,EAA4C,IAA7BC,EAAcD,GACtCrd,EAAIJ,EAAKie,EAAS5uC,KAAK6uC,KAAKL,EAAWE,GACvC39B,EAAI6f,EAAKge,EAAS5uC,KAAK8uC,KAAKN,EAAWE,GACzC7gC,EAAI,UAAG+I,GAAY1X,MACrB,SAAC6vC,GAAD,OAAYA,EAAOl4B,aAAe7R,EAAQ6I,eADpC,aAAG,EAERqG,MAEH,MADqB,YAAjBlP,EAAQ6I,OAAoBA,EAAO,SAErC,sBACEkjB,EAAGA,EACHhgB,EAAGA,EACHlD,KAAMA,EACNmhC,WAAW,SACXC,iBAAiB,UACjBn8C,SAAU,GACVD,MAAO,CAAEgd,OAAQ,QAPnB,SASa,IAAV4+B,EAAgB,GAAhB,WAAmC,IAAVA,GAAev7C,QAAQ,GAAhD,QA4/BaxH,KACgB,WAAdo7C,GACImE,GACc,aAAdnE,GACEjhC,GACAmlC,GAfV,mBAkBkB,WAAdlE,GACEmE,GACc,aAAdnE,GACEjhC,GACAmlC,UAtBR,aAkBG,EAKEjuC,KAAI,SAACmc,EAAYxc,GAClB,OACE,cAACwyC,GAAA,EAAD,CAEErhC,KAAMiJ,GAAiBoC,EAAMttB,KAAM8Q,IAFrC,eACeA,SAMrB,cAAC,KAAD,CACEuc,UAAW,SAAC1pB,EAAOuI,EAAR,GAA4B,IAAfkN,EAAc,EAAdA,QACtB,MAAM,GAAN,OrF3nDQ,SAACzV,GAM/B,OALkB,IAAI4/C,KAAKC,aAAa,QAAS,CAC/Cv8C,MAAO,WACPypC,SAAU,QAGKr+B,OAAO1O,GqFqnDQ8/C,CAAiBj8C,OAAO7D,IAAlC,aAA8CqC,OAC5CoT,EAAQy7B,YACRjvC,QAAQ,IAAK,KAFf,YAMN,qBAAKtB,UAAU,mBAAf,SACE,eAAC,KAAD,CACEX,MAAOu3C,GACP/2B,SAAU,SAACxgB,GAAD,OAAWw3C,GAAax3C,IAClC+/C,WAAY,cAAC,KAAD,CAAep/C,UAAU,oBACrCukB,kBAAmB,SAACrI,GAAD,OAAYA,EAAO0d,eAJxC,UAME,cAAC,KAAOoF,OAAR,CAAe3/B,MAAM,aAArB,sCAGA,cAAC,KAAO2/B,OAAR,CAAe3/B,MAAM,SAArB,wCAGA,cAAC,KAAO2/B,OAAR,CAAe3/B,MAAM,WAArB,8CASV,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,sBAAK/M,UAAU,sBAAf,UACE,cAAC,KAAD,CACEkN,mBAAmB,QACnBmyC,iBAAkB9/C,OAAOC,KAAK67C,IAC9BiE,WAAY,gBAAG/Z,EAAH,EAAGA,SAAH,OAAkB8J,GAAW,CAAE9J,cAH7C,SAKmC,IAAhC2R,GAAqBz3C,OAClBF,OAAOC,KAAK67C,IAAsBxuC,KAAI,SAAC4/B,GAAD,OACtC,cAAC,KAASt/B,MAAV,CAEEnN,UAAU,mBACVoN,OACE,qCACE,cAAC,KAAWC,MAAZ,CAAkBC,MAAO,EAAzB,SACiB,kBAAdm/B,EACG,iBACAA,IAEN,sBAAMzsC,UAAU,2BAChB,sBAAMA,UAAU,6BAXtB,SAeE,eAAC,KAAD,CACEulB,UAAW0wB,GACXp2B,SAAU29B,GACVtwC,mBAAmB,QACnBoyC,WAAY,gBAAG/Z,EAAH,EAAGA,SAAH,OACV8J,GAAW,CAAE9J,cALjB,UAQkB,aAAdkH,GAA6BmQ,GAAgBnQ,GAC9C4O,GAAqB5O,GAAW5/B,KAC/B,SAACy/B,EAAc9/B,GAAf,iBACE,cAAC,WAAD,UACG4iC,GAAY,CACXtgC,IAAI,GAAD,OAAK29B,EAAL,YAAkBjgC,EAAlB,YAA2B8/B,EAAQE,QACtCF,UACAC,cACAzP,gBACAljC,QAASsgD,KAAyB1tC,EAClC2gC,aACgB,aAAdV,IACgB,OAAdl6B,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eAAwBy3B,cAAe,EADzC,OAEI56B,SAFJ,IAEIA,IAFJ,UAEIA,GAAgBmD,cAFpB,aAEI,EAAwBy3B,kBACxBt+B,EACNq+B,QAAO,OAAEoJ,SAAF,IAAEA,IAAF,UAAEA,GAAmBtnC,MAC1B,SAACpK,GAAD,OACEA,EAAG4nC,SAAWF,EAAQE,QACtBtpC,OAAO0B,EAAG4H,SAAWA,YAHlB,aAAE,EAIN0gC,WAhBP,UAAkBT,EAAlB,YAA+BjgC,WAzBhCigC,MAiDPltC,OAAOC,KAAK67C,IAAsBxuC,KAAI,SAAC4/B,GAAD,OACtC,cAAC,KAASt/B,MAAV,CAEEnN,UAAU,mBACVoN,OACE,qCACE,cAAC,KAAWC,MAAZ,CAAkBC,MAAO,EAAzB,SACiB,kBAAdm/B,EACG,iBACAA,IAEN,sBAAMzsC,UAAU,2BAChB,sBAAMA,UAAU,6BAXtB,SAeE,eAAC,KAAD,CACEulB,UAAW0wB,GACXp2B,SAAU29B,GACVtwC,mBAAmB,QACnBoyC,WAAY,gBAAG/Z,EAAH,EAAGA,SAAH,OACV8J,GAAW,CAAE9J,cALjB,UAQkB,aAAdkH,GAA6BmQ,GAAgBnQ,GAC9C4O,GAAqB5O,GACnBvnC,QAAO,SAACF,GAAD,OACNkyC,GAAqB3zC,SAArB,OAA8ByB,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAMyiB,cAErC5a,KAAI,SAACy/B,EAAc9/B,GAAf,iBACH,cAAC,WAAD,UACG4iC,GAAY,CACXtgC,IAAI,GAAD,OAAK29B,EAAL,YAAkBjgC,EAAlB,YAA2B8/B,EAAQE,QACtCF,UACAC,cACAzP,gBACAljC,QAASsgD,KAAyB1tC,EAClC2gC,aACgB,aAAdV,IACgB,OAAdl6B,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,eAAwBy3B,cAAe,EADzC,OAEI56B,SAFJ,IAEIA,IAFJ,UAEIA,GAAgBmD,cAFpB,aAEI,EAAwBy3B,aACxB,EACND,QAAO,OAAEoJ,SAAF,IAAEA,IAAF,UAAEA,GAAmBtnC,MAC1B,SAACpK,GAAD,OACEA,EAAG4nC,SAAWF,EAAQE,QACtBtpC,OAAO0B,EAAG4H,SAAWA,YAHlB,aAAE,EAIN0gC,WAhBP,UAAkBT,EAAlB,YAA+BjgC,WA5BhCigC,SAoDXx5B,IACA,cAAC,KAAD,CAAKlG,KAAM,GAAX,SACE,eAAC,KAAWiB,KAAZ,CAAiBhO,UAAU,cAA3B,UACE,cAAC,KAAD,CAASwH,MAAM,0BAAf,SACE,cAAC,EAAD,CACE5O,KAAK,OACLC,KAAK,QACL4U,KAAM,cAAC,KAAD,IACN7T,QAASqZ,GACTjT,UAAU,wBACVM,QAAS,kBAAMo7C,GAAuBnpC,SAR5C,OAWGA,SAXH,IAWGA,IAXH,UAWGA,GAAgBmD,cAXnB,aAWG,EAAwB6pC,gBAI/B,cAAC,KAAD,CAAKxyC,KAAM,GAAX,SACE,qBAAI/M,UAAU,qBAAd,UACE,+BACE,cAACsgB,GAAA,EAAD,CACE3d,MAAO,CACLsL,YAAa,SACb5B,MAAO,8BAJb,4GAUA,+BACE,cAACiU,GAAA,EAAD,CACE3d,MAAO,CACLsL,YAAa,SACb5B,MAAO,8BAJb,oHAgBV,cAAC,KAAD,CAAKU,KAAM,GAAX,SACE,cAAC,KAAD,CAAY/M,UAAU,aAAtB,sDASJw/C,GAAW,WACf,IAAM1xC,EAAO,IAAIzH,KAEXo5C,EAAgB9tC,GAAMzM,QAAO,SAAC+X,GAAD,OAAQ,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAGrkB,QAASsgD,MAChDwG,GACJ,OAACD,QAAD,IAACA,OAAD,EAACA,EAAehgD,SAAW0tB,GAMvBsyB,ElFzuDmB,SAAC3xC,GAC5B,IAAM6xC,EAAO,IAAIt5C,KACXu5C,EAAWD,EAAKt4C,cAChBw4C,EAAWF,EAAKx4C,WAEhB24C,EAAiBhyC,EAAKzG,cAEtB04C,EAAgB,GAEtB,GAAID,EAAiBF,EACnB,IAAK,IAAI9yC,EAAI,EAAGA,EAAI,GAAIA,IACtBizC,EAAc5pC,KAAKrJ,EAAI,QAEpB,GAAIgzC,IAAmBF,EAC5B,IAAK,IAAI9yC,EAAI,EAAGA,EAAI+yC,EAAU/yC,IAC5BizC,EAAc5pC,KAAKrJ,EAAI,GAI3B,OAAOizC,EAAc3nC,MAAK,SAACvd,EAAGwd,GAAJ,OAAUA,EAAIxd,KkFitDhCklD,CAAc,IAAI15C,KAAK+yC,GAAU,EAAG,GAAI,KAAKvsC,KAAI,SAAC8T,EAAG7T,GAAJ,MAAW,CAC5DvF,MAAOoZ,EACPrZ,KAAM8xC,GACNjpC,cAAe,MAIf6vC,EAAWpjD,uBAAY,SAACkjB,GAC5By5B,GAAoB,OAAChnC,SAAD,IAACA,QAAD,EAACA,GAAgB9W,UACrCg+C,IAAe,GACf5hD,EACGwD,IAAI,mBAAoB,CACvB+Z,OAAQ,CACNsB,WAAU,OAAEnE,SAAF,IAAEA,QAAF,EAAEA,GAAgB9W,SAC5BkZ,KAAM,EACN8B,SAAU,GACVnP,KAAMwY,EACNrkB,SAAQ,OAAE8W,SAAF,IAAEA,QAAF,EAAEA,GAAgB9W,SAC1B6b,aAAa,KAGhBxa,MAAK,SAACC,GACL6U,GAAS7U,EAAIvB,KAAKA,SAEnBwB,OAAM,kBACL4B,IAAQX,MACN,sEAGHwc,SAAQ,kBAAMg/B,IAAe,QAC/B,IAWH,OATA37C,qBAAU,YAEQ,OAAdyU,SAAc,IAAdA,QAAA,EAAAA,GAAgB9W,YAAa69C,IACd,UAAfN,IAEAgH,EAAS5G,MAEV,CAAC4G,IAGF,eAACne,GAAD,YACI1U,IACA,cAAC2U,GAAD,UACE,qBAAK9hC,UAAU,qBAAf,2EAKJ,eAAC+hC,GAAD,WACE,qBAAK/hC,UAAU,aAAf,SACE,cAAC,KAAD,CACEswB,aAAc8oB,GACd/5C,MAAO+5C,GACPz2C,MAAO,CAAE+K,MAAO,QAChBmS,SAAU,SAACC,GACTkgC,EAASlgC,GACTu5B,GAAYv5B,IAEd2E,QAhEc,CAAC,GAAI,GAAI,GAAI,GAgEF5X,KAAI,SAACgU,GAAD,MAAQ,CACnCxhB,MAAOyO,EAAKzG,cAAgBwZ,EAC5BmD,MAAOlW,EAAKzG,cAAgBwZ,UAIlC,sBAAK7gB,UAAU,eAAf,UACmC,4BAAlB,OAAduS,SAAc,IAAdA,QAAA,EAAAA,GAAgB2E,cACf,cAAC8qB,GAAD,CACEC,SAAuB,UAAbiX,GACV54C,QAAS,kBAAM64C,GAAY,UAC3Bx2C,MAAO,CAAEsL,YAAa,OAHxB,8BAQkC,4BAArB,OAAdsE,SAAc,IAAdA,QAAA,EAAAA,GAAgB4E,iBACf,cAAC6qB,GAAD,CACEC,SAAuB,aAAbiX,GACV54C,QAAS,kBAAM64C,GAAY,aAF7B,4BASLK,GACC,cAAC,GAAD,IAEAkG,EAAe7yC,KAAI,SAACoQ,GAClB,IAAMhY,EAAY,OAAGgY,QAAH,IAAGA,OAAH,EAAGA,EAAGhY,aAClBkL,GAA0B,OAAD8M,QAAC,IAADA,OAAA,EAAAA,EAAG9M,gBAAiB,GAC7C8vC,GACQ,cAAX,OAADhjC,QAAC,IAADA,OAAA,EAAAA,EAAGrkB,OAEsB,KAApB,OAADqkB,QAAC,IAADA,OAAA,EAAAA,EAAG9M,kBADF,OAAD8M,QAAC,IAADA,OAAA,EAAAA,EAAG1X,cAAe,EAGlBsU,EAAwB,aAAXoD,EAAErkB,KACf0V,EAAW8qC,GAAWhpC,GAC5B,OACE,eAAC8xB,GAAD,WACE,sBAAKliC,UAAU,SAAf,UACE,sCAAO4D,IAAgB,OAADqZ,QAAC,IAADA,OAAA,EAAAA,EAAG1V,OAAQ,GAAjC,mBAAuC0V,QAAvC,IAAuCA,OAAvC,EAAuCA,EAAG3V,QACxCuS,IAAevL,IAAe,OAAD2O,QAAC,IAADA,OAAA,EAAAA,EAAG3V,MAAO,MAAQuS,EAAe,8BAC7D,OAADoD,QAAC,IAADA,OAAA,EAAAA,EAAGnG,WAAY3G,EACf,yBAAQnQ,UAAU,QAAlB,kBACO,cAAC,KAAD,IAAY,OAEjBmQ,EACF,+CAEA,8BAEC,OAAD8M,QAAC,IAADA,OAAA,EAAAA,EAAG3V,MAAO,MAAQuS,GAAc,qBAAK7Z,UAAU,cAAf,SAChC,eAAC,EAAD,CACEM,QAAS,WACPq5C,GAAgB,CAAC18B,IACjB3D,IAAuB,IAH3B,UAME,cAAC,KAAD,KACE9gB,MAAc,qBAItB,cAAC,KAAD,CAASmK,MAAO,CAAEgd,OAAQ,YACvB,OAAD1C,QAAC,IAADA,OAAA,EAAAA,EAAG3V,MAAO,MAAQuS,GAAe,qBAAK7Z,UAAU,OAAf,UACpB,OAAZiF,QAAY,IAAZA,OAAA,EAAAA,EAAcxF,QAAS,yCAA8B,8BAEpD,OAADwd,QAAC,IAADA,OAAA,EAAAA,EAAG3V,OAAQ,MAAQuS,IAAgBA,IAAe,sBAAK7Z,UAAU,OAAf,UAClDigD,IAA6B,OAAZh7C,QAAY,IAAZA,OAAA,EAAAA,EAAcxF,QAAS,EACvC,sBAAKO,UAAU,SAAf,UACE,+CACiB,IACf,iCAAS+B,GAAc,OAACkb,QAAD,IAACA,OAAD,EAACA,EAAG1X,mBAE7B,iDACmB,IACjB,kCACI,OAAD0X,QAAC,IAADA,OAAA,EAAAA,EAAG9M,gBAAiB,EACjB,SACApO,GAAc,OAACkb,QAAD,IAACA,OAAD,EAACA,EAAG9M,oBAGzBA,KAAmB0J,GAAcvL,IAChC,4CACc,IACZ,iCACG5H,IAAO,CAAEY,KAAI,OAAE2V,QAAF,IAAEA,OAAF,EAAEA,EAAG3V,KAAMC,OAAQ,OAAD0V,QAAC,IAADA,OAAA,EAAAA,EAAG1V,OAAQ,IACxCR,IAAI,EAAG,SACPm5C,MAAM,SACNnyC,OAAO,sBAMlB,qBAAK/N,UAAU,SAAf,SACE,mBAAGA,UAAU,QAAb,6EAKJ,sBAAKA,UAAU,UAAf,UAEImQ,GAA8B,UAAb+oC,IAAwBjyC,GAAyBgW,GAAGnkB,SAEnE,cAAC,KAAD,CACEmS,UAAU,WACVzG,KAAMmV,GACNnS,MAAOP,GAAyBgW,GAAGzV,MAHrC,SAKE,cAAC,EAAD,CACEkD,OAAK,EACLhS,SAAO,EACP4H,QAAS,WACPk2C,IAAoB78B,IAEpBjc,YAAW,WACT84C,IAAmB,KAClB,OARP,sBAeFrmC,EAEE,cAAC,EAAD,CACEzF,OAAK,EACL5R,SAAUmO,GAAyBgW,GAAGnkB,SACtCD,KAAK,QACLD,KAAK,UACL0H,QAAS,WACPq5C,GAAgB,CAAC18B,IACjByB,IAAqB,IAPzB,SAUG7E,IAAevL,EAAW,sBAAqB,WAGlD,KAEN,eAAC,EAAD,CACEhO,QAAS,WACPq5C,GAAgB,CAAC18B,IACjB3D,IAAuB,IAH3B,UAME,cAAC,KAAD,KACEnJ,GAAiB,gCAYjCqqC,MACH,OAACjoC,SAAD,IAACA,QAAD,EAACA,GAAgBmD,WACH,OAAdnD,SAAc,IAAdA,IAAA,UAAAA,GAAgBmD,cAAhB,mBAAwBC,gBAAxB,eAAkClW,SAAU,GAAK,EAE9C0tB,IACU,OAAd5a,SAAc,IAAdA,QAAA,EAAAA,GAAgBoE,aAChBjQ,IAAO,IAAIL,MAAmB,OAAdkM,SAAc,IAAdA,QAAA,EAAAA,GAAgBqoB,cAAe,OAAOC,QACpDn0B,IAAO,IAAIL,QAEgB,cAAf,OAAdkM,SAAc,IAAdA,QAAA,EAAAA,GAAgB+mB,UAEZnX,GAAY,OAAG5P,SAAH,IAAGA,IAAH,UAAGA,GAAgB7M,YAAnB,aAAG,EAAuB,GAAGyc,aAEzCg+B,IACHhzB,IAC+B,4BAAlB,OAAd5a,SAAc,IAAdA,QAAA,EAAAA,GAAgB2E,cACmB,4BAArB,OAAd3E,SAAc,IAAdA,QAAA,EAAAA,GAAgB4E,gBAOlB,OACE,eAAC,GAAD,WACE,eAACoqB,GAAD,WACE,eAAC,KAAD,CAAKjf,OAAQ,CAAC,GAAI,CAAEC,GAAI,GAAIC,GAAI,KAAhC,UACE,cAAC,KAAD,CAAKzV,KAAM,GAAX,SACE,cAAC,KAAWM,MAAZ,CAAkBC,MAAO,EAAGtN,UAAU,YAAtC,6BAIF,cAAC,KAAD,CAAK+M,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL6U,KAAM,cAAC,KAAD,IACNnN,QAt2CsB,WAChCyiC,IAAiBD,IACjBhwB,GAAa,OA+1CL,yBAUF,cAAC,KAAD,CAAK/F,KAAM,GAAX,SACE,cAAC,IAAD,CACElU,KAAK,QACLgL,YAAY,oBACZ7B,OAAQ,cAAC,KAAD,CAAiBnJ,KAAM,KAC/BgnB,SAAU,SAACC,GAAD,OA77CAzgB,EA67CoBygB,EAAE5D,OAAO7c,MA57CjD8hB,GAAc9hB,GACVyhB,IAAU4B,aAAa5B,SAC3BA,GAAWpjB,YAAW,WACpBgX,GAAW,2BACNG,IADK,IAER6B,WAAYrX,EACZsV,KAAMoN,GAAWJ,QACjBlL,SAAUsL,GAAWtL,cAEtB,MAVgB,IAACpX,OAg8Cd,cAAC,KAAD,CAAK0N,KAAM,GAAI/M,UAAU,wBAAzB,SACE,cAAC,KAAD,CACE2iB,OAAO,WACP/oB,QAASqZ,GACT2P,WAAYrS,GACZuzB,aAAc,SAAC9+B,GAAD,OACZA,EAAKgQ,UAAL,OAAgBzC,SAAhB,IAAgBA,QAAhB,EAAgBA,GAAgByC,QAAS,kBAAoB,IAE/D+N,aAAc,CACZC,gBAAiBxjB,GACjBqgB,SAAU,SAACjY,EAAQqb,GACjB1D,GAAmB0D,GACnBo3B,IAAmB,GACnBh7B,IAAQ,OAAC4D,QAAD,IAACA,IAAgB,IAAIpW,KAAI,SAACjI,GAAD,OAAQA,EAAGnJ,cAE9CynB,iBAAkB,SAACC,GAAD,MAAkB,CAClCrqB,SAAUkpB,GAAemB,MAG7BpB,WAAY,CACVH,gBAAiB,GACjBnK,MAAOhG,GACPoR,eAAgB,EAChBkhB,eAAe,EACfliB,iBAAiB,GAEnBhC,SAAU,SAACkC,GAAgB,IAAD,EACxBX,GAAc,UAACW,EAAWJ,eAAZ,QAAuB,GACrCjN,GAAW,CACTgC,cACA/B,KAAMoN,EAAWJ,QACjBlL,SAAUsL,EAAWtL,SACrBG,KAAOyK,GAAezK,MAAQ,GAC9BM,YAAamK,GAAenK,YAC5BP,WAAa0K,GAAe1K,YAAc,GAC1CQ,eAAgBkK,GAAelK,kBAGnCuM,QAAS,CACP,CACElc,MACE,mCACE,sBAAKxH,UAAU,sBAAf,UACE,oDACA,sBAAKA,UAAU,2BAAf,UACE,cAAC,EAAD,CACEyN,KAAM,cAAC,GAAD,IACNnN,QAzlCI,WAC5BkhB,IAAmB,IAylCKxhB,UACET,OAAOC,KAAK6hB,IAAgBnc,QAC1B,SAAC4J,GAAD,cAAU,UAAAuS,GAAevS,UAAf,eAAqBrP,SAAU,GAAK,KAC9CA,OAAS,EACP,kBACA,GARR,qBAaC8Q,GAAQ9Q,OAAS,GAChB,cAAC,KAAD,CAAS+H,MAAM,kBAAf,SACE,cAAC,EAAD,CACEiG,KAAM,cAAC,KAAD,IACNnN,QAAS,kBAAMqX,GAAoB,iBAIxCpH,GAAQ9Q,OAAS,IAAK,UAe/BkkB,OAAQ,SAAC/b,EAAG5C,GAAJ,2BACN,eAAC,KAAD,CACE1E,QAAS,WACPkS,GAAkBxN,GAClByxC,IAAgB,GAChBE,IAAe,GACfiF,GAAkB52C,GAClBkxC,GAAc,IACdK,GAAqB,IACrBP,GAAsB,IACtBuC,GAAsB,IACtBE,GAAsB,IACtBtB,GAAwB,IACxBz5C,YAAW,WACT+4C,IAAgB,GAChBE,IAAe,KACd,MAfP,UAkBE,cAAC,KAAD,CAAK5pC,KAAM,GAAIpK,MAAO,CAAEyY,SAAU,YAAlC,SACE,eAAC,KAAWpN,KAAZ,CAAiBhO,UAAU,cAA3B,UACGgF,EAAKtJ,KACLsmB,GAAehd,GACd,cAAC,KAAD,CAAK+H,KAAM,EAAX,SACE,cAAC,KAAD,CAASvF,MAAO9O,GAAhB,SACE,cAAC4nB,GAAA,EAAD,QAGFtb,EAAK2R,WACP,cAAC,GAAD,IAEA,kCAIN,cAAC,KAAD,CAAK5J,KAAM,GAAX,SACE,cAAC0vC,GAAD,CAAYz3C,KAAMA,MAEpB,eAAC,KAAD,CAAK+H,KAAM,GAAI/M,UAAU,qBAAzB,UACwB,2BAArBgF,EAAKkS,YACJ,cAAC,KAAD,CAAKlX,UAAU,iBAAf,2BAEA,eAAC,KAAD,CAAKA,UAAU,kBAAf,wBAEGgF,EAAKkR,uBACJ,qBAAKlW,UAAU,wBAAf,SACE,cAAC,KAAD,CAASwH,MAAM,wCAAf,SACE,cAAC44C,GAAA,EAAD,CAAcC,MAAI,QAIvBr7C,EAAKsR,sBACJ,qBAAKtW,UAAU,wBAAf,SACE,cAAC,KAAD,CAASwH,MAAM,uCAAf,SACE,cAAC,KAAD,CACE7E,MAAO,CACLgb,KAAM,2BACN/a,SAAU,iBAQC,2BAAxBoC,EAAKmS,eACJ,cAAC,KAAD,CAAKnX,UAAU,iBAAf,8BAEA,cAAC,KAAD,CAAKA,UAAU,kBAAf,iCAGE,OAAJgF,QAAI,IAAJA,OAAA,EAAAA,EAAM2R,aACNjQ,IAAO,IAAIL,MAAS,OAAJrB,QAAI,IAAJA,OAAA,EAAAA,EAAM41B,cAAe,OAAOC,QAC1Cn0B,IAAO,IAAIL,WAER,OAAJrB,QAAI,IAAJA,GAAA,UAAAA,EAAMysC,qBAAN,mBAAqBvsC,QAAO,SAACxC,GAAD,OAAQA,EAAE4uC,iBAAtC,eACG7xC,SAAU,GAAK,GACjB,qBACEO,UAAS,gCAA8B,OAAJgF,QAAI,IAAJA,GAAA,UAAAA,EAAMysC,qBAAN,mBAAqBvsC,QAAO,SAACxC,GAAD,OAAQA,EAAE4uC,iBAAtC,eAC/B7xC,SAAU,IAAM,IAChB,QACA,IAJN,SAOE,iCACQ,OAAJuF,QAAI,IAAJA,GAAA,UAAAA,EAAMysC,qBAAN,mBAAqBvsC,QAAO,SAACxC,GAAD,OAAQA,EAAE4uC,iBAAtC,eACE7xC,SAAU,IAAM,IAChB,MAFH,OAGGuF,QAHH,IAGGA,GAHH,UAGGA,EAAMysC,qBAHT,iBAGG,EAAqBvsC,QAAO,SAACxC,GAAD,OAAQA,EAAE4uC,iBAHzC,aAGG,EACE7xC,wBAW3B8Z,GAAgB9Z,OAAS,GACxB,qBAAKO,UAAU,iBAAf,SACE,cAAC,EAAD,CACE0K,OAAK,EACL9R,KAAK,UACL0H,QAAS,WACPu4C,IAAmC,IAJvC,8BAYN,eAAC,GAAD,CACE74C,UAAWgkC,aAAK,mBAAoB,CAClC,eACU,OAAPzzB,SAAO,IAAPA,QAAA,EAAAA,GAAS9Q,QAAS,GAAK8S,IACvBgH,GAAgB9Z,OAAS,GAAKm5C,KAJrC,UAOuB,KAAb,OAAProC,SAAO,IAAPA,QAAA,EAAAA,GAAS9Q,QACR,eAACgiC,GAAD,WACE,cAAC,GAAD,IACA,eAAC,KAAWp0B,MAAZ,CAAkBC,MAAO,EAAzB,qBACQ9S,EAAKA,KAAKkB,KADlB,OAGA,cAAC,KAAW8kB,UAAZ,6GAKAjO,KAAmBgH,GAAgB9Z,OACrC,eAACiiC,GAAD,WACE,sBAAK1hC,UAAU,iBAAf,UACIgiB,GAAezP,IAWf,cAAC,EAAD,CACE3Y,QAASuZ,GACT1F,KACE0F,GACE,cAAC/S,EAAA,EAAD,IAEA,cAAC,KAAD,IAGJE,QAAS,WACPu7C,GAAoBtpC,KAVxB,kDAVA,cAAC,EAAD,CACE3Y,QAASuZ,GACT1F,KAAM0F,GAAe,cAAC/S,EAAA,EAAD,IAAsB,cAAC,KAAD,IAC3CE,QAAS,WACPmY,GAAclG,KAJlB,2BA0BF,cAAC,KAAD,CACEzZ,SAAUma,GACViR,QAAS,CAAC,SACVD,KAAM,CACJF,MAAO/B,GAAezP,IAClB,CACA,CACEzD,IAAK,UACLkV,MAAO,UACPvW,KAAM,cAAC,KAAD,CAASzN,UAAU,cACzBM,QAAS,kBAAMg7C,GAAkB/oC,OAGnC,CACA,CACEzD,IAAK,SACLkV,MAAO,SACPvW,KAAM,cAAC,KAAD,CAAWzN,UAAU,cAC3BM,QAAS,kBA/lDX0E,EA+lD4BuN,GA9lD9CukC,GAAgBvmC,GAAQvB,MAAK,SAACsxC,GAAD,OAAcA,EAAItrC,SAAWhQ,EAAKgQ,WAC/DlC,GAAavC,GAAQvB,MAAK,SAACsxC,GAAD,OAAcA,EAAItrC,SAAWhQ,EAAKgQ,gBAC5DyuB,IAAuBD,IAHN,IAACx+B,IAimDA,CACE8J,IAAK,UACLkV,MAAO,UACPvW,KAAM,cAAC,KAAD,CAASzN,UAAU,cACzBM,QAAS,kBAAMg7C,GAAkB/oC,MAEnC,CACEzD,IAAK,aACLkV,MAAO,0BACPvW,KAAM,cAAC,KAAD,CAAazN,UAAU,cAC7BM,QAAS,kBAAMo7C,GAAuBnpC,QA9BhD,SAmCE,cAAC,EAAD,CACE9E,KAAM,cAAC,KAAD,IACNnN,QAAS,SAACwf,GAAD,OAAOA,EAAEmkB,sBAGtB,cAAC,EAAD,CACEjkC,UAAU,eACVyN,KAAM,cAAC,KAAD,IACNnN,QAAS,WACPkS,GAAkB,MAClB0jC,GAAc,IACdK,GAAqB,IACrBP,GAAsB,UAI5B,sBAAKh2C,UAAU,iBAAf,UACE,sBAAKA,UAAU,gBAAf,YACkB,OAAduS,SAAc,IAAdA,QAAA,EAAAA,GAAgBoE,aAChBjQ,IAAO,IAAIL,MAAmB,OAAdkM,SAAc,IAAdA,QAAA,EAAAA,GAAgBqoB,cAAe,OAAOC,QACpDn0B,IAAO,IAAIL,SAEX,qBAAKrG,UAAU,sBAAf,SACE,cAAC,KAAD,CACEnH,KAAK,QACL0f,OACGtH,IAAgB,IAAI/L,QAAO,SAACxC,GAAD,OAAQA,EAAE4uC,UAAQ7xC,OAEhD8gD,UAAU,EACV9R,OAAQ,EAAE,GAAI,IANhB,SAQE,cAAC,EAAD,CACE70C,SAAS,EACT6T,KAAM,cAAC,KAAD,IACNnN,QAAS,WACPu5C,IAA0B,UAMtC,cAAC,KAAWxsC,MAAZ,CAAkBC,MAAO,EAAzB,SACE,iCACGiF,GAAe7W,KACf6W,GAAeoE,YACd,cAAC,KAAD,CACAnP,MAAOg1C,GAAQjqC,IADf,SAGE,cAAC,GAAD,WAKPA,GAAeoE,aACbqL,GAAezP,KAChBA,GAAemD,QACb,cAAC,KAAW8K,UAAZ,UACE,eAACghB,GAAD,WACE,eAAC,KAAWxzB,KAAZ,CAAiBhO,UAAU,cAA3B,+BAEG+B,IACC,UAAAwQ,GAAemD,cAAf,eAAuB+6B,kBAAmB,GAH9C,OAME,cAAC,KAAD,CACEzwC,UAAU,OACV2C,MAAO,CACL69B,QAAS,MACTjgB,OAAQ,UACRZ,OAAQ,aAEVrf,QAAS,WACPif,GAAmB,CAAC,eAAKhN,MACzB8hC,EAAW9hC,GAAe9W,UAC1B24C,IAA4B,SAIjC7hC,GAAe2D,uBACd,cAAC,KAAWlI,KAAZ,CAAiBhO,UAAU,cAA3B,SACE,gCACE,cAACogD,GAAA,EAAD,CACEC,MAAI,EACJ19C,MAAO,CAAEsL,YAAa,SAH1B,6CASHsE,GAAe+D,sBACd,cAAC,KAAWtI,KAAZ,CAAiBhO,UAAU,cAA3B,SACE,sBACE2C,MAAO,CAAE4Y,QAAS,OAAQE,WAAY,UADxC,UAGE,cAAC,KAAD,CACE9Y,MAAO,CAAEsL,YAAa,MAAOrL,SAAU,UAJ3C,oDAcd,eAAC,KAAD,CAAK0f,OAAQ,CAAC,GAAI,IAAKtiB,UAAU,cAAjC,UACGuS,GAAevR,OACd,eAAC,KAAD,WACE,qBAAKhB,UAAU,oBAAf,uBACA,qBAAKA,UAAU,mBAAf,SACGuB,GAAcgR,GAAevR,YAIpC,eAAC,KAAD,WACE,qBAAKhB,UAAU,oBAAf,kBACA,qBAAKA,UAAU,mBAAf,SACGsD,GAAQiP,GAAe9W,eAG5B,eAAC,KAAD,WACE,qBAAKuE,UAAU,oBAAf,qBACA,qBAAKA,UAAU,mBAAf,SAAmCuS,GAAe5W,WAEnDnB,EAAKA,KAAK+B,SAAV,OAAoB/B,QAApB,IAAoBA,GAApB,UAAoBA,EAAMA,YAA1B,aAAoB,EAAYgC,SAAhC,OAAyChC,QAAzC,IAAyCA,GAAzC,UAAyCA,EAAMA,YAA/C,aAAyC,EAAY0B,qBACpD,eAAC,KAAD,WACE,qBAAK8D,UAAU,oBAAf,uCAGA,qBAAKA,UAAU,mBAAf,UACO,OAAJxF,QAAI,IAAJA,GAAA,UAAAA,EAAMA,YAAN,eAAY0B,qBACX,oBACEggB,OAAO,SACP0D,IAAI,aACJ5f,UAAU,YACVuE,KAAI,oCAAqB/J,EAAKA,KAAK8B,mBAA/B,aAAqB,EAAuB0E,OAJlD,UAME,sBAAMhB,UAAU,SAAhB,mBACGxF,EAAKA,KAAK8B,mBADb,aACG,EAAuBZ,OAClB,IACR,cAAC8kD,GAAA,EAAD,QAEA,OAAChmD,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAY0B,qBAWf,IAVA,oBACEggB,OAAO,SACP0D,IAAI,aACJ5f,UAAU,mBACVuE,KAAK,kCAJP,UAME,sBAAMvE,UAAU,SAAhB,8BAAiD,IACjD,cAAC,KAAD,CAASnH,KAAM,aAQvB,6BAEDq6C,GAAiB3gC,IAChB,eAAC,KAAD,WACE,qBAAKvS,UAAU,oBAAf,yBACA,qBAAKA,UAAU,mBAAf,SACGkzC,GAAiB3gC,SAItB,gCAGH4a,IAAWgzB,IACV,cAAC,GAAD,CACEjmB,QAASA,GACTJ,eAAgBA,GAChBpB,aAAcA,GACdC,gBAAiBA,GACjBsB,oBAAqBA,GACrBF,2BAA4BxgB,GAAgBrU,QAC1C,SAACuQ,GAAD,OAAYA,EAAOmvB,kBAErBzK,oBAAqBA,GACrBH,qBAAsBA,GACtBza,mBAAoBA,GACpB1K,QAAO,2BAAMA,IAAN,IAAeF,KAAMb,QAGfkO,GAAezP,KAC9B,qBAAKvS,UAAU,iBAAf,SACI02C,GAKA,cAAC,KAAD,CACEnxB,UAAWyzB,GACXn5B,SAAU,SAAC/Q,GACTmqC,GAAcnqC,GACF,UAARA,EACFqqC,GACgB,aAAbD,IAEC,4BADc,OAAd3mC,SAAc,IAAdA,QAAA,EAAAA,GAAgB4E,iBAEgB,4BAAlB,OAAd5E,SAAc,IAAdA,QAAA,EAAAA,GAAgB2E,aACd,QACA,aAGNu/B,IAAgB,GAChB/4C,YAAW,WACT+4C,IAAgB,KACf,OAGP1yB,MACG2yB,IAAgBv0B,GAAjB,uBAGQq4B,GACA,CACA,CACE1rC,IAAK,gBACLkV,MACE,sBAAKhkB,UAAU,YAAf,uBACamtB,IAAW,cAAC,KAAD,OAG1Bp0B,SAAUo0B,GACR2wB,GAGA,8BAGJ,CACEhvC,IAAK,YACLkV,MACE,sBAAKhkB,UAAU,YAAf,wBACcmtB,IAAW,cAAC,KAAD,OAG3Bp0B,SAAUo0B,GACR,cAACmwB,GAAD,IAGA,+BAIJ,IAlCR,aAmCQn7B,GACA,CACA,CACErT,IAAK,QACLkV,MACE,sBAAKhkB,UAAU,YAAf,oBACUmtB,IAAW,cAAC,KAAD,OAGvBp0B,SAAUo0B,GAAU,cAACqyB,GAAD,IAAe,8BAErC,CACE1wC,IAAK,cACLkV,MAAO,iBACPjrB,SAAU,cAAC,GAAD,MAGZ,KAnDJ,KA1BR,qBAAKiH,UAAU,yBAAf,SACE,cAACI,EAAA,EAAD,SAmFN+sB,IAAWgzB,IAA4B,gBAAfnH,IACxB,cAAC,GAAD,CACE9e,QAASA,GACTJ,eAAgBA,GAChBpB,aAAcA,GACdC,gBAAiBA,GACjBsB,oBAAqBA,GACrBF,2BAA4BxgB,GAAgBrU,QAC1C,SAACuQ,GAAD,OAAYA,EAAOmvB,kBAErBzK,oBAAqBA,GACrBH,qBAAsBA,GACtBza,mBAAoBA,GACpB1K,QAAO,2BAAMA,IAAN,IAAeF,KAAMb,aAKN,IAA5BwmC,GAAiB76C,QAAgB26C,GACnC,cAACjY,GAAD,UACE,cAAC,GAAD,CAAQhV,QAAS,CACfE,OAAqB,OAAd9a,SAAc,IAAdA,IAAA,UAAAA,GAAgB6mB,gBAAhB,eAA0B71B,SAAS,YAAY,EACtD6pB,SAAuB,OAAd7a,SAAc,IAAdA,IAAA,UAAAA,GAAgB6mB,gBAAhB,eAA0B71B,SAAS,UAAU,EACtDm2B,WAAyB,OAAdnnB,SAAc,IAAdA,IAAA,UAAAA,GAAgB6mB,gBAAhB,eAA0B71B,SAAS,gBAAgB,GAC7DgP,eAAgBA,GACnBkmB,OAAQ,WAAO4hB,IAAmB,IAClCjwC,SAAU,WACRiwC,IAAmB,GACnB7nC,GAAkB+G,GAAgB,IAClCgG,GAAmB,SAIvB,eAACkiB,GAAD,WACE,cAAC,EAAD,CACE7oC,KAAK,OACLoH,UAAU,kBACVyN,KAAM,cAAC,KAAD,IACNnN,QAAS,WACPu4C,IAAmC,MAGvC,cAAC,GAAD,IACA,eAAC,KAAWxrC,MAAZ,CAAkBC,MAAO,EAAzB,UACGiM,GAAgB9Z,OADnB,WAEG8Z,GAAgB9Z,OAAS,EAAI,IAAM,GAAI,IACxC,uBAAMkD,MAAO,CAAEqd,WAAY,KAA3B,wBACczG,GAAgB9Z,OAAS,EAAI,IAAM,SAGnD,cAAC,KAAW+gB,UAAZ,gEAGA,eAAC,KAAD,CACE8B,OAAQ,CAAC,GAAI,IACbD,MAAM,SACN3C,QAAQ,SACR1f,UAAU,iBAJZ,UAME,cAAC,KAAD,CAAKuiB,GAAI,GAAIC,GAAI,GAAjB,SACGjJ,GAAgBrU,QAAO,SAACuQ,GAAD,OAAaA,EAAOkB,cAAYlX,OAAS,GAC9D8Z,GAAgBrU,QAAO,SAACuQ,GAAD,aAAYA,EAAO8kC,cAAP,UAAsB9kC,EAAO2jB,gBAA7B,aAAsB,EAAiB71B,SAAS,iBAAc9D,OAAS,EAE3G,sBAAKO,UAAU,uBAAf,UACE,cAAC,KAAD,CACEwH,MAAK,cAAS+R,GAAgB9Z,OAAS,EAAI,IAAM,GAA5C,mBACQ8Z,GAAgB9Z,OAAS,EAAI,IAAM,GAD3C,kBACoD8Z,GAAgB9Z,OAAS,EAAI,UAAY,SAD7F,gBADP,SAKE,qBAAKO,UAAU,2BAEtB,cAAC,EAAD,CACO0K,OAAK,EACL5R,UAAQ,EACRD,KAAK,QACLD,KAAK,UACL6U,KAAM,cAAC,KAAD,IALb,gCAWG,cAAC,EAAD,CACE/C,OAAK,EACL5R,SAAUygB,GAAgB9Z,OAAS,EACnC5G,KAAK,QACLD,KAAK,UACL6U,KAAM,cAAC,KAAD,IACNnN,QAAS,WACyB,IAA5Bg6C,GAAiB76C,QACnB46C,IAAmB,GACnB7nC,GAAkB+G,GAAgB,KACzBA,GAAgB,KACzB/G,GAAkB+G,GAAgB,IAClC0/B,GAAc,SACd/C,GAAc,IACd72B,GAAQ,IACRE,GAAmB,MAfzB,SAoBgC,IAA5B+6B,GAAiB76C,QACa,IAA3B8Z,GAAgB9Z,OACjB,gBACA,sBAKV,cAAC,KAAD,CAAK8iB,GAAI,GAAIC,GAAI,GAAjB,SACE,cAAC,EAAD,CACE9X,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL6U,KAAM,cAACwS,GAAA,EAAD,IACNnnB,SAAqC,IAA3BygB,GAAgB9Z,OAC1Ba,QAAS,kBAAM+3C,IAAwB,IANzC,+BAWF,cAAC,KAAD,CAAK91B,GAAI,GAAIC,GAAI,GAAjB,SACE,cAAC,EAAD,CACE9X,OAAK,EACL9R,KAAK,OACLC,KAAK,QACLmH,UAAU,iBACVM,QAAS,WACP+e,GAAQ,IACRE,GAAmB,IACnBs5B,IAAmC,IARvC,0CAiBR,cAAC,GAAD,CACErxC,MAAM,kBACN4b,KAAK,+CACLoG,WAAY8Z,GACZx4B,SAAU,WACRy4B,IAAsB,IAExBrC,cA/nEwB,WAC9BqC,IAAuBD,KA+nEjBla,KAAM,kBAAM1Q,GAAa5E,OAE3B,cAAC,GAAD,CACEtM,MAAOqL,GAAY,iBAAmB,oBACtC4W,WACE5W,GAAS,2BAEFA,IAFE,IAGLwB,WAAYurB,GACZxrB,MAAe,OAATvB,SAAS,IAATA,QAAA,EAAAA,GAAWymB,WAAY,SAE7B,KAEN9P,WAAYga,GACZja,KAAMgb,GAAmB,CACvB/pC,OACAyzB,KAAM,EACN5b,iBACAoD,OAAQ5C,GACRgtB,0BACAxrB,WAAYurB,GACZH,OAx6DU,SAACghB,EAAmBphD,GACtC,IAAMqhD,EAAkB7tC,GACN,SAAd4tC,GAAkC,SAAVphD,GAGtBqhD,IACc,SAAdD,GAAkC,SAAVphD,EAC1BqhD,EAAU,SAAerhD,EAEzBqhD,EAAWD,GADY,UAAdA,EACephD,EAAMiC,QAAQ,cAAe,IAE7BjC,EAE1ByT,GAAa,eAAK4tC,MA45DZlc,kBACCt/B,QAAO,SAACglB,GAAW,IAAD,EAEnB,SAAKuwB,IAAwC,UAAnB,UAAAvwB,EAAM,UAAN,eAAUxuB,UAKtCoP,SAAU,WAMRgsC,GAAgB,IAChBrT,IAAsB,IAExB18B,IAAK,SAACvL,GAAe,IAAD,EAClBqY,GAAa,2BAENrY,GAFK,IAGR6Y,WACE7Z,EAAKA,KAAK+B,SAAV,OAAoB/B,QAApB,IAAoBA,GAApB,UAAoBA,EAAMA,YAA1B,aAAoB,EAAYgC,OAC5BhB,EAAK6Y,WACL,CAAC7Z,EAAKA,KAAKqB,cAEnBiY,IAEF2vB,IAAsB,GACtBlkB,GAAmB,IACnBF,GAAQ,KAEViK,KAAM,SAAC9tB,GAAe,IAAD,KACf,OAAChB,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAY+B,UAAU,OAAC/B,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAYgC,SACtChB,EAAK6Y,aAA0B,OAAZmwB,SAAY,IAAZA,QAAA,EAAAA,GAAc5tB,OAAQ,IAAI/J,KAC3C,SAACi0B,GAAD,OAAYA,EAAEloB,QAGlBhE,GAAa,2BAENpZ,GAFK,IAGR4Y,MAAkB,OAAZowB,SAAY,IAAZA,QAAA,EAAAA,GAAclL,WAAY,OAChCtkB,OAAM,OAAEnC,SAAF,IAAEA,QAAF,EAAEA,GAAWmC,SAErBlB,GACAe,IAEF4uB,IAAsB,GACtBjxB,GAAkB,MAClB6M,GAAQ,OAGZ,cAAC,GAAD,CACE3R,MAAM,MACNlJ,KAAMA,GACN01B,QAASA,GACToM,WAAYiV,GACZ/U,YAAaA,GACb17B,SAAU,kBAAMywC,MAChBzhB,eAAgBA,GAChBvgB,gBAAiBA,GACjBmf,aAAcA,GACdC,gBAAiBA,GACjB8N,iBAAkBA,GAClBlnB,mBAAoBA,GACpB0a,oBAAqBA,GACrBhD,oBAAqBukB,GACrBhW,UACEjsB,GAAgBrU,QAAO,SAACuQ,GAAD,OAAaA,EAAOkB,cAAYlX,OAEzDs6B,2BAA4BxgB,GAAgBrU,QAC1C,SAACuQ,GAAD,OAAYA,EAAOmvB,oBAGvB,eAAC,KAAD,CACEx5B,OAAQ,KACRP,QAASspC,GACT3sC,MAAM,+BACNxH,UAAU,uBACV8K,SAAU,WACH+oC,IACHO,IAA4B,GAC5BgB,EAAS,IACT71B,GAAmB,MATzB,UAaE,eAAC,KAAWvR,KAAZ,CAAiBrL,MAAO,CAAEC,SAAU,OAAQyJ,MAAO,iBAAnD,UACE,cAAC,KAAD,CACE1J,MAAO,CACL+K,MAAO,OACP9C,OAAQ,OACRg2B,UAAW,kBACX3yB,YAAa,SANnB,4JAaA,cAAC,GAAD,aAAarU,QAASi6C,GAAiBa,KACvC,cAAC,KAAWrnC,MAAZ,CAAkBC,MAAO,EAAG3K,MAAO,CAAEqd,WAAY,OAAjD,mCAGA,cAAC,KAAD,CACE2C,OAAO,KACP/oB,QAASqZ,IAAc4gC,EACvBjxB,WAAYqxB,EACZlyB,WAAY,CACVH,gBAAiB,EACjBnK,MAAOw8B,EAAQx0C,OACfojB,eAAgB,EAChBC,QAAQ,GAEVjD,SAAU,SAACkC,EAAYlN,GACrB,IAAM8rC,EAAe9rC,EACrBw/B,EAAW96B,GAAgB,GAAG9d,SAAU,CAAEoZ,QAAS8rC,KAErDn9B,OAAQ,CACNC,YAAa,UAEfC,QAAS,CACP,CACErB,MAAO,SACP7a,MAAO,MACPqc,UAAW,MACX+8B,WAAY,cAAC,KAAD,CAAa5gD,UAAU,oBACnC6U,QAAS4L,GACTkD,OAAQ,SAACzlB,EAAQ8G,GAAT,OAAkB,mCAAG9G,MAE/B,CACEmkB,MAAO,SACP7a,MAAO,SACPqc,UAAW,QACX+8B,WAAY,cAAC,KAAD,CAAa5gD,UAAU,oBACnC6U,QAASjR,GAAeiJ,KAAI,SAAC8T,EAAG7T,GAAJ,MAAW,CACrCkS,KAAM2B,EACNthB,MAAOyN,EAAI,MAEb6W,OAAQ,SAACzlB,EAAQ8G,GAAT,OAAkB,mCAAG9G,MAE/B,CACEmkB,MAAO,SACP7a,MAAO,MACPqc,UAAW,OACX+8B,WAAY,cAAC,KAAD,CAAa5gD,UAAU,oBACnC6U,QAAS+L,GACT+C,OAAQ,SAACzlB,EAAQ8G,GAAT,OAAkB,mCAAG9G,MAE/B,CACE8B,UAAW,eACX2jB,OAAQ,SAACzlB,EAAQ8G,GAAT,OACN,cAAC,EAAD,CACE1E,QAAS,kBACPo1C,GAAa1wC,EAAK2wC,KAAM3wC,EAAKuC,MAAOvC,EAAKsC,OAF7C,4BAWF,OAALstC,QAAK,IAALA,OAAA,EAAAA,EAAOn1C,QAAS,GACf,mCACE,eAAC,KAAD,CAAKigB,QAAQ,MAAM/c,MAAO,CAAE0Y,UAAW,QAAvC,UACE,cAAC,KAAWrN,KAAZ,CACErL,MAAO,CAAEC,SAAU,OAAQyJ,MAAO,iBADpC,qEAKA,cAAC,EAAD,CACEzT,KAAK,UACLE,SAAU+6C,EACVlxC,MAAO,CAAEgd,OAAQ,UACjB9mB,KAAK,QACLyH,QAAS,kBAAM+0C,EAAU97B,GAAgB,GAAG9d,WAL9C,+BAaR,cAAC,KAAD,CACE2P,OAAQ,KACR5D,OAA+B,OAAxBsxC,SAAwB,IAAxBA,QAAA,EAAAA,GAA0B90B,UAAW,kBAC5CnZ,QAASutC,GACTttC,SAAU,WACRiuC,QAA4BlqC,GAC5BwpC,IAAwB,IAN5B,SASE,cAAC,KAAD,CAAK/1B,OAAQ,CAAC,GAAI,IAAlB,SACIw2B,GA+BA,qCACE,cAAC,KAAD,CAAK/rC,KAAM,GAAX,SACE,cAAC,KAAD,6EAIF,cAAC,KAAD,CAAKyV,GAAI,GAAID,GAAI,GAAjB,SACE,eAAC,KAAD,CACEviB,UAAU,YACVM,QAAS,WACP+qC,GAASyN,GAAyBz5C,QAHtC,UAME,cAAC,KAAD,UACE,cAAC,KAAD,CACEsD,MAAO,CACLE,aAAc,OACd6K,MAAO,OACP9C,OAAQ,OACRyB,MAAO,gCAZf,uBAgBsB,iDAGxB,cAAC,KAAD,CAAKmW,GAAI,GAAID,GAAI,GAAjB,SACE,eAAC,KAAD,CACEviB,UAAU,YACVM,QAAS,WACP,IAAM0e,EAAI,UAAM85B,GAAyB9F,gBAAgB/qC,WACvD,IACA,QAFQ,OAGN6wC,GAAyB50C,MACvB28C,EAAkBtnC,GAAgBvK,MACtC,SAACiH,GAAD,QAASA,EAAEjV,SAEP8/C,EAAaD,EAAe,aACxBA,EAAgB7/C,OACtB,GACE+/C,EAAYF,EACd7hC,EAAK1d,QAAQ,aAAcu/C,EAAgBnlD,MAC3CsjB,EAAK1d,QAAQ,gBAAiB,IAC5B2d,EAAG,uBAAmB6hC,EAAnB,iBAAsCC,GAC/CpjD,OAAO6G,KAAKya,EAAK,WAjBrB,UAoBE,cAAC,KAAD,UACE,cAAC,KAAD,CACEtc,MAAO,CACLE,aAAc,OACd6K,MAAO,OACP9C,OAAQ,OACRyB,MAAO,gCA1Bf,uBA8BsB,sDAvF1B,qCACE,cAAC,KAAD,CAAKU,KAAM,GAAX,SACE,eAAC,KAAD,kEACuD,IACpDwM,GAAgB9Z,OAAS,EACxB,oCAAO8Z,GAAgB9Z,OAAvB,4BAEA,6BAILszC,GAAUlmC,KAAI,SAACm0C,GAAD,OACb,cAAC,KAAD,CAAKx+B,GAAI,GAAID,GAAI,GAAjB,SACE,eAAC,KAAD,CACEviB,UAAU,YACVM,QAAS,WACHiZ,GAAgB9Z,OAAS,EAC3B4rC,GAAS2V,EAAS3hD,OAElB05C,GAA4BiI,IANlC,UAUE,cAAC,KAAD,UAAMA,EAASvzC,SACduzC,EAASh9B,YAZYg9B,EAAS3hD,iBAkF7C,cAAC,KAAD,CACE+L,OAAQ,KACR5D,MAAM,0DACNqD,QAASu4B,GACTt4B,SAAU,kBAAMu4B,IAAqB,IAJvC,SAME,cAAC,KAAD,CAAK/gB,OAAQ,CAAC,EAAG,GAAjB,SACE,cAAC,KAAD,CACE3f,MAAO,CAAE+K,MAAO,QAChBiV,OAAO,MACP/oB,QAASqZ,GACT2P,WAAY0f,GACZ5e,QAAS,CACP,CACElc,MAAO,YACPmc,OAAQ,SAAC/b,EAAG5C,GAAJ,OACN,qCACE,cAAC,KAAD,UACE,cAAC,KAAD,CAAK+H,KAAM,GAAX,SAAgB/H,EAAKxK,SAEvB,cAAC,KAAD,UACE,cAAC,KAAD,CAAKuS,KAAM,GAAX,SAAgBzJ,GAAQ0B,EAAKrE,cAKrC,CACE6G,MAAO,iBACP6a,MAAO,SACPsB,OAAQ,SAAC/b,EAAG5C,GAAJ,OACN,cAAC,KAAD,UACE,cAAC,KAAD,CAAK+H,KAAM,GAAX,SAAgB/H,EAAKoW,eAI3B,CACE5T,MAAO,WACPmc,OAAQ,SAAC/b,EAAG5C,GAAJ,OACN,cAAC,KAAD,UACE,cAAC,KAAD,CAAK+H,KAAM,GAAX,SAAgB/H,EAAKpG,qBAQnC,cAAC,KAAD,CACEwM,OAAQ,KACR5D,MAAM,yBACNqD,QAASi4B,GACTh4B,SAAU,kBAAMi4B,IAAgB,IAJlC,SAME,eAAC,KAAD,CAAKzgB,OAAQ,CAAC,GAAI,IAAK3f,MAAO,CAAEE,aAAc,QAA9C,UACE,cAAC,KAAD,UACE,cAAC,KAAW2d,UAAZ,CACE7d,MAAO,CAAEE,aAAc,EAAGmd,WAAY,OADxC,+DAMF,cAAC,KAAD,CAAKjT,KAAMvU,KAAa,GAAK,GAA7B,SACE,eAAC,KAAD,CAAMwH,UAAU,WAAWM,QA/5EN,WAC/BmjC,IAAuBD,IACvBT,IAAiBD,IACjBhwB,GAAa,OA45EH,UACE,cAAC,KAAD,CAAsBja,KAAM,GAAImH,UAAU,cAC1C,cAAC,KAAD,CAAKA,UAAU,YAAf,SACE,oDACqB,sDAK3B,cAAC,KAAD,CAAK+M,KAAMvU,KAAa,GAAK,GAA7B,SACE,eAAC,KAAD,CAAMwH,UAAU,WAAWM,QAn6ET,WAC5B6iC,IAAoBD,IACpBH,IAAiBD,IACjBhwB,GAAa,OAg6EH,UACE,cAAC,KAAD,CAAiBja,KAAM,GAAImH,UAAU,cACrC,cAAC,KAAD,CAAKA,UAAU,YAAf,SACE,sDACuB,8DAOjC,cAAC,KAAD,CACEoL,OAAQ,KACR5D,MAAM,wBACNqD,QAASq4B,GACTp4B,SAAU,kBAAMq4B,IAAmB,IAJrC,SAME,eAAC,KAAD,CAAK7gB,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CACEzpB,KAAM,GACNmH,UAAU,YACV2C,MAAO,CAAEgd,OAAQ,aAEnB,mBACEhd,MAAO,CACL4d,OAAQ,UACRZ,OAAQ,UACRK,WAAY,OAEd1f,QAAS,WACP3C,OAAO6G,KACLi2C,GAAiB,2EACuD7W,GADvD,oFAEuDA,GAFvD,WARvB,oCAgBA,cAAC,KAAD,CAAK72B,KAAM,GAAX,SACE,cAAC,GAAD,CACEkuB,OAAO,MACPrhC,QAASgpC,GACTvH,aAnpFO,SAAC6D,GACpBuD,IAAe,GAEZ,CACC,oEACA,2BACA,aACA,aACA,4BACA,gCACA,8BACA,oBACA,mBACAl/B,SAAS27B,EAAKtmC,QAEhBgG,IAAQX,MAAM,gCACdwkC,IAAe,KAooFLnH,cA1kFQ,SAAC,GAAmC,IAAjC4D,EAAgC,EAAhCA,KACjBgF,EAAW,IAAIC,SAChB3B,KACL0B,EAASE,OAAO,OAAQlF,GACxB2D,IAAe,GACfhrC,EACG4G,KAAK,iBAAkBylC,EAAU,CAChChsC,QAAS,CACP,eAAgB,yBAGnB4E,MAAK,YAAe,IAAZtB,EAAW,EAAXA,KACPqnC,IAAe,GACfM,IAAoBD,IACO,IAAvB1nC,EAAK8mC,OAAO7iC,OACdb,IAAQmB,QAAQ,0CAEhBnB,IAAQX,MACN,qEAEFskC,GAAU/mC,EAAK8mC,QACfe,IAAqB,IAEvB3uB,GAAW,CAAEC,KAAMb,QAEpB9W,OAAM,SAACiB,GACN4kC,IAAe,GACfjkC,IAAQX,MAAMA,EAAM3C,SAASE,KAAKoD,uBAojFlC,cAAC,GAAD,CACEwsC,kBAAmBA,GACnBD,iBAAkBA,GAClBhR,oBAAqBA,GACrBkR,SAAUA,KAEZ,eAAC,KAAD,CACE7jC,MAAM,8BACNqD,QAAO,OAAE8I,SAAF,IAAEA,QAAF,EAAEA,GAAqBa,UAC9B1J,SAAU,kBAAM8I,GAAuB,CAAEY,WAAW,KACpD4U,KAAM,WACJtQ,IACGnF,GAAoBhT,KAAO,IAAIW,QAAQ,WAAY,KAEtDsS,GAAuB,CAAEY,WAAW,KAEtCysC,OAAO,YACPC,WAAW,WAXb,uBAaY,wCAASvtC,SAAT,IAASA,QAAT,EAASA,GAAqBjY,OAb1C,SAa+D,IAb/D,OAcGiY,SAdH,IAcGA,QAdH,EAcGA,GAAqBhT,IAdxB,uGAiBA,cAAC,KAAD,CACEyK,OAAQ,KACR5D,MAAK,yCAAoCk7B,GAAWhnC,KAA/C,8BACLmP,QAASwsC,GACTvsC,SAAUwwC,GAJZ,SAME,eAAC,KAAD,CAAKh5B,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,QACL0H,QAASg7C,GAJX,sBASF,cAAC,KAAD,CAAKvuC,KAAM,GAAX,SACE,cAAC,EAAD,CAAQrC,OAAK,EAAC7R,KAAK,QAAQD,KAAK,UAAU0H,QAv/EjC,WACnB4S,IAAc,GACdokC,IAAuBD,IACvBx/C,EAAI4G,KAAK,kBAAT,eAAiCikC,KAAc5lC,MAAK,WAClD4X,GAAW,CAAEC,KAAMb,SAm/EX,wBAON,cAAC,KAAD,CACEpG,MAAO,IACPlJ,KAAMk0C,GACNlxC,MAAM,2BACNsD,SAprFsB,SAAC9F,GAC7B2zC,IAA2BD,IAC3BjB,IAAuB,IAmrFjBrsC,OACE,cAAC,EAAD,CACEV,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL0H,QAAS,kBAAMo7C,GAAuBnpC,KAJxC,sCANJ,SAgBE,cAAC,KAAD,UACE,eAAC,KAAD,qHAEyC,IACtCzC,KAAKlH,IAAI,GAAmB,EAAf6I,IAHhB,6EAQJ,eAAC,KAAD,CACErG,OAAQ,KACR5D,MAAM,+BACNqD,QAAS6sC,GACT5sC,SAAU,WACR6sC,IAAuB,GACvBb,GAAgB,KANpB,UASE,cAAC,KAAD,CAAKn0C,MAAO,CAAEE,aAAc,QAA5B,SACE,cAAC,KAAD,CACEyhB,KAAK,WACLD,YAAU,EACVxrB,KAAK,QACL8J,MAAO,CAAE+K,MAAO,OAAQ9C,OAAQ,QAChC/G,YAAY,oCACZjK,QAASqZ,GACTna,SAAUma,GACV5T,MAAOugC,GACP/f,SAAUggB,GATZ,SAWGxtB,GAAcxF,KAAI,SAACkH,GAAD,OACjB,cAAC,KAAOirB,OAAR,CACE3/B,MAAO0U,EAAa6E,IACpBoL,MAAOjQ,EAAarY,KAFtB,SAIE,qBAAKsE,UAAU,yBAAf,SACG+T,EAAarY,gBAMxB,eAAC,KAAD,CAAK4mB,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,QACL0H,QAAS,WACPq3C,IAAuB,GACvBb,GAAgB,KANpB,wBAYF,cAAC,KAAD,CAAK/pC,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL0H,QAAS,WACPsU,GAAa,2BAEN4vB,IAFK,IAGRnwB,WAAYurB,GACZ7qB,WAAW,IAEbjB,IAEF6jC,IAAuB,GACvBb,GAAgB,KAdpB,kCAuBR,cAAC,KAAD,CACE1rC,OAAQ,KACR5G,KAAM+c,GACN/Z,MAAM,mBACNxH,UAAU,eACV8K,SAAU,WACRoW,GAAWG,IACXG,IAAmB,IAPvB,SAUE,eAAC,KAAD,CAAKc,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,qBAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAS2X,MAAV,CACErlB,MAAOwV,GAAQ8B,WACfkJ,SAAU,SAAClJ,GACTuK,IAAW,SAACrM,GAAD,mBAAC,eAAuBA,GAAxB,IAAiC8B,mBAHhD,SAME,eAAC,KAAD,CAAK2L,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,WAAhB,wBAEF,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,cAAhB,2BAIF,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,gBAAhB,6BAIF,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,kBAAhB,2CASZ,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,8BAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAD,CACEsX,YAAU,EACVxrB,KAAK,QACLyrB,KAAK,WACLjlB,MAAOwV,GAAQ+B,KACf/S,YAAY,aACZlB,MAAO,CAAE8f,SAAU,MAAO0T,SAAU,QACpC5R,kBAAmB,SAACL,GAAD,OAAaA,EAAQM,YACxC3E,SAAU,SAACjJ,GACTsK,IAAW,SAACrM,GAAD,mBAAC,eAAuBA,GAAxB,IAAiC+B,aAE9C6N,QAAO,CACL,CAAEplB,MAAO,gBAAc2kB,MAAO,kBADzB,oBAEF3R,GAAcxF,KAAI,SAAC7H,GAAD,MAAW,CAC9B3F,MAAO2F,EAAK4T,IACZoL,MAAOhf,EAAKtJ,oBAOxB,cAAC,KAAD,CAAKqR,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,gCAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAS2X,MAAV,CACErlB,MAAOwV,GAAQqC,YACf2I,SAAU,SAAC3I,GACTgK,IAAW,SAACrM,GAAD,mBAAC,eAAuBA,GAAxB,IAAiCqC,oBAHhD,SAME,eAAC,KAAD,CAAKoL,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,yBAAhB,sCAIF,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,2BAAhB,oDASZ,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,wBAEF,cAAC,KAAD,CAAKrX,KAAM,GAAX,SACE,cAAC,KAAS2X,MAAV,CACErlB,MAAOwV,GAAQsC,eACf0I,SAAU,SAAC1I,GACT+J,IAAW,SAACrM,GAAD,mBAAC,eACPA,GADM,IAETsC,uBALN,SASE,eAAC,KAAD,CAAKmL,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,yBAAhB,sCAIF,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAM,2BAAhB,oDASZ,cAAC,KAAD,CAAK0N,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLgB,QAASqZ,GACT3S,QAAS,WACPghB,GAAkBzM,IAClBH,GAAW,CACTgC,cACA/B,KAAMoN,GAAWJ,QACjBlL,SAAUsL,GAAWtL,SACrBE,WAAa9B,GAAQ8B,YAAc,GACnCC,KAAO/B,GAAQ+B,MAAQ,GACvBM,YAAarC,GAAQqC,YACrBC,eAAgBtC,GAAQsC,iBAE1BzZ,YAAW,WACT8jB,IAAmB,KAClB,MAlBP,4BA0BN,eAAC,KAAD,CACEpW,OACE,cAAC,EAAD,CACEV,OAAK,EACL7R,KAAK,QACLD,KAAK,UACL6U,KAAM,cAAC,KAAD,IACNnN,QAAS,WACP22C,IAA4B,GAC5BwB,GAAsBH,IACtBnB,GACEmB,GAAmBzrC,KAAI,SAAC4a,GAAD,OACrB8nB,GAAiB,CAAEC,UAAW/nB,QAGlC0zB,MAbJ,uBAmBF32C,KAAMwyC,GACNxvC,MAAM,wBACNxH,UAAU,eACV8K,SAAU,WACRmsC,IAA4B,IAzBhC,UA4BE,cAAC,KAAD,CAAK30B,OAAQ,CAAC,GAAI,IAAlB,SACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,eAAC,KAAD,CAAKuV,OAAQ,CAAC,EAAG,GAAjB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWiB,KAAZ,CAAiBoW,QAAM,EAAvB,0BAEF,eAAC,KAAD,CAAKrX,KAAM,GAAX,UACE,cAAC,KAAD,CACEgT,QAASk7B,GACTC,cAAeA,GACfl7C,UAAU,sBACV6f,SAAU,SAACC,GACTy4B,GAAsBz4B,EAAE5D,OAAO6D,QAAUoqB,GAAa,KAL1D,iCAUA,cAAC,KAASzlB,MAAV,CACErlB,MAAOi5C,GACPz4B,SAAU,SAACC,GACTy4B,GAAsBz4B,IAH1B,SAME,cAAC,KAAD,CAAKwC,OAAQ,CAAC,EAAG,GAAjB,SACG6nB,GAAWt9B,KAAI,SAAC4a,EAAW3a,GAAZ,OACd,cAAC,KAAD,CAAKC,KAAM,GAAX,SACE,cAAC,KAAD,CAAU1N,MAAOooB,EAAjB,SAA6BA,KADX3a,oBAUlC,qBAAK9M,UAAU,mBAAmB2C,MAAO,CAAEu1B,QAAS,QAASvY,OAAQ,UAArE,SACE,qBAAK3f,UAAU,kBAAf,0CAIF,cAAC,KAAD,CACEskB,KAAK,WACLD,YAAU,EACV1hB,MAAO,CAAE+K,MAAO,OAAQiS,OAAQ,UAChC9b,YAAY,yBACZxE,MAAO26C,IAAkB,GACzBn6B,SAAU,SAACC,GACTy4B,GAAsB,IACtB0B,GAAkBn6B,GAAK,KAEzB2E,QAASllB,OAAOC,KAAK47C,IAAgCvuC,KAAI,SAAC4/B,GAAD,MAAgB,CACvEzoB,MAAOyoB,EACPhoB,QAAS22B,GAA+B3O,GAAW5/B,KAAI,SAACoJ,GAAD,MAAa,CAClE+N,MAAO/N,EAAEu2B,OACTntC,MAAO4W,EAAEu2B,oBAKjB,cAAC,GAAD,CACEnzB,oBAAqBA,GACrBC,uBAAwBA,GACxBC,gBAAiBmgC,IAAgB,GACjClgC,mBAAoBA,GACpBC,eAAgB2jC,KAElB,cAAC,GAAD,CACE99B,kBAAmBA,GACnBZ,qBAAsBA,GACtBnF,gBAAiBmgC,GACjBn6B,mBAAoBo6B,GACpBn7B,WAAYA,GACZC,cAAeA,GACfH,oBAAqBA,GACrBC,uBAAwBA,KAE1B,cAAC,GAAD,CACE1J,QAASA,GACT6B,WAAYA,GACZ5C,YAAaA,GACbtP,KAAMo1C,GACN1uC,QAAS,kBAAM2uC,IAA0B,MAE3C,cAAC,GAAD,CACEr1C,KAAMuxC,GACNjO,aAAcA,GACdvgC,MAAO4uC,GAAez6C,KACtBiV,cAAeA,GACfwwC,cA18EgB,SAAC3lD,GACrByI,GAAS8N,KA08ELQ,eAAgBA,GAChB3B,iBAAkBA,GAClBS,iBAAkBA,GAClB02B,kBAAmBA,SEtoHZqZ,GAVoC,WAAO,IAAD,EACpB1hD,IAA3BJ,EAD+C,EAC/CA,OAER,OAHuD,EACvCpF,eAGP,6BAGFoF,EAAS,cAAC,IAAD,IAAa,cAAC,IAAD,CAAU0tC,GAAG,kBCC7BqU,GAVmB,WAAO,IAAD,EACH3hD,IAA3BJ,EAD8B,EAC9BA,OAER,OAHsC,EACtBpF,eAGP,6BAGDoF,EAAsB,cAAC,IAAD,CAAU0tC,GAAG,aAA1B,cAAC,IAAD,KCNJsU,GAHoC,WAC/C,OAAO,cAAC,IAAD,K,+BCDEj2C,GAAUjT,IAAOC,IAAV,2yBAwCPkpD,GAAmBnpD,IAAOC,IAAV,2uBChCvBmpD,GAAc,KAYPC,GAAwB,WAAO,IAClCjnD,EAASkF,IAATlF,KACF4M,GAAc,IAAIf,MAAOgB,cAFU,EAGb9N,qBAHa,mBAGlCka,EAHkC,KAG1BC,EAH0B,OAIjBna,mBAAS6N,GAJQ,mBAIlCE,EAJkC,KAI5Bo6C,EAJ4B,OAKXnoD,oBAAS,GALE,mBAKlCK,EALkC,KAKzBC,EALyB,OAMTN,mBAAqB,IANZ,mBAMlCooD,EANkC,KAMxBC,EANwB,KAQnCC,EAAcjlD,uBAAY,WAC9B/C,GAAW,GACXhC,EACGwD,IADH,mBACmBiM,IAChBxK,MAAK,YAAe,IAAD,EAAXtB,EAAW,EAAXA,KACPomD,GACGpmD,EAAKmmD,UAAY,IAAIz8C,QACpB,SAAC48C,GAAD,OAAuBA,EAAQx6C,OAASA,MAG5CoM,EAAS,UAAClY,EAAKiY,cAAN,aAAC,EAAajY,SAExBwB,OAAM,eACNyd,SAAQ,WACP5gB,GAAW,QAEd,CAACyN,IAgBJ,OAJAxJ,qBAAU,WACR+jD,MACC,CAACv6C,EAAMu6C,IAGR,eAAC,GAAD,WACE,cAAC,KAAWx0C,MAAZ,CAAkBC,MAAO,EAAGtN,UAAU,YAAtC,yBAGA,cAAC,KAAWwgB,UAAZ,CAAsB4D,QAAM,EAACzhB,MAAO,CAAEgd,OAAQ,cAA9C,oCAGA,eAAC,KAAD,CAAK2C,OAAQ,CAAC,GAAI,IAAKD,MAAM,SAAS3C,QAAQ,gBAA9C,UACE,cAAC,KAAD,UACE,cAAC,KAAD,CACE7mB,KAAK,QACLwG,MAAOiI,EACPzD,YAAY,YACZgc,SAAU,SAACxgB,GAAD,OAAWqiD,EAAQriD,IAC7BolB,QAASs9B,MAAM5tC,KAAK4tC,MAAM36C,EAAco6C,GAAc,IACnD30C,KAAI,SAACgU,EAAG/T,GAAJ,MAAW,CACdkX,MAAOw9B,GAAc10C,EACrBzN,MAAOmiD,GAAc10C,MAEtB5D,cAGP,cAAC,KAAD,UACE,cAAC,EAAD,CACErQ,KAAK,QACLD,KAAK,QACLoH,UAAU,gBACVyN,KAAM,cAAC,KAAD,IACNnN,QA3CkB,WAC1B,IACE,IAAM9E,EAAOqc,WAAW1D,KAAKV,GACvBqE,EAAO,IAAIC,KAAK,CAACvc,GAAO,CAAE5C,KAAM,uBACtCof,KAAUC,OAAOH,EAAM,oBACvB,MAAO7Z,GACPW,IAAQX,MAAMA,KAgCV,kCAYJ,cAAC,KAAD,CAAMw0B,SAAU74B,EAAhB,SACE,eAAC2nD,GAAD,WACE,sBACEvhD,UAAS,qBACNxF,EAAKA,KAAK0B,oBAAmC,GAAb,YAFrC,UAKE,yCACA,yCACA,0CACC1B,EAAKA,KAAK0B,qBAAuB,4CAClC,2CAEDylD,EAASliD,OAAS,EACjBkiD,EAAS90C,KAAI,SAAC7H,GAAD,eACX,sBAEEhF,UAAS,cACNxF,EAAKA,KAAK0B,oBAAmC,GAAb,YAHrC,UAME,8BAAM0H,GAAeoB,EAAKuC,MAAQ,KAClC,iCACO,OAAJvC,QAAI,IAAJA,GAAA,UAAAA,EAAMuL,eAAN,eAAe9Q,SAAU,EAD5B,eAEO,OAAJuF,QAAI,IAAJA,GAAA,UAAAA,EAAMuL,eAAN,eAAe9Q,QAAS,GAAK,OAEhC,iCACO,OAAJuF,QAAI,IAAJA,OAAA,EAAAA,EAAMg9C,iBAAkB,EAD3B,eAEO,OAAJh9C,QAAI,IAAJA,OAAA,EAAAA,EAAMg9C,gBAAiB,GAAK,OAE9BxnD,EAAKA,KAAK0B,qBACT,iCACO,OAAJ8I,QAAI,IAAJA,OAAA,EAAAA,EAAMi9C,gBAAiB,EAD1B,gBAEQ,OAAJj9C,QAAI,IAAJA,OAAA,EAAAA,EAAMi9C,gBAAiB,GAAK,GAAK,OAGvC,8BAAMlgD,GAAeiD,EAAK3F,OAAS,OApB9B2F,EAAKuC,UAwBd,qBAAKvH,UAAU,QAAf,6CCxIC7H,GAAYC,IAAOC,IAAV,kOAWTgT,GAAUjT,IAAOC,IAAV,yhDCkBP6pD,GAAuB,WAAO,IAAD,MACWxiD,IAA3ClF,EADgC,EAChCA,KAAMC,EAD0B,EAC1BA,QAAS+C,EADiB,EACjBA,QAASJ,EADQ,EACRA,eADQ,EAEzB6M,IAAKC,UAAbC,EAFiC,oBAGlC9Q,EAAWC,cAHuB,EAIVC,oBAAS,GAJC,mBAIjCK,EAJiC,KAIxBC,EAJwB,OAKAN,oBAAS,GALT,mBAKjC4oD,EALiC,KAKnBC,EALmB,OAMkB7oD,oBAAS,GAN3B,mBAMjC8oD,EANiC,KAMVC,EANU,OAOF/oD,oBAAS,GAPP,mBAOjCgpD,EAPiC,KAOpBC,EAPoB,OAQAjpD,mBAASiB,EAAKA,KAAKsB,UARnB,mBAQjC2mD,EARiC,KAQnBC,EARmB,OASAnpD,mBAAS,IATT,mBASjCopD,EATiC,KASnBC,EATmB,OAURrpD,mBAC9BiB,EAAKA,KAAKsB,SACN,CACE,CACE64C,IAAK,KACLj5C,KAAM,WACNwC,OAAQ,OACR+gB,IAAI,GAAD,OAAKzkB,EAAKA,KAAKsB,YAGtB,IApBkC,mBAUjCo/B,EAViC,KAUvB2nB,EAVuB,KAuBxC/kD,qBAAU,YACR,OAAItD,QAAJ,IAAIA,OAAJ,EAAIA,EAAMA,QACR8nD,EAAyB9nD,EAAKA,KAAK4B,aACnC+N,EAAKyf,eAAe,CAClBnuB,SAAUjB,EAAKA,KAAKiB,SACpBC,KAAMlB,EAAKA,KAAKkB,KAChBC,MAAOnB,EAAKA,KAAKmB,WAGpB,CAACnB,EAAKA,KAAM2P,IAEfrM,qBAAU,WACHo9B,GAAgC,IAApBA,EAASz7B,QAAcijD,EAAgB,MACvD,CAACxnB,IAEJ,IAwDM4nB,EAAY,SAAC5jB,GAAD,OAChB,IAAI/gC,SAAQ,SAAC0J,EAASzJ,GACpB,IAAM2kD,EAAS,IAAIC,WACnBD,EAAOE,cAAc/jB,GACrB6jB,EAAOG,OAAS,kBAAMr7C,EAAQk7C,EAAOI,SACrCJ,EAAOK,QAAU,SAACnlD,GAAD,OAAWG,EAAOH,QAGjColD,EAAa,uCAAG,WAAOnkB,GAAP,SAAArkC,EAAA,yDACfqkC,EAAKjgB,KAAQigB,EAAKokB,QADH,gCAEGR,EAAU5jB,EAAKqW,eAFlB,OAElBrW,EAAKokB,QAFa,cAIpBZ,EAAgBxjB,EAAKjgB,KAAQigB,EAAKokB,SAClCd,GAAe,GACfI,EACE1jB,EAAKxjC,MAAQwjC,EAAKjgB,IAAKtZ,UAAUu5B,EAAKjgB,IAAKskC,YAAY,KAAO,IAP5C,2CAAH,sDAWbC,EAAqC,uCAAG,qCAAA3oD,EAAA,6DAClC4oD,EADkC,EAC5CvoB,SAEMwoB,EAAa,CAAC,aAAc,aAC5BxkB,EAAOukB,EAAY,GACzBZ,EAAYY,GALgC,SAMtBX,EAAU5jB,EAAKqW,eANO,OAMtC+N,EANsC,OAO5CZ,EAAgBY,GAChB1kD,IAAQ+kD,OAAO,CAAEz7B,IAAK,KAEP,UADPhqB,EAAWghC,EAAXhhC,QAENU,IAAQmB,QAAR,mBAA4Bm/B,EAAKxjC,KAAjC,4BACoB,UAAXwC,KAEH,OAAJghC,QAAI,IAAJA,OAAA,EAAAA,EAAMrmC,OACNqmC,EAAKrmC,KAAO,MACZ6qD,EAAWxhC,MAAK,SAACtd,GAAD,uBAAQs6B,EAAKtmC,YAAb,aAAQ,EAAW2K,SAASqB,MAE5ChG,IAAQX,MAAR,sCACOihC,EAAKtmC,OAAS8qD,EAAWxhC,MAAK,SAACtd,GAAD,uBAAQs6B,EAAKtmC,YAAb,aAAQ,EAAW2K,SAASqB,MACjEhG,IAAQX,MAAR,mCAEAW,IAAQX,MAAR,mDAA0DihC,EAAKxjC,KAA/D,OAtBwC,4CAAH,sDA0BrCjD,GAAqB,CACzBiD,KAAM,OACN6/B,UAAU,EACVqoB,OAAQ,+DACRC,OAJyB,SAIlB/jC,GACL5iB,QAAQC,IAAI,oBAAqB2iB,EAAEgkC,aAAalP,SAIpD,OACE,eAAC,GAAD,YACIp6C,EAAKA,KAAK+B,SAAV,OAAoB/B,QAApB,IAAoBA,GAApB,UAAoBA,EAAMA,YAA1B,aAAoB,EAAYgC,SAAU,cAAC,GAAD,IAC5C,eAAC,GAAD,WACE,cAAC,KAAW6Q,MAAZ,CAAkBC,MAAO,EAAGtN,UAAU,YAAtC,iCAGA,uBACA,eAAC,IAAD,CAAMmK,KAAMA,EAAMtR,KAAK,QAAQ+vB,OAAO,WAAWxe,SAtHtC,SAAC5O,GAChB,IAAM0oC,EAAW,IAAIC,SACrBD,EAASE,OAAO,QAAS5oC,EAAKG,OAC9BuoC,EAASE,OAAO,OAAQ5oC,EAAKE,MACzBw/B,GAAYA,EAASz7B,OAAS,GAChCykC,EAASE,OAAO,QAAS5oC,EAAKuoD,KAAK7kB,KAAKqW,eACtC4M,IACEE,GACFne,EAASE,OAAO,WAAY5oC,EAAKmD,MACjCulC,EAASE,OAAO,kBAAmB5oC,EAAKwoD,cAExC9f,EAASE,OAAO,WAAY5oC,EAAKmD,OAIrC9E,GAAW,GACXhC,EACG4G,KADH,4BAC6BjD,EAAKC,UAAYyoC,GAC3CpnC,MAAK,WACJ8B,IAAQ+kD,OAAO,CAAEz7B,IAAK,KACtBtpB,IAAQmB,QAAQ,iCAChBlG,GAAW,GACXuD,IACA3C,EAAQ,2BACHD,GADE,IAELA,KAAK,2BACAA,EAAKA,MADN,IAEFmB,MAAOH,EAAKG,MACZD,KAAMF,EAAKE,MACPymD,EACCE,EAIC,GAHA,CACEjmD,aAAa,GAGjB,UAITY,OAAM,SAACC,GAAS,IAAD,IACd2B,IAAQX,OACN,UAAAhB,EAAI3B,gBAAJ,mBAAcE,YAAd,eAAoBoD,UAClB,uDAEJ/E,GAAW,OA0EX,UACE,cAAC,IAAKwQ,KAAN,CACE3O,KAAK,OACLsoB,MAAM,gBACN1Z,MAAOpC,GAHT,SAKE,cAAC,IAAD,CAAOrE,YAAY,oBAGrB,cAAC,IAAKwG,KAAN,CACE3O,KAAK,WACLsoB,MAAM,mBACN1Z,MAAO5B,GAHT,SAKE,cAAC,IAAD,CAAO5P,UAAU,EAAM+K,YAAY,uBAGrC,cAAC,IAAKwG,KAAN,CAAW3O,KAAK,QAAQsoB,MAAM,SAAS1Z,MAAOjC,GAA9C,SACE,cAAC,IAAD,CAAOxE,YAAY,SAAS/K,SAAUc,OAGtCY,EAAKA,KAAK+B,SAAV,OAAoB/B,QAApB,IAAoBA,GAApB,UAAoBA,EAAMA,YAA1B,aAAoB,EAAYgC,SAChC,cAAC,IAAK6N,KAAN,CACE3O,KAAK,OACL4O,MAAO/B,GACPyb,MAAM,4BACNrhB,MAAO,CAAEqd,WAAY,QAJvB,SAME,cAAC,KAAD,2BACMvnB,IADN,IAEE2iC,SAAU,EACVF,SAAUA,EACVrb,SAAU2jC,EACVS,UAAWZ,EACXpoB,OAAO,wBANT,SAQE,sBAAKj7B,UAAU,cAAf,UACE,mBACEA,UAAU,mBACV2C,MAAO,CACLg1B,gBAAgB,GAAD,OAAK8qB,EAAe,UAAY,KAHnD,SAMGA,EACC,qBAAKtiD,IAAI,OAAOF,IAAKwiD,IAErB,cAACyB,GAAA,EAAD,CAAkBx2C,MAAM,OAAO9C,OAAO,WAG1C,sBAAK5K,UAAU,cAAf,UACE,mBAAGA,UAAU,kBAAb,4CAGA,mBAAGA,UAAU,kBAAb,8HAUV,cAAC,KAAD,CACEwE,KAAM+9C,EACN/6C,MAAOm7C,EACPv3C,OAAQ,KACRN,SAAU,kBAAM03C,GAAe,IAJjC,SAME,qBAAKriD,IAAI,OAAOwC,MAAO,CAAE+K,MAAO,QAAUzN,IAAKwiD,MAGjD,cAAC,EAAD,CACE7pD,KAAK,OACL0H,QA5Ia,WACrB8hD,GAAgB,SAAC9rB,GAAD,OAAWA,MA4InB7oB,KAAM,cAAC,KAAD,CAAQ5U,KAAM,KAHtB,SAKGspD,EAAe,uBAAsB,kBAGvCA,GACC,eAAC,KAAD,CAAK7/B,OAAQ,CAAC,GAAI,IAAlB,UACG+/B,GACC,cAAC,KAAD,CAAKt1C,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,cACLsoB,MAAM,cACN1Z,MAAO5B,GAHT,SAKE,cAAC,IAAM8B,SAAP,CACEC,kBAAkB,EAClB5G,YAAY,cAKpB,cAAC,KAAD,CAAKkJ,KAAM,GAAX,SACE,cAAC,IAAK1C,KAAN,CACE3O,KAAK,OACLsoB,MAAM,aACN1Z,MAAOf,GAHT,SAKE,cAAC,IAAMiB,SAAP,CACEC,kBAAkB,EAClB5G,YAAY,iBAOtB,uBAEA,eAAC,KAAD,CAAKye,OAAQ,CAAC,GAAI,IAAK5C,QAAQ,gBAA/B,UACE,cAAC,KAAD,CAAK3S,KAAM,GAAX,SACE,cAAC,EAAD,CAAQrC,OAAK,EAAC7R,KAAK,QAAQyH,QAzLtB,WACfjH,EAAS,aAwL+CP,SAAUc,EAAxD,wBAIF,cAAC,KAAD,CAAKmT,KAAM,GAAX,SACE,cAAC,EAAD,CACErC,OAAK,EACL7R,KAAK,QACLD,KAAK,UACLyH,SAAS,SACTzG,QAASA,EALX,+BAaR,cAAC,GAAD,CAASoG,UAAU,cAAnB,SACE,cAAC,EAAD,CACEpH,KAAK,OACLC,KAAK,QACLyH,QAAS9C,EACTwC,UAAU,UACVyN,KAAM,cAAC,KAAD,IALR,wB,UCjUR,SAAS,KAA2Q,OAA9P,GAAWlO,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,otBACHU,KAAM,SAGR,SAASwmC,GAAM5mC,EAAMC,GACnB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDK,MAAO,6BACPlQ,MAAO,GACP9C,OAAQ,GACR+S,KAAM,OACNE,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,IAGpB,I,oCAAI,GAA0B,aAAiB28C,ICxBlChsD,IDyBE,ICzBUC,IAAOC,IAAV,qOAoCP+rD,GAxBgB,WAC7B,IAAM/qD,EAAWC,cACjB,OACE,cAAC,GAAD,UACE,cAAC,KAAD,CACEmU,KAAM,cAAC,GAAD,IACNjG,MAAM,8BACN68C,SAAS,mDACTC,MACE,cAAC,KAAD,CAAK5kC,QAAQ,SAAb,SACE,cAAC,EAAD,CACE7mB,KAAK,QACLD,KAAK,UACL0H,QAAS,kBAAMjH,EAAS,aAH1B,sC,UC1BClB,GAAYC,IAAOC,IAAV,uIAOTgT,GAAUjT,IAAOC,IAAV,0/CCPPksD,GAAsB,CACjC/8C,MAAO,4BACPkhB,QACE,gCACE,cAAC,KAAWlI,UAAZ,UACE,uMAMF,eAAC,KAAWA,UAAZ,kCAEE,uBAFF,sBAIE,uBAJF,6BAME,uBANF,uBAQE,uBARF,gDAUE,uBAVF,oBAYE,uBAZF,wBAcE,uBAdF,sBAgBA,cAAC,KAAD,IACA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,gWCvBOC,GAAwC,WAAO,IAAD,EACflrD,oBAAS,GADM,mBAClDmrD,EADkD,KACnCC,EADmC,KAGnDC,EAAkB,WACtBD,GAAiB,SAACruB,GAAD,OAAWA,MAE9B,OACE,eAAC,GAAD,WACE,eAAC,GAAD,WACE,eAAC,KAAD,CAAKhU,OAAQ,CAAC,GAAI,IAAlB,UACE,cAAC,KAAD,CAAKvV,KAAM,GAAX,SACE,cAAC,KAAWM,MAAZ,CAAkBC,MAAO,EAAGtN,UAAU,YAAtC,oDAIF,cAAC,KAAD,CAAK+M,KAAM,GAAX,SACE,cAAC,KAAWyT,UAAZ,6IAMJ,uBACA,eAAC,KAAD,CAAUqkC,WAAS,EAAnB,UACE,eAAC,KAAS13C,MAAV,CAAgBC,OAAO,mBAAvB,UACE,cAAC,KAAWoT,UAAZ,CAAsB4D,QAAM,EAA5B,iKAKA,cAAC,KAAW/W,MAAZ,CAAkBC,MAAO,EAAzB,qDAGA,cAAC,KAAWkT,UAAZ,4VAOA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,0GAIA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,qFAGA,cAAC,KAAWkT,UAAZ,8VAOA,eAAC,KAAD,WACE,cAAC,KAAKnW,KAAN,qHAIA,cAAC,KAAKA,KAAN,2DACA,cAAC,KAAKA,KAAN,sFAIF,cAAC,KAAW2D,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,iNAKA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,4CAGA,eAAC,KAAWkT,UAAZ,2JAGE,uBACA,uBAJF,wIAOA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,uGAIA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,yDAGA,cAAC,KAAWkT,UAAZ,8JAIA,eAAC,KAAD,WACE,cAAC,KAAKnW,KAAN,0NAKA,eAAC,KAAKA,KAAN,2IAGE,uBACA,cAAC,KAAWy6C,KAAZ,CAAiBxkD,QAASskD,EAA1B,iEAIF,cAAC,KAAKv6C,KAAN,oKAMF,cAAC,KAAWmW,UAAZ,keASA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,mPAMA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,iDAGA,eAAC,KAAWkT,UAAZ,2IAE8C,+CAAsB,IAClE,qGAHF,kTAUA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,0MAKA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,kDAGA,cAAC,KAAWkT,UAAZ,gXAOA,eAAC,KAAWA,UAAZ,WACE,oDADF,mdASA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,mPAMA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,oDAGA,cAAC,KAAWkT,UAAZ,sXAQA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,6SAOA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,uCAGA,eAAC,KAAWkT,UAAZ,oJAGE,uBACA,uBAJF,wEAKkE,IAChE,cAAC,KAAWskC,KAAZ,CACE5oC,OAAO,SACP3X,KAAK,oCAFP,2BANF,mEAaE,uBACA,uBAdF,oLA0GA,cAAC,KAAW8I,MAAZ,CAAkBC,MAAO,EAAzB,2CAGA,cAAC,KAAWw3C,KAAZ,CACE5oC,OAAO,SACP3X,KAAK,uCAFP,8BAlRF,0DAA8C,SA2R9C,eAAC,KAAS4I,MAAV,CAAgBC,OAAO,eAAvB,UACE,cAAC,KAAWoT,UAAZ,CAAsB4D,QAAM,EAA5B,oJAIA,cAAC,KAAW/W,MAAZ,CAAkBC,MAAO,EAAzB,kDAGA,cAAC,KAAWkT,UAAZ,2dASA,cAAC,KAAWA,UAAZ,wTAOA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,+EAGA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,wEAGA,cAAC,KAAWkT,UAAZ,+PAMA,eAAC,KAAD,WACE,cAAC,KAAKnW,KAAN,wFAIA,cAAC,KAAKA,KAAN,qHAIA,cAAC,KAAKA,KAAN,sHAIA,cAAC,KAAKA,KAAN,uFAKF,cAAC,KAAW2D,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,gXAOA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,4CAGA,cAAC,KAAWkT,UAAZ,uJAIA,cAAC,KAAWA,UAAZ,iJAIA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,gXAOA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,yDAGA,cAAC,KAAWkT,UAAZ,yZAQA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,gXAOA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,gEAGA,cAAC,KAAWkT,UAAZ,0ZAQA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,+EAGA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,kDAGA,cAAC,KAAWkT,UAAZ,wWAOA,cAAC,KAAWA,UAAZ,2LAKA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,mHAIA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,oDAGA,cAAC,KAAWkT,UAAZ,0HAIA,cAAC,KAAWnT,MAAZ,CAAkBC,MAAO,EAAzB,yCACA,cAAC,KAAWkT,UAAZ,8dASA,cAAC,KAAWnT,MAAZ,CAAkBC,MAAO,EAAzB,kDAGA,eAAC,KAAWkT,UAAZ,eACI,IACF,sBACExgB,UAAU,OADZ,yBAKQ,IAPV,gNAYA,cAAC,KAAWwgB,UAAZ,2MAKA,cAAC,KAAWA,UAAZ,iIAIA,cAAC,KAAWnT,MAAZ,CAAkBC,MAAO,EAAzB,2CA3KF,IA8KI,IACF,cAAC,KAAWw3C,KAAZ,CACE5oC,OAAO,SACP3X,KAAK,uCAFP,8BA/KF,0DAA0C,UAwL1C,eAAC,KAAS4I,MAAV,CAAgBC,OAAO,WAAvB,UACE,cAAC,KAAWoT,UAAZ,CAAsB4D,QAAM,EAA5B,wJAIA,cAAC,KAAW/W,MAAZ,CAAkBC,MAAO,EAAzB,sFAGA,cAAC,KAAWkT,UAAZ,iQAMA,cAAC,KAAWA,UAAZ,+bASA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,uYAOA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,sFAIA,cAAC,KAAWkT,UAAZ,4QAMA,eAAC,KAAD,WACE,cAAC,KAAKnW,KAAN,wFAIA,cAAC,KAAKA,KAAN,qHAIA,cAAC,KAAKA,KAAN,oHAIA,cAAC,KAAKA,KAAN,uFAKF,cAAC,KAAW2D,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,yLAKA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,4CAGA,cAAC,KAAWkT,UAAZ,uJAIA,cAAC,KAAWA,UAAZ,iJAIA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,gXAOA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,yDAGA,cAAC,KAAWkT,UAAZ,0dASA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,2VAOA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,wEAGA,cAAC,KAAWkT,UAAZ,uUAOA,cAAC,KAAWA,UAAZ,gUAOA,cAAC,KAAWA,UAAZ,6cASA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,saAQA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,gEAGA,cAAC,KAAWkT,UAAZ,oaAQA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,+EAGA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,kDAGA,cAAC,KAAWkT,UAAZ,oYAQA,cAAC,KAAWA,UAAZ,2LAKA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,mHAIA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,oDAGA,cAAC,KAAWkT,UAAZ,gIAIA,cAAC,KAAWnT,MAAZ,CAAkBC,MAAO,EAAzB,+DAGA,eAAC,KAAWkT,UAAZ,eACI,IACF,sBACExgB,UAAU,OADZ,yBAKQ,IAPV,6NAaA,cAAC,KAAWwgB,UAAZ,2MAKA,cAAC,KAAWA,UAAZ,iIAIA,cAAC,KAAWnT,MAAZ,CAAkBC,MAAO,EAAzB,2CAxMF,IA2MI,IACF,cAAC,KAAWw3C,KAAZ,CACE5oC,OAAO,SACP3X,KAAK,uCAFP,8BA5MF,0DAAsC,YAqNtC,eAAC,KAAS4I,MAAV,CAAgBC,OAAO,uBAAvB,UACE,cAAC,KAAWC,MAAZ,CAAkBC,MAAO,EAAzB,gDAGA,cAAC,KAAWkT,UAAZ,qNAKA,cAAC,KAAWA,UAAZ,2FAIA,eAAC,KAAD,CAAM7d,MAAO,CAAEwL,WAAY,QAA3B,UACE,cAAC,KAAWqS,UAAZ,mFAGA,cAAC,KAAWA,UAAZ,2GAIA,cAAC,KAAWA,UAAZ,yFAIA,cAAC,KAAWA,UAAZ,2FAKF,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,mUAOA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,0BACA,cAAC,KAAWkT,UAAZ,4cASA,cAAC,KAAWnT,MAAZ,CAAkBC,MAAO,EAAzB,yBACA,cAAC,KAAWkT,UAAZ,8GAIA,eAAC,KAAD,CAAM7d,MAAO,CAAEwL,WAAY,QAA3B,UACE,cAAC,KAAWqS,UAAZ,iNAKA,cAAC,KAAWA,UAAZ,gLAMF,cAAC,KAAWxS,KAAZ,+LAKA,cAAC,KAAWX,MAAZ,CAAkBC,MAAO,EAAzB,sCACA,cAAC,KAAWkT,UAAZ,gZAQA,cAAC,KAAWnT,MAAZ,CAAkBC,MAAO,EAAzB,sBACA,eAAC,KAAWkT,UAAZ,wLAG2B,IACzB,mBACEtE,OAAO,SACP0D,IAAI,sBACJrb,KAAK,8KAHP,iEAMK,IAVP,qGAcA,cAAC,KAAW8I,MAAZ,CAAkBC,MAAO,EAAzB,0CAGA,cAAC,KAAWkT,UAAZ,6JAIA,eAAC,KAAD,CAAM7d,MAAO,CAAEwL,WAAY,QAA3B,UACE,cAAC,KAAWqS,UAAZ,mEAGA,cAAC,KAAWA,UAAZ,yIAIA,cAAC,KAAWA,UAAZ,wIAIA,cAAC,KAAWA,UAAZ,0IAIA,cAAC,KAAWA,UAAZ,gIAKF,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,2eASA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,4CAGA,cAAC,KAAWkT,UAAZ,kJAIA,cAAC,KAAWA,UAAZ,iJAIA,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,iKAKA,cAAC,KAAD,IACA,wBACE92C,MAAM,MACN9C,OAAO,MACP3K,IAAI,4CACJuH,MAAM,uBACNu9C,YAAY,IACZC,MAAM,2FACNC,iBAAe,IAEjB,cAAC,KAAD,IACA,cAAC,KAAW53C,MAAZ,CAAkBC,MAAO,EAAzB,gDAGA,cAAC,KAAWkT,UAAZ,+GAIA,eAAC,KAAD,CAAM7d,MAAO,CAAEwL,WAAY,QAA3B,UACE,cAAC,KAAWqS,UAAZ,uEAGA,cAAC,KAAWA,UAAZ,mFAIA,cAAC,KAAWA,UAAZ,oMAKA,cAAC,KAAWA,UAAZ,qFAIF,cAAC,KAAWA,UAAZ,8HAIA,eAAC,KAAD,CAAM7d,MAAO,CAAEwL,WAAY,QAA3B,UACE,cAAC,KAAWqS,UAAZ,wCAGA,cAAC,KAAWA,UAAZ,4CAGA,cAAC,KAAWA,UAAZ,yDAGA,cAAC,KAAWA,UAAZ,gEAGA,cAAC,KAAWA,UAAZ,mCACA,cAAC,KAAWA,UAAZ,oFAGA,cAAC,KAAWA,UAAZ,4DAGA,cAAC,KAAWA,UAAZ,iDAGA,cAAC,KAAWA,UAAZ,yDAGA,cAAC,KAAWA,UAAZ,uDAGA,cAAC,KAAWA,UAAZ,yCAGA,cAAC,KAAWA,UAAZ,kEAGA,cAAC,KAAWA,UAAZ,2EAGA,cAAC,KAAWA,UAAZ,uJAKF,cAAC,KAAWxS,KAAZ,CAAiBoW,QAAM,EAACogC,QAAM,EAA9B,uTAOA,cAAC,KAAWn3C,MAAZ,CAAkBC,MAAO,EAAzB,yDAGA,eAAC,KAAWkT,UAAZ,eACI,IACF,sBACExgB,UAAU,OADZ,yBAKQ,IAPV,iPAaA,cAAC,KAAWwgB,UAAZ,mLAKA,cAAC,KAAWA,UAAZ,2IAIA,cAAC,KAAWnT,MAAZ,CAAkBC,MAAO,EAAzB,2CAGA,eAAC,KAAWkT,UAAZ,eACI,IACF,mBACEtE,OAAO,SACP0D,IAAI,sBACJrb,KAAK,mCAHP,sBAMK,IARP,uEAvQ6C,mBAsRnD,cAAC,KAAD,CACE6G,OAAQ,KACRP,QAAS65C,EACT55C,SAAU85C,EACVp9C,MAAK,OAAE+8C,SAAF,IAAEA,QAAF,EAAEA,GAAqB/8C,MAC5BkG,MAAO,IALT,gBAOG62C,SAPH,IAOGA,QAPH,EAOGA,GAAqB77B,c,UCj+BjBw8B,GAAe9sD,YAAO+sD,KAAOC,OAAdhtD,CAAH,0qBCmCVgtD,GA5BwB,WAAO,IACpCrrD,EAAkB2F,IAAlB3F,cAEFsrD,EAAQ,CACZ7sD,SAAUA,MAGZ,OACE,mCACE,cAAC0sD,GAAD,CAAcG,MAAOA,EAArB,SACG7sD,MACC,cAAC,KAAD,CAAK6pB,MAAM,SAASC,OAAQ,CAAC,GAAI,IAAjC,SACE,cAAC,KAAD,UACE,cAAC,EAAD,CACEzpB,KAAK,QACLD,KAAK,UACLoH,UAAU,cACVyN,KAAM,cAAC,KAAD,IACNnN,QAAS,kBAAMvG,GAAc,eC1BhCurD,GAAaltD,IAAOC,IAAV,yqBCFR,OAA0B,0CCS5BktD,GAA4B,SAAC,GAAwB,IAAtBtlD,EAAqB,EAArBA,IAAKD,EAAgB,EAAhBA,UAC/C,OACE,cAACslD,GAAD,CAAYtlD,UAAWA,EAAvB,SACE,mBAAGuE,KAAM5G,OAAOC,SAAS4nD,OAAQtpC,OAAO,SAAS0D,IAAI,aAArD,SACE,cAAC,KAAD,CAAO0jC,SAAS,EAAOnjD,IAAI,cAAcF,IAAG,OAAEA,QAAF,IAAEA,IAAOwlD,U,UCVhDC,GAActtD,YAAOutD,KAAPvtD,CAAH,4TAiBXwtD,GAAcxtD,YAAO+sD,KAAOU,MAAdztD,CAAH,0WAmBX0tD,GAAU1tD,YAAO2tD,KAAP3tD,CAAH,2QAYP4tD,GAAS5tD,YAAO2tD,KAAK17C,KAAZjS,CAAH,mtDAsFaA,IAAOC,IAAV,gIAOED,IAAOC,IAAV,kLAWAD,IAAOsT,OAAV,kZC3JzB,SAAS,KAA2Q,OAA9P,GAAWnM,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,4RACHE,YAAa,IACbC,cAAe,QACfC,eAAgB,UAGlB,SAAS4oC,GAAS1oC,EAAMC,GACtB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiBy+C,IAChC,IClCf,SAAS,KAA2Q,OAA9P,GAAW1mD,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,0fACHE,YAAa,IACbC,cAAe,QACfC,eAAgB,UAGlB,SAAS6oC,GAAS3oC,EAAMC,GACtB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiB0+C,IAChC,IClCf,SAAS,KAA2Q,OAA9P,GAAW3mD,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,w0BACHE,YAAa,IACbC,cAAe,QACfC,eAAgB,UAGlB,SAAS8oC,GAAY5oC,EAAMC,GACzB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiB2+C,IAChC,IClCf,SAAS,KAA2Q,OAA9P,GAAW5mD,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,khBACHE,YAAa,IACbC,cAAe,QACfC,eAAgB,UAGlB,SAAS+oC,GAAc7oC,EAAMC,GAC3B,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,GACP9C,OAAQ,GACR8S,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,IAGpB,I,qBAAI,GAA0B,aAAiB4+C,ICVzCC,IDWS,ICX4C,SAAC,GAAD,IACzDttD,EADyD,EACzDA,SACA8R,EAFyD,EAEzDA,QACAy7C,EAHyD,EAGzDA,WACAhsD,EAJyD,EAIzDA,gBACAC,EALyD,EAKzDA,mBALyD,OAOzD/B,KACE,cAACktD,GAAD,CACEl+C,MAAM,GACN4D,OAAQ,KACRsC,MAAM,QACNq5B,UAAW,KACX97B,UAAU,OACVJ,QAASA,EACTK,QAAS,kBAAMo7C,GAAW,IAP5B,SASGvtD,IAGH,cAAC6sD,GAAD,CACEl4C,MAAM,OACN23C,MAAM,QACNrlD,UAAWgkC,aAAK,CAAE1pC,oBAClB0rC,aAAc,WACZzrC,GAAmB,IAErB0rC,aAAc,WACZ1rC,GAAmB,IARvB,SAWGxB,MAmFQwtD,GA/E0B,SAAC,GAAkB,IAAD,EAAfC,EAAe,EAAfA,SACpCntD,EAAWC,cADwC,EAQrDoG,IALFlF,EAHuD,EAGvDA,KACAV,EAJuD,EAIvDA,WACAC,EALuD,EAKvDA,cACAO,EANuD,EAMvDA,gBACAC,EAPuD,EAOvDA,mBAPuD,EAUtChB,mBAAS,CAAC,KAAtBktD,EAVkD,oBAYnDC,EAAiB,SAAC/Q,GACM,IAAD,EAAvBA,EAAKpyC,SAAS,QAChB,UAAA5F,OAAO6G,KAAKmxC,EAAM,iBAAlB,SAA6BgR,SAE7B5sD,GAAc,GACdV,EAASs8C,KAIb,OACE,eAAC,GAAD,CACE9qC,QAAS/Q,EACTwsD,WAAYvsD,EACZO,gBAAiBA,EACjBC,mBAAoBA,EAJtB,UAME,cAAC,GAAD,CAAMyF,UAAU,YAChB,eAAC8lD,GAAD,CACExhC,KAAK,SACLmiC,SAAUA,EACVG,aAAc,CAACJ,GACfxmD,UAAWgkC,aAAK,kCAAmC,CACjDxpC,OAAQA,EAAKA,OALjB,UAQGA,EAAKA,MACJ,cAACwrD,GAAD,CAEE1lD,QAAS,kBAAMomD,EAAe,aAC9Bj5C,KAAM,cAAC,GAAD,CAAczN,UAAU,YAHhC,qBACM,YAOPxF,EAAKA,OAASA,EAAKA,KAAK+B,SAAV,OAAoB/B,QAApB,IAAoBA,GAApB,UAAoBA,EAAMA,YAA1B,aAAoB,EAAYgC,SAC7C,cAACwpD,GAAD,CAEE1lD,QAAS,kBAAMomD,EAAe,mBAC9Bj5C,KAAM,cAAC,GAAD,CAAgBzN,UAAU,YAHlC,uBACM,kBAOPxF,EAAKA,MACJ,cAACwrD,GAAD,CAEE1lD,QAAS,kBAAMomD,EAAe,UAC9Bj5C,KAAM,cAAC,GAAD,CAAWzN,UAAU,YAH7B,kBACM,SAOPxF,EAAKA,MACJ,cAACwrD,GAAD,CAEEhmD,UAAU,QACVyN,KAAM,cAAC,GAAD,CAAWzN,UAAU,YAC3BM,QAAS,kBAAMomD,EAAe,WAJhC,wBACM,iBCxHHG,GAAazuD,YAAO0uD,KAAP1uD,CAAH,yGAMV+sD,GAAS/sD,YAAO0uD,KAAP1uD,CAAH,mkBCqHJ2uD,IDtFgB3uD,IAAOC,IAAV,2VAgBAD,IAAOyC,EAAV,gVAkBAzC,YAAO4uD,KAAP5uD,CAAH,4OCpD2B,SAAC,GAK3C,IAJLW,EAII,EAJJA,SACAkuD,EAGI,EAHJA,QACA75C,EAEI,EAFJA,OACA85C,EACI,EADJA,SAEQC,EAAaC,cAAbD,SADJ,EAE8BznD,IAApBpF,GAFV,EAEIE,KAFJ,EAEUF,iBAFV,EAGoCf,oBAAS,GAH7C,mBAKEua,GALF,UAKgBsb,mBAClB,iBACE,CACE,CACEi4B,SAAS,EACTj6C,QAAQ,EACRuoC,KAAM,IACNj6C,KAAM,mBACN8L,MAAO,IAET,CACE6/C,SAAS,EACTj6C,QAAQ,EACRuoC,KAAM,SACNj6C,KAAM,cACN8L,MAAO,eAET,CACE6/C,SAAS,EACTj6C,QAAQ,EACRuoC,KAAM,WACNj6C,KAAM,WACN8L,MAAO,YAET,CACE6/C,SAAS,EACTj6C,QAAQ,EACRuoC,KAAM,QACNj6C,KAAM,gBACN8L,MAAO,iBAET,CACE6/C,SAAS,EACTj6C,QAAQ,EACRuoC,KAAM,iBACNj6C,KAAM,gBACN8L,MAAO,iBAET,CACE6/C,SAAS,EACTj6C,QAAQ,EACRuoC,KAAM,YACNj6C,KAAM,cACN8L,MAAO,IAET,CACE6/C,SAAS,EACTj6C,QAAQ,EACRuoC,KAAM,aACNj6C,KAAM,kBACN8L,MAAO,IAET,CACE6/C,SAAS,EACTj6C,QAAQ,EACRuoC,KAAM,eACNj6C,KAAM,cACN8L,MAAO,eAET,CACE6/C,SAAS,EACTj6C,QAAQ,EACRuoC,KAAM,WACNj6C,KAAM,SACN8L,MAAO,WAETwH,MACA,SAAC2F,GAAD,OACEwyC,KAC+B,MAA9BxyC,EAAKghC,KAAKhwC,UAAU,EAAG,GAAagP,EAAKghC,KAAzC,WAAoDhhC,EAAKghC,YAEhE,CAACwR,KAGH,OACE,eAACN,GAAD,YACII,GACiC,mBAAhC,OAAOnzC,QAAP,IAAOA,OAAP,EAAOA,EAAauzC,WAApB,OACCvzC,QADD,IACCA,OADD,EACCA,EAAauzC,WACf,cAAC,GAAD,CAASb,UAAqB,OAAX1yC,QAAW,IAAXA,OAAA,EAAAA,EAAa6hC,OAAQ,KAE1C,eAACwP,GAAD,CAAQnlD,UAAWgkC,aAAK,CAAE1pC,oBAA1B,UACG9B,OACE4U,GACiC,mBAA/B,OAAO0G,QAAP,IAAOA,OAAP,EAAOA,EAAa1G,UAApB,OACC0G,QADD,IACCA,OADD,EACCA,EAAa1G,UAAY,cAAC,GAAD,IAC/B,qBAAKpN,UAAWgkC,aAAK,UAAW,mBAAoB,CAAEkjB,aAAtD,SACGnuD,YC/GEmmB,GAA0B,WAAO,IACpCpkB,EAAU+E,cAAV/E,MADmC,EAEXvB,oBAAS,GAFE,mBAEpC+tD,EAFoC,KAE1BC,EAF0B,OAGbhuD,oBAAS,GAHI,mBAGpCK,EAHoC,KAG3BC,EAH2B,KAInCW,EAASkF,IAATlF,KAEFnB,EAAWC,cAajB,OAXAwE,qBAAU,WACRjE,GAAW,GACXhC,EACG4G,KADH,uBACwB3D,GAAS,IAC9BgC,MAAK,WACJyqD,GAAY,MAEbvqD,OAAM,kBAAMuqD,GAAY,MACxB9sC,SAAQ,kBAAM5gB,GAAW,QAC3B,CAACiB,IAGF,cAACyF,EAAD,CAAeP,UAAU,mBAAzB,SACE,sBAAKA,UAAU,eAAf,UACGpG,EACC,cAAC,KAAD,IACE0tD,EACF,yDAEA,oDAGI,OAAJ9sD,QAAI,IAAJA,OAAA,EAAAA,EAAMA,MAEJ,cAAC,EAAD,CACE3B,KAAK,QACLD,KAAK,UACL0H,QAAS,kBAAMjH,EAAS,aAH1B,+BAQA,WCpCCmuD,GAA2B,WACtC,IAAMnuD,EAAWC,cAD2B,EAE7B2Q,IAAKC,UAAbC,EAFqC,sBAGd5Q,oBAAS,GAHK,mBAGrCK,EAHqC,KAG5BC,EAH4B,KAIpCF,EAAgB+F,IAAhB/F,YAEFyQ,EAAQ,uCAAG,WAAO5O,GAAP,yBAAAX,EAAA,sEAEbhB,GAAW,GAFE,SAIKhC,EAAI4G,KAAK,+BAAgC,CACzDhD,SAAUD,EAAKC,SAAS6F,QAAQ,WAAY,MALjC,OAIPvE,EAJO,OAOb6B,IAAQmB,QAAR,kFAC6DhD,EAAIvB,YADjE,aAC6D,EAAUG,OACrE,GAGF+B,YAAW,WACT7D,GAAW,GACXF,EAAY,IACZN,EAAS,cACR,KAhBU,uDAkBiB,OAA1B,2CAAKiC,gBAAL,eAAe4C,SAA4C,OAA1B,2CAAK5C,gBAAL,eAAe4C,SAClDU,IAAQX,OAAM,eAAI3C,gBAAJ,mBAAcE,YAAd,eAAoBoD,UAAW,mBAE/C/E,GAAW,GArBE,4EAAH,sDAkCd,OACE,cAAC0G,EAAD,CAAeP,UAAU,mBAAzB,SACE,qBAAKA,UAAU,eAAf,SACE,sBAAKA,UAAU,iBAAf,UACE,oDACA,eAAC,IAAD,CAAMmK,KAAMA,EAAMtR,KAAK,QAAQuR,SAAUA,EAAzC,UACE,cAAC,IAAKC,KAAN,CAAW3O,KAAK,WAAW4O,MAAOd,GAAlC,SACE,cAAC,IAAD,CACE3F,YAAY,qCACZ0G,UAAW,OAIf,qBAAKvK,UAAU,UAAf,SACE,cAAC,EAAD,CACEnH,KAAK,QACLD,KAAK,UACLyH,SAAS,SACTL,UAAU,aACVpG,QAASA,EALX,yBAUF,qBAAKoG,UAAU,iBAAf,SACE,cAAC,EAAD,CACEpH,KAAK,OACL0H,QA/Bc,WAC1BjH,EAAS,aA+BGsJ,MAAO,CACLC,SAAU,OACV8K,MAAO,SALX,sCAaJ,sBAAK1N,UAAU,SAAf,2CAEE,cAAC,EAAD,CACEpH,KAAK,OACL0H,QAlDwB,WAClCjH,EAAS,iBAkDC2G,UAAU,iBAHZ,kCC7ECynD,GAA2B,WACtC,IAAMpuD,EAAWC,cACTwB,EAAU+E,cAAV/E,MAFoC,EAG7BmP,IAAKC,UAAbC,EAHqC,sBAId5Q,oBAAS,GAJK,mBAIrCK,EAJqC,KAI5BC,EAJ4B,KAMtCuQ,EAAQ,uCAAG,WAAO5O,GAAP,mBAAAX,EAAA,sEAEbhB,GAAW,GAFE,SAIPhC,EAAI4G,KAAJ,uCAAyC3D,GAAS,CACtD4D,SAAUlD,EAAKmD,KACf+oD,qBAAsBlsD,EAAKksD,uBANhB,OAQb9oD,IAAQmB,QAAQ,6BAA8B,GAE9CrC,YAAW,WACT7D,GAAW,GACXR,EAAS,cACR,KAbU,uDAeiB,OAA1B,2CAAKiC,gBAAL,eAAe4C,SACjBU,IAAQX,OAAM,eAAI3C,gBAAJ,mBAAcE,YAAd,eAAoBoD,UAAW,mBAE/C/E,GAAW,GAlBE,4EAAH,sDAuBd,OACE,cAAC0G,EAAD,CAAeP,UAAU,mBAAzB,SACE,qBAAKA,UAAU,eAAf,SACE,sBAAKA,UAAU,iBAAf,UACE,iDACA,eAAC,IAAD,CAAMmK,KAAMA,EAAMtR,KAAK,QAAQuR,SAAUA,EAAzC,UACE,cAAC,IAAKC,KAAN,CAAW3O,KAAK,OAAO4O,MAAOf,GAA9B,SACE,cAAC,IAAMiB,SAAP,CAAgB3G,YAAY,QAAQ4G,kBAAkB,MAGxD,cAAC,IAAKJ,KAAN,CACE3O,KAAK,uBACL4O,MAAOb,GAFT,SAIE,cAAC,IAAMe,SAAP,CACE3G,YAAY,kBACZ4G,kBAAkB,MAItB,qBAAKzK,UAAU,UAAf,SACE,cAAC,EAAD,CACEnH,KAAK,QACLD,KAAK,UACLyH,SAAS,SACTL,UAAU,aACVpG,QAASA,EALX,iCChED+tD,GAAkBvvD,IAAOgV,OAAV,w7BCIfg4C,GAAS,WAAO,IACnB5qD,EAASkF,IAATlF,KACFnB,EAAWC,cACT6tD,EAAaC,cAAbD,SAER,OACE,eAACQ,GAAD,WACE,cAAC,GAAD,KACEntD,EAAKA,OAAS2sD,EAAS5jD,SAAS,4BAChC,sBAAKvD,UAAU,UAAf,UACE,cAAC,EAAD,CACEpH,KAAK,OACLC,KAAK,SACLyH,QAAS,kBAAMjH,EAAS,aAH1B,oBAOA,cAAC,EAAD,CACET,KAAK,UACLC,KAAK,SACLyH,QAAS,kBAAMjH,EAAS,iBAH1B,+BCrBGlB,GAAYC,IAAOC,IAAV,+CCCTuvD,GAA0B,SAAC,GAAkB,IAAhB7uD,EAAe,EAAfA,SACxC,OACE,eAAC,GAAD,WACE,cAAC,GAAD,IACCA,MCDM8uD,GAAgC,WAAO,IAC1C/sD,EAAU+E,cAAV/E,MAiBR,OAfAgD,qBAAU,WACRjG,EACG4G,KADH,wCACyC3D,IACtCgC,MAAK,WACJ8B,IAAQmB,QAAQ,oCAAkC,MAEnD/C,OAAM,SAACC,GAAc,IAAD,EACgB,IAAL,OAAvB,OAAHA,QAAG,IAAHA,GAAA,UAAAA,EAAK3B,gBAAL,eAAe4C,SACjBU,IAAQX,OAAM,UAAAhB,EAAI3B,gBAAJ,mBAAcE,YAAd,eAAoBoD,UAAW,wBAKlD,CAAC9D,IAGF,cAACyF,EAAD,CAAeP,UAAU,mBAAzB,SACE,qBAAKA,UAAU,eAAf,SACE,sBAAKA,UAAU,iBAAf,UACE,iEACA,cAAC,IAAD,CAAMnH,KAAK,kBC6DNivD,I,SAAAA,GArEf,WASE,OARAC,IAAepE,OAAO,CACpB0B,MAAO,CACL2C,aAAc,UACdC,UAAW,UACXC,WAAY,UACZC,aAAc,aAIhB,mCACE,eAAC,IAAD,WAEE,cAAC,IAAD,CACExS,KAAK,KACLyS,QACE,cAAC,GAAD,UACE,cAAC,GAAD,MAJN,SAQE,cAAC,IAAD,CAAOzS,KAAK,cAAcyS,QAAS,cAAC,GAAD,QAGrC,eAAC,IAAD,CACEzS,KAAK,IACLyS,QACE,cAAC,GAAD,UACE,cAAC,GAAD,MAJN,UAQE,cAAC,IAAD,CAAOzS,KAAK,QAAQyS,QAAS,cAAC,GAAD,MAC7B,cAAC,IAAD,CAAOzS,KAAK,YAAYyS,QAAS,cAAC,GAAD,MACjC,cAAC,IAAD,CAAOzS,KAAK,kBAAkByS,QAAS,cAAC,GAAD,MACvC,cAAC,IAAD,CAAOzS,KAAK,yBAAyByS,QAAS,cAAC,GAAD,MAC9C,cAAC,IAAD,CAAOzS,KAAK,aAAayS,QAAS,cAAC,EAAD,MAClC,cAAC,IAAD,CACEzS,KAAK,8BACLyS,QAAS,cAAC,GAAD,MAEX,cAAC,IAAD,CAAOzS,KAAK,GAAGyS,QAAS,cAAC,IAAD,CAAUpb,GAAG,gBACrC,cAAC,IAAD,CAAO2I,KAAK,IAAIyS,QAAS,cAAC,IAAD,CAAUpb,GAAG,mBAGxC,eAAC,IAAD,CACE2I,KAAK,IACLyS,QACE,cAAC,GAAD,CAAanB,SAAS,EAAM75C,QAAQ,EAAM85C,UAAU,EAApD,SACE,cAAC,GAAD,MAJN,UAQE,cAAC,IAAD,CAAOvR,KAAK,QAAQyS,QAAS,cAAC,GAAD,MAC7B,cAAC,IAAD,CAAOzS,KAAK,WAAWyS,QAAS,cAAC,GAAD,MAChC,cAAC,IAAD,CAAOzS,KAAK,SAASyS,QAAS,cAAC,GAAD,MAC9B,cAAC,IAAD,CAAOzS,KAAK,aAAayS,QAAS,cAAC,GAAD,MAClC,cAAC,IAAD,CAAOzS,KAAK,iBAAiByS,QAAS,cAAC,GAAD,MACtC,cAAC,IAAD,CAAOzS,KAAK,GAAGyS,QAAS,cAAC,IAAD,CAAUpb,GAAG,eACrC,cAAC,IAAD,CAAO2I,KAAK,IAAIyS,QAAS,cAAC,IAAD,CAAUpb,GAAG,kBAGxC,cAAC,IAAD,CAAO2I,KAAK,GAAGyS,QAAS,cAAC,GAAD,MACxB,cAAC,IAAD,CAAOzS,KAAK,IAAIyS,QAAS,cAAC,GAAD,YClFlBC,eAAf,omxC,+BCAaC,GAAUxwD,IAAMC,OAAO,CAClCC,QACEC,2CCFSswD,GAAanwD,IAAOC,IAAV,4nBAsCVmwD,GAAapwD,IAAOC,IAAV,y4KCxCvB,SAAS,KAA2Q,OAA9P,GAAWkH,OAAO0c,QAAU,SAAUC,GAAU,IAAK,IAAIpP,EAAI,EAAGA,EAAIqP,UAAU1c,OAAQqN,IAAK,CAAE,IAAIsP,EAASD,UAAUrP,GAAI,IAAK,IAAIgC,KAAOsN,EAAc7c,OAAO8c,UAAUC,eAAeC,KAAKH,EAAQtN,KAAQoN,EAAOpN,GAAOsN,EAAOtN,IAAY,OAAOoN,IAA2BM,MAAMC,KAAMN,WAEhT,SAAS,GAAyBC,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEtN,EAAKhC,EAAnEoP,EAEzF,SAAuCE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DtN,EAAKhC,EAA5DoP,EAAS,GAAQU,EAAard,OAAOC,KAAK4c,GAAqB,IAAKtP,EAAI,EAAGA,EAAI8P,EAAWnd,OAAQqN,IAAOgC,EAAM8N,EAAW9P,GAAQ6P,EAAStY,QAAQyK,IAAQ,IAAaoN,EAAOpN,GAAOsN,EAAOtN,IAAQ,OAAOoN,EAFxM,CAA8BE,EAAQO,GAAuB,GAAIpd,OAAOud,sBAAuB,CAAE,IAAIC,EAAmBxd,OAAOud,sBAAsBV,GAAS,IAAKtP,EAAI,EAAGA,EAAIiQ,EAAiBtd,OAAQqN,IAAOgC,EAAMiO,EAAiBjQ,GAAQ6P,EAAStY,QAAQyK,IAAQ,GAAkBvP,OAAO8c,UAAUW,qBAAqBT,KAAKH,EAAQtN,KAAgBoN,EAAOpN,GAAOsN,EAAOtN,IAAU,OAAOoN,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDe,EAAG,mrBACHU,KAAM,YAGR,SAAS8qC,GAAYlrC,EAAMC,GACzB,IAAIhW,EAAQ+V,EAAK/V,MACbiW,EAAUF,EAAKE,QACfhlB,EAAQ,GAAyB8kB,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD7P,MAAO,IACP9C,OAAQ,IACR8S,QAAS,cACTC,KAAM,OACNC,MAAO,6BACPC,IAAKL,EACL,kBAAmBC,GAClBhlB,GAAQ+O,EAAqB,gBAAoB,QAAS,CAC3DqG,GAAI4P,GACHjW,GAAS,KAAM,IAGpB,I,GAAI,GAA0B,aAAiBihD,ICJzCC,IDKS,ICLH,sBACNC,GAAgB,qBAEhBC,GAAkB,CACtBpuD,KAAM,UACNwkB,KAAM,yEAGK6pC,GAAU,WACrB,IAAMC,EAAU/tD,aADW,EAEF2E,IAAjBJ,EAFmB,EAEnBA,OAAQ9E,EAFW,EAEXA,KACVuuD,EAActgB,iBAAuB,MACrCugB,EAAcvgB,iBAA4B,MAJrB,EAMLlvC,mBAAS,IANJ,mBAMpB0vD,EANoB,KAMfC,EANe,OAOH3vD,oBAAS,GAPN,mBAOpB+8B,EAPoB,KAOd6yB,EAPc,OAQG5vD,oBAAS,GARZ,mBAQpBK,EARoB,KAQXC,EARW,OASKN,oBAAS,GATd,mBASpB6vD,EAToB,KASVC,EATU,OAUa9vD,oBAAS,GAVtB,mBAUpB+vD,EAVoB,KAUNC,EAVM,OAWHhwD,mBAAgB,CAACqvD,KAXd,mBAWpBY,EAXoB,KAWdC,EAXc,KAa3BnB,GAAQrtD,SAAS/C,QAAQgD,OAAzB,sCAA6DV,QAA7D,IAA6DA,OAA7D,EAA6DA,EAAMM,OAEnE,IAAM4vB,EACJ,iEAAiEjpB,KAC/DsC,UAAUC,WAGRlL,GACHmwD,EAAI3nD,QAAQ,MAAO,IAAI7B,QAAUwpD,EAAIxpD,OA3BV,IAoCxBiqD,EAAiB9sD,uBAAY,WACjCc,YAAW,WAAO,IAAD,IACf,UAAAqrD,EAAYpnC,eAAZ,SAAqBgoC,SAAS,CAC5BzhC,IAAG,UAAE6gC,EAAYpnC,eAAd,aAAE,EAAqBioC,iBAE3B,MACF,IAEGC,EAAWjtD,uBAAY,WAC3B,IACE,IAAMktD,EAAYhB,EAAQ9tD,QAAQ2tD,IAClC,SACEmB,IACA,IAAIzjD,MAAOo+B,UACT,IAAIp+B,KAAKnD,OAAO4mD,IAAYrlB,UAAY,SAE1CqkB,EAAQrrD,WAAWirD,KACZ,GAGT,MAAOzrD,GAEP,OADAC,QAAQC,IAAIF,IACL,KAER,CAAC6rD,IAEEiB,EAAWntD,sBAAW,sBAAC,gCAAA/B,EAAA,yDACrBmvD,EAAWlB,EAAQ9tD,QAAQ0tD,IADN,qDAGvBmB,IAHuB,iEAKzBN,GAAgB,GALS,SAMFjB,GAAQjtD,IAAsB,aAAc,CACjE+Z,OAAQ,CAAE40C,cAPa,iBASjB,QAHAxuD,EANiB,EAMjBA,YAGA,IAAJA,OAAA,EAAAA,EAAMiE,QAAS,GACjBgqD,EAAQ,CACNb,IADK,oBAEFptD,EAAK2J,QACN,SAACglB,EAAKC,GAAN,6BACKD,GADL,CAEE,CAAE3vB,KAAM,OAAQwkB,KAAMoL,EAAI6/B,aAC1B,CACEzvD,KAAM,UACNwkB,KAAMoL,EAAI8/B,mBACNC,KAAUC,SAAShgC,EAAI8/B,oBACvB9/B,EAAIigC,iBAGZ,OAvBmB,2EA6BzBd,GAAgB,GAChBG,IA9ByB,6EAgC1B,CAACA,EAAgBZ,EAASe,IAEvBS,EAAO,uCAAG,WAAOtrC,GAAP,qBAAAnkB,EAAA,6DACd4uD,GAAQ,SAACD,GAAD,6BAAcA,GAAd,CAAoB,CAAEhvD,KAAM,OAAQwkB,aAC5CnlB,GAAW,GACX6vD,IACAhsD,YAAW,kBAAMwrD,EAAO,MAAK,KAJf,SAMNc,EAAWlB,EAAQ9tD,QAAQ0tD,IANrB,SAOWJ,GAAQ7pD,KAAK,aAAc,CAChDwrD,YAAajrC,EACbgrC,aATU,gBAOJxuD,EAPI,EAOJA,KAIR3B,GAAW,GACLyM,EAAM,IAAID,KAChByiD,EAAQxqD,QAAQoqD,GAAKltD,EAAKwuD,UAC1BlB,EAAQxqD,QACNqqD,GACAjnD,OACE,IAAI2E,KAAKC,EAAIe,cAAef,EAAIa,WAAYb,EAAI+sC,WAAW5O,YAG/DglB,GAAQ,SAACD,GAAD,6BACHA,GADG,CAEN,CACEhvD,KAAM,UACNwkB,KAAMxjB,EAAK0uD,mBACPC,KAAUC,SAAS5uD,EAAK0uD,oBACxB1uD,EAAK6uD,kBA1BD,kDA8BZxwD,GAAW,GACX4vD,GAAQ,SAACD,GAAD,6BACHA,GADG,CAEN,CACEvrD,OAAO,EACPzD,KAAM,UACNwkB,KAAM,+EApCE,yBAwCZ0qC,IAxCY,6EAAH,sDAkDb,OANA5rD,qBAAU,WACJwB,GACFyqD,MAED,CAACzqD,EAAQyqD,IAELzqD,EACL,qCACE,cAACipD,GAAD,CACEvoD,UAAWgkC,aAAK,CAAEtZ,SAClBpqB,QAAS,WACP6oD,GAAQ,SAAC7yB,GAKP,OAJKA,GAAS8yB,IACZC,GAAY,GACZK,MAEMpzB,MARd,SAYE,cAAC,KAAD,MAEF,eAACkyB,GAAD,CAAYxoD,UAAWgkC,aAAK,CAAEtZ,OAAME,QAAS0L,IAA7C,UACE,sBAAKt2B,UAAU,cAAf,UACE,qBAAKA,UAAU,YAAf,SACE,cAAC,GAAD,MAEF,oDACA,qBAAKA,UAAU,aAAaM,QA3IlB,WAChB4oD,EAAO,IACPO,EAAQ,CAACb,KACTE,EAAQrrD,WAAWirD,IACnBI,EAAQrrD,WAAWkrD,KAuIb,SACE,cAAC,KAAD,CAAc9vD,KAAM,OAEtB,qBAAKmH,UAAU,aAAaM,QAAS,kBAAM6oD,GAAQ,IAAnD,SACE,cAAC,KAAD,SAGJ,qBAAKnpD,UAAU,YAAY6d,IAAKkrC,EAAhC,SACE,sBAAK/oD,UAAU,yBAAf,UACGspD,EACC,6BAEAE,EAAK38C,KAAI,WAAwBC,GAAxB,IAAGtS,EAAH,EAAGA,KAAMwkB,EAAT,EAASA,KAAM/gB,EAAf,EAAeA,MAAf,MACE,YAATzD,EACE,sBAAKwF,UAAU,WAAf,UACE,sBAAMA,UAAWgkC,aAAK,gBAAiB,CAAE/lC,UAAzC,SACGA,EAAQ,cAAC,KAAD,IAAqB,cAAC,GAAD,MAEhC,sBACE+B,UAAU,gBACVuqD,wBAAyB,CAAEC,OAAQxrC,OANRlS,GAU/B,qBAAK9M,UAAU,yBAAf,SACE,sBAAMA,UAAU,gBAAhB,SAAiCgf,KADUlS,OAMjDlT,GAAW0vD,IACX,qBAAKtpD,UAAU,WAAf,SACE,sBAAKA,UAAU,WAAf,UACE,sBAAMA,UAAU,gBAAhB,SACE,cAAC,GAAD,MAEF,sBAAMA,UAAU,gBAAhB,SACE,cAACI,EAAA,EAAD,WAKR,qBAAKJ,UAAU,+BAGnB,qBAAKA,UAAU,cAAf,SACE,sBAAKA,UAAU,uBAAf,UACE,0BACEupB,KAAM,EACNlqB,MAAO4pD,EACPprC,IAAKmrC,EACLnlD,YAAY,+BACZgc,SAAU,SAACC,GACTopC,EAAOppC,EAAE5D,OAAO7c,OAAS,IACzB,IAAMorD,EAAWzB,EAAYrnC,QACzB8oC,IACFA,EAAS9nD,MAAMiI,OAAS,OACxB6/C,EAAS9nD,MAAMiI,OAAf,UAA2B6/C,EAASb,aAApC,QAGJc,UAAW,SAAC5qC,GACK,UAAXA,EAAEpa,MAAqB5M,GACzBwxD,EAAQrB,MAId,wBACEnwD,SAAUA,EACVwH,QAAS,WACFxH,GACHwxD,EAAQrB,IAJd,SAQE,cAAC,KAAD,CAAcpwD,KAAM,kBAO9B,8BCpRWwvD,eAAf,6oDCUesC,GARkB,SAAC,GAAkB,IAAhB5xD,EAAe,EAAfA,SAClC,OACE,cAAC,EAAD,UACE,cAAC,GAAD,UAAkBA,O,UCAlB6xD,GAAa,kBACjB,cAAC,GAAD,UACE,cAAC,KAAD,CACEn9C,KAAM,cAAC,GAAD,CAAQzN,UAAU,UACxBwH,MAAM,kBACN68C,SAAS,6BACTC,MACE,cAAC,KAAD,CAAK5kC,QAAQ,SAAb,SACE,cAAC,EAAD,CACE7mB,KAAK,QACLD,KAAK,UACL0H,QAAS,kBAAO3C,OAAOC,SAAS2G,KAAO,KAHzC,qCAiBKsmD,GAJwB,SAAC,GAAD,IAAG9xD,EAAH,EAAGA,SAAH,OACrC,cAAC+xD,GAAA,EAAD,CAAeC,WAAYH,GAA3B,SAAwC7xD,K,qBCe3BiyD,OAjCf,WAAgB,IACNnnB,EAASlmC,OAAOC,SAAhBimC,KAEFonB,EAAgB,CACpBC,YAAa,mCACbC,iBAAiB,EACjBC,4BAA4B,EAC5Bt2C,QAAS,CACPu2C,YANUxnB,EAAKtgC,SAAS,cAAgBsgC,EAAKtgC,SAAS,OAMjC,cAAgB,eAIzC,OACE,cAAC,IAAD,CAAUogD,OAAQsH,EAAlB,SACE,cAAC,GAAD,UACE,cAAC,IAAD,CACEznC,OAAQ8nC,KACRC,YAAa,iBAAM,0BAFrB,SAIE,cAAC,IAAD,UACE,eAAC,GAAD,WACE,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,gBCrBCC,GAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqB5uD,MAAK,YAAkD,IAA/C6uD,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,O,cCFdO,IAASroC,OACP,cAAC,IAAMsoC,WAAP,UACE,cAAC,GAAD,MAEF9lD,SAAS4tB,eAAe,SAM1By3B,O","file":"static/js/main.537d97aa.chunk.js","sourcesContent":["import axios from \"axios\";\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_VELOTAX_PRO_URL || \"http://localhost:8888\",\n headers: {\n \"ngrok-skip-browser-warning\": \"69420\",\n },\n});\n\nexport default api;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--ant-info-color);\n height: 100%;\n\n .sso-wrapper {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n img {\n max-width: 230px;\n margin-bottom: 40px;\n }\n\n .sso-area {\n background: var(--velotax-background-color);\n border-radius: 8px;\n padding: 20px;\n width: 500px;\n min-height: 100px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n h4 {\n margin-bottom: 20px;\n }\n\n .anticon {\n width: 40px;\n height: 40px;\n color: var(--ant-info-color);\n\n svg {\n width: 100%;\n height: 100%;\n }\n }\n }\n }\n`;\n","import { Button, ButtonProps } from \"antd\";\nimport styled, { css } from \"styled-components\";\n\ninterface ButtonStyledProps extends ButtonProps {\n tooltip?: boolean;\n}\n\nexport const ButtonStyled = styled(Button) `\n font-size: ${(isMobile) => (isMobile ? \"14px\" : \"\")};\n &.ant-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 0px;\n column-gap: 8px;\n box-shadow: none !important;\n }\n &[disabled] {\n border-color: var(--light-gray) !important;\n color: var(--velotax-font-color-ghost) !important;\n background-color: var(--light-gray) !important;\n }\n ${(props) =>\n props.tooltip &&\n css`\n border-color: var(--light-gray) !important;\n color: var(--velotax-font-color-ghost) !important;\n background-color: var(--light-gray) !important;\n `}\n ${(props) =>\n props.type === \"primary\" &&\n css`\n color: var(--black) !important;\n svg {\n fill: var(--black);\n }\n `}\n ${(props) =>\n props.size === \"large\" &&\n css`\n height: 56px;\n svg {\n width: 18px;\n height: 18px;\n min-width: 18px;\n min-height: 18px;\n max-width: 18px;\n max-height: 18px;\n }\n `}\n ${(props) =>\n props.disabled &&\n css`\n svg {\n fill: var(--velotax-font-color-ghost) !important;\n }\n `}\n`;\n","import { ButtonProps } from \"antd\";\nimport { ButtonStyled } from \"./styles\";\n\ninterface ButtonStyledProps extends ButtonProps {\n tooltip?: boolean;\n}\n\nconst Button: React.FC = (props) => (\n {props.children}\n);\n\nexport default Button;\n","import axios from \"axios\";\n\nconst apiBolsa = axios.create({\n baseURL: process.env.REACT_APP_WLBE_WARREN_BOLSA || \"http://localhost:8888\",\n});\n\nexport default apiBolsa;\n","import axios from \"axios\";\n\nconst apiExterior = axios.create({\n baseURL: process.env.REACT_APP_WLBE_WARREN_BOLSA || \"http://localhost:8888\",\n});\n\nexport default apiExterior;\n","import { message } from \"antd\";\nimport { useNavigate } from \"react-router\";\nimport React, {\n Dispatch,\n SetStateAction,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport api from \"../services/api\";\nimport apiXPBolsa from \"../services/bolsa-api\";\nimport apiXPExterior from \"../services/exterior-api\";\n\ninterface ILoginData {\n username: string;\n pass: string;\n}\n\ninterface ISignUpData {\n email: string;\n pass: string;\n passConfirmation: string;\n username: string;\n usernameEscritorio: string;\n isAssessor: boolean;\n policiesAccepted: boolean;\n}\n\ninterface IUser {\n name: string;\n email: string;\n username: string;\n fileLink?: string;\n office: boolean;\n admin: boolean;\n officeId?: string;\n assessorId?: string;\n isManager?: boolean;\n liberadaContratacao: boolean;\n discount?: number;\n hasPassword: boolean;\n enviarDarfAutomaticamente?: boolean;\n responsavel?: {\n name: string;\n phone: string;\n }\n}\n\ninterface ISessionData extends IUser {\n token: string;\n}\n\nexport interface IAuthState {\n token: string;\n user: IUser;\n}\n\ninterface IAuthContext {\n handleSignIn: (loginData: ILoginData) => void;\n handleSignUp: (signUpData: ISignUpData) => void;\n setLocalStorageWithAuthData: (sesionData: ISessionData) => void;\n signOut: () => void;\n signed: boolean;\n user: IAuthState;\n apiError: string;\n loading: boolean;\n loadingSession: boolean;\n getUserInfo: () => void;\n updateUserInfo: () => void;\n updateUserDec: () => void;\n decUrl: string;\n showDrawer: boolean;\n showDbkModal: boolean;\n wasMessageSent: boolean;\n expandedSidebar: boolean;\n showIndicarModal: boolean;\n setDecUrl: Dispatch>;\n setUser: Dispatch>;\n setApiError: Dispatch>;\n setShowDrawer: Dispatch>;\n setShowDbkModal: Dispatch>;\n setWasMessageSent: Dispatch>;\n setExpandedSidebar: Dispatch>;\n setShowIndicarModal: Dispatch>;\n}\n\nexport const AuthContext = createContext({} as IAuthContext);\n\nexport const AuthProvider: React.FC = ({ children }) => {\n const navigate = useNavigate();\n\n const [decUrl, setDecUrl] = useState(\"\");\n const [apiError, setApiError] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [showDrawer, setShowDrawer] = useState(false);\n const [showDbkModal, setShowDbkModal] = useState(false);\n const [loadingSession, setLoadingSession] = useState(true);\n const [wasMessageSent, setWasMessageSent] = useState(false);\n const [expandedSidebar, setExpandedSidebar] = useState(false);\n const [user, setUser] = useState({} as IAuthState);\n const [showIndicarModal, setShowIndicarModal] = useState(false);\n\n const getUserInformation = async () => {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const user = localStorage.getItem(\"@VeloTax:user\");\n if (user && token) {\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiXPBolsa.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiXPExterior.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n\n const response = await api.get(\"/auth/userInfo\");\n\n let userFromApi = null;\n if (response.data) {\n const {\n username,\n name,\n email,\n isOffice,\n assessorId,\n fileLink,\n officeId,\n isManager,\n isAdmin,\n liberadaContratacao,\n discount,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n } = response.data;\n userFromApi = {\n username,\n name,\n email,\n assessorId,\n fileLink,\n officeId,\n isManager,\n liberadaContratacao,\n discount,\n office: isOffice,\n admin: isAdmin,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n };\n }\n\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${\n response.headers.token || token\n }`;\n\n return {\n token: response.headers.token || token,\n user: userFromApi || JSON.parse(user),\n };\n }\n return {} as IAuthState;\n };\n\n const getUserInfo = useCallback((callback?: () => void) => {\n setLoadingSession(true);\n getUserInformation()\n .then((res) => {\n setUser(res);\n setLoadingSession(false);\n callback && callback();\n })\n .catch((err) => {\n console.log(\"err\", err);\n setLoadingSession(false);\n });\n }, []);\n\n const updateUserInfo = useCallback(() => {\n getUserInformation().then((res) => {\n setUser(res);\n });\n }, []);\n\n const updateUserDec = useCallback(() => {\n const updatedUser = { ...user.user, answeredStepDec: true };\n const token = localStorage.getItem(\"@VeloTax:token\") || \"\";\n\n setUser({ user: updatedUser, token });\n }, [user]);\n\n const signOut = useCallback(() => {\n setLoadingSession(true);\n localStorage.removeItem(\"@VeloTax:token\");\n localStorage.removeItem(\"@VeloTax:user\");\n api.defaults.headers.common[\"Authorization\"] = \"\";\n setUser({} as IAuthState);\n navigate(\"/p/login\");\n setTimeout(() => {\n window.location.reload();\n }, 500);\n }, [navigate]);\n\n useEffect(() => {\n api.interceptors.response.use(\n (response) => response,\n (error) => {\n console.log(error);\n if (error?.response?.status === 401) {\n signOut();\n }\n\n return Promise.reject(error);\n }\n );\n\n getUserInfo();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const setLocalStorageWithAuthData = useCallback(\n ({\n token,\n username,\n email,\n name,\n office,\n admin,\n fileLink,\n assessorId,\n officeId,\n isManager,\n liberadaContratacao,\n discount,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n }: ISessionData) => {\n localStorage.setItem(\"@VeloTax:token\", token);\n localStorage.setItem(\n \"@VeloTax:user\",\n JSON.stringify({\n username,\n email,\n name,\n fileLink,\n officeId,\n assessorId,\n isManager,\n office,\n admin,\n liberadaContratacao,\n hasPassword,\n })\n );\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n\n setUser({\n token,\n user: {\n username,\n email,\n name,\n officeId,\n assessorId,\n isManager,\n fileLink,\n liberadaContratacao,\n discount,\n office,\n admin,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n },\n });\n navigate(\"/clients\");\n setApiError(\"\");\n },\n // eslint-disable-next-line\n []\n );\n\n const handleSignIn = useCallback(\n async (data: ILoginData) => {\n setLoading(true);\n try {\n const response: any = await api.post(\"/auth/login\", {\n username: data.username,\n password: data.pass,\n });\n const {\n token,\n username,\n email,\n name,\n isOffice,\n isAdmin,\n fileLink,\n assessorId,\n officeId,\n isManager,\n liberadaContratacao,\n discount,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n } = response.data;\n\n setLoadingSession(true);\n setLocalStorageWithAuthData({\n token,\n username,\n email,\n name,\n assessorId,\n isManager,\n officeId,\n fileLink,\n liberadaContratacao,\n discount,\n office: isOffice,\n admin: isAdmin,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n });\n setLoading(false);\n setTimeout(() => {\n setLoadingSession(false);\n }, 500);\n } catch (err: any) {\n message.error(\n err.response?.data?.message ||\n \"CPF e/ou senha incorretos. Tente novamente\"\n );\n setLoading(false);\n // throw Error;\n }\n },\n [setLocalStorageWithAuthData]\n );\n\n const handleError = (err: any) => {\n message.error(\n err.response?.data?.message ||\n \"Algo deu errado, tente novemente mais tarde\"\n );\n setLoading(false);\n };\n\n const handleSignUp = useCallback(\n (signUpData) => {\n setLoading(true);\n const {\n name,\n username,\n email,\n pass,\n policiesAccepted,\n assessorId,\n isManager,\n isAssessor,\n usernameEscritorio,\n } = signUpData;\n\n const user = {\n name,\n username,\n email,\n assessorId,\n isManager,\n isAssessor,\n usernameEscritorio,\n password: pass,\n terms: policiesAccepted,\n };\n\n api\n .post(\"/accountants/register\", user)\n .then((response) => {\n const { token, username, email, name, assessorId, isManager } =\n response.data;\n\n localStorage.removeItem(\"publiconboarding\");\n localStorage.setItem(\"@VeloTax:token\", token);\n localStorage.setItem(\n \"@VeloTax:user\",\n JSON.stringify({\n username,\n email,\n assessorId,\n isManager,\n name,\n })\n );\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n\n getUserInfo(() => {\n navigate(\"/clients\");\n setApiError(\"\");\n setLoading(false);\n });\n })\n .catch((err) => handleError(err));\n },\n [navigate, getUserInfo]\n );\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAuth = (): IAuthContext => useContext(AuthContext);\n","export default __webpack_public_path__ + \"static/media/xp.070672ea.svg\";","import { message } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport api from \"../../services/api\";\nimport { Container } from \"./styles\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport veloLogo from \"../../assets/xp.svg\";\n\nconst SSO: React.FC = () => {\n const { token } = useParams();\n const navigate = useNavigate();\n const { setLocalStorageWithAuthData, signOut } = useAuth();\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n api\n .post(\n \"/auth/sso\",\n {},\n {\n headers: {\n authorization: `Bearer ${token}`,\n },\n }\n )\n .then((res) => {\n message.success(\"Logado com sucesso\");\n signOut();\n setLoading(false);\n setLocalStorageWithAuthData(res.data);\n })\n .catch((err) => {\n message.error(\"Algo deu errado, tente novamente mais tarde.\");\n setLoading(false);\n });\n // eslint-disable-next-line\n }, [token]);\n\n return (\n \n
\n \"xp\n
\n {loading ? (\n <>\n

Logando...

\n \n \n ) : (\n navigate(\"/p/login\")}\n >\n Tentar fazer login manualmente\n \n )}\n
\n
\n
\n );\n};\n\nexport default SSO;\n","import styled from \"styled-components\";\n\nexport const AuthContainer = styled.section`\n margin: 80px auto 0;\n height: calc(100% - 80px);\n box-sizing: border-box;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: var(--white);\n\n .cnpj-assessor-cadastro {\n display: flex;\n flex-direction: column;\n margin-bottom: 15px;\n align-items: end;\n span {\n color: var(--ant-primary-color);\n font-weight: bolder;\n cursor: pointer;\n }\n .ant-form-item {\n margin-bottom: 1px;\n width: 100%;\n }\n }\n\n .auth-content {\n min-height: 100%;\n margin: 0 auto;\n max-width: calc(100% - 128px);\n padding: 48px 0;\n position: relative;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n flex-direction: column;\n\n h1 {\n margin: 0 0 32px;\n }\n\n p {\n font-weight: 500;\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color);\n margin: 0 0 32px;\n text-align: center;\n }\n\n .form-container {\n width: 420px;\n &.register {\n width: 550px;\n }\n\n form {\n row-gap: 0;\n display: flex;\n flex-direction: column;\n }\n\n .bottom-acessar {\n display: flex;\n justify-content: center;\n }\n }\n }\n\n .buttons {\n margin: 0 0 16px;\n display: flex;\n column-gap: 16px;\n align-items: center;\n justify-content: space-between;\n .ant-btn-primary {\n min-width: 200px;\n text-transform: uppercase;\n }\n }\n\n .btn-underlined {\n padding: 0;\n font-weight: 600;\n text-decoration: none;\n border-bottom: 2px solid var(--ant-primary-color);\n }\n\n .password-with-eye {\n position: relative;\n\n button {\n position: absolute;\n right: 8px;\n top: 5px;\n }\n }\n\n .termos {\n color: var(--dark-2);\n font-size: 14px;\n font-weight: 300;\n line-height: 20px;\n }\n\n .ant-radio-group {\n flex-direction: row;\n margin: 0 0 16px;\n .ant-radio-button-wrapper {\n min-width: 50%;\n font-weight: 300;\n text-align: center;\n }\n .ant-radio-button-wrapper-checked {\n font-weight: 500;\n color: var(--velotax-font-color);\n }\n }\n\n .footer {\n display: flex;\n column-gap: 16px;\n align-items: center;\n width: 100%;\n padding: 16px 0;\n margin: 24px auto 0;\n color: var(--velotax-font-color);\n border-top: 1px solid var(--light-gray);\n }\n\n .checkbox {\n margin-top: 8px;\n }\n\n @media screen and (max-width: 576px) {\n .auth-content {\n border-left: none;\n padding: 64px 24px 0;\n\n :before {\n display: none;\n }\n\n .form-container {\n width: 100% !important;\n }\n }\n\n .buttons {\n button {\n width: 100%;\n }\n\n button + button {\n display: none;\n }\n }\n\n .footer {\n margin: 48px auto 0;\n }\n }\n\n .ant-tabs {\n .ant-tabs-tab + .ant-tabs-tab {\n margin: 0;\n }\n .ant-tabs-nav {\n margin: 0 0 32px;\n .ant-tabs-nav-operations {\n display: none;\n }\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n width: 100%;\n .ant-tabs-ink-bar {\n background-color: var(--black);\n }\n .ant-tabs-tab {\n width: 50%;\n justify-content: center;\n .ant-tabs-tab-btn {\n font-size: 16px;\n font-weight: 500;\n line-height: 24px;\n color: var(--gray-1);\n }\n &.ant-tabs-tab-active {\n .ant-tabs-tab-btn {\n color: var(--black);\n }\n }\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .auth-content {\n max-width: 100%;\n padding: 48px 24px 64px;\n border-left: none;\n }\n }\n`;\n","export const states = [\n \"AC\",\n \"AL\",\n \"AP\",\n \"AM\",\n \"BA\",\n \"CE\",\n \"DF\",\n \"ES\",\n \"GO\",\n \"MA\",\n \"MT\",\n \"MS\",\n \"MG\",\n \"PA\",\n \"PB\",\n \"PR\",\n \"PE\",\n \"PI\",\n \"RR\",\n \"RO\",\n \"RJ\",\n \"RN\",\n \"RS\",\n \"SC\",\n \"SP\",\n \"SE\",\n \"TO\",\n];\n","import * as yup from \"yup\";\nimport \"yup-phone\";\nimport moment from \"moment\";\nimport { validateBr } from \"js-brasil\";\nimport { states } from \"../constants/others/states\";\nimport Payment from \"payment\";\n\nexport const isValidCPF = (cpf: string) => validateBr.cpf(cpf || \"\");\n\nexport const isValidCNPJ = (cnpj: string) => validateBr.cnpj(cnpj || \"\");\n\nexport const isValidRenavam = (renavam?: string) =>\n renavam && validateBr.renavam(renavam);\n\nexport const isValidFullName = (name: string) =>\n name.trim().split(\" \").length > 1;\n\nexport const isValidEmail = (email?: string) =>\n email && yup.string().email().isValidSync(email);\n\nexport const isValidLogo = (logo?: string) => yup.string();\n\nexport const isValidPhone = (phone?: string) => {\n if (!phone) {\n return false;\n }\n const phoneSchema = yup.string().phone(\"BR\");\n try {\n phoneSchema.validateSync(phone);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nexport const isValidDate = (date?: string) =>\n date &&\n /^((0?[1-9]|[12][0-9]|3[01])[/](0?[1-9]|1[012])[/](19|20)[0-9]{2})*$/.test(\n date\n );\n\nexport const isDateOnReferenceMonth = (\n month: number,\n year: number,\n date?: string\n) => {\n if (date && isValidDate(date)) {\n try {\n const momentDate = moment(date, \"DD/MM/YYYY\");\n const start = moment(`${year}-${month + 1}`, \"YYYY-M\", true).startOf(\"M\");\n const end = moment(`${year}-${month + 1}`, \"YYYY-M\", true).endOf(\"M\");\n return moment(momentDate).isBetween(start, end, undefined, \"[]\");\n } catch (err) {\n return false;\n }\n }\n return false;\n};\n\nexport const isNonDateOnFuture = (\n month: number,\n year: number,\n date?: string\n) => {\n if (date && isValidDate(date)) {\n try {\n const momentDate = moment(date, \"DD/MM/YYYY\");\n const end = moment(`${year}-${month + 1}`, \"YYYY-M\", true).endOf(\"M\");\n return moment(momentDate).isSameOrBefore(end);\n } catch (err) {\n return false;\n }\n }\n return false;\n};\n\nexport const isValidVoterCard = (voterCard?: string) =>\n voterCard && voterCard.replace(/[._]/g, \"\").length === 12;\n\nexport const isValidCEP = (cep?: string) => cep && validateBr.cep(cep);\n\nexport const checkDateExpiration = (limit: string, value: string) => {\n const [day, month, year] = value.split(\"/\");\n const date = new Date(`${year}-${month}-${day} 23:59:59`);\n return date <= new Date(limit);\n};\n\nexport const isValidIPTU = (value?: string) =>\n !value ||\n String(value || \"\").length === 0 ||\n (String(value || \"\").length >= 8 && String(value || \"\").length <= 30);\n\nexport const isValidDeclarationReceipt = (value: string) =>\n !value || value.length === 10 || value.length === 12;\n\nexport const removeSpecialCharacters = (value: string) => {\n if (!value) return \"\";\n return value?.normalize(\"NFD\").replace(/[^a-zA-Zs]/g, \"\");\n};\n\nexport const isValidStateAddress = (value: string) => {\n return states.includes(value.toUpperCase());\n};\n\nexport const isValidShelfLife = (value: string) => {\n let currentMonth: number | string | undefined = new Date().getMonth() + 1;\n let currentYear = (new Date().getFullYear() + \"\")?.substring(2);\n currentMonth = currentMonth < 10 ? `0${currentMonth}` : currentMonth;\n let monthYearTime = `${currentYear}${currentMonth}`;\n let valueTime = value?.split(\"/\").reverse().join().replace(\",\", \"\");\n return (\n !!value &&\n (valueTime < monthYearTime ||\n !/\\b(0[1-9]|1[0-2])\\/?([0-9]{4}|[0-9]{2})\\b/.test(value))\n );\n};\n\nexport const isValidCreditCard = (value: string) =>\n Payment.fns.validateCardNumber(value);\n","import moment from \"moment\";\nimport { Tooltip } from \"antd\";\nimport { BiErrorCircle } from \"react-icons/bi\";\nimport NumberFormat from \"react-number-format\";\nimport { AiOutlineArrowDown, AiOutlineArrowUp } from \"react-icons/ai\";\n\nexport const removeLiNumbers = (t: string) => t.replace(/^([\\d]+\\.*)+/, \"\");\n\nexport const onlyNumbersToPhone = (value: string) =>\n value.replace(/[()_.%-/\\s/]/g, \"\");\n\nexport function numberToPhone(sequenciaNumeros: string) {\n const numeroFormatadoRegex = /^\\(\\d{2}\\) \\d{5}-\\d{4}$/;\n if (numeroFormatadoRegex.test(sequenciaNumeros)) return sequenciaNumeros;\n if (String(sequenciaNumeros).length !== 11) return \"\";\n\n const ddd = sequenciaNumeros.slice(0, 2);\n const primeiraParte = sequenciaNumeros.slice(2, 7);\n const segundaParte = sequenciaNumeros.slice(7);\n\n return `(${ddd}) ${primeiraParte}-${segundaParte}`;\n}\n\nexport const formatCurrency = (value: number, prefix = \"R$ \") => {\n return (\n \n );\n};\n\nexport const numberToCurrency = (value: number) => {\n const formatter = new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n });\n\n return formatter.format(value);\n};\n\nexport const signal = (n: number) => (n > 0 ? \"+\" : n < 0 ? \"\" : \"\");\n\nexport const arrow = (n: number) => (n > 0 \n ? \n : n < 0 \n ? \n : \"\");\n\nexport const negativeToPositive = (n: number) => (n < 0 ? n * -1 : n);\n\nexport const numberToPercentage = (value?: number, toFixed = 2) => {\n const number = typeof value === \"number\" ? value : 0;\n return `${Number(number * 100).toLocaleString(\"pt-br\", {\n minimumFractionDigits: toFixed,\n maximumFractionDigits: toFixed,\n })}%`;\n};\n\nexport const currencyToNumber = (value: string, prefix = \"R$\") =>\n Number(value?.replace(prefix, \"\").replace(/\\./g, \"\").replace(/,/g, \".\")) || 0;\n\nexport const replaceDotByComma = (value: number) => {\n return String(value).replace(/\\./g, \",\");\n};\n\nexport const ErrorIcon = (\n \n \n \n);\n\nexport const zero = (n: number) => (n < 10 ? `0${n}` : `${n}`);\n\nexport const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n const year = date.getFullYear();\n const day = zero(date.getDate());\n const month = zero(date.getMonth() + 1);\n return `${day}/${month}/${year}`;\n};\n\nexport const formatDateHour = (dateString: string) =>\n `${moment(dateString).format(\"DD/MM/YYYY\")} às ${moment(dateString).format(\n \"HH:mm\"\n )}`;\n","export const cpfInputMask = \"999.999.999-99\";\nexport const cnpjInputMask = \"99.999.999/9999-99\";\nexport const phoneInputMask = \"(99) 99999-9999\";\n\nexport const maskCpf = (cpf = \"\") => {\n if (!cpf) return \"\";\n if (cpf.includes(\".\")) return cpf;\n const cpfArray = cpf.split(\"\");\n cpfArray.splice(3, 0, \".\");\n cpfArray.splice(7, 0, \".\");\n cpfArray.splice(11, 0, \"-\");\n return cpfArray.join(\"\");\n};\n\nexport const maskNitPisPasep = (nitpispasep = \"\") => {\n if (!nitpispasep) return \"\";\n if (nitpispasep.includes(\".\")) return nitpispasep;\n const array = nitpispasep.split(\"\");\n array.splice(3, 0, \".\");\n array.splice(9, 0, \".\");\n array.splice(12, 0, \"-\");\n return array.join(\"\");\n};\n\nexport const maskCnpj = (cnpj = \"\") => {\n if (!cnpj) return \"\";\n if (cnpj.includes(\".\")) return cnpj;\n const cnpjArray = cnpj.split(\"\");\n cnpjArray.splice(2, 0, \".\");\n cnpjArray.splice(6, 0, \".\");\n cnpjArray.splice(10, 0, \"/\");\n cnpjArray.splice(15, 0, \"-\");\n return cnpjArray.join(\"\");\n};\n\nexport const maskCep = (cep = \"\") => {\n if (!cep) return \"\";\n if (cep.includes(\"-\")) return cep;\n const cepArray = cep.split(\"\");\n cepArray.splice(5, 0, \"-\");\n return cepArray.join(\"\");\n};\n\nexport const maskVoterCard = (voterCard = \"\") => {\n if (!voterCard) return \"\";\n const voterCardArray = voterCard.split(\"\");\n voterCardArray.splice(4, 0, \" \");\n voterCardArray.splice(9, 0, \" \");\n return voterCardArray.join(\"\");\n};\n\nexport const maskPhone = (phone = \"\") => {\n if (!phone) return \"\";\n const phoneArray = phone.split(\"\");\n if (phone.substring(0, 2) === \"55\") {\n phoneArray.splice(0, 0, \"+\");\n }\n if (phoneArray[0] === \"+\") {\n phoneArray.splice(3, 0, \" (\");\n phoneArray.splice(6, 0, \") \");\n phoneArray.splice(12, 0, \"-\");\n } else {\n phoneArray.splice(0, 0, \"(\");\n phoneArray.splice(3, 0, \") \");\n phoneArray.splice(9, 0, \"-\");\n }\n return phoneArray.join(\"\");\n};\n","import CalendarLocale from \"rc-picker/lib/locale/pt_BR\";\n\nexport const months = [\n \"Jan\",\n \"Fev\",\n \"Mar\",\n \"Abr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Ago\",\n \"Set\",\n \"Out\",\n \"Nov\",\n \"Dez\",\n];\n\nexport const monthsExtended = [\n \"Janeiro\",\n \"Fevereiro\",\n \"Março\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n];\n\nexport const antDatePickerLocale = {\n lang: {\n placeholder: \"\",\n ...CalendarLocale,\n },\n timePickerLocale: {},\n};\n","import moment from \"moment\";\n\nexport const getQuizLabel = (username: string, message: string): string => {\n return username !== \"Declarante\"\n ? `${username} ${message}`\n : `Você ${message}`;\n};\n\nexport const isSafari = /^((?!chrome|android).)*safari/i.test(\n navigator.userAgent\n);\n\nexport const isMobile = (): boolean => {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n};\n\nexport const isExternalLink = (link: string): boolean => {\n return /http:\\/\\/|https:\\/\\//i.test(link);\n};\n\nexport const errorMessage =\n \"Algo inesperado aconteceu. Tente novamente mais tarde.\";\n\nexport const reintegrateMessage =\n \"Faça novamente a integração para buscar dados mais novos\";\n\nexport const download = (link: string) => {\n const userAgentString = navigator.userAgent;\n let chromeAgent = userAgentString.indexOf(\"Chrome\") > -1;\n let safariAgent = userAgentString.indexOf(\"Safari\") > -1;\n if (chromeAgent && safariAgent) safariAgent = false;\n if (safariAgent) {\n window.location.href = link;\n return;\n } else {\n window.open(link);\n }\n};\n\nexport const getBrowser = () => {\n var sBrowser,\n sUsrAg = navigator.userAgent;\n\n if (sUsrAg.indexOf(\"Firefox\") > -1) {\n sBrowser = \"Mozilla Firefox\";\n // \"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0\"\n } else if (sUsrAg.indexOf(\"SamsungBrowser\") > -1) {\n sBrowser = \"Samsung Internet\";\n // \"Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G955F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.4 Chrome/67.0.3396.87 Mobile Safari/537.36\n } else if (sUsrAg.indexOf(\"Opera\") > -1 || sUsrAg.indexOf(\"OPR\") > -1) {\n sBrowser = \"Opera\";\n // \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106\"\n } else if (sUsrAg.indexOf(\"Trident\") > -1) {\n sBrowser = \"Microsoft Internet Explorer\";\n // \"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko\"\n } else if (sUsrAg.indexOf(\"Edge\") > -1) {\n sBrowser = \"Microsoft Edge\";\n // \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299\"\n } else if (sUsrAg.indexOf(\"Chrome\") > -1) {\n sBrowser = \"Google Chrome or Chromium\";\n // \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36\"\n } else if (sUsrAg.indexOf(\"Safari\") > -1) {\n sBrowser = \"Apple Safari\";\n // \"Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306\"\n } else {\n sBrowser = \"unknown\";\n }\n\n return sBrowser;\n};\n\nexport const fator = (item: any) => {\n const value = (item.quantity || 0) * (item.sellPrice || 0);\n const code = item.code?.substring(0, 3)?.toUpperCase() || \"\";\n switch (code) {\n case \"WIN\":\n return value / 5;\n case \"WDO\":\n return value / 10;\n case \"DOL\":\n return value / 50;\n case \"IAP\":\n return value / 25;\n case \"ETN\":\n return value / 30;\n case \"ETH\":\n return value / 30;\n case \"SOY\":\n return value / 34;\n case \"CNY\":\n return value / 35;\n case \"EUR\":\n return value / 50;\n case \"ICF\":\n return value / 100;\n case \"KFE\":\n return value / 100;\n case \"OZ1\":\n return value / 250;\n case \"CCM\":\n return value / 450;\n case \"SFI\":\n return value / 450;\n case \"SJC\":\n return value / 450;\n case \"ACF\":\n return value / 508;\n default:\n return value;\n }\n};\n\nconst exteriorTransactionsFilter = (el: any) =>\n (el.operation === \"SELL\" && !el?.type) ||\n (el.operation === \"SELL\" && el.manual) ||\n (el.operation === \"SELL\" &&\n (el.type === \"TRADE\" || el.type === \"WITHDRAW\")) ||\n el.type === \"INTEREST\";\n\nexport const vendasTotaisExt = (item: any) =>\n item?.transactions\n ?.filter(exteriorTransactionsFilter)\n .reduce((a: number, t: any) => a + t.valor * t.cambioVenda, 0) || 0;\n\nexport const vendasTotais = (item: any) =>\n item?.transactions?.reduce((a: number, t: any) => a + fator(t), 0) || 0;\n\nexport const downloadPDF = (base64: string, fileName?: string) => {\n const linkSource = `data:application/pdf;base64,${base64}`;\n const downloadLink = document.createElement(\"a\");\n fileName = fileName ?? `Relatório-${Date.now()}.pdf`;\n\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n};\n\nexport const mesesPassados = (date: Date) => {\n const hoje = new Date();\n const anoAtual = hoje.getFullYear();\n const mesAtual = hoje.getMonth();\n\n const anoSelecionado = date.getFullYear();\n\n const mesesPassados = [];\n\n if (anoSelecionado < anoAtual) {\n for (let i = 0; i < 12; i++) {\n mesesPassados.push(i + 1);\n }\n } else if (anoSelecionado === anoAtual) {\n for (let i = 0; i < mesAtual; i++) {\n mesesPassados.push(i + 1);\n }\n }\n\n return mesesPassados.sort((a, b) => b - a);\n};\n\nexport const isAntesTerceiroDiaUtil = () => {\n const today = moment();\n // Verifica se a data de hoje é um sábado\n if (today.isoWeekday() === 6) {\n return false;\n }\n // Verifica se a data de hoje é anterior ao terceiro dia útil\n const firstDayOfMonth = moment(today).startOf('month');\n let businessDaysCount = 0;\n while (businessDaysCount < 2) {\n if (firstDayOfMonth.isoWeekday() < 6) {\n businessDaysCount++;\n }\n firstDayOfMonth.add(1, 'day');\n }\n return today.isBefore(firstDayOfMonth);\n}\n\n\nexport const thirdBusinessDayAndMonth = (item: any) => {\n const today = new Date();\n const currentMonth = today.getMonth() + 1;\n const currentYear = today.getFullYear();\n if (item.year === currentYear && item.month === currentMonth)\n return { disabled: true, title: \"Aguarde o encerramento do mês para pagar seu DARF\" }\n else if (item.month == currentMonth - 1 && item.year == currentYear && isAntesTerceiroDiaUtil())\n return { disabled: true, title: \"Aguarde o terceiro dia útil deste mês para pagar seu DARF\" }\n else return { disabled: false, title: \"\" }\n}","import { Rule } from \"antd/lib/form\";\nimport {\n checkDateExpiration,\n isDateOnReferenceMonth,\n isNonDateOnFuture,\n isValidCEP,\n isValidCNPJ,\n isValidCPF,\n isValidCreditCard,\n isValidDate,\n isValidDeclarationReceipt,\n isValidEmail,\n isValidFullName,\n isValidIPTU,\n isValidLogo,\n isValidPhone,\n isValidRenavam,\n isValidShelfLife,\n isValidStateAddress,\n isValidVoterCard,\n months,\n} from \".\";\n\nconst dataLimite = \"2021-12-31 23:59:59\";\n\nexport const validationCpf: Rule[] = [\n {\n required: true,\n validator: (_: any, value: string) =>\n !value || !isValidCPF(value)\n ? Promise.reject(new Error(\"Informe um CPF válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationCnpj: Rule[] = [\n {\n validator: (_: any, value: string) =>\n !value || !isValidCNPJ(value)\n ? Promise.reject(new Error(\"Informe um CNPJ válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationCpfCnpj: Rule[] = [\n {\n validator: (_: any, value: string) => {\n const unmaskedValue = value.replaceAll(/[._-]/g, \"\");\n if (unmaskedValue.length > 11) {\n return !value || !isValidCNPJ(value)\n ? Promise.reject(new Error(\"Informe um CNPJ válido\"))\n : Promise.resolve();\n } else {\n return !value || !isValidCPF(value)\n ? Promise.reject(new Error(\"Informe um CPF válido\"))\n : Promise.resolve();\n }\n },\n },\n];\n\nexport const validationFullName: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !value || !isValidFullName(value)\n ? Promise.reject(\n new Error(\"Seu nome deve possuir duas palavras ou mais\")\n )\n : Promise.resolve(),\n },\n];\n\nexport const validationEmail: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !value || !isValidEmail(value)\n ? Promise.reject(new Error(\"Informe um e-mail válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationLogo: Rule[] = [\n {\n validator: (rule, value) =>\n !isValidLogo(value)\n ? Promise.reject(new Error(\"Insira uma logo válida\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationPhone: Rule[] = [\n {\n required: true,\n validator: (_: any, value: string) =>\n !value || !isValidPhone(value)\n ? Promise.reject(new Error(\"Informe um telefone válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationPhoneRequired: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !value || !isValidPhone(value)\n ? Promise.reject(new Error(\"Informe um telefone válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationDateNotRequired: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidDate(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe uma data válida\")),\n },\n];\n\nexport const validationDate: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationDateIsOnReferenceMonth: (\n month: number,\n year: number\n) => Rule[] = (month, year) => [\n {\n validator: (_: any, value: string) =>\n isDateOnReferenceMonth(month, year, value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(`Informe uma data do mês de ${months[month]} de ${year}`)\n ),\n },\n];\n\nexport const validationDateIsOnFuture: (\n month: number,\n year: number\n) => Rule[] = (month, year) => [\n {\n validator: (_: any, value: string) =>\n isNonDateOnFuture(month, year, value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\n `Informe uma data menor ou igual ao mês de ${months[month]} de ${year}`\n )\n ),\n },\n];\n\nexport const validationIPTU: Rule[] = [\n {\n validator: (rule, value) =>\n isValidIPTU(value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\"O número do IPTU precisa ter entre 8 e 30 caracteres.\")\n ),\n },\n];\n\nexport const validationDateNotRequired2021: Rule[] = [\n {\n validator: (rule, value) =>\n value && !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : value && !checkDateExpiration(dataLimite, value)\n ? Promise.reject(new Error(\"Informe uma data até 31/12/2021\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationDate2021: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : !checkDateExpiration(dataLimite, value)\n ? Promise.reject(new Error(\"Informe uma data até 31/12/2021\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationVoterCard: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidVoterCard(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um Título de Eleitor válido\")),\n },\n];\n\nexport const validationRenavam: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidRenavam(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um Renavam válido\")),\n },\n];\n\nexport const validationAcceptedTerms: Rule[] = [\n {\n validator: (rule, value) =>\n value\n ? Promise.resolve()\n : Promise.reject(\n new Error(\n \"O aceite dos termos de uso, política de privacidade e política de cookies é obrigatório\"\n )\n ),\n },\n];\n\nexport const validationFieldRequired: Rule[] = [\n {\n required: true,\n message: \"Este campo é obrigatório\",\n },\n];\n\nexport const validationNumberPercentageField: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0.0001,\n type: \"number\",\n message: \"O valor deve ser maior que 0,0001\",\n },\n {\n max: 100,\n type: \"number\",\n message: \"O valor deve ser menor que 100 (cem)\",\n },\n];\n\nexport const validationNumberPercentageFieldPositive: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0,\n type: \"number\",\n message: \"O valor deve estar entre 0 (zero) e 100 (cem)\",\n },\n {\n max: 100,\n type: \"number\",\n message: \"O valor deve estar entre 0 (zero) e 100 (cem)\",\n },\n];\n\nexport const validationNumberField: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0.01,\n type: \"number\",\n message: \"O valor deve ser maior que 0 (zero)\",\n },\n];\n\nexport const validationNumberAllowNegativeField: Rule[] = [\n ...validationFieldRequired,\n {\n type: \"number\",\n message: \"Não é um número válido\",\n },\n];\n\nexport const validationNumberFieldPositive: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0,\n type: \"number\",\n message: \"O valor deve ser positivo\",\n },\n];\n\nexport const validationQuantityCryptoField: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0,\n type: \"number\",\n message: \"O valor deve ser positivo\",\n },\n];\n\nexport const validationDeclarationReceipt: Rule[] = [\n {\n validator: (rule, value) =>\n isValidDeclarationReceipt(value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\"O número da declaração deve ter 10 ou 12 dígitos\")\n ),\n },\n];\n\nexport const validationStateAddress: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n value && isValidStateAddress(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um Estado válido\")),\n },\n];\n\nexport const validationCardShelfLife: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n isValidShelfLife(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationCep: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n isValidCEP(value ?? \"\")\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um CEP válido\")),\n },\n];\n\nexport const validationAmexCVV: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n (value?.replace(/[_]/g, \"\") ?? \"\")?.length === 4\n ? Promise.resolve()\n : Promise.reject(new Error(\"Insira um código de segurança válido\")),\n },\n];\n\nexport const validationCVV: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n (value?.replace(/[_]/g, \"\") ?? \"\")?.length === 3\n ? Promise.resolve()\n : Promise.reject(new Error(\"Insira um código de segurança válido\")),\n },\n];\n\nexport const validationPasswordNotRequired: Rule[] = [\n { min: 6, message: \"A senha deve ter pelo menos 6 caracteres\" },\n];\n\nexport const validationPassword: Rule[] = [\n { required: true, message: \"Informe uma senha\" },\n { min: 6, message: \"A senha deve ter pelo menos 6 caracteres\" },\n];\n\nexport const validationMaxLength20: Rule[] = [\n { required: true, message: \"Este campo é obrigatório\" },\n { max: 20, message: \"Deve possuir menos que 20 caracteres.\" },\n];\n\nexport const validationPassConfirmation: Rule[] = [\n ({ getFieldValue }) => ({\n validator: (_: any, value: string) =>\n value === getFieldValue(\"pass\")\n ? Promise.resolve()\n : Promise.reject(new Error(\"As senhas não coincidem\")),\n }),\n];\n\nexport const validationCreditCardNumber: Rule[] = [\n {\n validator: (rule, value: string) =>\n isValidCreditCard(value?.replace(/[^0-9\\\\.]+/g, \"\"))\n ? Promise.resolve()\n : Promise.reject(new Error(\"Número de cartão inválido\")),\n },\n];\n","import React from \"react\";\nimport { Form, Input } from \"antd\";\n// import ReactInputMask from \"react-input-mask\";\nimport { useNavigate } from \"react-router-dom\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n// import { cnpjInputMask, cpfInputMask } from \"../../utils\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport {\n validationFieldRequired,\n validationMaxLength20,\n} from \"../../utils/formValidations\";\n\ninterface IData {\n username: string;\n pass: string;\n}\n\nexport const Login: React.FC = () => {\n const navigate = useNavigate();\n const [form] = Form.useForm();\n const { handleSignIn, loading } = useAuth();\n\n const onFinish = async (data: IData) => {\n try {\n await handleSignIn({\n ...data,\n username: data.username.replace(/[_.-/-]/g, \"\"),\n });\n } catch (err: any) {\n return;\n }\n };\n\n const handleNavigate = () => {\n navigate(\"/p/cadastrar\");\n };\n\n return (\n \n
\n
\n

Acesse sua conta

\n
\n \n \n {/* {\n if (\n e.target.value.replace(/[_.-/-]/g, \"\").length ===\n cpfCnpjValue.length\n ) {\n setIsCnpj(true);\n } else if (\n e.target.value.replace(/[_.-/-]/g, \"\").length < 12\n ) {\n setIsCnpj(false);\n }\n setCpfCnpjValue(e.target.value.replace(/[_.-/-]/g, \"\"));\n }}\n /> */}\n \n\n \n \n \n\n
\n \n Entrar\n \n
\n
\n navigate(\"/p/forgot-password\")}\n >\n ESQUECI MINHA SENHA\n \n
\n
\n\n
\n Ainda não possui uma conta?\n \n COMEÇAR\n \n
\n
\n
\n
\n );\n};\n","import { Drawer, DrawerProps, Modal, ModalProps } from \"antd\";\nimport { isMobile } from \"../../utils\";\n\nexport interface DrawerModalProps\n extends Omit,\n Omit {\n visible?: boolean;\n onCancel?: (e: any) => void;\n}\n\nexport const DrawerModal: React.FC = ({\n height,\n visible,\n onCancel,\n children,\n className,\n getContainer,\n ...props\n}) => {\n return isMobile() ? (\n \n {children}\n \n ) : (\n \n {children}\n \n );\n};\n","import { GrDocumentDownload } from \"react-icons/gr\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px;\n min-height: 100%;\n background-color: var(--ghost);\n\n @media only screen and (max-device-width: 812px) {\n padding: 0 0 24px;\n background-color: var(--white);\n }\n`;\n\nexport const Content = styled.div`\n width: 100%;\n padding: 48px;\n margin: 0 auto;\n border-radius: 8px;\n background-color: var(--white);\n box-shadow: 0px 4px 8px 0px #e0e0e0;\n\n .ant-btn {\n height: 48px !important;\n }\n\n .send-icon {\n fill: none !important;\n stroke: var(--dark-2);\n }\n\n .btn-filter {\n border-radius: 24px;\n font-weight: 500 !important;\n svg {\n stroke: var(--ant-primary-color);\n }\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n }\n .downloadSheet {\n font-weight: 500 !important;\n svg {\n fill: var(--ant-primary-color);\n }\n }\n\n .button-disabled-plan {\n position: relative;\n\n .over-button-disabled {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 999;\n }\n }\n\n .calc-status {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 6px;\n span {\n width: 8px;\n height: 8px;\n min-width: 8px;\n min-height: 8px;\n border-radius: 4px;\n display: inline-block;\n background-color: var(--red);\n &.Regular {\n background-color: var(--green-1);\n }\n &.NOT_PAYED {\n background-color: var(--ant-primary-color);\n }\n }\n }\n\n .ant-btn-group.ant-dropdown-button {\n .ant-btn {\n text-transform: none;\n border-color: var(--dark-1);\n :first-of-type {\n border-radius: 24px;\n margin-right: 8px;\n }\n :last-of-type {\n border-radius: 24px;\n }\n :disabled,\n :hover {\n color: var(--gray-1);\n border-color: var(--gray-1);\n }\n &.ant-dropdown-trigger {\n svg {\n fill: var(--dark-1);\n }\n :disabled,\n :hover {\n svg {\n fill: var(--gray-1);\n }\n }\n }\n }\n }\n\n .ant-list.ant-list-split {\n padding: 0 32px;\n border: 2px solid var(--dark-1);\n border-radius: 8px;\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item {\n padding: 20px 0;\n }\n .ant-list-item-meta-title {\n font-size: 1rem;\n font-weight: 700;\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--white);\n }\n .ant-list-item-action {\n display: flex;\n row-gap: 4px;\n column-gap: 8px;\n\n .ant-btn.hire-btn {\n color: var(--ant-primary-color) !important;\n border-color: var(--dark-1);\n background-color: var(--dark-1);\n }\n\n .ant-btn.action-btn {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: space-between;\n row-gap: 0;\n height: 48px;\n padding: 0 4px;\n font-size: 14px;\n color: var(--white);\n\n svg,\n svg * {\n stroke: var(--ant-primary-color);\n }\n }\n }\n\n .ant-list-item-action-split {\n display: none;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n\n .ant-btn {\n span {\n line-height: 18px;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n svg {\n min-width: 20px;\n min-height: 20px;\n }\n }\n\n .resp {\n p {\n margin: 0;\n text-align: left;\n max-width: 128px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n\n .action-btns {\n display: flex;\n justify-content: center;\n .action-btn + .action-btn {\n margin-left: 8px;\n width: 48px;\n }\n .action-btn {\n font-size: 14px;\n font-weight: 500;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n background-color: var(--ghost);\n svg {\n path {\n transition: stroke 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\n }\n }\n &:active,\n &:focus,\n &:hover {\n color: var(--gray-1);\n svg {\n path {\n stroke: var(--gray-1);\n }\n }\n }\n }\n }\n\n .ant-table-container table > thead > tr:first-child th:first-child {\n border-top-left-radius: 8px;\n }\n .ant-table-container table > thead > tr:first-child th:last-child {\n border-top-right-radius: 8px;\n }\n .ant-table-container table > tbody > tr:last-child td:first-child {\n border-bottom-left-radius: 8px;\n }\n .ant-table-container table > tbody > tr:last-child td:last-child {\n border-bottom-right-radius: 8px;\n }\n\n .ant-table-container table > tbody > tr td {\n border-left: 1px solid var(--ghost);\n &:last-child {\n border-right: 1px solid var(--ghost);\n }\n }\n .ant-table-selection-column {\n padding: 16px;\n }\n\n .ant-table-thead .ant-table-cell {\n background-color: var(--ghost);\n font-weight: 500;\n color: black;\n &:before {\n visibility: hidden;\n }\n &.ant-table-selection-column {\n .ant-table-selection {\n .ant-checkbox {\n .ant-checkbox-inner {\n border-color: var(--white);\n background-color: var(--white);\n }\n &.ant-checkbox-checked {\n .ant-checkbox-inner {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 32px 16px;\n border-radius: 0;\n box-shadow: none;\n\n .ant-list.ant-list-split {\n padding: 0 16px;\n font-size: 12px;\n\n .ant-list-item {\n padding: 16px 0;\n }\n\n .ant-list-item-action {\n flex-direction: column;\n }\n }\n\n .ant-table-content {\n overflow-y: auto;\n }\n }\n`;\n\nexport const HiredTag = styled.div`\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n padding: 4px 16px;\n border: none;\n font-size: 14px;\n font-weight: 500;\n color: var(--white);\n background-color: var(--dark-1);\n`;\n\nexport const DownloadIcon = styled(GrDocumentDownload)`\n width: 16px;\n height: 16px;\n margin-left: 4px;\n cursor: pointer;\n`;\n\nexport const DarfAutomaticoContainer = styled.div`\n height: 44px;\n display: flex;\n font-weight: 500;\n justify-content: flex-end;\n margin-top: 16px;\n align-items: center;\n color: var(--gray-3);\n\n .ant-switch {\n background-color: var(--ant-error-color);\n margin-right: 8px;\n }\n\n .ant-switch-checked {\n background-color: var(--ant-success-color);\n }\n\n .ant-switch-inner {\n position: relative;\n width: 16px;\n height: 16px;\n }\n .ant-switch-inner .anticon-loading {\n scale: 0.6;\n position: absolute;\n top: -4px;\n left: -4px;\n }\n\n @media only screen and (max-device-width: 812px) {\n margin: 0;\n padding: 0 16px;\n }\n`;\n\nexport const DropdownButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--ant-gray-2);\n svg {\n margin-right: 8px;\n transform: translateY(-1px);\n font-size: 16px;\n }\n`;\n","import styled from \"styled-components\";\n\nexport const TitleContainer = styled.div`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n font-size: 24px;\n\n svg {\n margin-right: 0.5rem;\n }\n`;\n\nexport const StyledTable = styled.div`\n width: 100%;\n border-top: 1px solid #eaecee;\n border-radius: 8px 8px 0 0;\n overflow: hidden;\n\n .columnTitle {\n justify-content: flex-end;\n height: 54px;\n font-weight: 600;\n background-color: #eaecee;\n\n div {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .show {\n justify-content: space-around !important;\n\n svg {\n width: 18px;\n height: 18px;\n }\n }\n }\n\n .operationsRow {\n height: 60px;\n\n div {\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: white;\n border-right: 1px solid #eaecee;\n border-bottom: 1px solid #eaecee;\n }\n .rowLabel {\n flex-grow: 1;\n background-color: var(--velotax-ghost) !important;\n justify-content: flex-start;\n padding-left: 1rem;\n background-color: transparent;\n border-left: 1px solid #eaecee;\n }\n\n &:last-of-type {\n .rowLabel {\n border-bottom-left-radius: 8px;\n }\n div {\n &:last-of-type {\n border-bottom-right-radius: 8px;\n }\n }\n }\n }\n\n .resumoRow {\n height: 42px;\n .secondary {\n padding-left: 32px;\n font-size: 11px;\n }\n }\n\n .chevronIcon {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n .resumoRow {\n .secondary {\n padding-left: 8px;\n font-size: 11px;\n }\n }\n .operationsRow {\n .rowLabel {\n font-size: 9px;\n }\n }\n }\n\n @media only screen and (max-device-width: 670px) {\n font-size: 11px;\n\n .hide {\n display: none !important;\n }\n .show {\n width: 300px;\n max-width: 300px;\n flex: 0 0 300px;\n }\n .transparent {\n opacity: 0;\n }\n .chevronIcon {\n display: block;\n }\n }\n @media only screen and (max-device-width: 550px) {\n .operationsRow {\n .rowLabel {\n width: min-content;\n padding-left: 8px;\n }\n }\n .resumoRow .rowLabel {\n min-width: 160px;\n }\n .resumoRow .secondary {\n min-width: 160px;\n padding-left: 8px;\n }\n .show {\n width: 150px;\n max-width: 150px;\n flex: 0 0 150px;\n }\n }\n`;\n\nexport const VendasContainer = styled.div`\n background-color: var(--velotax-background-color-ghost);\n padding: 1rem 1rem 1rem 1rem;\n #title {\n font-weight: 600;\n margin-bottom: 4px;\n }\n`;\n\nexport const LoadingContainer = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n background-color: rgba(255, 255, 255, 0.8);\n`;\n","import moment from \"moment\";\nimport { AiOutlineDownload } from \"react-icons/ai\";\nimport { Col, Collapse, Row, Typography } from \"antd\";\nimport { BiChevronLeft, BiChevronRight } from \"react-icons/bi\";\nimport Button from \"../Button\";\nimport { StyledTable, VendasContainer } from \"./styles\";\nimport { download, formatCurrency, numberToPercentage } from \"../../utils\";\nimport { useDarfExterior } from \"./useOperationModal\";\n\ninterface IBolsaProps {\n transaction: any;\n index: number;\n setIndex: React.Dispatch>;\n}\n\n\nconst calcReturn = (\n sellPrice: number,\n buyPrice: number,\n quantity: number,\n fee: number,\n ganho?: number\n) => {\n let ret = 0\n if(ganho) {\n const qtt = quantity ? quantity : 1;\n ret =\n sellPrice && buyPrice\n ? (sellPrice * qtt - (fee || 0)) / (buyPrice * qtt) - 1\n : 0;\n }\n return (\n = 0\n ? \"green\"\n : \"red\"\n }`,\n }}\n >\n {ret ? numberToPercentage(ret) : \"-\"}\n \n );\n};\n\nexport const TabelasBolsa = ({ transaction, index, setIndex }: IBolsaProps) => {\n const dtoBolsa = [\n {\n title: \"Comum\",\n Resultado: \"varTotaisComum\",\n \"Ganhos tributáveis\": \"ganhoComum\",\n \"(-) Prejuízos a compensar\": \"prejuizoComum\",\n \"(x) Alíquota devida\": \"15%\",\n \"Imposto devido\": \"impostoComumFinal\",\n },\n {\n title: \"Day Trade\",\n Resultado: \"varTotaisDT\",\n \"Ganhos tributáveis\": \"ganhoDT\",\n \"(-) Prejuízos a compensar\": \"prejuizoDayTrade\",\n \"(x) Alíquota devida\": \"20%\",\n \"Imposto devido\": \"impostoDTFinal\",\n },\n {\n title: \"FII\",\n Resultado: \"varTotaisFII\",\n \"Ganhos tributáveis\": \"ganhoFII\",\n \"(-) Prejuízos a compensar\": \"prejuizoFII\",\n \"(x) Alíquota devida\": \"20%\",\n \"Imposto devido\": \"impostoFIIFinal\",\n },\n ];\n\n const handleDownloadSheetByLink = async (link: string) => {\n download(link);\n };\n\n return (\n <>\n \n \n {dtoBolsa.map((t, i) => (\n \n {\n if (index > 0) setIndex(index - 1);\n }}\n />\n {t.title}\n {\n if (index < dtoBolsa.length - 1) setIndex(index + 1);\n }}\n />\n \n ))}\n \n \n Resultado\n {dtoBolsa.map((t, i) => (\n \n {formatCurrency(transaction?.[t.Resultado])}\n \n ))}\n \n \n Ganhos tributáveis\n {dtoBolsa.map((t, i) => (\n \n {formatCurrency(transaction?.[t[\"Ganhos tributáveis\"]])}\n \n ))}\n \n \n (-) Prejuízos a compensar\n {dtoBolsa.map((t, i) => (\n \n {formatCurrency(transaction?.[t[\"(-) Prejuízos a compensar\"]])}\n \n ))}\n \n \n (x) Alíquota devida\n {dtoBolsa.map((t, i) => (\n \n {t[\"(x) Alíquota devida\"]}\n \n ))}\n \n \n Imposto devido\n {dtoBolsa.map((t, i) => (\n \n {formatCurrency(transaction?.[t[\"Imposto devido\"]])}\n \n ))}\n \n \n\n \n \n Vendas realizadas no mês\n \n }\n >\n {transaction?.memoriaCalculo?.length > 0 && (\n \n handleDownloadSheetByLink(transaction?.sheetFileUrl)\n }\n style={{\n fontSize: \"14px\",\n marginBottom: \"16px\",\n }}\n icon={\n \n }\n >\n Baixar planilha\n \n )}\n \n {transaction?.memoriaCalculo?.length > 0 ? (\n (transaction?.memoriaCalculo || []).map((op: any, i: number) => {\n const retorno =\n op?.sellPrice && op?.buyPrice\n ? op?.sellPrice / op?.buyPrice - 1\n : 0;\n return (\n \n \n {op?.code}\n Data: {moment(op?.date).format(\"DD/MM/YYYY\")}\n Quantidade: {op?.quantity}\n \n \n Ganho:\n \n {formatCurrency(op?.capitalGain)}\n \n \n Retorno:\n 0 ? \"green\" : \"red\",\n marginLeft: \"4px\",\n }}\n >\n {numberToPercentage(retorno)}\n \n \n \n \n );\n })\n ) : (\n
\n Nenhuma operação de venda realizada neste mês\n
\n )}\n
\n \n \n \n );\n};\n\nexport const TabelasExterior = ({ transaction, oldModel, year }: { transaction: any, oldModel: boolean, year?: number }) => {\n const style = (i: any) => ({\n marginBottom:\n i ===\n (transaction?.memoriaCalculo || []).filter(\n (op: any) => op?.type !== \"DIVIDEND\"\n ).length -\n 1\n ? \"0\"\n : \"1.5rem\",\n })\n const { getBuyPrice, getFee, getGain, getSellPrice } = useDarfExterior()\n\n const ExteriorFields = ({op, i}: {op: any, i: any}) => (\n \n \n {op?.ativo}\n \n Data de liquidação:{\" \"}\n {moment(op?.data).format(\"DD/MM/YYYY\")}\n \n \n \n Ganho:\n \n {formatCurrency(\n op?.type === \"INTEREST\"\n ? op?.rendimentoAplicacao\n : op?.ganho\n )}\n \n \n \n )\n\n const ExteriorFieldsNew = ({op, i}: {op: any, i: any}) => {\n const isTrade = op?.type === \"TRADE\";\n return (\n \n \n {op?.ativo}\n \n Data:{\" \"}\n {moment(op?.data).format(\"DD/MM/YYYY\")}\n \n {\n (isTrade && !oldModel) && (\n \n \n Quantidade:\n \n {formatCurrency(op?.quantidade)}\n \n )\n }\n \n \n {isTrade ? 'Ganho:' : 'Rendimento total:'}\n \n {formatCurrency((() => {\n if (oldModel) {\n return op?.type === \"INTEREST\"\n ? op?.rendimentoAplicacao\n : op?.varTotalBRL\n }\n switch(op?.type) {\n case 'DIVIDEND':\n case 'INTEREST':\n return op?.rendimentoAplicacao;\n default:\n return op?.varTotalBRL\n }\n })()\n )}\n \n {\n (isTrade && !oldModel) && (\n \n \n Retorno:\n \n {calcReturn(\n getSellPrice(op, oldModel).value,\n getBuyPrice(op, oldModel).value,\n op?.quantidade,\n getFee(op, oldModel).value,\n getGain(op, oldModel).value\n )}\n \n )\n }\n \n \n )\n }\n\n return (\n <>\n {year && year <= 2023 && \n \n Ganho total\n \n {formatCurrency(transaction?.totalGanho)}\n \n \n {!oldModel && \n (-) Prejuízos a compensar\n \n {formatCurrency(Math.abs(transaction?.prejuizoExterior || 0))}\n \n }\n \n (x) Alíquota devida\n \n {Number.isInteger(transaction?.aliquotaDevida)\n ? transaction?.aliquotaDevida\n : transaction?.aliquotaDevida?.toFixed(2)}{\" \"}\n %\n \n \n \n Imposto devido\n \n {formatCurrency(transaction?.impostoDevido)}\n \n \n }\n \n \n {year && year <= 2023 ? 'Vendas realizadas no mês' : 'Movimentações'}\n \n }\n >\n \n {transaction?.memoriaCalculo?.length > 0 ? (\n (transaction?.memoriaCalculo || [])\n .filter(\n (op: any) =>\n (op?.type === \"WITHDRAW\" && op?.operation === \"SELL\") ||\n (op?.type === \"TRADE\" && op?.operation === \"SELL\") ||\n (op?.type === \"INTEREST\" && op?.operation === \"BUY\") ||\n (op?.type === \"DIVIDEND\" && !oldModel)\n )\n .map((op: any, i: number) => {\n if(!oldModel) return \n return (\n \n );\n })\n ) : (\n
\n Nenhuma operação de venda realizada neste mês\n
\n )}\n
\n \n \n \n );\n};\n","export function useDarfExterior() {\n const gainKeys = ['ganho', 'varTotalBRL'];\n const sellPriceKeys = ['valor', 'sellPrice_BRL'];\n const buyPriceKeys = ['valueOriginBRA', 'buyPrice_BRL'];\n const feeKeys = ['fee', 'fee_BRL'];\n\n function getByKey(item: any, keys: string[], isOldModel?: boolean) {\n if (isOldModel !== undefined) {\n if (isOldModel) {\n return { key: keys[0], value: item[keys[0]] ?? null };\n }\n return { key: keys[1], value: item[keys[1]] ?? null };\n }\n const k = keys.find((key) => item[key] !== null && item[key] !== undefined);\n const value = k ? item[k] : null;\n const key = k ?? keys[0];\n return { key, value };\n }\n\n function getGain(item: any, isOldModel?: boolean) {\n return getByKey(item, gainKeys, isOldModel)\n }\n\n function getSellPrice(item: any, isOldModel?: boolean) {\n return getByKey(item, sellPriceKeys, isOldModel)\n }\n\n function getBuyPrice(item: any, isOldModel?: boolean) {\n return getByKey(item, buyPriceKeys, isOldModel)\n }\n\n function getFee(item: any, isOldModel?: boolean) {\n return getByKey(item, feeKeys, isOldModel)\n }\n\n return { getBuyPrice, getGain, getSellPrice, getFee }\n}","export const yearConfigPL4173 = 2024","import { message } from \"antd\";\nimport FileSaver from \"file-saver\";\nimport React, {\n Dispatch,\n SetStateAction,\n createContext,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport api from \"../services/api\";\nimport { isAntesTerceiroDiaUtil, isMobile } from \"../utils\";\nimport { yearConfigPL4173 } from \"../constants/others/exterior\";\n\nexport type CalcStatus =\n | \"Integração inativa\"\n | \"Imposto apurado\"\n | \"Imposto devido\";\n\ninterface GetClientsParams {\n page?: number;\n pageSize?: number;\n searchText?: string;\n planActive?: any;\n resp?: string[];\n statusBolsa?: CalcStatus[];\n statusExterior?: CalcStatus[];\n getAllDarfStatus?: boolean;\n orderBy?: string;\n orderDirection?: string;\n month?: number[];\n year?: number[];\n type?: string[];\n impostoDevido?: string;\n darfEnviado?: string;\n darfPago?: string;\n updateAllClients?: boolean;\n processAllClients?: boolean;\n fromClients?: boolean\n selectClient?: string\n}\n\ninterface IClientsContext {\n clients: IClient[];\n setClients: any;\n darfs: IClient[];\n setDarfs: any;\n professionals: IProfessional[];\n getClients: (params?: GetClientsParams) => Promise;\n getProventos: (\n cpf: string,\n year?: number,\n type?: string,\n onFinish?: (data: any) => void\n ) => Promise;\n getPatrimonios: (\n cpf: string,\n type?: string,\n onFinish?: (data: any) => void\n ) => Promise;\n getNotifications: (cpf: string) => void;\n totalClients: number;\n totalDarfs: number;\n getProfessionals: (\n page?: number,\n value?: string,\n all?: boolean\n ) => Promise;\n totalProfessionals: number;\n typeProventos: string;\n setTypeProventos: any;\n searchClients: (search: string) => IClient[];\n searchProfessionals: (search: string) => IProfessional[];\n loginInClient: (client: IClient) => void;\n getClientToken: (client: IClient) => Promise;\n removeClient: (page: number) => Promise;\n removeProfessional: (data: any) => Promise;\n selectedClient: IClient | null;\n proventosLoading: any;\n patrimoniosLoading: any;\n selectedProfessional: IProfessional | null;\n setSelectedClient: Dispatch>;\n setProfessionalId: (id: string | null) => void;\n yearProventos: any;\n setSelectedProfessional: (professional: IProfessional | null) => void;\n newClient: IClient | null;\n createStep: number;\n verifyClientVelotax: (client: IClient) => Promise;\n createClient: (client: IClient, page?: number) => Promise;\n updateClient: (\n client: IClient,\n page?: number,\n filters?: any\n ) => Promise;\n updateProfessional: (client: IClient) => Promise;\n setCreateStep: (step: number) => void;\n setNewClient: (client: any) => void;\n setYearProventos: any;\n loadingGet: boolean;\n proventos: any;\n patrimonios: any;\n notificacoes: INotificacoes[];\n loadingNotificacoes: boolean;\n setNotificacoes: React.Dispatch>;\n professionalGet: boolean;\n setProventosLoading: any;\n loadingLogin: boolean;\n setLoadingGet: any;\n handleDownloadSheet: any;\n createClientDeleted: ClientDeleted;\n setCreateClientDeleted: React.Dispatch>;\n restoreClient: (username: string) => Promise;\n proventosFileUrl: string;\n patrimoniosFileUrl: string;\n getClientsUpdating: () => Promise\n}\n\nexport interface IClient {\n resp: any;\n _id: string;\n name: string;\n fullname?: string;\n email: string;\n phone?: string;\n username: string;\n type?: string;\n manager: string;\n manager_id: string;\n userPlanInfoVelotax: IPlanInfo;\n plan: any;\n planActive: boolean;\n clientPlanActive: boolean;\n hasPlanXp: boolean;\n planDueDate: number;\n planType: string;\n planName?: string;\n userId: string;\n month?: number;\n year?: number;\n id?: string;\n statusBolsa?: string;\n urlDarfBolsa?: string;\n statusExterior?: string;\n urlDarfExterior?: string;\n idDarfBolsa?: string;\n idDarfExterior?: string;\n impostoDevido?: number;\n cancelRecuring?: boolean;\n planCancelPending?: boolean;\n isConcierge?: boolean;\n wallet?: any;\n code?: Array;\n closeIntegrationBolsa?: boolean;\n closeIntegrationExterior?: boolean;\n notifications?: any[];\n updatingB3Integration?: boolean;\n b3IntegrationUpdated?: boolean\n}\n\nexport interface IPlanInfo {\n active: boolean;\n dueDate: number;\n type: string;\n paid: boolean;\n actionFree: boolean;\n}\n\nexport interface IProfessional {\n _id: string;\n name: string;\n fullname?: string;\n email: string;\n username: string;\n office: boolean;\n acesso: string;\n}\n\nexport interface ClientDeleted {\n showModal?: boolean;\n name?: string;\n cpf?: string;\n}\n\nexport interface INotificacoes {\n message: string;\n date: Date;\n viewed: boolean;\n viewedDate?: Date;\n}\n\nexport const ClientsContext = createContext(\n {} as IClientsContext\n);\n\nexport const ClientsProvider: React.FC = ({ children }) => {\n const [clients, setClients] = useState([]);\n const [typeProventos, setTypeProventos] = useState(\"\");\n const [yearProventos, setYearProventos] = useState(\n new Date().getFullYear()\n );\n const [proventos, setProventos] = useState([]);\n const [patrimonios, setPatrimonios] = useState([]);\n const [notificacoes, setNotificacoes] = useState([]);\n const [loadingNotificacoes, setLoadingNotificacoes] = useState(false);\n const [proventosLoading, setProventosLoading] = useState(false);\n const [patrimoniosLoading, setPatrimoniosLoading] = useState(false);\n const [totalClients, setTotalClients] = useState(0);\n const [darfs, setDarfs] = useState([]);\n const [totalDarfs, setTotalDarfs] = useState(0);\n const [proventosFileUrl, setProventosFileUrl] = useState(\"\");\n const [patrimoniosFileUrl, setPatrimoniosFileUrl] = useState(\"\");\n const [totalProfessionals, setTotalProfessionals] = useState(0);\n const [professionals, setProfessionals] = useState([]);\n const [selectedClient, setSelectedClient] = useState(null);\n const [professionalId, setProfessionalId] = useState(null);\n const [selectedProfessional, setSelectedProfessional] =\n useState(null);\n const [newClient, setNewClient] = useState(null);\n const [createStep, setCreateStep] = useState(1);\n const [loadingGet, setLoadingGet] = useState(false);\n const [loadingLogin, setLoadingLogin] = useState(false);\n const [professionalGet, setProfessionalGet] = useState(false);\n const [professionalSheetBuffer, setProfessionalSheetBuffer] = useState([]);\n const [buffer, setBuffer] = useState([]);\n const [createClientDeleted, setCreateClientDeleted] = useState<{\n showModal?: boolean;\n name?: string;\n cpf?: string;\n }>({});\n\n const createClient = async (data: any, currentPage?: number) => {\n setLoadingGet(true);\n const professional = !!data.professional;\n\n api\n .post(professional ? \"/assessores/\" : \"/clients/register\", {\n cpf: data.username.replace(/[_.-/-]/g, \"\"),\n name: data.name,\n id: `pro-velotax-${Math.random()}`,\n mail: data.email,\n phone: data.phone ?? \"\",\n acesso: data?.acesso ?? \"\",\n terms: true,\n professional,\n from: \"PRO\",\n plan: data.plan,\n assessores: data?.assessores,\n })\n .then((response) => {\n const person = professional ? \"Profissional\" : \"Cliente\";\n\n if (response?.data?.userDeleted) {\n setLoadingGet(false);\n setCreateClientDeleted({\n showModal: true,\n name: data.name,\n cpf: data.username,\n });\n } else {\n response.data.code === \"emailSended\"\n ? message.success(response.data.message)\n : message.success(`${person} ${data.name} cadastrado com sucesso`);\n\n professional\n ? getProfessionals()\n : getClients({ page: currentPage ?? 1 });\n }\n })\n .catch((err) => {\n if (\n err?.response?.status === 400 ||\n err?.response?.status === 409 ||\n err?.response?.status === 500\n )\n return message.error(\n err.response.data.message ||\n `Erro ao criar ${professional ? \"profissional\" : \"cliente\"}`\n );\n\n return message.error(\n `Erro ao criar ${professional ? \"profissional\" : \"cliente\"}`\n );\n });\n };\n const updateClient = async (data: any, page?: number, filters: any = {}) => {\n const professional = !!data.professional;\n let payload: any = {\n cpf: data.username.replace(/[_.-/-]/g, \"\"),\n name: data.name,\n id: `pro-velotax-${Math.random()}`,\n mail: data.email,\n phone: data.phone,\n terms: true,\n professional,\n from: \"PRO\",\n plan: data.plan,\n assessores: data?.assessores,\n tableEdit: data?.tableEdit,\n userId: data?.userId,\n };\n\n api\n .put(professional ? \"/assessores/\" : \"/clients/update\", {\n ...payload,\n })\n .then((response) => {\n const person = professional ? \"Profissional\" : \"Cliente\";\n\n response.data.code === \"emailSended\"\n ? message.success(response.data.message)\n : message.success(`${person} ${data.name} editado com sucesso`);\n\n setLoadingGet(true);\n\n professional ? getProfessionals() : getClients({ ...filters, page });\n })\n .catch((err) => {\n if (err?.response?.status === 400 || err?.response?.status === 409)\n return message.error(\n err.response.data.message ||\n `Erro ao atualizar ${professional ? \"profissional\" : \"cliente\"}`\n );\n\n return message.error(\n `Erro ao atualizar ${professional ? \"profissional\" : \"cliente\"}`\n );\n });\n };\n const updateProfessional = async (data: any) => {\n api\n .put(\"/assessores/update\", {\n cpf: data.username.replace(/[_.-/-]/g, \"\"),\n name: data.name,\n id: `pro-velotax-${Math.random()}`,\n mail: data.email,\n acesso: data.acesso,\n terms: true,\n from: \"PRO\",\n })\n .then((response) => {\n response.data.code === \"emailSended\"\n ? message.success(response.data.message)\n : message.success(`Assessor atualizado com sucesso`);\n\n setLoadingGet(true);\n\n getProfessionals();\n })\n .catch((err) => {\n if (err?.response?.status === 400 || err?.response?.status === 409)\n return message.error(\n err.response.data.message || \"Erro ao atualizar profissional\"\n );\n\n return message.error(`Erro ao criar profissional`);\n });\n };\n\n const getProventos = async (\n cpf: string,\n year?: number,\n type?: string,\n onFinish?: (data: any) => void\n ) => {\n if (cpf) {\n setProventosLoading(true);\n const { data } = await api.get(`/clients/get-proventos/${cpf}`, {\n params: {\n year,\n type,\n },\n });\n\n setProventosFileUrl(data.fileUrl);\n setTypeProventos(\"provento\");\n setProventos(data?.proventos || []);\n if (data?.updated) {\n getNotifications(cpf);\n }\n // setNotificacoes(data.notificacoes);\n setProventosLoading(false);\n if (onFinish) onFinish(data);\n }\n };\n\n const getPatrimonios = async (\n cpf: string,\n type?: string,\n onFinish?: (data: any) => void\n ) => {\n if (cpf) {\n setPatrimoniosLoading(true);\n const { data } = await api.get(`/clients/get-patrimonios/${cpf}`, {\n params: {\n type,\n },\n });\n\n setPatrimoniosFileUrl(data.fileUrl);\n setPatrimonios(data?.patrimonios || []);\n setPatrimoniosLoading(false);\n setSelectedClient((client) => ({\n ...client!,\n wallet: {\n ...client?.wallet,\n posicoes: data?.patrimonios || [],\n },\n }));\n if (onFinish) onFinish(data);\n }\n };\n\n const getNotifications = async (cpf: string) => {\n setLoadingNotificacoes(true);\n const { data } = await api.get(`/clients/notification/${cpf}`);\n setNotificacoes(data);\n setLoadingNotificacoes(false);\n };\n\n const verifyClientVelotax = async (client: IClient) => {\n const { data } = await api.get(\n `/clients/clientInfo/${client.username.replace(/[_.-/-]/g, \"\")}`\n );\n setCreateStep(3);\n if (data) {\n setNewClient({ ...data, name: data?.fullname || \"\" });\n }\n };\n\n const getClientsUpdating = useCallback(async () => {\n const cpfs: string[] = []\n clients.forEach(c => {\n if(c.updatingB3Integration) cpfs.push(c.username)\n })\n const { data } = await api.post('/clients/integration-updating', {\n clients: cpfs\n })\n \n const newClients = clients.map(c => {\n const stillUpdating = data.find((cpf: string) => cpf === c.username)\n if(c.updatingB3Integration && !stillUpdating) {\n if(c.username === selectedClient?.username) {\n setSelectedClient({...selectedClient, b3IntegrationUpdated: true, updatingB3Integration: false})\n }\n return {...c, b3IntegrationUpdated: true, updatingB3Integration: false}\n } else return c\n })\n \n setClients(newClients)\n }, [clients, selectedClient])\n\n const removeCurrent = useCallback((data: any)=> {\n const currentMonth = new Date().getMonth();\n const newData = data.filter((darf: any)=> {\n if (darf?.year == yearConfigPL4173 && darf?.month == currentMonth && isAntesTerceiroDiaUtil()) return;\n else return darf;\n })\n return newData;\n }, [])\n\n const getClients = useCallback(async (params?: GetClientsParams) => {\n const {\n page,\n pageSize,\n searchText,\n planActive,\n resp,\n type,\n darfEnviado,\n darfPago,\n getAllDarfStatus,\n orderBy,\n orderDirection,\n month,\n year,\n statusBolsa,\n statusExterior,\n updateAllClients,\n processAllClients,\n fromClients,\n selectClient\n } = params ?? {};\n setLoadingGet(true);\n try {\n const params = {\n page: page ?? 1,\n pageSize: pageSize ?? 10,\n planActive,\n resp,\n statusBolsa,\n statusExterior,\n searchText,\n impostoDevido: \"Impostos devidos\",\n darfEnviado,\n darfPago,\n orderBy,\n orderDirection,\n month,\n year,\n type,\n updateAllClients,\n processAllClients,\n fromClients\n };\n const response = await api.get(\n `/clients${getAllDarfStatus ? \"/allDarf\" : \"\"}`,\n { params }\n );\n if (updateAllClients) {\n message.info(`Atualizando os patrimônios de todos os seus clientes`, 5);\n } else {\n if (getAllDarfStatus) {\n const data = removeCurrent(response?.data?.data);\n setDarfs(data);\n setTotalDarfs(response?.data?.total);\n } else {\n setClients(response?.data?.data);\n setTotalClients(response?.data?.total);\n if(selectClient) {\n const cliente = (response?.data?.data as IClient[] || []).find((c: IClient) => c.username === selectClient)\n if(cliente) setSelectedClient(cliente)\n }\n }\n setBuffer(response?.data?.buffer?.data);\n }\n setLoadingGet(false);\n return {\n clients: response?.data?.data,\n buffer: response?.data?.buffer?.data,\n };\n } catch (err: any) {\n setLoadingGet(false);\n message.error(err?.response?.data?.message || \"Algo deu errado\");\n }\n }, []);\n\n const handleDownloadSheet = async (from: string, filters?: any) => {\n try {\n let localBuffer: any;\n if (from === \"Clientes\") {\n const resp = await getClients({ processAllClients: true });\n localBuffer = resp?.buffer || undefined;\n }\n if (from === \"DARFs\") {\n const resp = await getClients({\n processAllClients: true,\n getAllDarfStatus: true,\n month: filters?.month,\n year: filters?.year,\n });\n localBuffer = resp?.buffer || undefined;\n }\n const data = Uint8Array.from(\n from === \"Assessores\" ? professionalSheetBuffer : localBuffer ?? buffer\n );\n const blob = new Blob([data], { type: \"attach.contentType\" });\n FileSaver.saveAs(blob, `${from}.xlsx`);\n } catch (error: any) {\n message.error(error);\n }\n };\n\n const getProfessionals = useCallback(\n async (page?: number, value?: string, all?: boolean) => {\n setProfessionalGet(true);\n const response = await api.get(\"/assessores\", {\n params: {\n page,\n value,\n all,\n },\n });\n const profs = response?.data?.assessores.sort((a: any, b: any) => a?.name.localeCompare(b?.name));\n\n setProfessionalSheetBuffer(response.data?.buffer?.data);\n setProfessionals(profs);\n setTotalProfessionals(response.data.count);\n setProfessionalGet(false);\n },\n []\n );\n\n const searchClients = (search: string) => {\n const searchText = search.toLocaleLowerCase();\n return clients.filter(\n (client) =>\n client.email?.toLocaleLowerCase()?.includes(searchText) ||\n client.name?.toLocaleLowerCase()?.includes(searchText) ||\n client.username?.replace(/[.-]/g, \"\")?.includes(searchText)\n );\n };\n\n const searchProfessionals = (search: string) => {\n const searchText = search.toLocaleLowerCase();\n return professionals.filter(\n (client) =>\n client.email?.toLocaleLowerCase()?.includes(searchText) ||\n client.name?.toLocaleLowerCase()?.includes(searchText) ||\n client.username?.replace(/[.-]/g, \"\")?.includes(searchText)\n );\n };\n\n const getClientToken = async (client: IClient) => {\n const { data } = await api.post(`/clients/login/${client.username}`);\n return data.token;\n };\n\n const loginInClient = async (client: IClient) => {\n try {\n setLoadingLogin(true);\n const token = await getClientToken(client);\n setLoadingLogin(false);\n window.open(\n `${process.env.REACT_APP_VELOTAX_URL}/p/sso/${token}`,\n isMobile() ? \"_self\" : \"_blank\"\n );\n } catch (err) {\n setLoadingLogin(false);\n }\n };\n\n const removeClient = async (page: number) => {\n await api.delete(`/clients/${selectedClient?._id}`, {\n data: { professionalId },\n });\n getClients({ page });\n };\n\n const removeProfessional = async (data: any) => {\n await api.delete(`/assessores/delete`, { data: { cpf: data.username } });\n getProfessionals();\n };\n\n const restoreClient = async (username: string) => {\n try {\n setLoadingGet(true);\n const { data } = await api.post(`/clients/restore`, { username });\n if (data?.code === 403) message.error(data?.message);\n else {\n message.success(data.message);\n getClients();\n }\n } catch (error: any) {\n message.error(\n \"Não foi possível recuperar informações do cliente. Tente novamente mais tarde\"\n );\n }\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useClients = (): IClientsContext => useContext(ClientsContext);\n","import { useEffect, useState } from \"react\";\nimport { BsCalendar3 } from \"react-icons/bs\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Row, Tooltip, Typography, message } from \"antd\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport { DownloadIcon } from \"../../pages/Darfs/styles\";\nimport { TabelasBolsa, TabelasExterior } from \"./table\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport { formatCurrency, monthsExtended, thirdBusinessDayAndMonth } from \"../../utils\";\nimport { LoadingContainer, StyledTable, TitleContainer } from \"./styles\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\n\ninterface IProps {\n modalOperationsOpen: boolean;\n setModalOperationsOpen: React.Dispatch>;\n clientsSelected: Array;\n handleDarfSend: (\n sendToWhatsapp?: boolean,\n directDownload?: boolean,\n inputClients?: Array\n ) => Promise;\n handleDarfDownload: (url?: string, idDarf?: string) => Promise;\n}\n\nconst minDarfPrice = 10;\n\nexport const OperationModal = ({\n modalOperationsOpen,\n setModalOperationsOpen,\n clientsSelected,\n handleDarfDownload,\n handleDarfSend,\n}: IProps) => {\n const item = clientsSelected[0];\n const [transaction, setTransaction] = useState();\n const [index, setIndex] = useState(0);\n const { loadingGet, setLoadingGet } = useClients();\n const [showDarfTooltip, setShowDarfToolTip] = useState(false);\n\n const isExterior = item?.type === 'Exterior'\n const oldModel = (item?.year ?? 2023) < yearConfigPL4173\n\n function obterNomeMesPassado() {\n const hoje = new Date();\n let mesAnterior = hoje.getMonth() - 1;\n\n // Tratamento especial para janeiro (mês 0)\n if (mesAnterior < 0) {\n mesAnterior = 11; // Dezembro (mês 11)\n }\n\n const nomeMesAnterior = new Date(hoje.getFullYear(), mesAnterior, 1)\n .toLocaleString('default', { month: 'long' });\n\n // Transforma a primeira letra em maiúscula\n const nomeMesAnteriorComMaiuscula = nomeMesAnterior.charAt(0).toUpperCase() + nomeMesAnterior.slice(1);\n\n return nomeMesAnteriorComMaiuscula;\n }\n\n useEffect(() => {\n if (item?.username && modalOperationsOpen) {\n setLoadingGet(true);\n api\n .get(`/darf/transaction/${item.username}`, {\n params: {\n month: item?.month,\n year: item?.year,\n type: item?.type,\n payed: item?.darfPago,\n idDarf:\n item?.type?.toLowerCase() === \"bolsa\"\n ? item?.idDarfBolsa\n : item?.idDarfExterior,\n nAtualizarDarfsPassadas: false,\n nAtualizarIrrf: true,\n atualizouImpostoAcumulado: false,\n nAtualizarPrejuizosAcumulados: true,\n atualizarTotalmente: false,\n atualizouCorretagem: false,\n },\n })\n .then((res) => {\n setTransaction(res.data);\n })\n .catch((err) => {\n message.error(\n \"Não foi possível buscar operações. Tente novamente mais tarde\"\n );\n setModalOperationsOpen(false);\n })\n .finally(() => {\n setLoadingGet(false);\n });\n } else if (!modalOperationsOpen) {\n setTransaction(undefined);\n }\n }, [setModalOperationsOpen, modalOperationsOpen, item, setLoadingGet]);\n\n const valorPrincipal =\n item?.type === \"Exterior\"\n ? Math.max((transaction?.impostoDevido || 0) - (transaction?.irrfExterior ?? 0), 0)\n : Math.max(\n 0,\n Number(\n (transaction?.impostoComumFinal || 0) +\n (transaction?.impostoDTFinal || 0) +\n (transaction?.impostoFIIFinal || 0)\n ) +\n (Number(transaction?.[\"impostoAcumulado\"] || 0) -\n Number(transaction?.[\"irrfTotal\"] || 0))\n );\n\n const impostoTotal =\n item?.type === \"Exterior\"\n ? transaction?.impostoDevido -\n (transaction?.irrfExterior ?? 0)\n : transaction?.impostoTotalFinal;\n\n const impostoDevido =\n item?.type === \"Exterior\"\n ? transaction?.impostoDevido || 0\n : Number(\n (transaction?.impostoComumFinal || 0) +\n (transaction?.impostoDTFinal || 0) +\n (transaction?.impostoFIIFinal || 0)\n );\n\n return (\n setModalOperationsOpen(false)}\n title={\n \n \n {`${monthsExtended[(clientsSelected[0]?.month || 1) - 1]} de ${clientsSelected[0]?.year\n }`}\n \n }\n footer={\n impostoTotal > 0 ? (\n \n \n {\n item?.type === \"Bolsa\" && thirdBusinessDayAndMonth(clientsSelected[0]).disabled\n ?\n \n {clientsSelected[0]?.year <= 2023 && !isExterior && <>\n }\n onClick={() => {\n setShowDarfToolTip(!showDarfTooltip)\n\n setTimeout(() => {\n setShowDarfToolTip(false)\n }, 1500);\n }}\n >\n {isExterior && !oldModel ? 'Enviar relatório' : 'Baixar DARF'}\n \n }\n \n :\n <>{((clientsSelected[0]?.year <= 2023 && isExterior) || !isExterior) && }\n onClick={() => {\n if (\n (item.urlDarfExterior ||\n item.urlDarfBolsa ||\n item.idDarfBolsa ||\n item.idDarfExterior) &&\n item?.darfEnviado\n ) {\n handleDarfDownload(\n item.type === \"Bolsa\"\n ? item.urlDarfBolsa\n : item.urlDarfExterior,\n item.type === \"Bolsa\"\n ? item.idDarfBolsa\n : item.idDarfExterior\n );\n message.success(\"Transferência do DARF realizada\");\n } else {\n handleDarfSend(false, true, [item]);\n }\n }}\n disabled={\n !clientsSelected || clientsSelected.length === 0 || loadingGet || thirdBusinessDayAndMonth(clientsSelected[0]).disabled\n }\n >\n {isExterior && !oldModel ? 'Enviar relatório' : 'Baixar DARF'}\n }\n }\n \n \n ) : null\n }\n bodyStyle={{ position: \"relative\" }}\n >\n {item?.type === \"Bolsa\" ? (\n \n ) : (\n \n )}\n {((clientsSelected[0]?.year <= 2023 && isExterior) || !isExterior) && \n \n \n Imposto Total\n \n \n \n \n {formatCurrency(Math.max(impostoTotal, 0))}\n \n \n }\n {((clientsSelected[0]?.year <= 2023 && isExterior) || !isExterior) && \n \n (+) Valor do principal\n {formatCurrency(valorPrincipal)}\n \n \n (+) Imposto devido\n {formatCurrency(impostoDevido)}\n \n {(!isExterior || oldModel) && \n \n (+) DARFs passados abaixo de R$ 10\n \n {formatCurrency(transaction?.impostoAcumulado)}\n }\n {(!isExterior || !oldModel) && (\n \n \n (-) Imposto de Renda Retido na Fonte\n \n {formatCurrency(transaction?.irrfTotal || transaction?.irrfExterior)}\n \n )}\n {(!isExterior || oldModel) &&\n <>\n \n (+) Multa de atraso\n \n {formatCurrency(valorPrincipal < minDarfPrice ? 0 : transaction?.multaAux || transaction?.multa)}\n \n \n \n (+) Juros e/ou encargos de atraso\n \n {formatCurrency(valorPrincipal < minDarfPrice ? 0 : transaction?.jurosAux || transaction?.juros)}\n \n \n \n }\n }\n\n {loadingGet && (\n \n \n \n )}\n \n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 10C2 5.58172 5.58172 2 10 2C14.4183 2 18 5.58172 18 10C18 14.4183 14.4183 18 10 18M2.88889 17.1111L5.55556 14.4444M6.44444 18L7.33333 17.1111M2 13.5556L2.88889 12.6667M6.54185 10.1665L8.5234 10.9995C8.7376 11.0896 8.90799 11.26 8.99807 11.4742L9.83274 13.4588C9.97866 13.8053 10.3268 14.0226 10.7022 14.0014C11.0776 13.9802 11.3991 13.7252 11.5052 13.3645L13.0761 8.02688C13.168 7.71481 13.0821 7.37745 12.8521 7.14741C12.622 6.91737 12.2847 6.83142 11.9726 6.92334L6.63603 8.49401C6.27526 8.60005 6.02021 8.92159 5.99907 9.29703C5.97793 9.67247 6.19527 10.0206 6.54185 10.1665Z\",\n stroke: \"black\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgSend(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSend);\nexport default __webpack_public_path__ + \"static/media/send.14705f0a.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 18,\n rx: 9,\n fill: \"#DD2244\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.5 6.5L11.5 11.5M11.5 6.5L6.5 11.5\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgXRed(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgXRed);\nexport default __webpack_public_path__ + \"static/media/XRed.aaf12e95.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 3.33333H14M2 3.33333H9.33333M6.66667 8H14M2 8H4M12 12.6667H14M2 12.6667H9.33333M11.6095 2.39052C12.1302 2.91122 12.1302 3.75544 11.6095 4.27614C11.0888 4.79684 10.2445 4.79684 9.72385 4.27614C9.20315 3.75545 9.20315 2.91122 9.72385 2.39052C10.2445 1.86983 11.0888 1.86983 11.6095 2.39052ZM6.27614 7.0572C6.79684 7.5779 6.79684 8.42212 6.27614 8.94282C5.75544 9.46352 4.91122 9.46352 4.39052 8.94282C3.86982 8.42212 3.86982 7.5779 4.39052 7.0572C4.91122 6.5365 5.75544 6.5365 6.27614 7.0572ZM11.6095 11.7239C12.1302 12.2446 12.1302 13.0888 11.6095 13.6095C11.0888 14.1302 10.2445 14.1302 9.72385 13.6095C9.20315 13.0888 9.20315 12.2446 9.72385 11.7239C10.2445 11.2032 11.0888 11.2032 11.6095 11.7239Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgFiltro(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFiltro);\nexport default __webpack_public_path__ + \"static/media/filtro.d769fa77.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 18,\n rx: 9,\n fill: \"#0A9E5A\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.4375 6.8125L7.92578 11.1875L5.875 9.19886\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgCheckGreen(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckGreen);\nexport default __webpack_public_path__ + \"static/media/CheckGreen.ba9b6e14.svg\";\nexport { ForwardRef as ReactComponent };","import { HiOutlineDownload } from \"react-icons/hi\";\nimport React, { useEffect, useState } from \"react\";\nimport { BsEye, BsListUl, BsWhatsapp } from \"react-icons/bs\";\nimport {\n AiOutlineSearch,\n AiOutlineDownload,\n AiOutlineArrowLeft,\n} from \"react-icons/ai\";\nimport {\n LoadingOutlined,\n MailOutlined,\n InfoCircleOutlined,\n} from \"@ant-design/icons\";\nimport {\n Typography,\n Input,\n Row,\n Col,\n Table,\n Modal,\n message,\n TablePaginationConfig,\n Tooltip,\n Checkbox,\n Switch,\n Select,\n Dropdown,\n MenuProps,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { getTooltipMessage } from \"./tooltip\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { OperationModal } from \"../../components/OperationModal\";\nimport { IClient, useClients } from \"../../contexts/ClientsContext\";\nimport { ReactComponent as SendIcon } from \"../../assets/icons/send.svg\";\nimport { ReactComponent as DenyIcon } from \"../../assets/icons/XRed.svg\";\nimport { ReactComponent as FilterIcon } from \"../../assets/icons/filtro.svg\";\nimport { ReactComponent as CheckIcon } from \"../../assets/icons/CheckGreen.svg\";\nimport {\n Container,\n Content,\n DarfAutomaticoContainer,\n DropdownButton,\n} from \"./styles\";\nimport {\n formatCurrency,\n getBrowser,\n isMobile,\n maskCpf,\n monthsExtended,\n} from \"../../utils\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\nimport { SendDarfModal } from \"../../components/Darf/SendDarfModal\";\n\ninterface IFilters {\n text: string;\n value: number;\n}\n\nexport const dayFilters: Array = [];\nfor (let d = 1; d <= 31; d++) {\n dayFilters.push({\n text: d.toString(),\n value: d,\n });\n}\n\nexport const monthFilters: Array = monthsExtended.map((m, i) => ({\n text: m,\n value: i + 1,\n}));\nexport const yearFilters: Array = [];\nfor (let y = 2020; y <= 2025; y++) {\n yearFilters.push({\n text: y.toString(),\n value: y,\n });\n}\n\nconst monthsOrder = [\n \"Janeiro\",\n \"Fevereiro\",\n \"Março\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n];\n\nvar debounce: NodeJS.Timeout;\n\nconst tooltip: any = () => (\n \n O usuário já possui uma conta cadastrada na plataforma. Enviamos um e-mail\n solicitando a sua permissão de acesso à conta e estamos aguardando a\n confirmação do usuário.\n

\n);\n\nconst initialData = {\n year: 2024\n}\n\nexport const Darfs: React.FC = () => {\n const { user, getUserInfo } = useAuth();\n const {\n loadingGet,\n setLoadingGet,\n darfs,\n getClients,\n totalDarfs,\n handleDownloadSheet,\n } = useClients();\n\n const [loading, setLoading] = useState(false);\n const [keys, setKeys] = useState([]);\n const [filters, setFilters] = useState({ year: [initialData.year] });\n const [searchText, setSearchText] = useState(\"\");\n const [emailFlow, setEmailFlow] = useState(false);\n const [sendToResp, setSendToResp] = useState(false);\n const [whatsappFlow, setWhatsappFlow] = useState(false);\n const [currentPage, setCurrentPage] = useState(1);\n const [appliedFilters, setAppliedFilters] = useState({ year: [initialData.year] });\n const [showFilterModal, setShowFilterModal] = useState(false);\n const [showSendDarfModal, setShowSendDarfModal] = useState(false);\n const [clientsSelected, setClientsSelected] = useState([]);\n const [allDarfsSelected, setAllDarfsSelected] = useState(false);\n const [modalOperationsOpen, setModalOperationsOpen] =\n useState(false);\n const [whatsappRedirectURL, setWhatsappRedirectURL] = useState<\n string | undefined\n >(undefined);\n const [pagination] = useState({\n current: currentPage,\n pageSize: 10,\n defaultPageSize: 10,\n showSizeChanger: false, // mudar para true quando o back estiver aceitando\n pageSizeOptions: [\"5\", \"10\", \"20\", \"50\", \"100\"],\n });\n\n const handleDisabled = (item: any) => {\n const codes = (item.code || []).filter(\n (el: any) =>\n el?.escritorioId?.toString() === user?.user?.officeId?.toString() ||\n el?.assessorId?.toString() === user?.user?.assessorId?.toString()\n );\n return !codes.some((el: any) => !!el?.isAuthorized) ?? false;\n };\n\n const handleSearch = (value: string) => {\n setSearchText(value);\n if (debounce) clearTimeout(debounce);\n debounce = setTimeout(() => {\n getClients({\n ...filters,\n searchText: value,\n page: pagination.current,\n pageSize: pagination.pageSize,\n getAllDarfStatus: true,\n planActive: true,\n });\n }, 1000);\n };\n\n const handleDarfSend = async (\n sendToWhatsapp?: boolean,\n directDownload?: boolean,\n inputClients?: Array\n ) => {\n try {\n const clients = (allDarfsSelected && clientsSelected.length == 10)\n ? (\n await getClients({\n getAllDarfStatus: true,\n planActive: true,\n year: filters.year,\n processAllClients: true,\n })\n ).clients\n : clientsSelected.length > 0\n ? clientsSelected\n : inputClients || [];\n\n if (whatsappRedirectURL) {\n window.open(whatsappRedirectURL, \"_blank\");\n setWhatsappRedirectURL(undefined);\n } else {\n setLoadingGet(true);\n if (sendToWhatsapp) {\n setWhatsappRedirectURL(\"loading\");\n }\n const { data } = await api.post(\"/darf/send\", {\n clients: clients,\n sendToResp,\n sendToWhatsapp,\n });\n const phone = clients[0].phone;\n const singleClient = data[0] || {};\n const shortPath = singleClient?.shortPath;\n\n const isExterior = singleClient?.type === 'Exterior'\n const oldModel = (singleClient?.year ?? 2023) < yearConfigPL4173\n const darfLabel = isExterior && !oldModel ? 'relatório' : 'DARF' \n\n if (shortPath && sendToWhatsapp) {\n const text = `Olá, ${\n singleClient?.name || \"Cliente\"\n }. Segue seu ${darfLabel} do mês ${singleClient?.month}/${\n singleClient?.year\n }: ${shortPath}`;\n const url = `https://wa.me${\n phone ? `/55${phone}` : \"\"\n }?text=${text.replaceAll(\" \", \"%20\")}`;\n setWhatsappRedirectURL(undefined);\n window.open(url, \"_blank\");\n }\n if (!sendToWhatsapp) {\n if (directDownload) {\n handleDarfDownload(shortPath);\n } else {\n message.success(`Envio de ${darfLabel}s realizado`);\n setWhatsappRedirectURL(undefined);\n }\n }\n getClients({ ...filters, getAllDarfStatus: true, planActive: true });\n }\n setShowSendDarfModal(false);\n setWhatsappFlow(false);\n setEmailFlow(false);\n setSendToResp(false);\n } catch (error: any) {\n setWhatsappRedirectURL(undefined);\n if (error.message.includes(\"400\")) {\n message.error(\n \"É necessário contratar o plano para emitir e pagar darfs\"\n );\n } else {\n message.error(\"Algo errado aconteceu, tente novamente mais tarde.\");\n }\n }\n setLoadingGet(false);\n };\n\n const handleDarfDownload = async (url?: string, idDarf?: string) => {\n if (url) {\n window.open(url);\n } else if (idDarf) {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const { data } = await apiBolsa.get(`/darf/download/${idDarf}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n window.open(data?.url || \"\");\n }\n };\n\n useEffect(() => {\n getClients({ getAllDarfStatus: true, planActive: true, year: filters?.year });\n }, [getClients]);\n\n useEffect(() => {\n if (allDarfsSelected) {\n setKeys((darfs ?? []).map((el) => el.id || \"\"));\n }\n }, [darfs, allDarfsSelected]);\n\n const handleSwitchDarfAutomatico = async () => {\n try {\n setLoading(true);\n const { enviarDarfAutomaticamente } = user?.user;\n await api.post(`/darf/enviarDarfAutomaticamente`, {\n enviarDarfAutomaticamente: !enviarDarfAutomaticamente,\n });\n await getUserInfo();\n setLoading(false);\n if (!enviarDarfAutomaticamente) {\n message.success(\n \"Os DARFs serão enviados para seus clientes automaticamente\"\n );\n } else {\n message.info(\n \"Os DARFs não serão mais enviados para seus clientes automaticamente\"\n );\n }\n } catch (error) {\n setLoading(false);\n message.error(\n \"Não foi possível registrar informação. Tente novamente mais tarde.\"\n );\n }\n };\n\n const Drop = (item: any, index: any, isDisabled: boolean) => {\n const handleClick = () => {\n setShowSendDarfModal(true);\n setClientsSelected([item]);\n setKeys([item.id]);\n };\n\n const items: MenuProps[\"items\"] = [\n {\n key: 1,\n label: (\n {\n setClientsSelected([item]);\n setModalOperationsOpen(true);\n }}\n >\n \n Ver operações\n \n ),\n },\n {\n key: 2,\n label: (\n {\n if (\n (item.urlDarfExterior ||\n item.urlDarfBolsa ||\n item.idDarfBolsa ||\n item.idDarfExterior) &&\n //@ts-ignore\n item?.darfEnviado\n ) {\n handleDarfDownload(\n item.type === \"Bolsa\"\n ? item.urlDarfBolsa\n : item.urlDarfExterior,\n item.type === \"Bolsa\" ? item.idDarfBolsa : item.idDarfExterior\n );\n message.success(\"Transferência do DARF realizada\");\n } else {\n handleDarfSend(false, true, [item]);\n }\n }}\n >\n \n Baixar DARF\n \n ),\n },\n ];\n\n return (\n
\n \n \n Enviar DARF\n \n \n \n \n
\n );\n };\n\n return (\n \n \n \n \n \n Impostos devidos\n \n \n \n \n \n \n \n \n }\n onClick={() => setShowSendDarfModal(true)}\n disabled={\n !clientsSelected || clientsSelected.length === 0\n }\n >\n Enviar DARFs\n \n \n \n \n }\n disabled={darfs.length === 0}\n onClick={() => handleDownloadSheet(\"DARFs\", filters)}\n >\n Baixar planilha\n \n \n \n \n \n \n \n }\n onClick={() => setShowFilterModal(true)}\n className={\n Object.keys(appliedFilters).filter(\n (key) => (appliedFilters[key]?.length || 0) > 0\n ).length > 1\n ? \"btn-filter filtro-aplicado\"\n : \"btn-filter\"\n }\n >\n Filtrar clientes\n \n \n \n }\n onChange={(e) => handleSearch(e.target.value)}\n />\n \n \n \n \n \n \n {\n if (info?.type === \"all\" && selectedRows?.length) {\n setAllDarfsSelected(true);\n } else setAllDarfsSelected(false);\n setClientsSelected(selectedRows);\n setKeys((selectedRows ?? []).map((el) => el.id || \"\"));\n },\n getCheckboxProps: (record: any) => ({\n disabled: handleDisabled(record),\n }),\n }}\n onChange={(pagination, body, sorter) => {\n const order: any = sorter;\n setCurrentPage(pagination.current ?? 1);\n setFilters(filters);\n setAppliedFilters(filters);\n getClients({\n searchText,\n page: pagination.current,\n pageSize: pagination.pageSize,\n month: filters.month || [],\n year: filters.year || [2023],\n type: filters.type || [],\n planActive: true,\n impostoDevido: (filters.impostoDevido || [])[0],\n darfEnviado: (filters.darfEnviado || [])[0],\n darfPago: (filters.darfPago || [])[0],\n orderBy: order?.field || undefined,\n orderDirection: order?.order || undefined,\n getAllDarfStatus: true,\n });\n }}\n locale={{\n filterReset: \"Limpar\",\n }}\n columns={[\n {\n title: \"Dados do cliente\",\n sorter: (a, b) => a.name.localeCompare(b.name),\n render: (_, item) => (\n <>\n \n \n {item.name}\n \n \n \n \n {maskCpf(item.username)}\n \n {handleDisabled(item) && (\n \n \n \n \n \n )}\n \n {/* \n {item.email}\n \n \n {numberToPhone(item.phone || \"\")}\n */}\n \n ),\n },\n {\n align: \"center\",\n title: \"Mês\",\n dataIndex: \"month\",\n sorter: (a: any, b: any) =>\n monthsOrder.indexOf(a.month) - monthsOrder.indexOf(b.month),\n render: (_, data) => {\n return (\n \n \n {monthsExtended[Number(data.month) - 1]}\n \n \n );\n },\n },\n {\n align: \"center\",\n title: \"Ano\",\n dataIndex: \"year\",\n sorter: (a: any, b: any) => a.year - b.year,\n render: (_, data) => {\n return (\n \n {data.year}\n \n );\n },\n },\n {\n align: \"center\",\n title: \"Mercado\",\n dataIndex: \"type\",\n sorter: (a: any, b: any) => a.type.localeCompare(b.type),\n render: (type, record) =>
{type}
,\n },\n {\n align: \"center\",\n title: \"Valor principal\",\n dataIndex: \"impostoDevido\",\n sorter: (a: any, b: any) => a.impostoDevido - b.impostoDevido,\n render: (impostoDevido, record) => (\n
\n {impostoDevido < 10\n ? \"Não há impostos\"\n : formatCurrency(Number(impostoDevido))}\n
\n ),\n },\n {\n align: \"center\",\n title: \"Enviado?\",\n dataIndex: \"darfEnviado\",\n sorter: (a: any, b: any) =>\n a.darfEnviado === b.darfEnviado\n ? 0\n : a.darfEnviado\n ? -1\n : 1,\n render: (darfEnviado, record) => {\n return (\n
\n {(record?.impostoDevido || 0) < 10 ? (\n \"N/A\"\n ) : (\n <>\n {darfEnviado ? : }\n {darfEnviado ? \"Sim\" : \"Não\"}\n \n )}\n
\n );\n },\n },\n {\n align: \"center\",\n title: \"Pago?\",\n dataIndex: \"darfPago\",\n sorter: (a: any, b: any) =>\n a.darfPago === b.darfPago ? 0 : a.darfPago ? -1 : 1,\n render: (darfPago, record) => {\n return (\n
\n {(record?.impostoDevido || 0) < 10 ? (\n \"N/A\"\n ) : (\n <>\n {darfPago ? : }\n {darfPago ? \"Sim\" : \"Não\"}\n \n )}\n
\n );\n },\n },\n {\n title: \"\",\n dataIndex: \"orderBy\",\n render: (_, item, index) =>\n Drop(\n item,\n index,\n Number(item.impostoDevido || 0) < 10 ||\n handleDisabled(item)\n ),\n },\n ]}\n />\n \n \n \n \n {\n setFilters(appliedFilters);\n setShowFilterModal(false);\n }}\n >\n \n \n \n \n Mês\n \n \n trigger.parentNode}\n options={monthsExtended.map((m, i) => ({\n label: m,\n value: i + 1,\n }))}\n onChange={(month) => {\n setFilters((filters: any) => ({ ...filters, month }));\n }}\n />\n \n \n \n \n \n \n Ano\n \n \n trigger.parentNode}\n onChange={(year) => {\n setFilters((filters: any) => ({ ...filters, year }));\n }}\n />\n \n \n \n \n \n \n Mercado\n \n \n {\n setFilters((filters: any) => ({\n ...filters,\n type,\n }));\n }}\n >\n \n \n Bolsa\n \n \n Exterior\n \n \n \n \n \n \n {/* \n \n \n Imposto devido\n \n \n {\n console.log('Teste', event.target.value)\n setFilters((filters: any) => ({\n ...filters,\n impostoDevido: event.target.value,\n }));\n }}\n >\n \n \n Impostos devidos\n \n \n Não há impostos\n \n \n \n \n \n */}\n \n \n \n DARF Enviado?\n \n \n {\n setFilters((filters: any) => ({\n ...filters,\n darfEnviado: event[0],\n }));\n }}\n >\n \n \n Sim\n \n \n Não\n \n \n \n \n \n \n \n \n \n DARF Pago?\n \n \n {\n setFilters((filters: any) => ({\n ...filters,\n darfPago: event[0],\n }));\n }}\n >\n \n \n Sim\n \n \n Não\n \n \n \n \n \n \n \n {\n setAppliedFilters(filters);\n setCurrentPage(1);\n getClients({\n searchText,\n page: 1,\n pageSize: pagination.pageSize,\n month: filters.month || [],\n year: filters.year || [],\n type: filters.type || [],\n impostoDevido: \"Impostos devidos\",\n planActive: true,\n darfEnviado: filters.darfEnviado,\n darfPago: filters.darfPago,\n orderBy: (filters.orderBy || [])[0],\n getAllDarfStatus: true,\n });\n setTimeout(() => {\n setShowFilterModal(false);\n }, 500);\n }}\n >\n Aplicar\n \n {!!filters.darfEnviado ||\n !!filters.darfPago ||\n !!filters.year ||\n !!filters.type ||\n !!filters.month ? (\n \n {\n setFilters({});\n }}\n >\n Limpar\n \n \n ) : null}\n \n \n \n
\n {(user?.user?.office || user?.user?.admin) && (\n \n : \"on\"}\n unCheckedChildren={loading ? : \"off\"}\n />\n Envio automático do DARF\n \n \n \n \n )}\n
\n );\n};\n","import { message } from \"antd\";\nimport { IClient } from \"../../contexts/ClientsContext\";\nimport api from \"../../services/api\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\n\ninterface IHandleDarfSend {\n clientsSelected: IClient[];\n sendToWhatsapp?: boolean;\n directDownload?: boolean;\n inputClients?: Array;\n whatsappRedirectURL?: string;\n setWhatsappRedirectURL: any;\n setLoadingGet: any;\n sendToResp: any;\n setSendToResp: any;\n setShowSendDarfModal: any;\n filters: any;\n getClients: any;\n setEmailFlow: any;\n setWhatsappFlow: any;\n}\nexport const handleDarfSend = async ({\n sendToWhatsapp,\n directDownload,\n inputClients,\n clientsSelected,\n whatsappRedirectURL,\n setLoadingGet,\n setWhatsappRedirectURL,\n sendToResp,\n setSendToResp,\n setShowSendDarfModal,\n filters,\n getClients,\n setEmailFlow,\n setWhatsappFlow,\n}: IHandleDarfSend) => {\n try {\n const clients =\n clientsSelected.length > 0 ? clientsSelected : inputClients || [];\n if (whatsappRedirectURL) {\n window.open(whatsappRedirectURL, \"_blank\");\n setWhatsappRedirectURL(undefined);\n } else {\n setLoadingGet(true);\n if (sendToWhatsapp) {\n setWhatsappRedirectURL(\"loading\");\n }\n const { data } = await api.post(\"/darf/send\", {\n clients: clients,\n sendToResp,\n sendToWhatsapp,\n });\n const phone = clients[0].phone;\n const singleClient = data[0] || {};\n const shortPath = singleClient?.shortPath;\n\n const isExterior = singleClient?.type === 'Exterior'\n const oldModel = (singleClient?.year ?? 2023) < yearConfigPL4173\n const darfLabel = isExterior && !oldModel ? 'relatório' : 'DARF'\n\n if (shortPath && sendToWhatsapp) {\n const text = `Olá, ${\n singleClient?.name || \"Cliente\"\n }. Segue seu ${darfLabel} do mês ${singleClient?.month}/${\n singleClient?.year\n }: ${shortPath}`;\n const url = `https://wa.me${\n phone ? `/55${phone}` : \"\"\n }?text=${text.replaceAll(\" \", \"%20\")}`;\n setWhatsappRedirectURL(undefined);\n window.open(url, \"_blank\");\n }\n if (!sendToWhatsapp) {\n if (directDownload) {\n handleDarfDownload(shortPath);\n } else {\n message.success(`Envio de ${darfLabel}s realizado`);\n setWhatsappRedirectURL(undefined);\n }\n }\n setShowSendDarfModal(false);\n setWhatsappFlow(false);\n setEmailFlow(false);\n setSendToResp(false);\n getClients({ ...filters, getAllDarfStatus: true, planActive: true });\n }\n } catch (error: any) {\n setWhatsappRedirectURL(undefined);\n if (error.message.includes(\"400\")) {\n message.error(\"É necessário contratar o plano para emitir e pagar darfs\");\n } else {\n message.error(\"Algo errado aconteceu, tente novamente mais tarde.\");\n }\n }\n setLoadingGet(false);\n};\n\nexport const handleDarfDownload = async (url?: string, idDarf?: string) => {\n if (url) {\n window.open(url, \"_blank\");\n } else if (idDarf) {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const { data } = await apiBolsa.get(`/darf/download/${idDarf}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n window.open(data?.url || \"\", \"_blank\");\n }\n};\n","import { useState } from \"react\";\nimport { BsWhatsapp } from \"react-icons/bs\";\nimport { AiOutlineArrowLeft } from \"react-icons/ai\";\nimport { Checkbox, Col, Modal, Row, Tooltip, Typography } from \"antd\";\nimport {\n InfoCircleOutlined,\n LoadingOutlined,\n MailOutlined,\n} from \"@ant-design/icons\";\nimport Button from \"../Button\";\nimport { getBrowser } from \"../../utils\";\nimport { handleDarfSend } from \"./handlers\";\nimport { getTooltipMessage } from \"../../pages/Darfs/tooltip\";\nimport { IClient, useClients } from \"../../contexts/ClientsContext\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\n\ninterface IProps {\n showSendDarfModal: boolean;\n setShowSendDarfModal: any;\n whatsappRedirectURL: string | undefined;\n setWhatsappRedirectURL: any;\n clientsSelected: IClient[];\n setClientsSelected: any;\n setKeys?: any;\n sendToResp: boolean;\n setSendToResp: any;\n}\n\nexport const SendDarfModal = ({\n setKeys,\n sendToResp,\n setSendToResp,\n clientsSelected,\n showSendDarfModal,\n setClientsSelected,\n whatsappRedirectURL,\n setShowSendDarfModal,\n setWhatsappRedirectURL,\n}: IProps) => {\n const [emailFlow, setEmailFlow] = useState(false);\n const [whatsappFlow, setWhatsappFlow] = useState(false);\n const { loadingGet, getClients, setLoadingGet } = useClients();\n\n const oldModel = !!clientsSelected.find(c => ((c?.year || 2023) < yearConfigPL4173 && c?.type === 'Exterior') || c?.type !== 'Exterior')\n const darfLabel = oldModel ? 'DARF' : 'relatório'\n\n return (\n 1) && !loadingGet\n ? \"Confirmar envio\"\n : `Enviar ${oldModel ? 'DARF' : 'Relatório'}`\n }\n onCancel={() => {\n setShowSendDarfModal(false);\n setEmailFlow(false);\n setWhatsappFlow(false);\n setWhatsappRedirectURL(undefined);\n setClientsSelected([]);\n setKeys([]);\n }}\n >\n {loadingGet && (\n <>\n \n \n \n {whatsappRedirectURL === \"loading\"\n ? `Por favor, aguarde um instante enquanto geramos o ${darfLabel}. Logo após você poderá enviá-lo por Whatsapp.`\n : `Por favor, aguarde um instante enquanto geramos e enviamos os ${darfLabel}s por e-mail.`}\n \n \n \n \n \n \n \n \n \n )}\n {(emailFlow || clientsSelected.length > 1) && !loadingGet && (\n <>\n \n \n \n \n Clique aqui {` `}\n \n caso queira ver uma prévia de como seu cliente receberá o e-mail\n antes de confirmar o envio.\n \n \n \n \n \n setSendToResp(e.target.checked)}\n style={{ fontSize: \"14px\", fontWeight: \"100\" }}\n >\n Enviar com o profissional responsável em cópia\n \n \n \n \n \n \n handleDarfSend({\n sendToWhatsapp: false,\n clientsSelected,\n filters: {},\n getClients,\n sendToResp,\n setLoadingGet,\n setSendToResp,\n setEmailFlow,\n setWhatsappFlow,\n setShowSendDarfModal,\n setWhatsappRedirectURL,\n })\n }\n >\n {loadingGet ? (\n \n ) : (\n
\n \n CONFIRMAR ENVIO POR E-MAIL\n
\n )}\n \n \n
\n {emailFlow && (\n \n \n }\n style={{\n height: \"40px\",\n paddingLeft: \"0\",\n margin: \"8px 0 -24px\",\n }}\n onClick={() => {\n setEmailFlow(false);\n }}\n >\n VOLTAR\n \n \n \n )}\n \n )}\n {whatsappFlow && !loadingGet && (\n <>\n \n \n \n handleDarfSend({\n sendToWhatsapp: true,\n clientsSelected,\n filters: {},\n getClients,\n sendToResp,\n setLoadingGet,\n setSendToResp,\n setEmailFlow,\n setWhatsappFlow,\n setShowSendDarfModal,\n setWhatsappRedirectURL,\n })\n }\n >\n {loadingGet ? (\n \n ) : (\n
\n \n CONFIRMAR ENVIO POR WHATSAPP\n
\n )}\n \n \n
\n \n \n }\n style={{\n height: \"40px\",\n paddingLeft: \"0\",\n margin: \"8px 0 -24px\",\n }}\n onClick={() => {\n setWhatsappFlow(false);\n }}\n >\n VOLTAR\n \n \n \n \n \n \n \n Caso sua mensagem não seja enviada, por favor, habilite os pop-ups e\n redirecionamentos em seu navegador clicando em{\" \"}\n \"Configurações do site\" e ativando a opção{\" \"}\n \"Permitir\".\n \n \n )}\n {!emailFlow && !whatsappFlow && clientsSelected.length === 1 && (\n <>\n \n \n \n Defina abaixo a forma como deseja enviar o {darfLabel} para o cliente\n selecionado:\n \n \n \n {\n setWhatsappFlow(false);\n setEmailFlow(true);\n }}\n >\n {loadingGet ? (\n \n ) : (\n \n \n ENVIAR {darfLabel.toUpperCase()} POR E-MAIL\n \n )}\n \n \n \n {oldModel && \n \n {\n setEmailFlow(false);\n setWhatsappFlow(true);\n }}\n >\n {loadingGet ? (\n \n ) : (\n \n \n ENVIAR {darfLabel.toUpperCase()} POR WHATSAPP\n \n )}\n \n \n }\n \n )}\n \n );\n};\n","export const getTooltipMessage = (browser: string) => {\n if (browser === \"Google Chrome or Chromium\") {\n return `Clique nos três pontos verticais no canto superior direito, vá em \"Configurações\" > \"Privacidade e segurança\" > \"Configurações do site\" > \"Pop-ups e redirecionamentos\", e ative a opção \"Permitir\"`;\n }\n if (browser === \"Mozilla Firefox\") {\n return `Clique nas três linhas horizontais no canto superior direito, escolha \"Configurações\" > \"Privacidade e segurança\" > \"Exceções\" ao lado de \"Bloquear pop-ups e redirecionamentos\", adicione nosso site como exceção e clique em \"Salvar alterações\"`;\n }\n if (browser === \"Microsoft Edge\") {\n return `Clique nos três pontos horizontais no canto superior direito, selecione \"Configurações\" > \"Cookies e permissões do site\" > \"Pop-ups e redirecionamentos\", e ative \"Permitir\".`;\n }\n if (browser === \"Apple Safari\") {\n return `Clique em \"Safari\" na barra de menu, vá para \"Preferências\" > \"Sites\" > \"Janela pop-up\", selecione \"Permitir sempre\" para nosso site.`;\n }\n if (browser === \"Microsoft Internet Explorer\") {\n return `Clique no ícone de engrenagem (configurações) no canto superior direito, selecione \"Opções da Internet\". Em seguida, vá para a guia \"Privacidade\" e clique no botão \"Configurações de Pop-up\". Adicione nosso site à lista de exceções e clique em \"Fechar\" para permitir os pop-ups e redirecionamentos para nosso site.`;\n }\n return `Se sua mensagem não foi enviada pode ser que seu navegador tenha bloqueado o recurso de Pop-ups e redirecionamentos. Habilite no canto superior direito ou em configurações e tente novamente.`;\n};\n","import React, { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Form, Input, Tabs, Typography } from \"antd\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport { EyeInvisibleOutlined, EyeOutlined } from \"@ant-design/icons\";\nimport {\n validationEmail,\n validationFullName,\n validationCnpj,\n validationCpf,\n validationPassword,\n} from \"../../utils/formValidations\";\n\ninterface IData {\n email: string;\n pass: string;\n passConfirmation: string;\n username: string;\n usernameEscritorio: string;\n name: string;\n}\n\ninterface IProps {\n className?: string;\n}\n\nconst Cadastro: React.FC = ({ className }) => {\n const navigate = useNavigate();\n const [form] = Form.useForm();\n const { handleSignUp, loading } = useAuth();\n\n const [isPj, setIsPj] = useState(true);\n const [visiblePass, setVisiblePass] = useState(false);\n\n const onFinish = (data: IData) => {\n handleSignUp({\n ...data,\n policiesAccepted: true,\n username: String(data.username).replace(/[_.-/-]/g, \"\"),\n usernameEscritorio: String(data.usernameEscritorio).replace(\n /[_.-/-]/g,\n \"\"\n ),\n isAssessor: !isPj,\n });\n };\n\n const RegisterForm = (\n
\n \n \n \n\n \n \n \n\n {!isPj && (\n
\n \n \n \n \n form.setFieldValue(\"usernameEscritorio\", \"28.905.945/0001-71\")\n }\n >\n Sou Warren Matriz\n \n
\n )}\n\n \n \n \n\n
\n \n {visiblePass ? (\n \n ) : (\n \n )}\n \n setVisiblePass((visible) => !visible)}\n icon={visiblePass ? : }\n />\n
\n\n
\n \n Começar\n \n
\n
\n );\n\n return (\n \n
\n
\n

Cadastre sua conta

\n\n {\n setIsPj(activeKey === \"escritorio\");\n }}\n >\n \n {RegisterForm}\n \n \n {RegisterForm}\n \n \n\n \n Ao clicar em \"Começar\" você afirma que leu, entendeu e está de\n acordo com os{\" \"}\n \n Termos de Uso\n \n ,{\" \"}\n \n Política de Privacidade\n {\" \"}\n e{\" \"}\n \n Política de Cookies\n {\" \"}\n do Velotax\n \n\n
\n Já possui uma conta?\n navigate(\"/p/login\")}\n >\n Acessar\n \n
\n
\n
\n
\n );\n};\n\nexport default Cadastro;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\n\nconst Container = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding: 64px 32px 0;\n height: calc(100vh - 64px);\n .anticon.anticon-loading.anticon-spin {\n width: 48px;\n height: 48px;\n svg {\n width: 48px;\n height: 48px;\n fill: var(--ant-primary-color);\n }\n }\n`;\n\nconst Loading: React.FC = () => {\n return (\n \n \n \n );\n};\n\nexport default Loading;\n","export default __webpack_public_path__ + \"static/media/notification.d3262cf7.svg\";","import _ from \"lodash\";\nimport moment from \"moment\";\nimport { useEffect, useState } from \"react\";\nimport {\n Bar,\n BarChart,\n Legend,\n ResponsiveContainer,\n XAxis,\n YAxis,\n Tooltip,\n} from \"recharts\";\nimport Loading from \"../Loading\";\nimport { isMobile } from \"../../utils\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport notificationImage from \"../../assets/notification.svg\";\n\nexport const ChartBar = ({ monthReport }: any) => {\n const [data, setDataChart] = useState([]);\n const [bars, setBars] = useState([]);\n const [loading, setLoading] = useState(false);\n const [totalJscp, setTotalJscp] = useState(0);\n const [totalDiv, setTotalDiv] = useState(0);\n const [totalBonds, setTotalBonds] = useState(0);\n const [totalRendi, setTotalRendi] = useState(0);\n const [totalAmort, setTotalAmort] = useState(0);\n\n const { proventos, yearProventos, typeProventos } = useClients();\n\n const chartColors = [\n { background: \"#FCC102\", label: \"white\" },\n { background: \"#C8D200\", label: \"black\" },\n { background: \"#FF2B01\", label: \"white\" },\n { background: \"#4B0082\", label: \"white\" },\n { background: \"#CC13AF\", label: \"white\" },\n { background: \"#0204a8\", label: \"white\" },\n { background: \"#79002B\", label: \"white\" },\n { background: \"#0A9E5A\", label: \"white\" },\n { background: \"#FF7F00\", label: \"white\" },\n ];\n\n const getProviderColor = (provider: string, index: number) => {\n while (index > 8) {\n const differnce = index - 8;\n index = differnce - 1;\n }\n return chartColors[index].background;\n };\n\n useEffect(() => {\n setLoading(true);\n let totalJscp = 0;\n let totalDiv = 0;\n let totalBonds = 0;\n let totalRendi = 0;\n let totalAmort = 0;\n if (typeProventos === \"provento\") {\n const proventoByMonth: any = [\n {\n name: \"Jan\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Fev\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Mar\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Abr\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Mai\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Jun\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Jul\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Ago\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Set\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Out\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Nov\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Dez\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n ];\n\n const groupedProventos = _.groupBy(proventos, (item) => {\n return moment(item.date).format(\"YYYY-MM\");\n });\n\n for (const key in groupedProventos) {\n const year = +moment(key).format(\"Y\");\n const month = +moment(key).format(\"M\");\n const operations = groupedProventos[key];\n if (Number(year) === yearProventos) {\n operations.forEach((el: any) => {\n if (\n el?.corporateActionTypeDescription?.toLowerCase() === \"rendimento\"\n ) {\n proventoByMonth[month - 1].rendimento =\n proventoByMonth[month - 1]?.rendimento + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"dividendo\" ||\n el?.corporateActionTypeDescription?.toLowerCase() === \"dividendos\"\n ) {\n proventoByMonth[month - 1].dividendo =\n proventoByMonth[month - 1]?.dividendo + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"juros sobre capital próprio\"\n ) {\n proventoByMonth[month - 1].juros =\n proventoByMonth[month - 1]?.juros + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"amortização\"\n ) {\n proventoByMonth[month - 1].amortizacao =\n proventoByMonth[month - 1]?.amortizacao + el.grossAmount;\n }\n if (el?.corporateActionTypeDescription?.toLowerCase() === \"cupom\") {\n proventoByMonth[month - 1].bonds =\n proventoByMonth[month - 1]?.bonds + el.grossAmount;\n }\n });\n }\n }\n for (const el of proventoByMonth) {\n totalAmort += el.amortizacao || 0;\n totalJscp += el.juros || 0;\n totalDiv += el.dividendo || 0;\n totalBonds += el.bonds || 0;\n totalRendi += el.rendimento || 0;\n }\n\n setTotalAmort(totalAmort);\n setTotalBonds(totalBonds);\n setTotalDiv(totalDiv);\n setTotalJscp(totalJscp);\n setTotalRendi(totalRendi);\n setDataChart(proventoByMonth);\n }\n if (typeProventos === \"corretora\") {\n const proventoByMonth: any = [\n {\n name: \"Jan\",\n },\n {\n name: \"Fev\",\n },\n {\n name: \"Mar\",\n },\n {\n name: \"Abr\",\n },\n {\n name: \"Mai\",\n },\n {\n name: \"Jun\",\n },\n {\n name: \"Jul\",\n },\n {\n name: \"Ago\",\n },\n {\n name: \"Set\",\n },\n {\n name: \"Out\",\n },\n {\n name: \"Nov\",\n },\n {\n name: \"Dez\",\n },\n ];\n const barsChart: any = [];\n\n const groupedProventos = _.groupBy(proventos, (item) => {\n return item.corretora;\n });\n\n for (const key in groupedProventos) {\n barsChart.push(key);\n const operations = groupedProventos[key];\n operations.forEach((el: any) => {\n if (Number(moment(el.date).format(\"YYYY\")) === yearProventos) {\n const month = Number(moment(el.date).format(\"M\"));\n if (\n el?.corporateActionTypeDescription?.toLowerCase() === \"rendimento\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"dividendo\" ||\n el?.corporateActionTypeDescription?.toLowerCase() === \"dividendos\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"juros sobre capital próprio\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"amortização\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (el?.corporateActionTypeDescription?.toLowerCase() === \"cupom\") {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n }\n });\n }\n\n setBars(barsChart);\n setDataChart(proventoByMonth);\n }\n if (typeProventos === \"data\") {\n const proventoByMonth: any = [\n {\n name: \"Jan\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Fev\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Mar\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Abr\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Mai\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Jun\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Jul\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Ago\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Set\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Out\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Nov\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Dez\",\n futuro: 0,\n liquidado: 0,\n },\n ];\n const types = [\n \"rendimento\",\n \"juros sobre capital próprio\",\n \"dividendo\",\n \"dividendos\",\n \"amortização\",\n \"cupom\",\n ];\n\n proventos.forEach((el: any) => {\n const year = Number(moment(el.date).format(\"Y\"));\n if (\n year === yearProventos &&\n types.includes(el.corporateActionTypeDescription.toLowerCase())\n ) {\n const month = Number(moment(el.date).format(\"M\"));\n if (el.isFuturo) {\n proventoByMonth[month - 1].futuro += el.grossAmount;\n } else {\n proventoByMonth[month - 1].liquidado += el.grossAmount;\n }\n }\n });\n setDataChart(proventoByMonth);\n }\n\n setLoading(false);\n }, [yearProventos, proventos, typeProventos]);\n\n const renderLegend = (value: string, entry: any) => {\n return {value};\n };\n\n const labelFormatter = (value: any) => {\n return value > 0\n ? \"R$ \" +\n value?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n : \"\";\n };\n\n const renderTooltip = (value: any) => {\n const { payload } = value;\n if (typeProventos === \"provento\") {\n const total =\n payload[0]?.payload?.dividendo +\n payload[0]?.payload?.rendimento +\n payload[0]?.payload?.juros +\n payload[0]?.payload?.amortizacao;\n return payload[0]?.payload?.dividendo > 0 ||\n payload[0]?.payload?.rendimento > 0 ||\n payload[0]?.payload?.juros > 0 ||\n payload[0]?.payload?.amortizacao > 0 ||\n payload[0]?.payload?.bonds > 0 ? (\n
\n {payload[0]?.payload?.dividendo > 0 && (\n \n Dividendos: R${\" \"}\n {payload[0]?.payload?.dividendo.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.dividendo * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n {payload[0]?.payload?.rendimento > 0 && (\n \n Rendimento: R${\" \"}\n {payload[0]?.payload?.rendimento.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.rendimento * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n {payload[0]?.payload?.juros > 0 && (\n \n Juros sobre capital próprio: R${\" \"}\n {payload[0]?.payload?.juros.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.juros * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n {payload[0]?.payload?.amortizacao > 0 && (\n \n Amortização: R${\" \"}\n {payload[0]?.payload?.amortizacao.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.amortizacao * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n {payload[0]?.payload?.bonds > 0 && (\n \n Cupom: R${\" \"}\n {payload[0]?.payload?.bonds.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.bonds * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n
\n ) : (\n <>\n );\n }\n if (typeProventos === \"corretora\") {\n const keys = Object.keys(payload[0]?.payload || {});\n let total = 0;\n keys.forEach((el) => {\n if (el !== \"name\") {\n total += payload[0]?.payload[el] || 0;\n }\n });\n\n return (\n
\n {keys.map((el) => {\n if (el !== \"name\") {\n return (\n \n {el}: R${\" \"}\n {payload[0]?.payload[el].toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload[el] * 100) / total).toFixed(2)\n : 0}\n %)\n \n );\n }\n return <>;\n })}\n
\n );\n }\n if (typeProventos === \"data\") {\n const total =\n payload[0]?.payload?.futuro + payload[0]?.payload?.liquidado;\n return total > 0 ? (\n
\n \n Futuro: R${\" \"}\n {payload[0]?.payload?.futuro.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.futuro * 100) / total).toFixed(2)\n : 0}\n %)\n \n \n Liquidado: R${\" \"}\n {payload[0]?.payload?.liquidado.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.liquidado * 100) / total).toFixed(2)\n : 0}\n %)\n \n
\n ) : (\n <>\n );\n }\n };\n\n return loading ? (\n \n ) : data.filter((i: any) =>\n typeProventos === \"provento\"\n ? i.amortizacao + i.bonds + i.dividendo + i.juros + i.rendimento > 0\n : typeProventos === \"data\"\n ? i.futuro + i.liquidado > 0\n : Object.keys(i)\n .filter((key) => key !== \"name\")\n .reduce((a, c) => a + i[c], 0) > 0\n ).length === 0 ? (\n
\n \"Notificações\"\n

O seu cliente não recebeu proventos neste período

\n
\n ) : (\n \n \n \n \n \n \n {typeProventos === \"provento\" && (\n <>\n {totalJscp > 0 && (\n \n )}\n {totalRendi > 0 && (\n \n )}\n {totalDiv > 0 && (\n \n )}\n {totalAmort > 0 && (\n \n )}\n {totalBonds > 0 && (\n \n )}\n {!isMobile() && (\n \n )}\n \n )}\n {typeProventos === \"corretora\" && (\n <>\n {bars.map((el, index) => {\n return (\n \n );\n })}\n {!isMobile() && (\n \n )}\n \n )}\n {typeProventos === \"data\" && (\n <>\n \n \n {!isMobile() && (\n \n )}\n \n )}\n \n \n );\n};\n","import { Col, Row } from \"antd\";\nimport Button from \"../Button\";\n\ninterface FooterModalProps {\n onCancel: () => void;\n onOk?: () => void;\n}\n\nexport const FooterModal: React.FC = ({ onCancel, onOk }) => {\n return (\n \n \n \n \n \n \n Salvar\n \n \n \n );\n};\n","import { Col, Form, Row } from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { FooterModal } from \"../FooterModal\";\nimport { DrawerModal } from \"../DrawerModal\";\n\ninterface FormModalProps {\n add: any;\n edit: any;\n title: string;\n onCancel: any;\n itemToEdit: any;\n visibility: boolean;\n rows: any[];\n}\n\nexport const FormModal: React.FC = ({\n add,\n edit,\n rows,\n title,\n onCancel,\n visibility,\n itemToEdit,\n children,\n}) => {\n const [form] = Form.useForm();\n const [, setUpdate] = useState(false);\n\n useEffect(() => {\n if (!visibility) {\n form.resetFields();\n } else if (itemToEdit) {\n setUpdate((update) => !update);\n form.setFieldsValue(itemToEdit);\n }\n }, [visibility, form, itemToEdit]);\n const onValuesChange = (changedValues: any, values: any) => {\n setUpdate((update) => !update);\n const data = {\n ...values,\n ...rows\n .flat()\n .map((input) =>\n typeof input === \"function\" ? input({ data: values }) : input\n )\n .filter((input) => input.onChange)\n .reduce(\n (acc, cur) => ({\n ...acc,\n [cur.name]: cur.onChange?.(changedValues, { ...values, ...acc }),\n }),\n {}\n ),\n };\n const dataEntries = Object.entries(data);\n form.setFields(dataEntries.map(([name, value]) => ({ name, value })));\n form.resetFields(\n dataEntries\n .filter(([, value]) => value === undefined || value === null)\n .map(([name]) => name)\n );\n };\n const onFinish = (data: any) => {\n if (itemToEdit) {\n edit(data);\n } else {\n add(data);\n }\n };\n\n return (\n \n \n {rows.map((row, index) => (\n \n {row\n .map((input: any) =>\n typeof input === \"function\"\n ? input({ data: form.getFieldsValue() })\n : input\n )\n .filter(\n (input: any) =>\n !(\n typeof input.hide === \"function\" &&\n input.hide({ data: form.getFieldsValue() })\n )\n )\n .map((input: any, index: number, array: any[]) => (\n \n \n ))}\n {children}\n \n \n \n );\n};\n","import styled from \"styled-components\";\n\nexport const AvisosContainer = styled.div<{ temPlano: boolean; liberadaContratacao: boolean }>`\n padding: ${({ temPlano }) => (!temPlano ? \"4rem 0 !important\" : \"\")};\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${({ temPlano, liberadaContratacao }) => \n !temPlano ?\n !liberadaContratacao ? 'white !important'\n : '#f8f8f8' : ''};\n transform: ${({ liberadaContratacao, temPlano }) => !temPlano && !liberadaContratacao ? 'translateY(1rem)' : ''};\n\n div:first-of-type {\n width: ${({ temPlano }) => (!temPlano ? \"100%\" : \"\")};\n max-width: ${({ temPlano, liberadaContratacao }) => (\n !temPlano \n ? liberadaContratacao ? \"500px\" \n : !liberadaContratacao ? \"760px\"\n : \"\" : \"\")};\n }\n .ant-switch-handle {\n width: 20px !important;\n }\n\n .title {\n h3 {\n font-weight: 600;\n }\n }\n .divider {\n width: 100%;\n max-width: 80px !important;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 2rem;\n }\n\n .plan-boxes {\n flex-wrap: nowrap;\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .ant-divider {\n margin: 8px 0;\n }\n\n .ant-btn {\n height: 56px;\n\n span {\n font-weight: 500;\n svg {\n display: none;\n }\n }\n }\n .total-contratado {\n display: none;\n }\n .dismiss {\n cursor: pointer;\n transition: 0.3s;\n &:hover {\n color: var(--ant-primary-7);\n transition: 0.3s;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-card-body {\n padding: 16px;\n }\n }\n`;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.30493 10.9135L6.18925 14.3089M13.5783 7.51808L15.694 10.9135M16.1571 17.0014H11.9995M9.07857 5.00072C9.07857 3.34411 10.3859 2 11.9995 2C13.612 2 14.9204 3.34303 14.9204 5.00072C14.9204 6.65734 13.6131 8.00144 11.9995 8.00144C10.3859 7.99928 9.07857 6.65625 9.07857 5.00072ZM2 16.9993C2 15.3427 3.3073 13.9986 4.9209 13.9986C6.53345 13.9986 7.8418 15.3416 7.8418 16.9993C7.84074 18.6559 6.5345 20 4.9209 20C3.3073 20 2 18.657 2 16.9993ZM16.1582 16.9993C16.1582 15.3427 17.4655 13.9986 19.0791 13.9986C20.6916 13.9986 22 15.3416 22 16.9993C22 18.6559 20.6927 20 19.0791 20C17.4644 20 16.1582 18.657 16.1582 16.9993Z\",\n stroke: \"#0A9E5A\",\n strokeWidth: 1.4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgIconIntegracao(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconIntegracao);\nexport default __webpack_public_path__ + \"static/media/icon-integracao.f59c051d.svg\";\nexport { ForwardRef as ReactComponent };","import { BiGlobe } from \"react-icons/bi\";\nimport { IoIosCalculator } from \"react-icons/io\";\nimport { HiOutlineDocumentReport } from \"react-icons/hi\";\nimport { MdOutlineAlternateEmail, MdDone } from \"react-icons/md\";\nimport { ReactComponent as IntegrationIcon } from \"../../assets/icons/icon-integracao.svg\";\n\ninterface Feature {\n name: string;\n desc?: string;\n icon?: JSX.Element;\n secondaryIcon?: JSX.Element;\n secondaryLabel?: string;\n}\n\nexport enum PlanEnum {\n BASIC_V1 = \"BASIC_V1\",\n PRO_V1 = \"PRO_V1\",\n}\n\nexport interface Plan {\n type: PlanEnum | UserPlanEnum;\n title: string;\n price: number;\n discount: number;\n originalPrice: number;\n includedFeatures: Feature[];\n otherFeatures: Feature[];\n}\n\nexport const OtherFeatures: Feature[] = [\n {\n name: \"Emissão de relatório anual (DASN-MEI)\",\n },\n {\n name: \"Emissão de guias mensais (DAS)\",\n },\n];\n\nexport enum UserPlanEnum {\n VELOTAX_MAIN_BASIC = \"VELOTAX_MAIN_BASIC\",\n VELOTAX_MAIN_BASIC_MONTH = \"VELOTAX_MAIN_BASIC_MONTH\",\n VELOTAX_MAIN_FREE = \"VELOTAX_MAIN_FREE\",\n VELOTAX_MAIN_PRO = \"VELOTAX_MAIN_PRO\",\n VELOTAX_MAIN_PRO_MONTH = \"VELOTAX_MAIN_PRO_MONTH\",\n VELOTAX_MAIN_CONCIERGE = \"VELOTAX_MAIN_CONCIERGE\",\n VELOTAX_MAIN_CONCIERGE_MONTH = \"VELOTAX_MAIN_CONCIERGE_MONTH\",\n WARREN_BASIC = \"WARREN_BASIC\",\n WARREN_BASIC_MONTH = \"WARREN_BASIC_MONTH\",\n WARREN_PRO = \"WARREN_PRO\",\n WARREN_PRO_MONTH = \"WARREN_PRO_MONTH\",\n WARREN_CONCIERGE = \"WARREN_CONCIERGE\",\n WARREN_CONCIERGE_MONTH = \"WARREN_CONCIERGE_MONTH\"\n}\n\nexport interface UserPlan {\n type: UserPlanEnum;\n interval: \"Anual\" | \"Mensal\";\n title: string;\n price: number;\n discount?: number;\n showDiscount: boolean;\n originalPrice: number;\n includedFeatures: Feature[];\n otherFeatures?: Feature[];\n free?: boolean;\n maskValue?: boolean;\n percentDiscount: number;\n descriptions?: any;\n discountText?: string;\n}\n\nexport const UserPlans: UserPlan[] = [\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO,\n interval: \"Anual\",\n title: \"PREMIUM\",\n showDiscount: true,\n price: 19.9,\n originalPrice: 29.9,\n percentDiscount: 30,\n discountText: \"ou 4 meses grátis\",\n maskValue: true,\n includedFeatures: [\n {\n name: \"Cálculos 100% precisos\",\n icon: ,\n },\n {\n name: \"Conexão oficial com a B3 e com a Warren Internacional\",\n icon: ,\n },\n {\n name: \"Emissão de DARFs retroativas sem custo adicional\",\n icon: ,\n },\n {\n name: \"Informes auxiliares de IR em PDF\",\n icon: ,\n },\n ],\n descriptions: [\n {\n label: \"Cálculos automáticos, com multa e juros\",\n checked: true,\n icon: ,\n },\n {\n label: \"Integração com Warren Internacional\",\n checked: true,\n icon: ,\n },\n {\n label: \"Integração com B3\",\n checked: true,\n icon: ,\n },\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO_MONTH,\n title: \"PREMIUM\",\n interval: \"Mensal\",\n showDiscount: true,\n price: 29.9,\n originalPrice: 29.9,\n percentDiscount: 0,\n maskValue: true,\n includedFeatures: [\n {\n name: \"Cálculos 100% precisos\",\n icon: ,\n },\n {\n name: \"Conexão oficial com a B3 e com a Warren Internacional\",\n icon: ,\n },\n {\n name: \"Emissão de DARFs retroativas sem custo adicional\",\n icon: ,\n },\n {\n name: \"Informes auxiliares de IR em PDF\",\n icon: ,\n },\n ],\n descriptions: [\n {\n label: \"Cálculos automáticos, com multa e juros\",\n checked: true,\n icon: ,\n },\n {\n label: \"Integração com Warren Internacional\",\n checked: true,\n icon: ,\n },\n {\n label: \"Integração com B3\",\n checked: true,\n icon: ,\n },\n ],\n },\n];\n\nexport const Plans: Plan[] = [\n {\n type: PlanEnum.BASIC_V1,\n title: \"basic\",\n price: 29.9,\n discount: 75,\n originalPrice: 119.9,\n includedFeatures: [\n {\n name: \"Emissão de DASN ilimitados\",\n icon: ,\n },\n {\n name: \"Suporte por e-mail\",\n icon: ,\n },\n ],\n otherFeatures: OtherFeatures.slice(0, 1),\n },\n {\n type: PlanEnum.PRO_V1,\n title: \"plus\",\n price: 39.9,\n discount: 75,\n originalPrice: 149.9,\n includedFeatures: [\n {\n name: \"Emissão de DAS e DASN ilimitados\",\n icon: ,\n },\n {\n name: \"Suporte por e-mail\",\n icon: ,\n },\n ],\n otherFeatures: OtherFeatures,\n },\n];\n","import { HasPlan } from \".\";\nimport { UserPlanEnum } from \"../../constants/plans\";\n\nexport const planos = [\n {\n type: UserPlanEnum.VELOTAX_MAIN_BASIC,\n name: \"Basic\",\n price: 19.9,\n originalPrice: 19.9,\n installments: 12,\n for: \"Pra quem começou a investir agora\",\n includes: \"Basic inclui:\",\n benefits: [\n \"Cálculos automáticos de IR\",\n \"Emissão de DARF do mês corrente\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_BASIC_MONTH,\n name: \"Basic\",\n price: 39.9,\n originalPrice: 39.9,\n installments: 12,\n for: \"Pra quem começou a investir agora\",\n includes: \"Basic inclui:\",\n benefits: [\n \"Cálculos automáticos de IR\",\n \"Emissão de DARF do mês corrente\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO,\n name: \"Premium\",\n price: 59.9,\n originalPrice: 59.9,\n installments: 12,\n for: \"Pra quem investe com maior frequência\",\n includes: \"Tudo do Basic, mais:\",\n benefits: [\n \"Informes de rendimento em PDF\",\n \"DARFs retroativos ilimitados\",\n \"Carteira de investimentos atualizada\",\n \"Notificações de dividendos\",\n \"Isentômetro de impostos\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO_MONTH,\n name: \"Premium\",\n price: 79.9,\n originalPrice: 79.9,\n installments: 12,\n for: \"Pra quem investe com maior frequência\",\n includes: \"Tudo do Basic, mais:\",\n benefits: [\n \"Informes de rendimento em PDF\",\n \"DARFs retroativos ilimitados\",\n \"Carteira de investimentos atualizada\",\n \"Notificações de dividendos\",\n \"Isentômetro de impostos\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_CONCIERGE,\n name: \"Concierge\",\n price: 79.9,\n originalPrice: 79.9,\n installments: 12,\n for: \"Pra quem não quer ter nenhum trabalho\",\n includes: \"Tudo do Premium, mais:\",\n benefits: [\n \"Especialista dedicado para você\",\n \"DARFs revisadas por profissional\",\n \"Contato por WhatsApp exclusivo\",\n ],\n popular: true,\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_CONCIERGE_MONTH,\n name: \"Concierge\",\n price: 99.9,\n originalPrice: 99.9,\n installments: 12,\n for: \"Pra quem não quer ter nenhum trabalho\",\n includes: \"Tudo do Premium, mais:\",\n benefits: [\n \"Especialista dedicado para você\",\n \"DARFs revisadas por profissional\",\n \"Contato por WhatsApp exclusivo\",\n ],\n popular: true,\n },\n];\n\nexport enum UserPlanUpgradeEnum {\n BASIC_TO_PRO = \"BASIC_TO_PRO\",\n BASIC_TO_CONCIERGE = \"BASIC_TO_CONCIERGE\",\n PRO_TO_CONCIERGE = \"PRO_TO_CONCIERGE\",\n}\n\nexport const planUpgrade = {\n [UserPlanUpgradeEnum.BASIC_TO_PRO]: 40,\n [UserPlanUpgradeEnum.BASIC_TO_CONCIERGE]: 60,\n [UserPlanUpgradeEnum.PRO_TO_CONCIERGE]: 20,\n};\n\nexport const getPlanPrice = (\n plan: { price: number; type: UserPlanEnum },\n hasPlan: false | HasPlan\n) =>\n !hasPlan\n ? plan?.price\n : hasPlan.premium && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.PRO_TO_CONCIERGE]\n : hasPlan.basic && plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_PRO]\n : hasPlan.basic && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_CONCIERGE]\n : plan?.price;\n\nexport const getPlanOriginalPrice = (\n plan: { originalPrice: number; type: UserPlanEnum },\n hasPlan: false | HasPlan\n) =>\n !hasPlan\n ? plan?.originalPrice\n : hasPlan.premium && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.PRO_TO_CONCIERGE]\n : hasPlan.basic && plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_PRO]\n : hasPlan.basic && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_CONCIERGE]\n : plan?.originalPrice;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n &.velotax-container {\n .velotax-content {\n width: 1032px;\n max-width: 760px;\n h1.page-title {\n font-size: 28px;\n margin-bottom: 1rem;\n margin-left: 0;\n text-align: left;\n display: flex;\n align-items: center;\n button {\n margin-right: 0.5rem;\n color: var(--velotax-font-color);\n svg {\n font-size: 24px;\n transform: translateY(2px);\n }\n }\n }\n .divider {\n width: 100%;\n max-width: 80px !important;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 2rem;\n }\n .subtitle {\n font-size: 16px;\n color: var(--velotax-font-color);\n }\n .trustpilot-trustbox-widget {\n margin: 32px 0 32px -16px;\n width: calc(100% + 32px);\n }\n .selos {\n display: flex;\n margin: 0 0 48px;\n .selo {\n display: flex;\n padding: 0 24px;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n width: calc(100% / 3);\n .ant-typography {\n display: block;\n margin-top: 8px;\n font-size: 16px;\n line-height: 20px;\n text-align: center;\n font-size: 13px;\n .anticon {\n margin-left: 5px;\n vertical-align: -0.2em;\n }\n strong {\n display: block;\n font-weight: 700;\n color: rgb(0, 204, 139);\n }\n }\n &.trustpilot {\n .excelente {\n display: block;\n font-size: 18px;\n font-weight: 700;\n margin: 0 0 8px;\n }\n .avaliacoes {\n display: flex;\n height: 24px;\n font-size: 16px;\n margin: 16px 0 10px;\n align-items: center;\n justify-content: center;\n svg {\n margin: 0 0 2px 0;\n }\n }\n }\n }\n }\n }\n }\n\n .divSwitchAnualMonth {\n width: 100%;\n display: flex; \n flex-direction: row; \n gap: 15px;\n color: black;\n justify-content: center;\n }\n\n .switchAnualMonth {\n display: flex;\n margin-bottom: 20px;\n background-color: var(--ant-primary-color);\n }\n\n .hide-plan {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n &.velotax-container {\n .velotax-content {\n width: 100%;\n .selos {\n flex-direction: column;\n .selo {\n width: 100%;\n padding: 12px 24px;\n }\n }\n }\n }\n }\n`;\n\nexport const PlanosContainer = styled.div<{ isMobile: boolean }>`\n display: flex;\n justify-content: center;\n align-items: ${({ isMobile }) => isMobile ? 'center' : ''};\n\n .plan {\n padding: 13px;\n overflow: hidden;\n margin-left: 1.5rem;\n position: relative;\n border-radius: 8px;\n width: calc((100% - 16px) / 3);\n background-color: white;\n width: 100px;\n flex-grow: 1;\n max-width: 236px !important;\n box-shadow: 0 1px 10px 1px rgba(0,0,0, 0.15);\n :first-of-type {\n margin-left: 0;\n }\n .plan-name {\n font-size: 20px;\n font-weight: 700;\n line-height: 28px;\n text-align: center;\n margin-bottom: 0;\n color: var(--velotax-font-color);\n }\n .plan-price {\n text-align: center;\n position: relative;\n font-size: 24px;\n font-weight: 700;\n line-height: 20px;\n margin-bottom: 4px;\n color: var(--velotax-font-color);\n .plan-price-main {\n font-size: 48px;\n font-weight: 700;\n line-height: 20px;\n letter-spacing: -1.92px;\n }\n\n .plus {\n margin-right: 4px;\n position: absolute;\n left: 1rem;\n bottom: 0;\n }\n }\n\n .price-crossed-off {\n position: absolute;\n font-size: 16px;\n font-weight: 700;\n color: var(--ant-primary-color);\n left: 22%;\n top: 18%;\n }\n\n .price-crossed-off-discount {\n position: absolute;\n font-size: 12px;\n color: var(--ant-primary-color);\n left: 56%;\n top: 18.5%;\n }\n\n .crossed-off {\n position: absolute;\n left: 21%;\n top: 20.1%;\n height: 1px;\n width: 75px;\n background-color: var(--ant-primary-color);\n }\n\n .plan-price-desc {\n display: block;\n font-size: 12px;\n font-weight: 400;\n line-height: 20px;\n text-align: center;\n margin-bottom: 2rem;\n color: var(--velotax-font-color);\n }\n .plan-for {\n width: 100%;\n display: block;\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n text-align: center;\n margin: 4px auto 2.5rem;\n color: var(--velotax-font-color-ghost);\n }\n .plan-includes {\n display: block;\n margin: 24px 0 0;\n font-size: 12px;\n font-weight: 600;\n line-height: 16px;\n color: var(--velotax-font-color);\n }\n .plan-benefits {\n .plan-benefit {\n display: flex;\n font-size: 11px;\n font-weight: 400;\n line-height: 16px;\n margin-top: 2px;\n color: var(--velotax-font-color-ghost);\n svg {\n width: 16px;\n height: 16px;\n min-width: 16px;\n min-height: 16px;\n margin-right: 4px;\n }\n svg.check {\n fill: var(--ant-success-color);\n }\n .info {\n width: 12px;\n height: 12px;\n margin: 2px 0 0 4px;\n color: var(--velotax-font-color);\n cursor: pointer;\n svg {\n width: 12px;\n height: 12px;\n min-width: 12px;\n min-height: 12px;\n margin-right: 0;\n }\n }\n .ant-tooltip-inner {\n background-color: rgba(0, 0, 0, 0.9);\n }\n }\n }\n .plan-popular {\n top: 0;\n right: 0;\n width: 150px;\n height: 20px;\n display: flex;\n font-size: 10px;\n font-weight: 700;\n line-height: 16px;\n position: absolute;\n color: var(--white);\n align-items: center;\n justify-content: center;\n text-transform: uppercase;\n background-color: var(--ant-primary-color);\n transform: rotateZ(40deg) translateX(44px) translateY(-13px);\n }\n\n .ant-tooltip-inner {\n padding: 10px 15px;\n top: 0;\n display: inline-block;\n border-radius: 10px;\n border-bottom-right-radius: 0px;\n z-index: 2;\n max-width: 200px;\n box-shadow: none;\n word-wrap: break-word;\n }\n }\n\n .discount {\n .plus {\n left: 0.25rem !important;\n }\n }\n @media only screen and (max-device-width: 812px) {\n flex-direction: column;\n .plan {\n width: 100%;\n margin: 0 0 8px;\n }\n }\n`;\n","import { Focused } from \"react-credit-cards\";\nimport { Form, message, Spin } from \"antd\";\nimport React, {\n Dispatch,\n SetStateAction,\n useEffect,\n useState,\n useMemo,\n} from \"react\";\nimport Footer from \"./components/Footer\";\nimport { CardForm } from \"./components/CardForm\";\nimport AddressForm from \"./components/AddressForm\";\nimport { ResultScreen } from \"./components/ResultScreen\";\nimport api from \"../../../../services/api\";\nimport { removeSpecialCharacters } from \"../../../../utils\";\nimport { IClient, useClients } from \"../../../../contexts/ClientsContext\";\nimport { Plan as IPlan, UserPlan } from \"../../../../constants/plans\";\nimport { PendingScreen } from \"./components/ResultScreen/components/PendingScreen\";\nimport { useAuth } from \"../../../../contexts/AuthContext\";\nimport { ICreatePaymentXPPro } from \"..\";\n\nexport enum ETypePurchase {\n MEI = \"MEI\",\n UNIQUE = \"UNIQUE\",\n VELOTAX_MAIN_BASIC = \"VELOTAX_MAIN_BASIC\",\n VELOTAX_MAIN_BASIC_MONTH = \"VELOTAX_MAIN_BASIC_MONTH\",\n VELOTAX_MAIN_PRO = \"VELOTAX_MAIN_PRO\",\n VELOTAX_MAIN_PRO_MONTH = \"VELOTAX_MAIN_PRO_MONTH\",\n VELOTAX_MAIN_CONCIERGE = \"VELOTAX_MAIN_CONCIERGE\",\n VELOTAX_MAIN_CONCIERGE_MONTH = \"VELOTAX_MAIN_CONCIERGE_MONTH\",\n}\n\ninterface ICreditCardStepProps {\n status: string;\n initialized: boolean;\n handleBack?: () => void;\n typePurchase: ETypePurchase;\n handleSuccess?: (res: any) => void;\n setInitialized: Dispatch>;\n handleClosableModal: Dispatch>;\n plan?: IPlan | UserPlan;\n darfData?: any;\n getCardCurrentStep?: (value: number) => void;\n handleIdBack?: (event: any) => void;\n customInstallments?: number;\n backToRoot?: () => void;\n clientSelected?: IClient;\n createPlanXPPro: (body: ICreatePaymentXPPro) => void \n}\n\nexport const CreditCardStep: React.FC = ({\n plan,\n handleBack,\n handleClosableModal,\n typePurchase,\n darfData,\n handleSuccess,\n handleIdBack,\n customInstallments,\n backToRoot,\n clientSelected,\n createPlanXPPro\n}) => {\n const { selectedClient } = useClients();\n const { user } = useAuth();\n const [cardForm] = Form.useForm();\n const [addressForm] = Form.useForm();\n\n const [cvc, setCvc] = useState(\"\");\n const [name, setName] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n const [status] = useState(\"\");\n const [number, setNumber] = useState(\"\");\n const [expiry, setExpiry] = useState(\"\");\n const [focused, setFocused] = useState();\n const [holderDocument, setHolderDocument] = useState(\"\");\n const [installments, setInstallments] = useState(1);\n\n const [loading, setLoading] = useState(false);\n const [currentStep, setCurrentStep] = useState(0);\n const [isValidCardForm, setIsValidCardForm] = useState(false);\n const [isValidAddressForm, setIsValidAddressForm] = useState(false);\n\n const isPlan = useMemo(() => {\n return [\n \"VELOTAX_MAIN_BASIC\",\n \"VELOTAX_MAIN_BASIC_MONTH\",\n \"VELOTAX_MAIN_PRO\",\n \"VELOTAX_MAIN_PRO_MONTH\",\n \"VELOTAX_MAIN_CONCIERGE\",\n \"VELOTAX_MAIN_CONCIERGE_MONTH\",\n \"MEI_PREMIUM\",\n \"MEI_PREMIUM_MONTH\",\n ].includes(plan?.type || \"\");\n }, [plan]);\n\n const value = useMemo(() => {\n if (isPlan) return plan && plan?.price * 12;\n return darfData?.impostoTotalFinal;\n }, [darfData?.impostoTotalFinal, plan, isPlan]);\n\n useEffect(() => {\n if (currentStep < 0) {\n if (handleBack) handleBack();\n }\n }, [currentStep, handleBack]);\n\n const handleCreatePlanXPPro = () => {\n const addressInfo = addressForm.getFieldsValue();\n const monthExp = expiry?.split(\"/\")?.[0];\n const monthYear = expiry?.split(\"/\")?.[1];\n const body = {\n cardInfo: {\n line_1: `${addressInfo?.neighborhood} - ${addressInfo?.street} - ${addressInfo?.number}`,\n zip_code: addressInfo?.cep?.replace(\"-\", \"\"),\n city: addressInfo?.city,\n state: addressInfo?.state.toUpperCase(),\n holder_name: removeSpecialCharacters(name),\n number,\n exp_month: monthExp,\n exp_year: monthYear,\n holderDocument,\n cvv: cvc,\n },\n clientInfo: {\n name: user.user.name,\n email: user.user.email,\n document: user.user.username,\n phone,\n isAssessor: true\n },\n }\n\n createPlanXPPro(body)\n\n\n // setLoading(true);\n // handleClosableModal(false);\n\n // api\n // .post(url, {\n // ...darfData,\n // type: plan?.type,\n // paymentForm: \"credit_card\",\n // installments: 12,\n // clientUserId: selectedClient?._id,\n // cardInfo: {\n // line_1: `${addressInfo?.neighborhood} - ${addressInfo?.street} - ${addressInfo?.number}`,\n // zip_code: addressInfo?.cep?.replace(\"-\", \"\"),\n // city: addressInfo?.city,\n // state: addressInfo?.state.toUpperCase(),\n // holder_name: removeSpecialCharacters(name),\n // number,\n // exp_month: monthExp,\n // exp_year: monthYear,\n // holderDocument,\n // cvv: cvc,\n // },\n // clientInfo: {\n // name: user.user.name,\n // email: user.user.email,\n // document: user.user.username,\n // phone,\n // },\n // })\n // .then((res: any) => {\n // if (res.data.paymentId || res.data.paymentRecurringId)\n // handleSuccess && handleSuccess(res.data);\n // setCurrentStep(3);\n // })\n // .catch((err) => {\n // message.error(err.response?.data?.message);\n // })\n // .finally(() => {\n // setLoading(false);\n // handleClosableModal(true);\n // });\n };\n const createUniquePayment = () => {\n const addressInfo = addressForm.getFieldsValue();\n\n let url = \"/darf\";\n const monthExp = expiry?.split(\"/\")?.[0];\n const monthYear = expiry?.split(\"/\")?.[1];\n\n setLoading(true);\n handleClosableModal(false);\n\n api\n .post(url, {\n ...darfData,\n paymentForm: \"credit_card\",\n from: \"WARREN\",\n clientUserId: selectedClient?._id,\n paymentInfo: {\n installments: installments,\n cardInfo: {\n line_1: `${addressInfo?.neighborhood} - ${addressInfo?.street} - ${addressInfo?.number}`,\n zip_code: addressInfo?.cep?.replace(\"-\", \"\"),\n city: addressInfo?.city,\n state: addressInfo?.state.toUpperCase(),\n holder_name: removeSpecialCharacters(name),\n number,\n exp_month: monthExp,\n exp_year: monthYear,\n cvv: cvc,\n },\n clientInfo: {\n name: user.user.name,\n email: user.user.email,\n document: user.user.username,\n phone,\n },\n },\n })\n .then((res: any) => {\n setCurrentStep(2);\n })\n .catch((err) => {\n message.error(err.response?.data?.message);\n })\n .finally(() => {\n setLoading(false);\n handleClosableModal(true);\n });\n };\n\n const handleNextStep = () => {\n if (currentStep === 0) {\n setCurrentStep(1);\n } else if (currentStep === 1) {\n if (typePurchase === \"UNIQUE\") {\n createUniquePayment();\n } else if (\n [\n \"VELOTAX_MAIN_BASIC\",\n \"VELOTAX_MAIN_BASIC_MONTH\",\n \"VELOTAX_MAIN_PRO\",\n \"VELOTAX_MAIN_PRO_MONTH\",\n \"VELOTAX_MAIN_CONCIERGE\",\n \"VELOTAX_MAIN_CONCIERGE_MONTH\",\n \"MEI_PREMIUM\",\n \"MEI_PREMIUM_MONTH\",\n ].includes(typePurchase)\n ) {\n handleCreatePlanXPPro();\n }\n }\n };\n\n const getConditionToDisable = () => {\n switch (currentStep) {\n case 0:\n return !isValidCardForm;\n case 1:\n return !isValidAddressForm;\n default:\n return false;\n }\n };\n\n const changeInstallments = (value: any) => {\n setInstallments(value);\n };\n\n return (\n
\n \n {currentStep === 0 && (\n <>\n \n \n )}\n\n {currentStep === 1 && (\n \n )}\n\n {currentStep === 2 && (\n \n )}\n\n {currentStep === 3 && }\n \n \n
\n );\n};\n\nexport default CreditCardStep;\n","import axios from \"axios\";\n\nexport const apiPayment = axios.create({\n baseURL: process.env.REACT_APP_MS_PAYMENT_URL || \"http://localhost:4000\",\n headers: {\n \"x-api-provider\": \"warren\",\n },\n});\n","import { Col, Row, Typography } from \"antd\";\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport Button from \"../../../../../Button\";\n\ninterface IFooterProps {\n currentStep: number;\n handleProceed: () => void;\n getConditionToDisable: () => boolean;\n setCurrentStep: Dispatch>;\n typePurchase: string;\n hideTerms: boolean;\n backtoRoot?: any;\n}\n\nconst Footer: React.FC = ({\n currentStep,\n setCurrentStep,\n handleProceed,\n getConditionToDisable,\n typePurchase,\n hideTerms,\n backtoRoot,\n}) => {\n return (\n <>\n \n {currentStep !== 2 && !hideTerms && (\n \n \n Ao realizar o pagamento você concorda com as{\" \"}\n \n Condições gerais de venda\n {\" \"}\n .\n \n \n )}\n \n {currentStep !== 2 && currentStep !== 3 && (\n \n \n {currentStep === 0\n ? \"PROSSEGUIR\"\n : typePurchase === \"UNIQUE\"\n ? \"FINALIZAR PAGAMENTO\"\n : \"FINALIZAR COMPRA\"}\n \n \n )}\n {currentStep <= 1 && (\n \n {\n if (currentStep === 0) {\n backtoRoot();\n return;\n }\n setCurrentStep((step) => step - 1);\n }}\n >\n VOLTAR\n \n \n )}\n \n );\n};\n\nexport default Footer;\n","import Payment from \"payment\";\nimport Masked from \"react-input-mask\";\nimport React, { useMemo, useState } from \"react\";\nimport { Focused } from \"react-credit-cards\";\nimport NumberFormat from \"react-number-format\";\nimport { Col, Form, FormInstance, Input, Row } from \"antd\";\nimport { cnpjInputMask, cpfInputMask } from \"../../../../../../utils\";\nimport {\n validationCardShelfLife,\n validationCpfCnpj,\n validationCreditCardNumber,\n validationCVV,\n validationFieldRequired,\n validationPhoneRequired,\n} from \"../../../../../../utils/formValidations\";\n\ninterface ICardFormProps {\n number: string;\n focused?: Focused;\n form: FormInstance;\n uniqueValue?: number;\n setCvc: (cvc: string) => void;\n setName: (name: string) => void;\n setPhone: (value: string) => void;\n setNumber: (number: string) => void;\n setExpiry: (expiry: string) => void;\n setFocused: (focused: Focused) => void;\n setHolderDocument: (value: string) => void;\n setIsValidCardForm: (isValidCardForm: boolean) => void;\n handleBack: (event: any) => void;\n fixedInstallments?: number;\n signature?: boolean;\n installmentSelected?: number;\n customInstallments?: number;\n}\n\nexport const CardForm: React.FC = ({\n form,\n number,\n setCvc,\n setName,\n setPhone,\n setNumber,\n setExpiry,\n setFocused,\n setHolderDocument,\n setIsValidCardForm,\n uniqueValue,\n fixedInstallments,\n handleBack,\n signature,\n installmentSelected,\n customInstallments,\n}) => {\n const [inputType, setInputType] = useState<\"cpf\" | \"cnpj\">(\"cnpj\");\n const cardType = useMemo(() => Payment.fns.cardType(number), [number]);\n\n // let installments = useMemo(\n // () =>\n // getInstallmentsListByPrice(\n // uniqueValue || 0,\n // !!signature,\n // fixedInstallments\n // ),\n // [signature, fixedInstallments, uniqueValue]\n // );\n\n const onValuesChange = (changed: any, values: any) => {\n setCvc(values.cvv ?? \"\");\n setExpiry(values.expiry ?? \"\");\n setName(values.holderName ?? \"\");\n setHolderDocument(values.cpf?.replace(/[_.-]/g, \"\") ?? \"\");\n setPhone(values.phone?.replace(/[()_-]/g, \"\").replace(\" \", \"\") ?? \"\");\n const key = Object.keys(changed)[0];\n setFocused(\n (key === \"holderName\" ? \"name\" : key === \"cvv\" ? \"cvc\" : key) as Focused\n );\n form.setFieldsValue({\n ...values,\n cpf: values.cpf?.replace(/[_.-]/g, \"\") ?? \"\",\n phone: values.phone?.replace(/[()_-]/g, \"\").replace(\" \", \"\") ?? \"\",\n installments: 12,\n });\n\n setTimeout(() => {\n form\n .validateFields()\n .then(() => {\n setIsValidCardForm(true);\n })\n .catch(() => {\n setIsValidCardForm(false);\n });\n }, 500);\n };\n\n return (\n <>\n \n \n \n \n {\n (e.target as HTMLElement).setAttribute(\"pasted\", \"true\");\n const value = e.clipboardData.getData(\"text/plain\");\n setNumber(value);\n }}\n onChange={(e: any) => {\n if ((e.target as HTMLElement).getAttribute(\"pasted\")) {\n (e.target as HTMLElement).removeAttribute(\"pasted\");\n } else {\n setNumber(e.target.value);\n }\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n const value = (a.data.length > 1 ? a.data : a.target.value)\n .replaceAll(\".\", \"\")\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n .replaceAll(\"/\", \"\");\n const length =\n a.data.length > 1 ? value.length - 1 : value.length;\n if (length < 11) {\n setInputType(\"cpf\");\n } else {\n setInputType(\"cnpj\");\n }\n }}\n placeholder=\"CPF/CNPJ do titular\"\n className=\"ant-input ant-input-lg\"\n />\n \n \n \n \n \n \n \n \n \n \n );\n};\n","import axios from \"axios\";\n\nconst cep = axios.create({\n method: \"GET\",\n baseURL: \"https://viacep.com.br/ws/\",\n});\n\nexport default cep;\n","import React from \"react\";\nimport NumberFormat from \"react-number-format\";\nimport { Col, Form, FormInstance, Input, Row } from \"antd\";\nimport cep from \"../../../../../../services/cep\";\nimport {\n validationCep,\n validationFieldRequired,\n validationStateAddress,\n} from \"../../../../../../utils/formValidations\";\n\ninterface IAddressFormProps {\n form: FormInstance;\n setLoading: (loading: boolean) => void;\n setIsValidAddressForm: (isValidAddressForm: boolean) => void;\n}\n\nconst AddressForm: React.FC = ({\n form,\n setLoading,\n setIsValidAddressForm,\n}) => {\n const getAddressSuggestion = (value: string) => {\n if (value?.length === 8) {\n setLoading(true);\n cep\n .get(`${value}/json`)\n .then((res) => {\n const data = res.data;\n\n if (data.cep) {\n form.setFieldsValue({\n street: data.logradouro,\n neighborhood: data.bairro,\n city: data.localidade,\n state: data.uf,\n });\n } else {\n throw Error();\n }\n })\n .catch(() => {\n form.setFieldsValue({\n street: undefined,\n neighborhood: undefined,\n city: undefined,\n state: undefined,\n number: undefined,\n });\n })\n .finally(() => {\n onFieldsChange();\n setLoading(false);\n });\n }\n };\n\n const onFieldsChange = () => {\n form\n .validateFields()\n .then(() => setIsValidAddressForm(true))\n .catch(() => setIsValidAddressForm(false));\n };\n\n return (\n <>\n \n \n \n \n getAddressSuggestion(value?.value)}\n />\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \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 AddressForm;\n","import React from \"react\";\nimport { BiErrorAlt } from \"react-icons/bi\";\nimport { Col, Row, Typography } from \"antd\";\nimport Button from \"../../../../../../../Button\";\n\ninterface IErrorScreenProps {\n setCurrentStep: (currentStep: number) => void;\n}\n\nexport const ErrorScreen: React.FC = ({\n setCurrentStep,\n}) => {\n const callBack = (cb: Function) => {\n setCurrentStep(0);\n setTimeout(() => cb(), 200);\n };\n\n return (\n \n \n \n \n\n \n \n Ocorreu um erro durante a confirmação do pagamento.\n \n \n\n {\n callBack(() => {});\n }}\n >\n Escolher outra forma de pagamento\n \n \n );\n};\n","import React from \"react\";\nimport { MdCheck } from \"react-icons/md\";\nimport { Col, Row, Typography } from \"antd\";\nimport { Plan } from \"../../../../../../../../constants/plans\";\n\ninterface ConfirmedScreenProps {\n plan?: Plan;\n}\n\nexport const ConfirmedScreen: React.FC = ({ plan }) => {\n // useEffect(() => {\n // getIntegrationStatus({ token, hideLoading: true });\n // }, [getIntegrationStatus, token]);\n\n return (\n \n \n \n \n \n \n {plan\n ? `Pagamento confirmado com sucesso Parabéns você contratou o plano '\n ${plan?.title.toUpperCase()}'`\n : \"Pagamento realizado com sucesso\"}\n \n \n \n );\n};\n","import React, { Dispatch, SetStateAction } from \"react\";\nimport { ErrorScreen } from \"./components/ErrorScreen\";\nimport { Plan } from \"../../../../../../constants/plans\";\nimport { ConfirmedScreen } from \"./components/ConfirmScreen\";\n\ninterface IResultScreen {\n plan?: Plan;\n setCurrentStep: Dispatch>;\n status?: string;\n}\n\nexport const ResultScreen: React.FC = ({\n plan,\n setCurrentStep,\n status = \"pending\",\n}) => {\n return (\n <>\n {status === \"active\" ? (\n \n ) : (\n \n )}\n \n );\n};\n","import React from \"react\";\nimport { Col, Row, Typography } from \"antd\";\nimport { BsClockHistory } from \"react-icons/bs\";\n\ninterface IPendingScreenProps {}\n\nexport const PendingScreen: React.FC = () => {\n const getMessage = () =>\n \"Aguardando confirmação de pagamento no cartão, assim que confirmado o plano será ativado automaticamente.\";\n\n return (\n \n \n \n \n\n \n \n {getMessage()}\n \n \n \n );\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { Col, Row, Typography, Spin, message } from \"antd\";\nimport Button from \"../../../Button\";\nimport { formatCurrency } from \"../../../../utils\";\nimport pixLogo from \"../../../../assets/logo-pix.png\";\nimport { apiPayment } from \"../../../../services/payment\";\nimport api from \"../../../../services/api\";\nimport { useClients } from \"../../../../contexts/ClientsContext\";\nimport { useAuth } from \"../../../../contexts/AuthContext\";\nimport { CopyText } from \"./components/CopyText\";\nimport { getPlanPrice, planos } from \"../../../Planos/planos\";\nimport { ICreatePaymentXPPro } from \"..\";\nimport { Plan as IPlan, UserPlan, UserPlanEnum } from \"../../../../constants/plans\";\n\nvar getStatus: NodeJS.Timeout;\n\ninterface PixStepProps {\n paymentData: any;\n handleIdBack?: (event: any) => void;\n onSucess?: (event: any) => void;\n backStep?: () => void;\n clientUsername: any,\n type: any,\n setStep: any,\n onCancel: any,\n plan?: IPlan | UserPlan;\n filters?: any\n}\n\nenum EPlanStep {\n CHOOSE_PAYMENT = \"CHOOSE_PAYMENT\",\n PIX_PAYMENT = \"PIX_PAYMENT\",\n CC_PAYMENT = \"CC_PAYMENT\",\n LOADING = \"LOADING\",\n FINISHED = \"FINISHED\",\n}\n\nconst pixTaxesByInsitution: Record = {\n \"imoveis-velotax\": 350,\n \"rendimentos-velotax\": 9.9,\n \"bolsa-velotax\": 9.9,\n \"exterior-velotax\": 9.9,\n \"crypto-velotax\": 9.9,\n};\n\nexport const PixStep: React.FC = ({\n paymentData,\n handleIdBack,\n onSucess,\n backStep,\n clientUsername,\n type,\n setStep,\n onCancel,\n plan,\n filters\n}) => {\n const { selectedClient, getClients, setSelectedClient } = useClients();\n const [loading, setLoading] = useState(false);\n const [brCode, setBrCode] = useState('');\n const [qrCode, setQrCode] = useState('');\n const provider = paymentData.isPlan ? \"pagarme\" : \"starkbank\";\n const { user } = useAuth();\n\n useEffect(() => {\n if (provider === \"pagarme\") {\n createPlanXPPro();\n }\n // eslint-disable-next-line\n }, []);\n\n const checkWasPaid = useCallback(\n (delay: number = 2) => {\n let attempts = 0;\n getStatus = setInterval(async () => {\n api\n .post(`/plans/checkWasPaidPix`, {username: clientUsername})\n .then(async (res) => {\n if (res.data?.payed) {\n clearInterval(getStatus);\n message.success(\"Pagamento Confirmado com sucesso!\")\n setStep(EPlanStep.FINISHED);\n const { clients } = await getClients({...(filters || {})});\n const client = selectedClient;\n const newClient = clients.find((c: any) => c.username === client?.username);\n setSelectedClient(null);\n setTimeout(() => {\n setSelectedClient(newClient);\n }, 300);\n }\n })\n .finally(() => {\n attempts += 1;\n if (attempts > 100) {\n clearInterval(getStatus);\n }\n });\n }, delay * 1000);\n },\n []\n );\n\n useEffect(() => {\n // return () => getStatus && clearInterval(getStatus);\n }, [checkWasPaid]);\n\n const createPlanXPPro = () => {\n const body = {\n clientUsername,\n type,\n from: \"WARREN\",\n planUpgrade: paymentData.planUpgrade || false,\n isPlan: true,\n acceptTerms: true,\n clientInfo: {\n name: user.user.name,\n email: user.user.email,\n document: user.user.username,\n isAssessor: true\n },\n paymentForm: 'pix',\n };\n setLoading(true);\n api\n .post(\"/plans/createPayment\", body)\n .then(async (res) => {\n if (res.data.br_code && res.data.qrCode) {\n setBrCode(res.data.br_code)\n setQrCode(res.data.qrCode)\n checkWasPaid()\n } else {\n message.info(\n \"Seu pagamento ainda não foi processado. Tente novamente mais tarde.\"\n );\n setStep(EPlanStep.CHOOSE_PAYMENT);\n if (onCancel) onCancel();\n }\n })\n .catch(() => {\n message.error(\"Algo deu errado. Tente novamente mais tarde.\");\n setStep(EPlanStep.CHOOSE_PAYMENT);\n paymentData.stopIntervalPix()\n })\n .finally(async () => {\n setLoading(false)\n });\n };\n\n const getDiscount = () => {\n if (paymentData.type === UserPlanEnum.VELOTAX_MAIN_PRO) {\n if (user?.user?.discount! >= 66) return 66.77797;\n else return user?.user?.discount || 0;\n }\n if (paymentData.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE) {\n if (user?.user?.discount! >= 75) return 75.09387;\n return user?.user?.discount || 0;\n }\n else return user?.user?.discount || 0\n }\n\n const plano = planos.find(p => p.type === paymentData.type)\n const price = getPlanPrice(plano!, false) ?? 25.9;\n const installments = plano?.installments || 1;\n let totalPrice = price * installments;\n console.log(user.user.discount);\n\n if (user.user.discount && paymentData.type !== UserPlanEnum.VELOTAX_MAIN_BASIC) \n totalPrice -= totalPrice * (getDiscount() / 100);\n const planPrice = totalPrice / installments;\n\n return (\n \n \n \n \n \n Abra o aplicativo do banco em que você possui o PIX cadastrado e\n selecione a opção de escanear QR Code ou PIX copia e cola.{\" \"}\n {paymentData.isPlan && (\n \n \n Plano anual\n \n \n 12x de {formatCurrency(planPrice)} ={\" \"}\n {formatCurrency(planPrice * 12)}\n \n \n )}\n \n \n \n {!qrCode && !qrCode && (\n \n )}\n\n {qrCode && (\n \n )}\n \n \n \n {brCode ? (\n <>\n \n \n {brCode}\n \n \n \n ) : (\n \"\"\n )}\n \n {!paymentData.isPlan && (\n \n \n \n Taxa de serviço:{\" \"}\n {formatCurrency(\n pixTaxesByInsitution?.[paymentData.institution] || 9.9\n )}\n \n \n \n )}\n backStep && backStep()}\n >\n Voltar\n \n \n \n );\n};\n","import { HTMLAttributes } from \"react\";\n\ninterface CopyTextProps extends HTMLAttributes {\n id: string;\n}\n\nexport const CopyText: React.FC = ({ children, ...props }) => {\n const selectText = () => {\n if ((document as any).selection) {\n // Internet Explorer\n const range = (document.body as any).createTextRange?.();\n range?.moveToElementText?.(document.getElementById(props.id)!);\n range?.select();\n } else if (window.getSelection) {\n const range = document.createRange?.();\n range?.selectNode?.(document.getElementById(props.id)!);\n window.getSelection?.()?.removeAllRanges?.();\n window.getSelection?.()?.addRange?.(range);\n }\n };\n\n return (\n {\n selectText();\n props.onClick?.(e);\n }}\n >\n {children}\n \n );\n};\n","import styled from \"styled-components\";\n\nexport const CardContent = styled.div`\n display: flex;\n background-color: transparent;\n align-items: center;\n width: 100%;\n justify-content: center;\n height: 115px;\n border-radius: 7px;\n margin-top: 10px;\n cursor: pointer;\n\n .full-container {\n margin: auto;\n\n .card-number {\n display: flex;\n }\n }\n`;\n\nexport const CardButton = styled.button`\n justify-content: space-between;\n height: auto !important;\n min-height: 53px !important;\n display: flex;\n font-size: ${(isMinimalMobile) =>\n isMinimalMobile ? \"16px\" : \"20px\"} !important;\n font-weight: 600 !important;\n font-family: \"Consolas\", \"Courier\", monospace !important;\n color: var(--velotax-font-color-dark) !important;\n border-radius: 8px !important;\n border: 1px solid var(--ghost) !important;\n box-shadow: 0px 4px 8px var(--ghost) !important;\n transition: 0.3s;\n\n &:hover {\n background-color: var(--ghost);\n transition: 0.3s;\n }\n\n .rccs {\n width: 80px;\n margin: -2px 0 0;\n .rccs__card {\n width: 90px;\n height: 64px;\n margin: 0;\n\n .rccs__card--front {\n padding: 8px;\n box-shadow: none;\n border-radius: 4px;\n background: transparent;\n\n .rccs__card__background,\n .rccs__number,\n .rccs__expiry,\n .rccs__name,\n .rccs__chip {\n display: none;\n }\n\n .rccs__issuer {\n top: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n position: relative;\n background-position: center center;\n }\n }\n .rccs__card--back {\n display: none;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n &.MuiButton-root {\n font-size: 14px !important;\n padding: 6px 16px;\n }\n .rccs {\n width: 48px;\n margin: -2px 0 0 -8px;\n\n .rccs__card {\n width: 64px;\n height: 48px;\n }\n }\n }\n\n .rccs__card--visa .rccs__issuer {\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSIxMDAwLjA0NiIKICAgaGVpZ2h0PSIzMjMuNjUzMDIiCiAgIHZpZXdCb3g9IjAgMCAxMDAwLjA0NiAzMjMuNjUzIgogICBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNTguMzgxIDE2MS4xNTQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTEgcjEzNzI1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJWaXNhXzIwMDYuc3ZnIj48bWV0YWRhdGEKICAgaWQ9Im1ldGFkYXRhMjMiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48ZGM6dGl0bGU+PC9kYzp0aXRsZT48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgaWQ9ImRlZnMyMSI+CgkKCQoJCgkKCQoJCgkKPC9kZWZzPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgYm9yZGVyb3BhY2l0eT0iMSIKICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgIGd1aWRldG9sZXJhbmNlPSIxMCIKICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTM2NiIKICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iNzA1IgogICBpZD0ibmFtZWR2aWV3MTkiCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iMC4zNTM1NTMzOSIKICAgaW5rc2NhcGU6Y3g9IjM0LjY5MDg5NyIKICAgaW5rc2NhcGU6Y3k9IjEzMS4xNTQ4MyIKICAgaW5rc2NhcGU6d2luZG93LXg9Ii04IgogICBpbmtzY2FwZTp3aW5kb3cteT0iLTgiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9IkxheWVyXzEiIC8+CjxnCiAgIGlkPSJnNDE1OCIKICAgdHJhbnNmb3JtPSJtYXRyaXgoNC40Mjk5NjMxLDAsMCw0LjQyOTk2MzEsLTgxLjE2NTc4MywtMTA1LjA0NzgzKSI+PHBvbHlnb24KICAgICBwb2ludHM9IjExNi4xNDUsOTUuNzE5IDk3Ljg1OCw5NS43MTkgMTA5LjI5NiwyNC45OTUgMTI3LjU4MiwyNC45OTUgIgogICAgIGlkPSJwb2x5Z29uOSIKICAgICBzdHlsZT0iZmlsbDojMDA1NzlmIiAvPjxwYXRoCiAgICAgZD0ibSAxODIuNDM3LDI2LjcyNCBjIC0zLjYwNywtMS40MzEgLTkuMzI4LC0zLjAxMSAtMTYuNDAyLC0zLjAxMSAtMTguMDU5LDAgLTMwLjc3Niw5LjYzIC0zMC44NTQsMjMuMzk4IC0wLjE1LDEwLjE1OCA5LjEwNSwxNS44IDE2LjAyNywxOS4xODcgNy4wNzUsMy40NjEgOS40OCw1LjcyIDkuNDgsOC44MDUgLTAuMDcyLDQuNzM4IC01LjcxNyw2LjkyMiAtMTAuOTgyLDYuOTIyIC03LjMwMSwwIC0xMS4yMTMsLTEuMTI2IC0xNy4xNTgsLTMuNzYyIGwgLTIuNDA4LC0xLjEzIC0yLjU1OSwxNS44NzYgYyA0LjI4OSwxLjk1NCAxMi4xOTEsMy42ODggMjAuMzk1LDMuNzY0IDE5LjE4OCwwIDMxLjY4LC05LjQ4MSAzMS44MjgsLTI0LjE1MyAwLjA3MywtOC4wNTEgLTQuODE0LC0xNC4yMiAtMTUuMzUsLTE5LjI2MSAtNi4zOTYsLTMuMjM2IC0xMC4zMTMsLTUuNDE4IC0xMC4zMTMsLTguNzI5IDAuMDc1LC0zLjAxIDMuMzEzLC02LjA5MyAxMC41MzMsLTYuMDkzIDUuOTQ1LC0wLjE1MSAxMC4zMTMsMS4yNzggMTMuNjIyLDIuNzA4IGwgMS42NTQsMC43NTEgMi40ODcsLTE1LjI3MiAwLDAgeiIKICAgICBpZD0icGF0aDExIgogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgc3R5bGU9ImZpbGw6IzAwNTc5ZiIgLz48cGF0aAogICAgIGQ9Im0gMjA2Ljc0Miw3MC42NjQgYyAxLjUwNiwtNC4wNjMgNy4zMDEsLTE5Ljc4OCA3LjMwMSwtMTkuNzg4IC0wLjA3NiwwLjE1MSAxLjUwMywtNC4xMzggMi40MDYsLTYuNzcxIGwgMS4yNzgsNi4wOTQgYyAwLDAgMy40NjMsMTYuOTI5IDQuMjE1LDIwLjQ2NSAtMi44NTgsMCAtMTEuNTg4LDAgLTE1LjIsMCBsIDAsMCB6IG0gMjIuNTczLC00NS42NjkgLTE0LjE0NSwwIGMgLTQuMzYyLDAgLTcuNjc2LDEuMjc4IC05LjU1OCw1Ljg2OCBsIC0yNy4xNjMsNjQuODU1IDE5LjE4OCwwIGMgMCwwIDMuMTU5LC04LjcyOSAzLjgzOCwtMTAuNjA5IDIuMTA1LDAgMjAuNzcxLDAgMjMuNDc5LDAgMC41MjUsMi40ODMgMi4xODIsMTAuNjA5IDIuMTgyLDEwLjYwOSBsIDE2LjkzMiwwIC0xNC43NTMsLTcwLjcyMyAwLDAgeiIKICAgICBpZD0icGF0aDEzIgogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgc3R5bGU9ImZpbGw6IzAwNTc5ZiIgLz48cGF0aAogICAgIGQ9Ik0gODIuNTg0LDI0Ljk5NSA2NC42NzUsNzMuMjIyIDYyLjcxOCw2My40NDEgQyA1OS40MDcsNTIuMTU1IDQ5LjAyMywzOS44OTMgMzcuNDM1LDMzLjc5NiBsIDE2LjQwNCw2MS44NDggMTkuMzM4LDAgMjguNzQ0LC03MC42NDkgLTE5LjMzNywwIDAsMCB6IgogICAgIGlkPSJwYXRoMTUiCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICBzdHlsZT0iZmlsbDojMDA1NzlmIiAvPjxwYXRoCiAgICAgZD0ibSA0OC4wNDUsMjQuOTk1IC0yOS40MjIsMCAtMC4zMDEsMS40MjkgYyAyMi45NTEsNS44NjkgMzguMTUxLDIwLjAxNiA0NC4zOTYsMzcuMDIgTCA1Ni4zMjIsMzAuOTQgYyAtMS4wNTMsLTQuNTE3IC00LjI4OSwtNS43OTYgLTguMjc3LC01Ljk0NSBsIDAsMCB6IgogICAgIGlkPSJwYXRoMTciCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICBzdHlsZT0iZmlsbDojZmFhNjFhIiAvPjwvZz4KPC9zdmc+);\n }\n\n .rccs__card--visaelectron .rccs__issuer {\n background-image: url(data:image/png;base64,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);\n }\n\n .rccs__card--hipercard .rccs__issuer {\n background-image: url(data:image/png;base64,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);\n }\n`;\n","import { MdCheck } from \"react-icons/md\";\nimport React, { useState, useEffect } from \"react\";\nimport { Modal, Row, Col, Spin, message, Tooltip } from \"antd\";\nimport Button from \"../../Button\";\nimport { apiPayment } from \"../../../services/payment\";\nimport CreditCardStep, { ETypePurchase } from \"./CreditCardStep\";\nimport { IClient, useClients } from \"../../../contexts/ClientsContext\";\nimport { CardButton } from \"./styles\";\nimport Cards from \"react-credit-cards\";\nimport api from \"../../../services/api\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { PixStep } from \"./PixStep\";\n\ninterface PaymentModalProps {\n show: boolean;\n onCancel?: () => void;\n paymentData: any;\n callDarf: any;\n hideDarfDownload?: boolean;\n onSucessPix?: (event: any) => void;\n onSucessCreditCard?: (event?: any) => void;\n planCurrent?: any;\n disablePixOption?: boolean;\n disableCreditCardOption?: boolean;\n disableCreditCardMessage?: string;\n customInstallments?: number;\n maxPixValue?: number;\n maxCCValue?: number;\n selectedYear?: number;\n emitting?: boolean;\n clientSelected?: IClient;\n createConciergePlan: React.MouseEventHandler;\n typeConcierge?: string;\n filters?: any\n}\n\nexport interface cardAttributes {\n id: string;\n first_six_digits: string;\n last_four_digits: string;\n brand: string;\n customer_id: string;\n holder_name: string;\n exp_month: number;\n exp_year: number;\n status: string;\n type: string;\n created_at: Date;\n updated_at: Date;\n billing_address: {\n street: string;\n zip_code: string;\n city: string;\n state: string;\n country: string;\n line_1: string;\n };\n}\n\nexport interface ICreatePaymentXPPro {\n cardInfo?:\n | {\n line_1: any;\n zip_code: any;\n city: any;\n state: any;\n holder_name: any;\n number: any;\n exp_month: any;\n exp_year: any;\n holderDocument: any;\n cvv: any;\n }\n | { card_id: string };\n clientInfo:\n | {\n name: any;\n email: any;\n document: any;\n phone?: any;\n isAssessor: boolean;\n }\n | {\n customer_id: string;\n document: string;\n isAssessor: boolean;\n email: string;\n };\n paymentForm?: string;\n installments?: number;\n}\n\ninterface PaymentInfoContentProps {\n content: JSX.Element;\n title?: string;\n amount?: number;\n}\n\nexport interface PaymentDetailsProp {\n value?: number;\n paymentId: string;\n qrCodeLink?: string;\n name?: string;\n}\n\nenum EPlanStep {\n CHOOSE_PAYMENT = \"CHOOSE_PAYMENT\",\n PIX_PAYMENT = \"PIX_PAYMENT\",\n CC_PAYMENT = \"CC_PAYMENT\",\n LOADING = \"LOADING\",\n FINISHED = \"FINISHED\",\n}\n\nlet getStatus: any;\n\nexport const PaymentModal: React.FC = ({\n show,\n onCancel,\n paymentData,\n callDarf,\n hideDarfDownload,\n disableCreditCardOption,\n disableCreditCardMessage,\n onSucessPix,\n planCurrent,\n onSucessCreditCard,\n customInstallments,\n maxPixValue,\n selectedYear,\n emitting = false,\n clientSelected,\n createConciergePlan,\n typeConcierge,\n filters\n}) => {\n const { user } = useAuth();\n const { selectedClient, getClients, setSelectedClient } = useClients();\n const [loading, setLoading] = useState(false);\n const [step, setStep] = useState(EPlanStep.CHOOSE_PAYMENT);\n const [cardList, setCardList] = useState();\n const [disabledConciergeOption] = useState(\n user.user.liberadaContratacao && !user.user.isManager && !user.user.office\n );\n\n const ocultaContratacaoViaFatura = paymentData.planUpgrade\n const desabilitaContratacaoViaPix = !!paymentData.planUpgrade\n\n useEffect(() => {\n const token = localStorage.getItem(\"@VeloTax:token\");\n if (!token) message.error(\"Token não encontrado. Recarregue sua página\");\n else if (\n !cardList &&\n step === EPlanStep.CHOOSE_PAYMENT &&\n !disableCreditCardOption\n ) {\n setLoading(true);\n apiPayment\n .get(\"/pro/list-card\", {\n headers: { Authorization: `Bearer ${token}` },\n })\n .then((res) => {\n setCardList(res?.data?.list || []);\n })\n .catch(() => {})\n .finally(() => setLoading(false));\n }\n }, [step, cardList, disableCreditCardOption]);\n\n const createPlanXPPro = (data: ICreatePaymentXPPro) => {\n const body = {\n clientUsername: clientSelected?.username,\n type: planCurrent?.type,\n from: \"WARREN\",\n planUpgrade: paymentData.planUpgrade || false,\n paymentForm: 'credit_card',\n isPlan: true,\n acceptTerms: true,\n ...data,\n };\n setLoading(true);\n setStep(EPlanStep.LOADING);\n api\n .post(\"/plans/createPayment\", body)\n .then(async (res) => {\n if (res.data.payed) {\n setStep(EPlanStep.FINISHED);\n const { clients } = await getClients({...(filters || {})});\n const client = selectedClient;\n const newClient = clients.find((c: any) => c.username === client?.username);\n setSelectedClient(null);\n setTimeout(() => {\n setSelectedClient(newClient);\n onSucessCreditCard && onSucessCreditCard()\n }, 200);\n } else {\n message.info(\n \"Seu pagamento ainda não foi processado. Tente novamente mais tarde.\"\n );\n setStep(EPlanStep.CHOOSE_PAYMENT);\n if (onCancel) onCancel();\n }\n })\n .catch(() => {\n message.error(\"Algo deu errado. Tente novamente mais tarde.\");\n setStep(EPlanStep.CHOOSE_PAYMENT);\n })\n .finally(async () => setLoading(false));\n };\n\n const getPurchaseType = () => {\n if (planCurrent?.type in ETypePurchase) return planCurrent?.type;\n\n return ETypePurchase.UNIQUE;\n };\n\n const plansContentDisplay: Record = {\n [EPlanStep.CHOOSE_PAYMENT]: {\n content: (\n \n \n {!ocultaContratacaoViaFatura && \n \n {\n if (!user.user.liberadaContratacao) {\n const text =\n \"Olá, tenho interesse em ativar meu Concierge Velotax.\";\n const url = `https://wa.me/5511971735447?text=${text.replaceAll(\n \" \",\n \"%20\"\n )}`;\n window.open(url, \"_blank\");\n } else if (disabledConciergeOption) {\n } else createConciergePlan(e);\n }}\n >\n {user.user.liberadaContratacao\n ? \"INCLUIR NA FATURA DO ESCRITÓRIO\"\n : \"ATIVAR MEU CONCIERGE VELOTAX\"}\n \n \n }\n \n \n {\n if (!disableCreditCardOption) setStep(EPlanStep.CC_PAYMENT);\n }}\n style={{\n fontWeight: 500,\n backgroundColor: disableCreditCardOption\n ? \"var(--ghost)\"\n : \"\",\n border: disableCreditCardOption ? \"none\" : \"\",\n cursor: disableCreditCardOption ? \"default\" : \"pointer\",\n }}\n >\n {(cardList || []).length > 0 && `ADICIONAR `}CARTÃO DE CRÉDITO\n \n \n \n \n {\n if (!disableCreditCardOption) setStep(EPlanStep.PIX_PAYMENT);\n }}\n >\n PIX À VISTA\n \n \n \n \n {loading || true ? (\n \n \n \n \n \n ) : (\n (cardList || []).map((card) => {\n return (\n \n {\n createPlanXPPro({\n cardInfo: { card_id: card?.id },\n clientInfo: {\n customer_id: card?.customer_id,\n document: user?.user?.username,\n isAssessor: true,\n email: user?.user?.email,\n },\n });\n }}\n >\n \n \n \n \n \n {\"**** **** **** \" + card.last_four_digits}\n \n \n \n \n );\n })\n )}\n \n \n \n \n ),\n title: \"Escolha sua forma de pagamento:\",\n },\n [EPlanStep.PIX_PAYMENT]: {\n content: (\n setStep(EPlanStep.CHOOSE_PAYMENT)}\n clientUsername={clientSelected?.username}\n type={planCurrent?.type}\n onCancel={onCancel}\n setStep={setStep}\n filters={filters}\n />\n ),\n title: \"PIX À VISTA\",\n },\n [EPlanStep.CC_PAYMENT]: {\n content: (\n {}}\n status=\"\"\n plan={planCurrent}\n handleSuccess={onSucessCreditCard}\n setInitialized={() => {}}\n darfData={paymentData}\n customInstallments={customInstallments}\n backToRoot={() => setStep(EPlanStep.CHOOSE_PAYMENT)}\n clientSelected={clientSelected}\n createPlanXPPro={createPlanXPPro}\n />\n ),\n title: \"Cartão de crédito\",\n },\n [EPlanStep.LOADING]: {\n content: (\n \n \n \n \n Estamos processando o seu pagamento...\n \n \n \n ),\n title: \"Aguarde um instante\",\n },\n [EPlanStep.FINISHED]: {\n content: (\n \n \n \n \n \n Seu pagamento foi realizado com sucesso\n \n \n ),\n title: \"Confirmação de Pagamento\",\n },\n };\n\n const title = plansContentDisplay?.[step]?.title;\n const content = plansContentDisplay?.[step]?.content;\n\n const cancelActions = (e: any) => {\n setStep(EPlanStep.CHOOSE_PAYMENT);\n clearInterval(getStatus);\n\n if (onCancel) {\n onCancel();\n }\n };\n\n const handlePadding =\n window.innerWidth <= 768 ? \"0 32px 32px\" : \"0 64px 32px\";\n\n return (\n cancelActions(e)}\n bodyStyle={{ padding: handlePadding }}\n >\n {content}\n \n );\n};\n","import { BiCheck } from \"react-icons/bi\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Switch, Tooltip, Typography, message } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport Button from \"../../components/Button\";\n\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { UserPlanEnum } from \"../../constants/plans\";\nimport { Container, PlanosContainer } from \"./styles\";\n\nimport { TrustPilotTrustBox } from \"../../components/TrustPilot\";\nimport { UserPlanUpgradeEnum, getPlanOriginalPrice, getPlanPrice, planos } from \"./planos\";\nimport { ReactComponent as Selo7dias } from \"../../assets/icons/selo-7-dias.svg\";\nimport { ReactComponent as SeloGarantia } from \"../../assets/icons/selo-garantia.svg\";\nimport { ReactComponent as TrustPilotLogo } from \"../../assets/icons/trustpilot-logo.svg\";\nimport { ReactComponent as TrustPilotStars } from \"../../assets/icons/trustpilot-stars.svg\";\nimport { apiPayment } from \"../../services/payment\";\nimport { PaymentModal } from \"../Payment/PaymentModal\";\nimport api from \"../../services/api\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport { isMobile } from \"../../utils\";\nimport { IoMdArrowRoundBack } from \"react-icons/io\";\n\nvar getStatus: NodeJS.Timeout;\n\nexport interface HasPlan {\n basic: boolean;\n premium: boolean;\n concierge: boolean;\n}\n\nexport const Planos = ({hasPlan, selectedClient, onBack, onFinish, filters}: {hasPlan: false | HasPlan; selectedClient: any, onBack?: () => void, onFinish?: () => void, filters?: any}) => {\n const { user } = useAuth()\n const navigate = useNavigate();\n const [selectedPlan, setSelectedPlan] = useState();\n const [paymentModal, setPaymentModal] = useState(false);\n const [planUpgrade, setPlanUpgrade] = useState();\n const [typeConcierge, setTypeConcierge] = useState('anual');\n const { getClients, setSelectedClient } = useClients();\n\n const handleSelectPlan = (plan: any) => {\n setPaymentModal(true);\n setSelectedPlan(plan);\n };\n\n const checkWasPaid = useCallback(\n (id: string, delay: number = 2) => {\n let attempts = 0;\n getStatus = setInterval(async () => {\n const token = localStorage.getItem(\"@VeloTax:token\");\n apiPayment\n .get(`/user-plan/plan-info`, {\n headers: { Authorization: `Bearer ${token}` },\n })\n .then((res) => {\n if (res.data?.active) {\n clearInterval(getStatus);\n message.success(\"Pagamento Confirmado com sucesso!\");\n }\n })\n .finally(() => {\n attempts += 1;\n if (attempts > 100) {\n clearInterval(getStatus);\n }\n });\n }, delay * 1000);\n },\n []\n );\n\n const handleSuccess = (data: any) => {\n onFinish && onFinish()\n // checkWasPaid(data.paymentId, 4);\n };\n\n const stopIntervalPix = () => {\n if (getStatus) clearInterval(getStatus);\n };\n\n useEffect(() => {\n // return () => getStatus && clearInterval(getStatus);\n }, [checkWasPaid]);\n\n // useEffect(() => {\n // // setPaymentModal(true);\n // setSelectedPlan();\n // }, [user?.user?.userPlanInfoVelotax?.type]);\n\n const onChange = (e: any) => {\n if (e) setTypeConcierge('mensal');\n else setTypeConcierge('anual');\n }\n\n const createPlanFromSelectedClient = async () => {\n try {\n const usernames = [selectedClient.username];\n const { data } = await api.post(\"/plans\", {\n usernames,\n planName: selectedPlan?.type,\n type: typeConcierge\n });\n getClients();\n message.success(\n `${data.count} Clientes adicionados no Plano premium com sucesso`\n );\n } catch (err) {\n message.success(\"Ocorreu um erro ao adicionar os clientes no plano\");\n } finally {\n setPaymentModal(false);\n setSelectedClient(null);\n }\n };\n\n const getMinDiscount = (planType: string, discount: number) => {\n if (typeConcierge === \"mensal\") {\n if (planType.includes('_PRO')) {\n if (discount >= 50) return 50.06258;\n else return discount;\n }\n else if (planType.includes('_CONCIERGE')) {\n if (discount >= 60) return 60.06006;\n else return discount;\n }\n else return discount;\n }\n else {\n if (planType.includes('_PRO')) {\n if (discount >= 66) return 66.77797;\n else return discount;\n }\n else if (planType.includes('_CONCIERGE')) {\n if (discount >= 75) return 75.09387;\n else return discount;\n }\n else return discount;\n }\n }\n\n const getMinDiscountLabel = (planType: string, discount: number) => {\n if (typeConcierge === \"mensal\") {\n if (planType.includes('_PRO')) {\n if (discount >= 50) return 50;\n else return discount;\n }\n else if (planType.includes('_CONCIERGE')) {\n if (discount >= 60) return 60;\n else return discount;\n }\n else return discount;\n }\n else {\n if (planType.includes('_PRO')) {\n if (discount >= 66) return 66;\n else return discount;\n }\n else if (planType.includes('_CONCIERGE')) {\n if (discount >= 75) return 75;\n else return discount;\n }\n else return discount;\n }\n }\n\n return (\n \n
\n \n {onBack && \n \n }\n Selecione seu plano\n \n
\n {/* \n
\n
\n “Bom”\n \n \n \n \n
\n
\n \n \n 100% de precisão\n \n
\n
\n \n \n Garantia por 7 dias ou seu dinheiro de volta\n \n \n \n \n
\n
*/}\n {user.user.liberadaContratacao && !hasPlan &&\n
\n Faturamento anual\n \n Faturamento mensal\n
\n }\n {user.user.liberadaContratacao\n ? \n \n {planos.map((plan) => (\n (typeConcierge == 'mensal' && !plan.type.includes('_MONTH')) ? <> :\n <>\n
\n {plan.popular &&
Mais vendido
}\n \n {plan.name}\n \n {plan.for}\n {(user.user?.discount && user.user.liberadaContratacao && !plan.type.includes('_BASIC'))\n ?\n <>\n
\n \n R${\" \"}\n {\n getPlanOriginalPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n }\n \n {user.user?.discount ? `${getMinDiscountLabel(plan.type, user.user?.discount)}%` : '0%'} desconto\n \n :
}\n \n {hasPlan && hasPlan?.basic && \n (plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE ||\n plan.type === UserPlanEnum.VELOTAX_MAIN_PRO ||\n plan.type === UserPlanEnum.WARREN_CONCIERGE ||\n plan.type === UserPlanEnum.WARREN_PRO\n ) \n &&
+
}\n {hasPlan && hasPlan?.premium && (plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE || plan.type === UserPlanEnum.WARREN_CONCIERGE) &&
+
}\n R${\" \"}\n \n {\n (user.user?.discount && !plan.type.includes('_BASIC'))\n ? (getPlanOriginalPrice(plan, hasPlan) - ((getPlanOriginalPrice(plan, hasPlan) * getMinDiscount(plan.type, user.user?.discount) / 100)))\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n : getPlanOriginalPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n .split(\",\")[0]\n }\n \n {(!user.user?.discount || plan.type.includes('_BASIC')) &&\n <>\n ,\n {\n getPlanPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n .split(\",\")[1]\n }\n \n }\n
\n \n {(typeConcierge == 'mensal') ? 'por mês' : 'por mês no plano anual'}\n \n {\n if (hasPlan) {\n setPlanUpgrade(\n hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.PRO_TO_CONCIERGE\n : hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? UserPlanUpgradeEnum.BASIC_TO_PRO\n : hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.BASIC_TO_CONCIERGE\n : undefined\n );\n }\n handleSelectPlan(plan);\n }}\n >\n {!hasPlan\n ? \"Selecionar\"\n : (hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_BASIC) ||\n (hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO) ||\n (hasPlan.concierge &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE) ||\n (hasPlan.basic &&\n plan?.type === UserPlanEnum.WARREN_BASIC) ||\n (hasPlan.premium &&\n plan?.type === UserPlanEnum.WARREN_PRO) ||\n (hasPlan.concierge &&\n plan?.type === UserPlanEnum.WARREN_CONCIERGE) \n ? \"Ativo\"\n : \"Fazer upgrade\"}\n \n \n {plan.includes}\n \n
\n {plan.benefits.map((benefit, index) => (\n
\n \n {benefit.split(\"{\")[0]}\n {benefit.split(\"{\")?.[1]?.length > 0 ? (\n target.parentElement!}\n >\n \n \n ) : (\n <>\n )}\n
\n ))}\n
\n
\n \n ))}\n
\n :\n \n {planos.map((plan) => (\n <>\n {plan.type.includes('_MONTH') ? <> : \n
\n {plan.popular &&
Mais vendido
}\n \n {plan.name}\n \n {plan.for}\n \n {hasPlan && hasPlan?.basic && \n (plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE ||\n plan.type === UserPlanEnum.VELOTAX_MAIN_PRO ||\n plan.type === UserPlanEnum.WARREN_CONCIERGE ||\n plan.type === UserPlanEnum.WARREN_PRO) \n &&
+
}\n {hasPlan && hasPlan?.premium && plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE &&
+
}\n R${\" \"}\n \n {\n getPlanOriginalPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n .split(\",\")[0]\n }\n \n ,\n {\n getPlanOriginalPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n .split(\",\")[1]\n }\n
\n \n {/* {hasPlan && hasPlan?.premium && plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE && R$ 79,90 } */}\n por mês no plano anual\n \n {\n if (hasPlan) {\n setPlanUpgrade(\n hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.PRO_TO_CONCIERGE\n : hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? UserPlanUpgradeEnum.BASIC_TO_PRO\n : hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.BASIC_TO_CONCIERGE\n : undefined\n );\n }\n handleSelectPlan(plan);\n }}\n >\n {!hasPlan\n ? \"Selecionar\"\n : (hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_BASIC) ||\n (hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO) ||\n (hasPlan.concierge &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE) ||\n (hasPlan.basic &&\n plan?.type === UserPlanEnum.WARREN_BASIC) ||\n (hasPlan.premium &&\n plan?.type === UserPlanEnum.WARREN_PRO) ||\n (hasPlan.concierge &&\n plan?.type === UserPlanEnum.WARREN_CONCIERGE)\n ? \"Ativo\"\n : \"Fazer upgrade\"}\n \n \n {plan.includes}\n \n
\n {plan.benefits.map((benefit, index) => (\n
\n \n {benefit.split(\"{\")[0]}\n {benefit.split(\"{\")?.[1]?.length > 0 ? (\n target.parentElement!}\n >\n \n \n ) : (\n <>\n )}\n
\n ))}\n
\n
\n }\n \n ))}\n
\n }\n
\n {}}\n planCurrent={selectedPlan}\n onSucessPix={checkWasPaid}\n onSucessCreditCard={handleSuccess}\n disableCreditCardOption={typeConcierge == 'mensal' ? true : false}\n createConciergePlan={createPlanFromSelectedClient}\n paymentData={{\n planUpgrade,\n type: selectedPlan?.type,\n isPlan: true,\n stopIntervalPix,\n }}\n onCancel={() => {\n setPaymentModal(false);\n setSelectedPlan(undefined);\n // setDirectPayment(false);\n }}\n clientSelected={selectedClient}\n typeConcierge={typeConcierge}\n filters={filters}\n />\n \n );\n};\n","// Config\n\n// Components\nimport moment from \"moment\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport { AvisosContainer } from \"./styles\";\nimport { ChoosePlanStep } from \"../UserPlanModal/ChoosePlanStep\";\nimport { useEffect, useState } from \"react\";\nimport { Button, Typography } from \"antd\";\nimport { FiArrowRight } from \"react-icons/fi\";\nimport { AiOutlineLink } from \"react-icons/ai\";\nimport { BiX } from \"react-icons/bi\";\nimport api from \"../../services/api\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { Planos } from \"../Planos\";\n// Assets\n\n// Types\ninterface IProps {\n selectedPlan: any;\n setSelectedPlan: any;\n setPaymentType: any;\n clientsWithCancelRecurring: any;\n setShowPaymentModal: any;\n setOpen: any;\n setIntegrationModal: any;\n setIntegrationClient: any;\n setClientsSelected: any;\n filters?: any\n}\n\nexport const Avisos = ({\n selectedPlan,\n setSelectedPlan,\n setPaymentType,\n clientsWithCancelRecurring,\n setShowPaymentModal,\n setOpen,\n setIntegrationClient,\n setIntegrationModal,\n setClientsSelected,\n filters\n}: IProps) => {\n const { selectedClient, setClients, getClients } = useClients();\n const [dismissBolsa, setDismissBolsa] = useState(false);\n const [dismissExterior, setDismissExterior] = useState(false);\n const planBought = selectedClient?.userPlanInfoVelotax?.type ?? \"\";\n const isCancelRecurring = (clientsWithCancelRecurring || []).length > 0;\n\n useEffect(() => {\n setDismissBolsa(false);\n setDismissExterior(false);\n }, [selectedClient]);\n\n const closeIntegration = async (type: \"bolsa\" | \"exterior\") => {\n try {\n if (type === \"bolsa\") {\n setDismissBolsa(true);\n } else {\n setDismissExterior(true);\n }\n await api.put(\"/clients/close-integration\", {\n cpf: selectedClient?.username,\n type,\n });\n setClients((clients: any[]) =>\n clients.map((client) => ({\n ...client,\n closeIntegrationBolsa:\n client.username === selectedClient?.username && type === \"bolsa\"\n ? true\n : client.closeIntegrationBolsa,\n closeIntegrationExterior:\n client.username === selectedClient?.username && type === \"exterior\"\n ? true\n : client.closeIntegrationExterior,\n }))\n );\n } catch (err) {}\n };\n\n const temPlano =\n selectedClient?.planActive ||\n moment(new Date(selectedClient?.planDueDate || 2021)).isAfter(\n moment(new Date())\n ) ||\n selectedClient?.planType === \"exterior\";\n const temIntegracaoBolsa = selectedClient?.statusBolsa === \"Integração ativa\";\n const temIntegracaoExterior =\n selectedClient?.statusExterior === \"Integração ativa\";\n\n return (\n \n
\n {\n !temPlano && (\n \n )\n }\n {temPlano &&\n !temIntegracaoBolsa &&\n !dismissBolsa &&\n !selectedClient?.closeIntegrationBolsa && (\n
\n \n
\n \n Integração com bolsa pendente\n \n \n O seu cliente deve conceder a permissão na B3 para que seja\n possível acessar suas operações da bolsa de valores de forma\n automática.\n \n {\n setIntegrationModal(\"B3\");\n setIntegrationClient(selectedClient);\n }}\n >\n Saiba mais\n \n \n
\n closeIntegration(\"bolsa\")}\n />\n
\n )}\n {temPlano &&\n !temIntegracaoExterior &&\n !dismissExterior &&\n !selectedClient?.closeIntegrationExterior && (\n
\n \n
\n \n Conecte com a Warren International\n \n \n O seu cliente deve conceder a permissão na Warren International\n para que seja possível acessar suas operações no exterior de\n forma automática.\n \n {\n setIntegrationModal(\"Warren International\");\n setIntegrationClient(selectedClient);\n }}\n >\n Saiba mais\n \n \n
\n closeIntegration(\"exterior\")}\n />\n
\n )}\n
\n \n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .income-report-uploader {\n height: auto;\n display: block;\n margin-bottom: 16px;\n\n .ant-upload {\n width: 100%;\n height: 100px;\n border-radius: 16px;\n\n .upload-text-icon {\n height: 100%;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n svg {\n fill: var(--ant-primary-color);\n }\n\n .upload-text-desc {\n font-size: 14px;\n text-align: center;\n }\n }\n\n .loading-container {\n height: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n .anticon {\n width: 40px;\n height: 40px;\n margin-bottom: 12px;\n\n svg {\n width: 100%;\n height: 100%;\n fill: var(--dark-1);\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { Upload } from \"antd\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineCloudUpload } from \"react-icons/ai\";\nimport { RcFile, UploadChangeParam } from \"antd/lib/upload\";\nimport { UploadRequestOption as RcCustomRequestOptions } from \"rc-upload/lib/interface\";\nimport {\n ShowUploadListInterface,\n UploadFile,\n UploadListType,\n} from \"antd/lib/upload/interface\";\nimport { Container } from \"./styles\";\n\nexport interface IUploadProps {\n accept: string;\n beforeUpload?: (file: RcFile) => void;\n customRequest?: (file: RcCustomRequestOptions) => void;\n loading: boolean;\n multiple?: boolean;\n descText?: string;\n maxCount?: number;\n customText?: string;\n listType?: UploadListType;\n fileList?: UploadFile[];\n showUploadList?: boolean | ShowUploadListInterface;\n onRemove?:\n | ((file: UploadFile) => boolean | void | Promise)\n | undefined;\n onChange?: ((info: UploadChangeParam>) => void) | undefined;\n}\n\nconst UploadVelotax: React.FC = ({\n accept,\n fileList,\n onRemove,\n onChange,\n maxCount,\n beforeUpload,\n customRequest,\n loading = false,\n multiple = false,\n descText = \"\",\n showUploadList = false,\n listType = \"picture-card\",\n customText = \"Arraste ou clique\",\n}) => {\n return (\n \n \n {loading ? (\n
\n \n Isso pode demorar alguns minutos, aguarde\n
\n ) : (\n
\n \n {customText}\n {descText && {descText}}\n
\n )}\n \n
\n );\n};\n\nexport default UploadVelotax;\n","import styled, { css } from \"styled-components\";\n\nexport const PrevidenciaContainer = styled.div`\n display: flex;\n justify-content: center;\n flex-direction: column;\n width: 100%;\n padding-bottom: 16px;\n form {\n margin-top: 16px;\n }\n\n .ant-form-item-row {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n margin-bottom: -16px;\n }\n .ant-input.ant-input-lg {\n height: 40px;\n }\n .rows {\n width: 100% !important;\n max-width: 100% !important;\n display: flex;\n }\n .cols {\n display: flex;\n }\n .form-item {\n width: 80% !important;\n }\n\n .ant-form-item-label {\n margin-right: 10px;\n }\n\n .ant-form-item-control {\n width: 50% !important;\n max-width: 50% !important;\n }\n input {\n border-radius: 0 !important;\n }\n button {\n margin: 24px 0 0;\n border-radius: 0 !important;\n font-size: 16px !important;\n font-weight: 500 !important;\n }\n .list-pgbl {\n font-weight: 500;\n margin-bottom: 16px;\n }\n ul li {\n font-size: 12px;\n list-style-type: circle;\n list-style: circle;\n margin-left: 32px;\n }\n .ant-select ant-select-lg ant-select-single ant-select-show-arrow {\n height: 40px !important;\n }\n .ant-select-lg,\n .ant-select-lg .ant-select-selector {\n height: 40px !important;\n margin-top: 2px !important;\n border-radius: 0px !important;\n }\n .ant-select-selector {\n width: 120px !important;\n height: 40px !important;\n display: flex !important;\n align-items: center !important;\n margin-left: 16px !important;\n border-radius: 0px !important;\n }\n\n .previdencia-card {\n width: 100%;\n padding: 24px;\n border-radius: 8px;\n background-color: var(--white);\n border: 1px solid var(--ghost);\n box-shadow: 0px 4px 8px 0px var(--ghost);\n display: flex;\n margin-bottom: 8px;\n &:last-of-type {\n margin-bottom: 32px;\n }\n & > svg {\n min-width: 24px;\n min-height: 24px;\n stroke: var(--ant-primary-color);\n &.fill {\n fill: var(--ant-primary-color);\n }\n }\n\n .previdencia-card-content {\n width: 100%;\n justify-content: center;\n div.ant-typography {\n color: var(--gray-1);\n font-size: 16px;\n font-weight: 300;\n }\n .title {\n font-size: 20px;\n font-weight: 600;\n }\n }\n .header-box {\n font-size: 14px;\n padding: 8px;\n font-weight: 300;\n line-height: 1rem;\n height: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: #fff;\n }\n\n .header-border-top {\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n\n .header-border-left {\n border-top-left-radius: 8px;\n }\n\n .header-border-right {\n border-top-right-radius: 8px;\n }\n\n .header-box-bottom {\n width: 100%;\n }\n\n .header-box-black {\n background-color: #1f1f1f;\n }\n\n .header-box-green {\n background-color: var(--green) !important;\n }\n\n .header-box-red {\n background-color: var(--red) !important;\n }\n }\n .pgbl-info-button {\n margin: 0 0 0 4px;\n padding: 4px;\n font-size: 12px;\n display: flex;\n column-gap: 4px;\n align-items: center;\n font-weight: 500;\n svg {\n width: 18px;\n height: 18px;\n min-width: 18px;\n min-height: 18px;\n }\n \n }\n .card-bottom {\n background-color: #f0f0f0;\n }\n\n @media only screen and (max-device-width: 812px) {\n .previdencia-card {\n .previdencia-card-content {\n padding: 0;\n .title {\n margin: 0;\n }\n\n h1 {\n width: 250px !important;\n margin: 0 !important;\n padding: 0 !important;\n font-size: 12px !important;\n }\n ul, li {\n margin: 0 !important;\n padding: 0 !important;\n }\n form {\n margin: 8px 0 0;\n button {\n margin: 16px 0 0;\n }\n .form-item {\n width: 100% !important;\n }\n .cols {\n position: relative;\n }\n .tabs {\n top: 4px;\n right: 24px;\n height: 24px;\n position: absolute;\n width: 50px !important;\n max-width: 50px !important;\n min-width: 50px !important;\n margin-left: 8px !important;\n .ant-tabs-content-holder {\n height: 0;\n flex: 0;\n }\n .ant-tabs-nav {\n height: 24px;\n }\n }\n .ant-row {\n width: 100%;\n .ant-form-item-label {\n padding-bottom: 4px;\n height: auto !important;\n label {\n height: auto !important;\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n white-space: normal;\n }\n }\n\n .ant-form-item-control {\n height: 32px !important;\n width: 100% !important;\n max-width: 100% !important;\n input {\n height: 32px !important;\n font-weight: 500;\n font-size: 12px;\n width: 100%;\n margin-bottom: 8px;\n }\n }\n }\n .ant-select {\n align-self: flex-end;\n margin: 0 0 8px 8px !important;\n .ant-select-selector {\n margin: 0 !important;\n height: 32px !important;\n width: 100px !important;\n font-size: 12px !important;\n .ant-select-selection-item {\n font-size: 12px !important;\n }\n }\n .ant-select-item-option-content {\n font-size: 12px !important;\n }\n }\n .ant-select-open {\n height: 32px !important;\n width: 120px !important;\n font-size: 12px !important;\n }\n .ant-select-show-arrow {\n height: 32px !important;\n }\n .pgbl-info-button {\n margin: 4px 0 0 4px;\n padding: 4px;\n font-size: 12px;\n display: flex;\n column-gap: 4px;\n align-items: center;\n font-weight: 500;\n svg {\n width: 16px;\n height: 16px;\n min-width: 16px;\n min-height: 16px;\n }\n }\n }\n }\n }\n .card-bottom {\n background-color: #f0f0f0;\n .list-pgbl {\n font-size: 12px !important;\n }\n li {\n width: 350px;\n font-size: 10px !important;\n }\n }\n }\n`;\n\ninterface QuestionProps {\n show?: boolean;\n}\n\nexport const Question = styled.div`\n width: 100%;\n padding: 32px;\n border-radius: 4px;\n background-color: var(--white);\n\n ${({ show }) =>\n show\n ? css`\n display: block;\n visibility: visible;\n `\n : css`\n display: none;\n overflow: hidden;\n visibility: hidden;\n max-height: 100px;\n `}\n\n .question-title {\n display: flex;\n align-items: flex-start;\n font-size: 1.7rem;\n margin-bottom: 1rem;\n margin-top: 1rem;\n font-weight: 700;\n\n button.ant-btn-text {\n padding: 4px;\n span {\n width: 20px;\n height: 20px;\n }\n }\n }\n\n .question-buttons {\n margin-top: 24px;\n }\n\n &,\n .anticon,\n .question-title,\n .ant-radio-wrapper,\n .ant-checkbox + span {\n color: var(--velotax-font-color-dark) !important;\n }\n\n .ant-tabs {\n color: var(--velotax-font-color) !important;\n .ant-tabs-nav {\n .ant-tabs-nav-wrap {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: 140px;\n .ant-tabs-tab {\n padding: 4px 0;\n }\n }\n .anticon svg {\n color: var(--velotax-font-color-dark) !important;\n }\n }\n }\n\n .pgbl-info-button {\n padding: 4px;\n font-size: 12px;\n display: flex;\n column-gap: 4px;\n align-items: center;\n font-weight: 500;\n }\n\n .income-types {\n margin-bottom: 1rem;\n p {\n margin: 0;\n font-size: 1rem;\n display: flex;\n column-gap: 8px;\n span {\n }\n }\n }\n\n &.resume-container {\n font-size: 1.25rem;\n text-align: center;\n position: relative;\n .ant-typography {\n color: var(--velotax-font-color-dark) !important;\n }\n .assessor-text {\n font-size: 12px;\n margin: 16px 0 0;\n text-align: center;\n }\n button {\n margin-top: 16px;\n }\n .content-body {\n height: 64px;\n padding: 14px;\n display: flex;\n align-items: center;\n font-size: 14px;\n }\n\n .border-left-right {\n border-left: 1px solid #e8e8e8;\n border-right: 1px solid #e8e8e8;\n border-bottom: 1px solid #e8e8e8;\n }\n\n .border-right-white {\n border-right: 1px solid white;\n }\n\n .border-left-white {\n border-left: 1px solid white;\n }\n\n .border-bottom-right-radius {\n border-bottom-right-radius: 0.25rem;\n }\n\n .border-bottom-left-radius {\n border-bottom-left-radius: 0.25rem;\n }\n\n .text-left {\n text-align: start;\n }\n\n .text-center {\n align-items: center;\n display: flex;\n justify-content: center;\n }\n\n .background-gain {\n background-color: #e8e8e8;\n }\n\n .col-header {\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .btn-download {\n font-size: 14px !important;\n display: flex;\n padding: 5px;\n flex-direction: row;\n justify-content: space-around;\n align-items: center;\n width: 100px;\n margin: 0px 0px 0px 0px;\n border-radius: 20px !important;\n }\n\n .restituicao {\n width: 100%;\n margin: 16px 0;\n justify-content: space-between;\n display: flex;\n flex-direction: row;\n gap: 2px;\n .ant-typography {\n .content-header {\n height: 70px;\n font-size: 1.5rem;\n font-weight: 700;\n border-left: 1px solid #e8e8e8;\n border-right: 1px solid #e8e8e8;\n border-bottom: 1px solid #e8e8e8;\n border-radius: 0.25rem;\n padding: 14px;\n display: flex;\n align-items: center;\n flex-direction: column;\n \n .text-green {\n color: var(--green);\n }\n\n .text-red {\n color: var(--red);\n }\n }\n\n .background-icon-circle {\n background-color: var(--yellow);\n height: 55px;\n width: 55px;\n border-radius: 34px;\n\n .icon-circle {\n margin-top: 15px;\n }\n }\n\n .with-icon {\n flex-direction: row;\n gap: 12px;\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n margin: 0;\n .question-buttons {\n button {\n font-size: 0.85rem;\n letter-spacing: 0.5px;\n padding-left: 16px;\n padding-right: 16px;\n }\n }\n &.resume-container {\n padding: 0;\n font-size: 0.5rem;\n button {\n margin: 0;\n }\n .restituicao {\n justify-content: center;\n .ant-typography {\n strong {\n font-size: 13px;\n }\n div {\n font-size: 12px;\n font-weight: 600;\n br {\n display: block;\n }\n }\n .background-icon-circle {\n background-color: var(--yellow);\n height: 22px !important;\n width: 22px !important;\n border-radius: 34px;\n \n .icon-circle {\n margin-top: 5px;\n }\n }\n\n .span-text-inside {\n font-size: 14px;\n }\n }\n }\n .resume-edit-button {\n top: 16px;\n right: 16px;\n }\n }\n .small-text {\n font-size: 10px;\n letter-spacing: 0px;\n padding-left: 8px;\n padding-right: 8px;\n }\n\n .question-title {\n flex-direction: column;\n }\n .pgbl-info-button {\n padding: 4px 0;\n text-align: left;\n }\n\n .handle-label {\n .MuiFormLabel-root.MuiInputLabel-root.MuiInputLabel-shrink {\n min-width: 133%;\n white-space: normal;\n transform: translate(0, -12px) scale(0.75);\n }\n }\n\n .row-mobile {\n min-height: 330px;\n\n .content-body {\n height: 90px;\n padding: 7px;\n font-size: 11px;\n }\n }\n }\n`;\n","import { useState } from \"react\";\nimport NumberFormat from \"react-number-format\";\nimport {\n Button,\n Col,\n Form,\n Input,\n Modal,\n Row,\n Select,\n Typography,\n message,\n} from \"antd\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport { FaWallet } from \"react-icons/fa\";\nimport { PrevidenciaContainer, Question } from \"./styles\";\nimport { currencyToNumber, download, downloadPDF, formatCurrency, isMobile } from \"../../utils\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport { useClients } from \"../../contexts/ClientsContext\";\n\ninterface ResumeData {\n m: number;\n o: number;\n ganho: number;\n completa: { valorRestituicao: number };\n simplificada: { valorRestituicao: number };\n}\n\nexport const Previdencia: React.FC = () => {\n const [form] = Form.useForm();\n const { selectedClient } = useClients();\n const [resume, setResume] = useState();\n const [loading, setLoading] = useState(false);\n const [editting, setEditting] = useState(true);\n const [activeTabRenda, setActiveTabRenda] = useState(\"mensal\");\n const [activeTabSaude, setActiveTabSaude] = useState(\"anual\");\n const [activeTabEducacao, setActiveTabEducacao] = useState(\"anual\");\n const [activeTabPensao, setActiveTabPensao] = useState(\"anual\");\n const [valuesToReport, setValuesToReport] = useState({});\n const [helpModal, setHelpModal] = useState();\n const [loadingReportPrev, setLoadingReportPrev] = useState(false);\n\n const onFinish = async (values: any) => {\n setLoading(true);\n const token = localStorage.getItem(\"@VeloTax:token\");\n setValuesToReport(values);\n await apiBolsa\n .post(\n `/warren/pgblCalculate`,\n {\n rendaBrutaMensalMode: activeTabRenda ?? \"mensal\",\n rendaBrutaMensal: currencyToNumber(values?.rendaMensal) ?? 0,\n possuiDependentes: values?.dependentes > 0 ? true : false,\n possuiGastoMensalSaudeDependente:\n values?.dependentes > 0 ? true : false,\n possuiGastoMensalEducacaoDependente:\n values?.dependentes > 0 ? true : false,\n pagaPensaoAlimenticia: values?.dependentes > 0 ? true : false,\n quantidadeDependente:\n values?.dependentes > 0 ? values?.dependentes : 0,\n gastoMensalSaudeDependenteMode: \"mensal\",\n gastoMensalSaudeDependente: 0,\n gastoMensalEducacaoDependenteMode: \"mensal\",\n gastoMensalEducacaoDependente: 0,\n gastoMensalSaudeMode: activeTabSaude ?? \"anual\",\n gastoMensalEducacaoMode: activeTabEducacao ?? \"anual\",\n gastoPensaoAlimenticiaMode: activeTabPensao ?? \"anual\",\n gastoMensalSaude: currencyToNumber(values?.gastoSaude) ?? 0,\n gastoMensalEducacao: currencyToNumber(values?.gastoEducacao) ?? 0,\n gastoPensaoAlimenticia: currencyToNumber(values?.gastoPensao) ?? 0,\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n }\n )\n .then((response) => {\n setResume(response.data);\n setEditting(false);\n })\n .catch((err) => {\n console.log(err.message);\n message.error(\"Algo inesperado aconteceu! Tente novamente mais tarde.\");\n })\n .finally(() => {\n setLoading(false);\n });\n };\n const handleEdit = () => {\n setEditting(true);\n };\n\n const SalarioText = (\n <>\n O valor inserido neste campo deve ser sua remuneração, considerando apenas:\n
\n
\n
    \n
  • \n Trabalhadores CLT: salário, adicionais insalubridade/periculosidade,\n adicional noturno, comissões, corretagens, horas extras, bolsa de estudos sem isenção e bonificações.\n Férias e terço de férias devem ser adicionados apenas no \"anual\", para \"mensal\" são adicionados automáticamente; \n
  • \n
  • Empresários: pró-labore;
  • \n
  • Autônomos: rendimentos não-assalariados;
  • \n
  • \n MEI: rendimentos tributáveis, com receita recebida a maior que faixa de\n isenção, e pró-labore.\n
  • \n
  • \n Aposentados com mais de 65 anos: rendimentos acima da faixa de isenção\n por mês (R$ 4.224);\n
  • \n
  • \n Locadores: valores recebidos à título de aluguel.\n
  • \n
\n
\n Atenção: Não devem ser incluídos valores recebidos à título de PLR, 13° salário, parcela\n isenta de aposentadoria, diárias e ajuda de custo, remuneração de stock option, \n dividendos, FGTS, seguro desemprego e indenização paga pelo empregador em caso de demissão ou em caso de acidente de trabalho.\n \n );\n \n const EducacaoText = (\n <>\n São aceitos entendidos como despesas com educação aqueles gastos tidos com a\n educação tradicional, que engloba: educação profissional (ensino técnico e o\n tecnológico); educação superior, compreendendo os cursos de graduação e de\n pós-graduação (mestrado, doutorado e especialização); ensino médio; ensino\n fundamental e educação infantil. Importa ressaltar que a dedução é limitada ao valor\n de R$ 3.561,50 por indivíduo.\n \n );\n \n const SaudeText = (\n <>\n Consideram-se despesas médicas ou de hospitalização os pagamentos efetuados a\n profissionais da saúde de qualquer especialidade como médicos, dentistas, psicólogos,\n fisioterapeutas, terapeutas ocupacionais, fonoaudiólogos, etc. Além de\n hospitais, despesas provenientes de exames laboratoriais, serviços radiológicos,\n aparelhos ortopédicos, próteses ortopédicas e dentárias e planos de saúde.\n \n );\n \n const DependenteText = (\n <>\n A Receita Federal considera como dependentes, para efeito do imposto de\n renda:\n
\n 1 - Companheiro(a) com quem o contribuinte tenha filho ou viva há mais de 5\n anos, ou cônjuge;\n
\n 2 - Filho(a) ou enteado(a), até 21 anos de idade;\n
\n 3 – Filho(a) ou enteado(a) com deficiência, de qualquer idade, quando a sua\n remuneração não exceder as deduções autorizadas por lei (tendo em vista a\n decisão do Supremo Tribunal Federal – STF, na Ação Direta de\n Inconstitucionalidade nº 5.583/DF);\n
\n 4 - Filho(a) ou enteado(a), se ainda estiverem cursando estabelecimento de\n ensino superior ou escola técnica de segundo grau, até 24 anos de idade;\n
\n 5 - Irmão(ã), neto(a) ou bisneto(a), sem arrimo dos pais, de quem o\n contribuinte detenha a guarda judicial, até 21 anos, ou em qualquer idade,\n quando incapacitado física ou mentalmente para o trabalho;\n
\n 6 - Irmão(ã), neto(a) ou bisneto(a), sem arrimo dos pais, com idade de 21\n anos até 24 anos, se ainda estiver cursando estabelecimento de ensino\n superior ou escola técnica de segundo grau, desde que o contribuinte tenha\n detido sua guarda judicial até os 21 anos;\n
\n 7 - Irmão(ã), neto(a) ou bisneto(a) com deficiência, sem arrimo dos pais,\n do(a) qual o contribuinte detém a guarda judicial, em qualquer idade, quando\n a sua remuneração não exceder as deduções autorizadas por lei (tendo em\n vista a decisão do Supremo Tribunal Federal – STF, na Ação Direta de\n Inconstitucionalidade nº 5.583/DF);\n
\n 8 - Pais, avós e bisavós que, em 2021, tenham recebido rendimentos,\n tributáveis ou não, até R$ 22.847,76;\n
\n 9 - Menor pobre até 21 anos que o contribuinte crie e eduque e de quem\n detenha a guarda judicial;\n
\n 10 – Pessoa absolutamente incapaz, da qual o contribuinte seja tutor ou\n curador.\n \n );\n \n const PensaoText = (\n <>\n A Receita só aceita despesas alimentícias definidas em acordo judicial ou\n escritura pública. Outras despesas, mesmo que sejam feitas em prol do\n alimentando, não podem ser incluídas.\n \n );\n \n const AnualMensalText = (\n type:\n | \"gastos de saúde\"\n | \"gastos com educação\"\n | \"gastos com pensão\"\n | \"renda bruta\"\n ) => (\n <>\n Caso selecione a opção \"Anual\", insira o valor total de{\" \"}\n {type} que possui no ano. Caso selecione a opção \"Mensal\",\n insira a média de {type} por mês.\n \n );\n \n const HelpModalTexts = {\n rendaBrutaMensal: { body: SalarioText, title: \"Salário Bruto\" },\n gastoMensalSaude: { body: SaudeText, title: \"Gastos com saúde\" },\n gastoMensalEducacao: { body: EducacaoText, title: \"Gastos com educação\" },\n possuiDependentes: { body: DependenteText, title: \"Dependentes\" },\n pagaPensaoAlimenticia: { body: PensaoText, title: \"Gastos com pensão alimentícia\" },\n rendaAnualMensal: {\n body: AnualMensalText(\"renda bruta\"),\n title: \"Mensal ou anual\",\n },\n saudeAnualMensal: {\n body: AnualMensalText(\"gastos de saúde\"),\n title: \"Mensal ou anual\",\n },\n educacaoAnualMensal: {\n body: AnualMensalText(\"gastos com educação\"),\n title: \"Mensal ou anual\",\n },\n pensaoAnualMensal: {\n body: AnualMensalText(\"gastos com pensão\"),\n title: \"Mensal ou anual\",\n },\n };\n\n return (\n \n
\n
\n {!resume || editting ? (\n <>\n \n Simular economia ao aportar em PGBL\n \n \n \n \n Salário bruto }\n \n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n rules={[\n {\n message: \"o salário bruto deve ser maior que 0\",\n validator: (_, value) => {\n if (currencyToNumber(value) > 0) {\n return Promise.resolve();\n }\n return Promise.reject(\n \"o salário bruto deve ser maior que 0\"\n );\n },\n },\n ]}\n >\n \n \n \n setActiveTabRenda(value)}\n getPopupContainer={(target) => target.parentElement!}\n >\n Mensal\n Anual\n \n \n \n\n \n Gastos com saúde }\n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n >\n \n \n setActiveTabSaude(value)}\n getPopupContainer={(target) => target.parentElement!}\n >\n Mensal\n Anual\n \n \n \n Gastos com educação }\n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n >\n \n \n setActiveTabEducacao(value)}\n getPopupContainer={(target) => target.parentElement!}\n >\n Mensal\n Anual\n \n \n \n Gastos com pensão alimentícia }\n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n >\n \n \n setActiveTabPensao(value)}\n getPopupContainer={(target) => target.parentElement!}\n >\n Mensal\n Anual\n \n \n \n \n Dependentes }\n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n >\n \n \n \n \n \n SIMULAR ECONOMIA\n \n \n \n ) : (\n <>\n \n \n \n \n Diagnóstico:\n \n }\n onClick={async () => {\n setLoadingReportPrev(true);\n const token = localStorage.getItem(\"@VeloTax:token\");\n await apiBolsa.post(\n `/warren/pgblCalculate/report`,\n { content: resume,\n info: selectedClient,\n rendaBrutaMensalMode: activeTabRenda ?? \"mensal\",\n rendaBrutaMensal: currencyToNumber(valuesToReport?.rendaMensal) ?? 0,\n possuiDependentes: valuesToReport?.dependentes > 0 ? true : false,\n possuiGastoMensalSaudeDependente:\n valuesToReport?.dependentes > 0 ? true : false,\n possuiGastoMensalEducacaoDependente:\n valuesToReport?.dependentes > 0 ? true : false,\n pagaPensaoAlimenticia: valuesToReport?.dependentes > 0 ? true : false,\n quantidadeDependente:\n valuesToReport?.dependentes > 0 ? valuesToReport?.dependentes : 0,\n gastoMensalSaudeDependenteMode: \"mensal\",\n gastoMensalSaudeDependente: 0,\n gastoMensalEducacaoDependenteMode: \"mensal\",\n gastoMensalEducacaoDependente: 0,\n gastoMensalSaudeMode: activeTabSaude ?? \"anual\",\n gastoMensalEducacaoMode: activeTabEducacao ?? \"anual\",\n gastoPensaoAlimenticiaMode: activeTabPensao ?? \"anual\",\n gastoMensalSaude: currencyToNumber(valuesToReport?.gastoSaude) ?? 0,\n gastoMensalEducacao: currencyToNumber(valuesToReport?.gastoEducacao) ?? 0,\n gastoPensaoAlimenticia: currencyToNumber(valuesToReport?.gastoPensao) ?? 0,\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n ispro: 'true'\n },\n }\n )\n .then((response) => {\n let fileUrl;\n let file;\n if (response) {\n fileUrl = response?.data?.fileUrl;\n file = response?.data?.file;\n }\n if (fileUrl) {\n download(fileUrl);\n } else if (file) {\n downloadPDF(\n file,\n \"Previdência\"\n );\n }\n })\n .catch((err) => {\n console.log(err.message);\n message.error(\"Não foi possível baixar o relatório. Tente novamente mais tarde\");\n })\n .finally(() => {\n setLoadingReportPrev(false);\n });\n }}\n >\n Baixar\n \n \n {resume.o > 0 ? (\n <>\n \n \n \n \n
\n Ganhos totais previstos\n
\n
\n
\n \n
\n \n {formatCurrency(\n resume?.ganho\n )}\n \n \n
\n
\n \n \n \n
0) ? \"header-box-green\" : \"header-box-red\"}`}>\n Valor a investir em PGBL\n
\n
\n 0) ? \"text-green\" : \"text-red\"} span-text-inside`} \n style={{textAlign: \"center\", width: '100%'}}>\n {formatCurrency(\n resume?.m\n )}\n \n
\n
\n \n
\n \n \n \n
\n Descritivo\n
\n
\n Restituição de IRPF na declaração completa, considerando benefícios do PGBL (a)\n
\n
\n Restituição de IRPF na declaração simplificada (b)\n
\n
\n \n Ganho total em restituição de IRPF (a - b)\n \n
\n
\n \n \n \n
\n Valor\n
\n
\n {formatCurrency(\n resume?.completa?.valorRestituicao\n )}\n
\n
\n {formatCurrency(\n resume?.simplificada?.valorRestituicao\n )}\n
\n
\n \n {formatCurrency(\n resume?.completa?.valorRestituicao - resume?.simplificada?.valorRestituicao\n )}\n \n
\n
\n \n
\n \n \n ) : (\n \n \n Para o seu perfil, investir em VGBL pode ser uma melhor\n opção.\n \n \n )}\n \n \n EDITAR SIMULAÇÃO\n \n \n
\n
\n {/* {resume.o > 0 && (\n \n \n (1) A economia indicada é baseada na comparação entre a\n declaração feita de forma completa e desconto simplificado\n \n \n (2) A dedução de imposto de renda por aplicação de PGBL\n somente é válido para contribuintes do INSS.\n \n \n (3) Os valores simulados são para fins ilustrativos apenas,\n não englobando a possibilidade de perda no investimento em\n PGBL\n \n \n )} */}\n \n )}\n
\n
\n {(!resume || editting) && (
\n
\n \n Seu cliente pode ser elegível para ter economia com aporte em PGBL\n caso se enquadre em algum dos casos abaixo:\n \n
\n
    \n
  • Assalariado (CLT)
  • \n
  • Empresário (recebeu pró-labore)
  • \n
  • Autônomo
  • \n
  • MEI
  • \n
  • Aposentado (rendimentos acima de R$ 4.224,00 por mês)
  • \n
  • Servidor Público
  • \n
  • Recebeu renda de aluguel
  • \n
\n
\n
\n
)}\n setHelpModal(undefined)}\n >\n {helpModal?.body}\n \n
\n );\n};\n","import { Input, Select } from \"antd\";\nimport { useState } from \"react\";\nimport Masked from \"react-input-mask\";\nimport NumberFormat from \"react-number-format\";\nimport { cnpjInputMask, cpfInputMask } from \"../../utils\";\n\ninterface InputParams {\n name?: string;\n disabled?: boolean;\n placeholder?: string;\n onBlur?: any;\n}\n\ninterface MaskInputParams {\n name?: string;\n mask?: string;\n placeholder?: string;\n disabled?: boolean;\n onBlur?: any;\n}\n\ninterface NumberInputParams extends InputParams {\n prefix?: string;\n decimalScale?: number;\n allowNegative?: boolean;\n}\n\ninterface SelectInputParams extends InputParams {\n name?: string;\n options?: { label: string; value: any }[];\n onBlur?: any;\n}\n\nexport const TextInput = ({ placeholder, disabled, ...rest }: InputParams) => (\n {\n if (rest.onBlur) {\n rest.onBlur(rest.name, e.target.value);\n }\n }}\n />\n);\n\nexport const SelectInput = ({\n placeholder,\n disabled,\n options,\n ...rest\n}: SelectInputParams) => (\n trigger.parentNode}\n />\n);\n\nexport const SelectMultipleInput = ({\n disabled,\n assessoresSelected,\n handleChangeAssessores,\n professionals = [],\n}: any) => {\n return (\n trigger.parentNode}\n >\n {professionals.map((professional: any) => (\n \n
{professional.name}
\n
\n ))}\n \n );\n};\n\nexport const NumberInput = ({\n prefix = \"\",\n disabled = false,\n decimalScale = 2,\n placeholder = \"\",\n allowNegative = false,\n}: NumberInputParams) => (\n \n);\n\nexport const MaskInput = ({\n mask = \"\",\n placeholder = \"\",\n disabled = false,\n ...rest\n}: MaskInputParams) => (\n {\n if (rest.onBlur) {\n rest.onBlur(rest.name, e.target.value);\n }\n }}\n />\n);\n\nexport const MaskCpfCnpjInput = ({\n mask = \"\",\n placeholder = \"\",\n disabled = false,\n ...rest\n}: MaskInputParams) => {\n const [controlledInput, setControlledInput] = useState(\"\");\n const [isCnpj, setIsCnpj] = useState(false);\n const selectMask = isCnpj\n ? cnpjInputMask\n : controlledInput.length > 0\n ? cpfInputMask\n : \"\";\n return (\n {\n const value = e.target.value.replaceAll(/[._-]/g, \"\");\n if (mask === cpfInputMask) {\n if (value.length > 11) {\n setIsCnpj(true);\n setControlledInput(value);\n } else if (value.length >= 11 && controlledInput.length >= 11) {\n setIsCnpj(true);\n } else if (value.length < 11 && controlledInput.length < 11) {\n setIsCnpj(false);\n }\n }\n setControlledInput(value);\n }}\n onBlur={(e) => {\n if (rest.onBlur) {\n rest.onBlur(rest.name, e.target.value);\n }\n }}\n />\n );\n};\n","import { FormItemProps } from \"antd\";\nimport { currencyToNumber } from \"../../utils\";\nimport {\n MaskInput,\n NumberInput,\n TextInput,\n SelectInput,\n SelectMultipleInput,\n MaskCpfCnpjInput,\n} from \"../inputs\";\nimport {\n validationFieldRequired,\n validationDate,\n validationNumberFieldPositive,\n} from \"../../utils/formValidations\";\n\ninterface FormItemParams extends FormItemProps {\n name: string;\n span?: number;\n disabled?: boolean;\n options?: any;\n placeholder?: string;\n onChange?: (changed: any, values: any) => any;\n hide?: ((data: any) => boolean) | boolean;\n onBlur?: any;\n}\n\ninterface NumberFormItemParams extends FormItemParams {\n prefix?: string;\n decimalScale?: number;\n allowNegative?: boolean;\n}\n\ninterface MaskFormItemParams extends FormItemParams {\n mask?: string;\n}\n\ninterface SelectFormItemParams extends FormItemParams {\n options?: { label: string; value: any; disabled?: boolean }[];\n renderItem?: any;\n defaultValue?: any;\n}\n\nexport const MaskFormItem = ({\n mask,\n placeholder,\n disabled,\n ...rest\n}: MaskFormItemParams) => ({\n ...rest,\n input: MaskInput({\n mask,\n placeholder,\n disabled,\n ...rest,\n }),\n});\n\nexport const MaskCpfCnpjFormItem = ({\n mask,\n placeholder,\n disabled,\n ...rest\n}: MaskFormItemParams) => ({\n ...rest,\n input: MaskCpfCnpjInput({\n mask,\n placeholder,\n disabled,\n ...rest,\n }),\n});\n\nexport const DateFormItem = ({\n rules,\n placeholder,\n disabled,\n mask,\n ...rest\n}: MaskFormItemParams) => ({\n ...rest,\n rules: rules ? rules : validationDate,\n input: MaskInput({\n mask: mask ?? \"99/99/9999\",\n placeholder: placeholder || \"01/01/2021\",\n disabled,\n }),\n});\n\nexport const TextFormItem = ({\n rules,\n placeholder,\n disabled,\n ...rest\n}: FormItemParams) => ({\n ...rest,\n rules: rules || [],\n input: TextInput({ placeholder, disabled, ...rest }),\n});\n\nexport const SelectFormItem = ({\n placeholder,\n disabled,\n options,\n rules,\n ...rest\n}: SelectFormItemParams) => ({\n ...rest,\n rules: rules ?? validationFieldRequired,\n input: SelectInput({ placeholder, disabled, options, ...rest }),\n});\n\nexport const SelectMultipleFormItem = ({\n placeholder,\n disabled,\n options,\n rules,\n assessoresSelected,\n handleChangeAssessores,\n professionals,\n ...rest\n}: any) => ({\n ...rest,\n input: SelectMultipleInput({\n placeholder,\n disabled,\n options,\n assessoresSelected,\n handleChangeAssessores,\n professionals,\n }),\n});\n\nexport const NumberFormItem = ({\n name,\n label,\n rules = [],\n prefix = \"\",\n disabled = false,\n placeholder = \"\",\n decimalScale = 2,\n allowNegative = false,\n onChange,\n}: NumberFormItemParams) => ({\n name,\n label,\n rules,\n placeholder,\n input: NumberInput({\n prefix,\n decimalScale,\n placeholder,\n allowNegative,\n disabled,\n }),\n onChange: onChange\n ? onChange\n : (changed: any, values: any) =>\n changed[name]\n ? Number(changed[name].replace(/\\./g, \"\").replace(\",\", \".\")) || 0\n : values[name],\n});\n\nexport const CurrencyFormItem = ({\n name,\n label,\n rules = [],\n prefix = \"R$ \",\n disabled = false,\n decimalScale = 2,\n placeholder = \"R$ 0,00\",\n allowNegative = false,\n onChange,\n ...rest\n}: NumberFormItemParams) => ({\n ...rest,\n name,\n label,\n placeholder,\n rules: rules ? rules : validationNumberFieldPositive,\n input: NumberInput({\n prefix,\n decimalScale,\n placeholder,\n allowNegative,\n disabled,\n }),\n onChange: onChange\n ? onChange\n : (changed: any, values: any) =>\n changed[name] ? currencyToNumber(changed[name], prefix) : values[name],\n});\n","export const permissoes = [\n {\n label: \"Adicionar clientes\",\n assessor: true,\n gerente: true,\n admin: true,\n },\n {\n label: \"Enviar DARFs automaticamente\",\n assessor: true,\n gerente: true,\n admin: true,\n },\n {\n label: \"Contratar plano via cartão de crédito\",\n assessor: true,\n gerente: true,\n admin: true,\n },\n {\n label: \"Contratar planos via concierge\",\n assessor: false,\n gerente: true,\n admin: true,\n },\n {\n label: \"Adicionar novos assessores\",\n assessor: false,\n gerente: false,\n admin: true,\n },\n {\n label: \"Visualizar e editar informações dos clientes\",\n assessor: false,\n gerente: false,\n admin: true,\n },\n {\n label: \"Visualizar e editar informações dos assessores\",\n assessor: false,\n gerente: false,\n admin: true,\n },\n {\n label: \"Visualização das faturas mensais consolidadas\",\n assessor: false,\n gerente: false,\n admin: true,\n },\n];\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_6631_165240)\"\n}, /*#__PURE__*/React.createElement(\"ellipse\", {\n opacity: 0.08,\n cx: 199.244,\n cy: 119.397,\n rx: 100,\n ry: 140,\n transform: \"rotate(-60 199.244 119.397)\",\n fill: \"#808080\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 108,\n y: 120,\n width: 264,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 180,\n y: 144,\n width: 120,\n height: 8,\n rx: 4,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 180,\n y: 159,\n width: 72,\n height: 8,\n rx: 4,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 148,\n cy: 160,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 36,\n y: 32,\n width: 264,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 108,\n y: 56,\n width: 120,\n height: 8,\n rx: 4,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 108,\n y: 71,\n width: 72,\n height: 8,\n rx: 4,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 76,\n cy: 72,\n r: 20,\n fill: \"#E8E8E8\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_6631_165240\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 408,\n height: 240,\n fill: \"white\"\n})));\n\nfunction SvgEmpty(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 408,\n height: 240,\n viewBox: \"0 0 408 240\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmpty);\nexport default __webpack_public_path__ + \"static/media/empty.0114c930.svg\";\nexport { ForwardRef as ReactComponent };","import clsx from \"clsx\";\nimport { RcFile } from \"antd/lib/upload\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { useEffect, useState } from \"react\";\nimport { GrAddCircle } from \"react-icons/gr\";\nimport { BiX, BiCheck } from \"react-icons/bi\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport { IoMdAddCircleOutline } from \"react-icons/io\";\nimport { UploadRequestOption } from \"rc-upload/lib/interface\";\nimport { BsThreeDotsVertical, BsTrash } from \"react-icons/bs\";\nimport {\n AiOutlineSearch,\n AiFillInfoCircle,\n AiOutlineUpload,\n AiOutlineDownload,\n AiOutlineClose,\n} from \"react-icons/ai\";\nimport {\n Typography,\n Input,\n Row,\n Col,\n Table,\n message,\n Modal,\n Dropdown,\n Card,\n Tooltip,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport { isMobile } from \"../../utils\";\nimport { maskCpf } from \"../../utils/mask\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { FormModal } from \"../../components/FormModal\";\nimport UploadVelotax from \"../../components/UploadVelotax\";\nimport { DrawerModal } from \"../../components/DrawerModal\";\nimport { permissoes } from \"../../constants/others/permissoes\";\nimport { AssessorFormItemRows } from \"../../constants/clients\";\nimport { IProfessional, useClients } from \"../../contexts/ClientsContext\";\nimport { ReactComponent as EmptyIcon } from \"../../assets/icons/empty.svg\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\nimport {\n SideContent,\n Container,\n Content,\n EmptyContainer,\n ClientContainer,\n ClientPlanContent,\n} from \"../Clients/styles\";\n\nexport const assessorTooltip = () => (\n
    \n
  • \n Apenas assessores cadastrados com nível de Gerente ou Administrador\n poderão efetuar a contratação de planos para seus usuários em nome do\n escritório\n
  • \n
\n);\n\nvar debounce: NodeJS.Timeout;\n\nexport const Professionals: React.FC = () => {\n const { user } = useAuth();\n const {\n newClient,\n createClient,\n setNewClient,\n professionals,\n professionalGet,\n getProfessionals,\n totalProfessionals,\n removeProfessional,\n updateProfessional,\n handleDownloadSheet,\n } = useClients();\n\n const [errors, setErrors] = useState([]);\n const [sendRequest, setSendRequest] = useState(true);\n const [itemRemove, setItemRemove] = useState({});\n const [loadingFile, setLoadingFile] = useState(false);\n const [optionsModal, setOptionsModal] = useState(false);\n const [firstSelected, setFirsSelected] = useState(false);\n const [csvModalVisible, setCsvModalVisible] = useState(false);\n const [errorModalVisible, setErrorModalVisible] = useState(false);\n const [deleteModalVisible, setDeleteModalVisible] = useState(false);\n const [createModalVisible, setCreateModalVisible] = useState(false);\n const [modalPermissaoVisible, setModalPermissaoVisible] = useState(false);\n const [selectedProfessional, setSelectedProfessional] =\n useState();\n\n const dataSource = professionals;\n const hosts = [\"-dev\", \"local\"];\n const env = hosts.some((host) => window.location.host.includes(host))\n ? \"_dev\"\n : \"\";\n\n const acesso: any = {\n admin: \"Administrador\",\n gerente: \"Gerente\",\n assessor: \"Assessor\",\n };\n\n const handleEdit = (item: any) => {\n setCreateModalVisible(!createModalVisible);\n setNewClient(item);\n };\n\n const beforeUpload = (file: RcFile) => {\n setSendRequest(true);\n if (\n ![\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"application/vnd.ms-excel\",\n \"text/x-csv\",\n \"text/plain\",\n \"text/tab-separated-values\",\n \"text/x-comma-separated-values\",\n \"text/comma-separated-values\",\n \"application/x-csv\",\n \"application/csv\",\n ].includes(file.type)\n ) {\n message.error(\"Envie um arquivo do tipo CSV\");\n setSendRequest(false);\n }\n };\n\n const customRequest = ({ file }: UploadRequestOption) => {\n const formData = new FormData();\n if (!sendRequest) return;\n formData.append(\"file\", file);\n setLoadingFile(true);\n api\n .post(\"/assessores/batch\", formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n })\n .then(({ data }) => {\n setLoadingFile(false);\n setCsvModalVisible(!csvModalVisible);\n if (data?.errors?.length === 0) {\n message.success(\"Integração iniciada com sucesso\");\n } else {\n message.error(\n \"Erro durante inserção. Favor conferir no modal apresentado.\"\n );\n setErrors(data.errors);\n setErrorModalVisible(true);\n }\n getProfessionals();\n })\n .catch((error) => {\n setLoadingFile(false);\n message.error(error.response.data.message);\n });\n };\n\n const setOptionsModalVisibility = () => {\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const setCsvModalVisibility = () => {\n setCsvModalVisible(!csvModalVisible);\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const setDeleteModalVisiblity = () => {\n setDeleteModalVisible(!deleteModalVisible);\n };\n\n const setCreateModalVisiblity = () => {\n setCreateModalVisible(!csvModalVisible);\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const handleSearch = (value: string) => {\n if (debounce) clearTimeout(debounce);\n debounce = setTimeout(() => {\n getProfessionals(1, value);\n }, 1000);\n };\n\n const handleRemove = (data: any) => {\n setDeleteModalVisible(!deleteModalVisible);\n setItemRemove(data);\n };\n\n useEffect(() => {\n getProfessionals();\n }, [getProfessionals]);\n\n useEffect(() => {\n if (!isMobile() && !firstSelected && professionals?.length > 0) {\n setFirsSelected(true);\n setSelectedProfessional(professionals[0]);\n }\n }, [professionals, firstSelected]);\n\n return (\n \n \n \n \n \n Assessores\n \n \n \n }\n onClick={setOptionsModalVisibility}\n >\n Adicionar\n \n \n \n }\n onChange={(e) => handleSearch(e.target.value)}\n />\n \n \n \n item._id === selectedProfessional?._id ? \"selected-client\" : \"\"\n }\n pagination={{\n defaultPageSize: 10,\n total: totalProfessionals,\n showLessItems: true,\n showSizeChanger: false,\n }}\n onChange={(pagination) => {\n getProfessionals(pagination.current);\n }}\n columns={[\n {\n title: (\n <>\n
\n
\n }\n onClick={() => {\n if (professionals.length > 0) {\n handleDownloadSheet(\"Assessores\");\n }\n }}\n />\n
\n
\n \n ),\n render: (_, item) => (\n {\n setSelectedProfessional(item);\n }}\n >\n \n \n {item.name}\n \n \n \n \n \n {acesso[item?.acesso]}\n \n \n \n
\n ),\n },\n ]}\n />\n \n \n
\n 0 && selectedProfessional,\n })}\n >\n {professionals?.length === 0 ? (\n \n \n \n Olá, {user.user.name}!\n \n \n Para iniciar, adicione e selecione clientes na lista ao lado para\n visualizar mais detalhes.\n \n \n ) : selectedProfessional ? (\n \n
\n }\n onClick={() => {\n handleEdit(selectedProfessional);\n }}\n >\n Editar\n \n ,\n onClick: () => handleRemove(selectedProfessional),\n },\n ],\n }}\n >\n }\n onClick={(e) => e.preventDefault()}\n />\n \n }\n onClick={() => {\n setSelectedProfessional(undefined);\n }}\n />\n
\n
\n \n {selectedProfessional.name}\n \n \n \n \n {acesso[selectedProfessional?.acesso]}\n \n setModalPermissaoVisible(true)}\n />\n \n \n \n \n \n \n
CPF:
\n
\n {maskCpf(selectedProfessional.username)}\n
\n \n \n
E-mail:
\n
\n {selectedProfessional.email}\n
\n \n
\n
\n
\n ) : (\n <>\n )}\n setOptionsModal(!optionsModal)}\n >\n \n \n \n Escolha a forma que deseja adicionar o assessor:\n \n \n \n \n \n \n

\n Adicionar assessores manualmente\n

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

\n Importar assessores de planilha Excel\n

\n
\n
\n \n
\n \n setCsvModalVisible(false)}\n >\n \n \n \n window.open(\n `https://velotax-assets.s3.amazonaws.com/cadastro_assessor_warren${env}.xlsx`\n )\n }\n >\n Baixar planilha modelo\n

\n \n \n \n
\n \n {\n setDeleteModalVisible(false);\n }}\n setVisibility={setDeleteModalVisiblity}\n onOk={() => removeProfessional(itemRemove)}\n />\n {\n setCreateModalVisible(false);\n }}\n add={(data: any) => {\n createClient({ ...data, professional: true });\n setCreateModalVisible(false);\n setOptionsModal(false);\n }}\n edit={(data: any) => {\n updateProfessional(data);\n setCreateModalVisible(false);\n setOptionsModal(false);\n }}\n />\n setErrorModalVisible(false)}\n >\n \n (\n <>\n \n {item.user}\n \n \n \n

\n {maskCpf(item.cpf)}\n

\n \n
\n \n ),\n },\n {\n title: \"Linha do excel\",\n align: \"center\",\n render: (_, item) => (\n \n {item.position}\n \n ),\n },\n {\n title: \"Mensagem\",\n render: (_, item) => (\n \n {item.message}\n \n ),\n },\n ]}\n />\n
\n \n setModalPermissaoVisible(false)}\n >\n (\n \n {item.label}\n \n ),\n },\n {\n title: \"Assessor\",\n align: \"center\",\n render: (_, item) =>\n item.assessor ? (\n \n ) : (\n \n ),\n },\n {\n title: \"Gerente\",\n align: \"center\",\n render: (_, item) =>\n item.gerente ? (\n \n ) : (\n \n ),\n },\n {\n title: \"Administrador\",\n align: \"center\",\n render: (_, item) =>\n item.admin ? (\n \n ) : (\n \n ),\n },\n ]}\n >\n \n \n
\n );\n};\n","import { useState } from \"react\";\nimport { message, ModalProps } from \"antd\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport api from \"../../services/api\";\nimport { PaymentModal } from \"../Payment\";\nimport { UserPlans } from \"../../constants/plans\";\nimport { ChoosePlanStep } from \"./ChoosePlanStep\";\nimport { Content, Loading, PlanModalStyled } from \"./styles\";\nimport { IClient, useClients } from \"../../contexts/ClientsContext\";\n\ninterface IUserPlanModal extends ModalProps {\n modalPlans?: any[];\n paymentData?: any;\n closeModal?: any;\n open?: boolean;\n setOpen?: any;\n setClientsSelected?: any;\n clientsSelected?: IClient[];\n userCount: number;\n paymentType: string;\n setPaymentType: Function;\n createConciergePlan: React.MouseEventHandler;\n clientsWithCancelRecurring?: IClient[];\n showPaymentModal?: boolean;\n setShowPaymentModal?: any;\n selectedPlan: any;\n setSelectedPlan: any;\n}\n\nvar getStatus: NodeJS.Timeout;\n\nexport const UserPlanModal: React.FC = ({\n open,\n title,\n setOpen,\n onCancel,\n userCount,\n modalPlans,\n closeModal,\n paymentData,\n paymentType,\n setPaymentType,\n clientsSelected,\n showPaymentModal,\n setClientsSelected,\n createConciergePlan,\n setShowPaymentModal,\n clientsWithCancelRecurring,\n selectedPlan,\n setSelectedPlan,\n ...rest\n}) => {\n const { selectedClient, getClients } = useClients();\n const [loading] = useState(false);\n const [closable] = useState(true);\n const isActive = selectedClient?.userPlanInfoVelotax?.active;\n const planBought = selectedClient?.userPlanInfoVelotax?.type ?? \"\";\n const isCancelRecurring = (clientsWithCancelRecurring || []).length > 0;\n\n const handleSuccess = (data: any) => {\n checkWasPaid(data.paymentId, 4);\n };\n\n const checkWasPaid = (id: string, delay: number = 2) => {\n let attempts = 0;\n\n getStatus = setInterval(async () => {\n api\n .get(\n `/clients/user/${selectedClient?.username}?userId=${selectedClient?._id}`\n )\n .then((res) => {\n if (res.data?.plan) {\n clearInterval(getStatus);\n message.success(\"Pagamento Confirmado com sucesso\");\n closeModal();\n getClients();\n }\n })\n .finally(() => {\n attempts += 1;\n\n if (attempts > 100) {\n clearInterval(getStatus);\n }\n });\n }, delay * 1000);\n };\n return (\n <>\n {showPaymentModal ? (\n {}}\n onSucessCreditCard={handleSuccess}\n planCurrent={UserPlans[selectedPlan]}\n clientSelected={clientsSelected?.[0]}\n createConciergePlan={createConciergePlan}\n disableCreditCardOption={(clientsSelected || [])?.length > 1}\n onCancel={() => {\n setShowPaymentModal(false);\n closeModal(false);\n }}\n paymentData={{\n ...paymentData,\n type: UserPlans[selectedPlan]?.type,\n isPlan: true,\n }}\n disableCreditCardMessage={\n (clientsSelected || [])?.length > 1\n ? \"Para contratar via cartão, selecione apenas um cliente por vez\"\n : \"\"\n }\n />\n ) : (\n {\n setOpen(false);\n setClientsSelected([]);\n }}\n {...rest}\n >\n \n {loading && (\n \n \n \n )}\n\n {\n setShowPaymentModal(true);\n setOpen(false);\n }}\n />\n \n \n )}\n \n );\n};\n","import React, { useState } from \"react\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Divider, message, Modal, Row } from \"antd\";\nimport Button from \"../Button\";\n\ninterface IDeleteConfirmationModalProps {\n title: string;\n visibility: boolean;\n body: React.ReactNode;\n onCancel: () => void;\n onOk?: () => Promise;\n updateData?: () => void;\n setVisibility: (param: any) => void;\n buttonLabel?: string;\n showToast?: boolean;\n}\n\nconst DeleteConfirmationModal: React.FC = ({\n title,\n visibility,\n onCancel,\n onOk,\n body,\n updateData,\n setVisibility,\n buttonLabel,\n showToast = true,\n}) => {\n const [loading, setLoading] = useState(false);\n const handleOnOk = () => {\n setLoading(true);\n const finish = () => {\n setLoading(false);\n updateData?.();\n setVisibility(false);\n showToast && message.success(\"Deletado com sucesso\");\n };\n if (onOk) {\n onOk()\n .then(() => finish())\n .catch((err) => {\n showToast && message.error(\"Algo deu errado\");\n setLoading(false);\n });\n } else {\n finish();\n }\n };\n return (\n \n

{body}

\n \n \n \n \n Cancelar\n \n \n \n \n {loading && }\n {buttonLabel || \"Deletar\"}\n \n \n \n \n );\n};\n\nexport default DeleteConfirmationModal;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n height: 100%;\n display: flex;\n\n .clientsSelectedDrawer > .ant-drawer-content-wrapper {\n height: 7rem !important;\n }\n .clientsSelectedDrawer > .ant-drawer-mask {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n }\n`;\n\nexport const ContainerProventos: any = styled.div`\n height: 400px;\n width: 100%;\n .empty-data {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n p {\n margin-top: 8px;\n font-weight: 500;\n }\n }\n .container-tooltip {\n display: flex;\n flex-direction: column;\n background-color: white;\n margin-top: 5px;\n padding: 5px;\n width: 100%;\n }\n .recharts-default-legend {\n display: inline !important;\n li {\n margin-right: 15px !important;\n }\n }\n .recharts-bar-rectangle {\n cursor: pointer;\n }\n .recharts-legend-wrapper {\n bottom: 0px !important;\n }\n .ant-select-selection-placeholder {\n display: flex;\n align-items: center;\n }\n\n .recharts-legend-wrapper {\n left: 0px !important;\n }\n\n .recharts-layer > text {\n font-size: 12px;\n font-weight: 400;\n fill: black;\n }\n .ant-btn {\n border-radius: 10px;\n }\n .filter-proventos {\n width: 100%;\n display: flex;\n margin-bottom: 16px;\n button.ant-btn.ant-btn-default {\n height: 40px;\n svg.fill {\n fill: var(--ant-primary-color);\n }\n }\n .ant-select {\n margin-right: 8px;\n }\n .ant-select:not(:first-of-type) {\n margin-right: auto;\n }\n }\n @media only screen and (max-device-width: 812px) {\n margin-bottom: 64px;\n .filter-proventos {\n flex-wrap: wrap;\n .ant-select:first-of-type {\n width: 25%;\n }\n .ant-select:not(:first-of-type) {\n margin-right: 0;\n width: calc(75% - 8px);\n }\n button.ant-btn.ant-btn-default {\n width: 50%;\n }\n }\n .container-tooltip {\n width: auto;\n }\n .recharts-legend-wrapper {\n width: 100% !important;\n .recharts-default-legend {\n text-align: left !important;\n .recharts-legend-item {\n display: block !important;\n }\n }\n }\n }\n`;\n\nexport const BlurContent = styled.div`\n width: 100%;\n margin: 10px;\n position: relative;\n user-select: none;\n border-radius: 4px;\n .blur-content {\n opacity: 0.5;\n filter: blur(4px);\n }\n .blur-content-title {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0 100px;\n font-weight: 500;\n font-size: 1.25rem;\n text-align: center;\n row-gap: 16px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n color: var(--velotax-font-color-light);\n }\n\n @media only screen and (max-device-width: 812px) {\n .blur-content-title {\n padding: 0 16px;\n font-size: 1rem;\n }\n }\n`;\n\nexport const BlurContentProventos = styled.div`\n width: 100%;\n margin: 10px;\n position: relative;\n user-select: none;\n border-radius: 4px;\n .blur-content {\n opacity: 0.5;\n filter: blur(4px);\n }\n .blur-content-title {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0 100px;\n font-weight: 500;\n font-size: 1.25rem;\n text-align: center;\n row-gap: 16px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n color: var(--velotax-font-color-light);\n }\n\n @media only screen and (max-device-width: 812px) {\n .blur-content-title {\n padding: 0 16px;\n font-size: 1rem;\n }\n }\n`;\n\nexport const SideContent = styled.div`\n padding: 24px;\n min-width: 420px;\n max-width: 420px;\n max-height: 100%;\n overflow-y: hidden;\n box-shadow: 0px 0px 8px #e0e0e0;\n\n & > .ant-row {\n height: 100%;\n align-items: start;\n .ant-col-clients-table {\n height: calc(100% - 124px);\n .ant-table-wrapper {\n height: 100%;\n .ant-spin-nested-loading {\n height: 100%;\n .ant-spin-container {\n height: calc(100% - 56px);\n .ant-table-pagination {\n width: 100%;\n bottom: -56px;\n margin: 0 0 0;\n padding: 12px 16px;\n position: absolute;\n border-top: 1px solid var(--ghost);\n }\n .ant-table {\n height: 100%;\n .ant-table-container {\n height: 100%;\n .ant-table-content {\n height: 100%;\n overflow-y: auto;\n position: relative;\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 0;\n }\n & > table {\n .ant-table-thead {\n top: 0;\n z-index: 1;\n position: sticky;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n .ant-table-pagination {\n display: flex;\n align-items: center;\n }\n\n .ant-row\n .ant-col-clients-table\n .ant-table-wrapper\n .ant-spin-nested-loading\n .ant-spin-container\n .ant-table-pagination {\n background-color: white;\n justify-content: center;\n }\n\n .ant-btn.ant-btn-primary.ant-btn-lg.ant-btn-block {\n height: 44px;\n font-size: 14px;\n }\n\n .ant-table-wrapper {\n max-width: unset;\n margin-left: -24px;\n width: calc(100% + 48px);\n\n .ant-table-row.selected-client {\n .ant-table-cell {\n background-color: #f8f8f8;\n &:not(.ant-table-selection-column) {\n border-right: 8px solid var(--ant-primary-color);\n }\n }\n }\n\n th.ant-table-cell.ant-table-selection-column {\n padding: 16px 0 16px 24px;\n }\n td.ant-table-cell.ant-table-selection-column {\n vertical-align: top;\n padding: 20px 0 16px 24px;\n }\n }\n .client-table-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n &.professionals {\n justify-content: end;\n }\n .client-table-header-btns {\n display: flex;\n column-gap: 8px;\n align-items: center;\n .ant-btn {\n height: 32px;\n min-width: 32px;\n font-weight: 500;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n svg {\n fill: none;\n width: 18px;\n height: 18px;\n stroke: var(--ant-primary-color);\n &.fill {\n path {\n stroke: var(--ant-primary-color);\n }\n }\n }\n }\n }\n }\n\n .integration-indicator {\n /* position: absolute;\n top: 0;\n right: 0;\n width: fit-content; */\n display: flex;\n margin-left: 8px;\n transform: translateY(-1px);\n }\n .client-name {\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n svg {\n width: 16px;\n height: 16px;\n margin-left: 8px;\n }\n }\n .client-notification {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 18px;\n height: 18px;\n display: flex;\n color: var(--white);\n border-radius: 9px;\n align-items: center;\n justify-content: center;\n background-color: var(--ant-error-color);\n &.large {\n width: 24px;\n span {\n font-size: 10px;\n line-height: 10px;\n }\n }\n span {\n font-weight: 500;\n font-size: 11px;\n line-height: 11px;\n }\n }\n .client-integration {\n margin-top: 10px;\n .ant-tag {\n font-size: 10px;\n }\n }\n .no-integration {\n color: var(--gray-1);\n border-color: var(--ghost);\n background-color: var(--ghost);\n }\n .has-integration {\n border-color: #e0f7ee;\n background-color: #e0f7ee;\n color: var(--ant-success-color);\n }\n\n .mobile-actions {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n min-width: 100%;\n max-width: 100%;\n position: relative;\n & > .ant-row {\n .ant-col-clients-table {\n height: calc(100% - 124px + 32px);\n }\n }\n .mobile-actions {\n left: 0;\n bottom: 0;\n width: 100%;\n height: 56px;\n display: flex;\n padding: 8px 16px;\n position: absolute;\n background-color: var(--white);\n .ant-btn {\n height: 100%;\n }\n }\n }\n`;\n\nexport const Content = styled.div`\n flex-grow: 1;\n height: 100%;\n padding: 32px 64px 96px;\n background-color: var(--ghost);\n overflow-x: hidden;\n overflow-y: auto;\n\n .calc-status {\n /* width: fit-content; */\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 6px;\n span:first-of-type {\n width: 8px;\n height: 8px;\n min-width: 8px;\n min-height: 8px;\n border-radius: 4px;\n display: inline-block;\n background-color: var(--red);\n &.Regular {\n background-color: var(--green-1);\n }\n &.NOT_PAYED {\n background-color: var(--ant-primary-color);\n }\n }\n }\n\n .ant-btn-group.ant-dropdown-button {\n .ant-btn {\n text-transform: none;\n border-color: var(--dark-1);\n :first-of-type {\n border-radius: 24px;\n margin-right: 8px;\n }\n :last-of-type {\n border-radius: 24px;\n }\n :disabled,\n :hover {\n color: var(--gray-1);\n border-color: var(--gray-1);\n }\n &.ant-dropdown-trigger {\n svg {\n fill: var(--dark-1);\n }\n :disabled,\n :hover {\n svg {\n fill: var(--gray-1);\n }\n }\n }\n }\n }\n\n .ant-list.ant-list-split {\n padding: 0 32px;\n border: 2px solid var(--dark-1);\n border-radius: 8px;\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item {\n padding: 20px 0;\n }\n .ant-list-item-meta-title {\n font-size: 1rem;\n font-weight: 700;\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--white);\n }\n .ant-list-item-action {\n display: flex;\n row-gap: 4px;\n column-gap: 8px;\n\n .ant-btn.hire-btn {\n color: var(--ant-primary-color) !important;\n border-color: var(--dark-1);\n background-color: var(--dark-1);\n }\n\n .ant-btn.action-btn {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: space-between;\n row-gap: 0;\n height: 48px;\n padding: 0 4px;\n font-size: 14px;\n color: var(--white);\n\n svg,\n svg * {\n stroke: var(--ant-primary-color);\n }\n }\n }\n .ant-list-item-action-split {\n display: none;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n\n .ant-btn {\n span {\n line-height: 18px;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n svg {\n min-width: 20px;\n min-height: 20px;\n }\n }\n\n .resp {\n p {\n margin: 0;\n text-align: left;\n max-width: 128px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n left: 0;\n top: 100%;\n z-index: 2;\n padding: 0;\n position: fixed;\n border-radius: 0;\n transition: top 0.2s;\n background-color: var(--white);\n\n &.mobile-show {\n top: 0;\n width: 100%;\n z-index: 5;\n }\n\n .ant-list.ant-list-split {\n padding: 0 16px;\n font-size: 12px;\n\n .ant-list-item {\n padding: 16px 0;\n }\n\n .ant-list-item-action {\n flex-direction: column;\n }\n }\n\n .ant-table-content {\n overflow-y: auto;\n }\n }\n`;\n\nexport const ClientPlanContent = styled.div`\n .client-plan {\n height: 20px;\n display: flex;\n font-size: 10px;\n color: var(--gray-2);\n &.professional {\n display: flex;\n font-size: 12px;\n column-gap: 4px;\n align-items: center;\n }\n }\n .client-no-plan {\n height: 24px;\n display: flex;\n font-size: 10px;\n font-weight: 500;\n align-items: center;\n color: var(--ant-error-color);\n svg {\n margin-top: -1px;\n }\n }\n`;\n\nexport const EmptyContainer = styled.div`\n height: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n h1 {\n font-size: 32px;\n font-weight: 600;\n line-height: 40px;\n text-align: center;\n color: var(--dark-2);\n letter-spacing: -0.32px;\n margin-top: 32px;\n }\n div.ant-typography {\n max-width: 400px;\n color: var(--dark-2);\n text-align: center;\n font-size: 16px;\n font-weight: 300;\n line-height: 24px;\n }\n\n .action-buttons {\n min-width: 540px;\n justify-content: center;\n .btn-underlined {\n span {\n font-weight: 500;\n padding-bottom: 4px;\n border-bottom: 2px solid var(--ant-primary-color);\n }\n }\n .button-disabled-plan {\n position: relative;\n\n .over-button-disabled {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 999;\n }\n }\n }\n\n .close-selection {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n height: auto;\n padding: 24px;\n min-height: 100%;\n position: relative;\n svg {\n width: 100%;\n height: auto;\n }\n div.ant-typography {\n max-width: 100%;\n }\n .action-buttons {\n min-width: unset;\n max-width: 100%;\n }\n .close-selection {\n display: flex;\n position: absolute;\n top: 24px;\n right: 24px;\n }\n }\n`;\n\nexport const ClientContainer = styled.div`\n min-width: 640px;\n max-width: 840px;\n margin: 0 auto;\n .ant-badge-count.ant-badge-multiple-words {\n padding: 0 4px;\n }\n .client-actions {\n display: flex;\n align-items: center;\n justify-content: end;\n column-gap: 8px;\n margin-bottom: 24px;\n\n .close-client {\n display: none;\n }\n\n .ant-btn {\n border: none;\n height: 40px;\n font-size: 14px;\n min-width: 40px;\n font-weight: 500;\n border-radius: 24px;\n background: rgba(171, 170, 168, 0.24);\n &:active,\n &:focus,\n &:hover {\n color: var(--gray-1);\n }\n }\n }\n .client-content {\n padding: 48px;\n border-radius: 8px;\n background-color: var(--white);\n box-shadow: 0px 4px 8px 0px #e0e0e0;\n position: relative;\n\n .client-header {\n min-height: 40px;\n }\n\n h1 {\n display: flex;\n font-size: 28px;\n font-weight: 600;\n line-height: 32px;\n color: var(--black);\n align-items: center;\n margin-bottom: 4px;\n svg {\n margin-left: 16px;\n }\n span {\n display: flex;\n align-items: center;\n }\n\n .contratar-plano {\n margin-left: auto;\n .ant-btn {\n height: 40px;\n }\n }\n }\n\n .notification-button {\n position: absolute;\n right: 40px;\n top: 40px;\n\n button {\n width: 52px;\n height: 52px;\n border-radius: 50%;\n background-color: var(--ant-primary-color);\n transition: 0.3s;\n\n &:hover {\n background-color: var(--ant-primary-5);\n box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.1) !important;\n transition: 0.3s;\n }\n }\n\n svg {\n font-size: 28px;\n }\n }\n }\n\n .client-info {\n padding-top: 12px;\n margin: 24px 0 32px;\n border-top: 1px solid var(--ghost);\n &.professional {\n margin: 24px 0 8px;\n }\n .client-info-title {\n color: var(--dark-2);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n }\n .client-info-data {\n color: var(--gray-2);\n font-size: 14px;\n font-weight: 300;\n line-height: 20px;\n .dashed {\n border-bottom: 1px dashed var(--gray-2);\n }\n .concierge {\n color: var(--gray-2);\n cursor: pointer;\n }\n .ativar-concierge {\n color: blue;\n opacity: 0.8;\n cursor: pointer;\n align-items: center;\n display: flex;\n justify-content: space-around;\n }\n }\n }\n\n .client-details {\n padding: 32px 48px 0;\n margin-left: -48px;\n margin-bottom: -48px;\n width: calc(100% + 96px);\n background-color: #f8f8f8;\n border-radius: 0 0 8px 8px;\n\n .tab-title {\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n transform: translateY(-1px);\n margin-left: 4px;\n }\n }\n\n .spinTabs {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .client-details-loading {\n height: 128px;\n display: flex;\n align-items: center;\n padding-bottom: 32px;\n justify-content: center;\n .anticon-loading {\n width: 32px;\n height: 32px;\n svg {\n width: 32px;\n height: 32px;\n fill: var(--ant-primary-color);\n }\n }\n }\n }\n\n .ant-tabs {\n &.gambiarra-uma-tab {\n .ant-tabs-nav {\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n .ant-tabs-ink-bar {\n left: 0 !important;\n width: 100% !important;\n }\n .ant-tabs-tab {\n width: 100%;\n }\n }\n }\n }\n }\n .ant-tabs-tab + .ant-tabs-tab {\n margin: 0;\n }\n .ant-tabs-nav {\n margin: 0 0 32px;\n .ant-tabs-nav-operations {\n display: none;\n }\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n width: 100%;\n .ant-tabs-ink-bar {\n background-color: var(--black);\n }\n .ant-tabs-tab {\n width: 50%;\n justify-content: center;\n .ant-tabs-tab-btn {\n font-size: 16px;\n font-weight: 500;\n line-height: 24px;\n color: var(--gray-1);\n text-transform: uppercase;\n }\n &.ant-tabs-tab-active {\n .ant-tabs-tab-btn {\n color: var(--black);\n }\n }\n }\n }\n }\n }\n }\n\n .aviso-list-empty {\n padding: 16px;\n margin-top: 0;\n border-radius: 8px;\n text-align: center;\n margin-bottom: 48px;\n color: var(--velotax-font-color);\n background-color: var(--ghost);\n }\n\n .client-integration-card {\n padding: 24px;\n border-radius: 8px;\n background-color: var(--ant-primary-1);\n border: 1px solid var(--ant-primary-color);\n display: flex;\n align-items: start;\n margin-bottom: 1rem;\n &:last-of-type {\n /* margin-bottom: 48px; */\n }\n & > svg {\n min-width: 32px;\n min-height: 32px;\n color: var(--ant-primary-color);\n stroke: var(--ant-primary-color);\n &.fill {\n fill: var(--ant-primary-color);\n }\n }\n\n .client-integration-card-content {\n width: 100%;\n margin-left: 16px;\n h3 {\n color: var(--gray-3);\n font-size: 16px;\n font-weight: 600;\n line-height: 24px;\n margin-bottom: 8px;\n }\n div.ant-typography {\n color: var(--gray-3);\n font-size: 14px;\n font-weight: 300;\n line-height: 20px;\n width: calc(100% - 48px);\n }\n .ant-btn {\n padding: 0;\n border: none;\n height: 40px;\n font-size: 14px;\n font-weight: 500;\n margin: -12px 0;\n }\n button {\n display: flex;\n align-items: center;\n\n svg {\n margin-left: 4px;\n }\n }\n }\n }\n\n .aviso-rendimentos-card {\n margin-bottom: 1rem !important;\n }\n\n .client-wallet-header-btns {\n display: flex;\n column-gap: 8px;\n align-items: center;\n .ant-btn {\n height: 32px;\n min-width: 32px;\n font-weight: 500;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n svg {\n fill: none;\n width: 18px;\n height: 18px;\n stroke: var(--ant-primary-color);\n &.fill {\n path {\n stroke: var(--ant-primary-color);\n }\n }\n }\n }\n }\n\n .investimentos-container {\n .list-empty {\n padding: 16px;\n margin: 48px 0;\n border-radius: 8px;\n text-align: center;\n color: var(--velotax-font-color);\n background-color: var(--ghost);\n }\n .patrimonio-atual {\n padding: 0 32px 0 48px;\n color: var(--dark-2);\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n h2 {\n font-size: 36px;\n font-weight: 700;\n line-height: 48px;\n margin-bottom: 8px;\n white-space: nowrap;\n letter-spacing: -0.4px;\n }\n }\n .lucro-prejuizo-diario-total {\n padding: 0 16px;\n color: var(--dark-2);\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n }\n .grafico-container {\n position: relative;\n margin: 48px 0 16px;\n padding: 0 32px 0 56px;\n\n .recharts-legend-wrapper {\n top: 32px !important;\n left: 332px !important;\n right: unset !important;\n width: 100% !important;\n max-width: 180px !important;\n }\n }\n\n .select-container-corretora {\n display: flex;\n max-width: 50%;\n margin-top: 82px;\n flex-direction: column;\n align-items: start;\n justify-content: center;\n .ant-select-selection-item {\n height: 32px;\n padding: 0 0 4px 28px;\n }\n .ant-select-arrow {\n left: 0;\n right: unset;\n svg {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n }\n .update-patrimonio {\n margin-top: 4px;\n font-size: 12px;\n font-weight: 500;\n max-width: 240px;\n text-align: center;\n color: var(--gray-1);\n }\n }\n\n .select-container {\n top: 0;\n right: 0;\n width: 50%; // para alinhar com o prejuizo\n position: absolute;\n display: flex;\n align-items: center;\n }\n\n .select-container,\n .select-container-corretora {\n .ant-select {\n min-width: 240px;\n border-radius: 0px !important;\n .ant-select-selector {\n height: 32px;\n border: none !important;\n padding: 0 0 0px !important;\n border-radius: 0px !important;\n background-color: transparent !important;\n border-bottom: 1px solid var(--dark-2) !important;\n .ant-select-selection-search,\n .ant-select-selection-item {\n display: flex;\n font-size: 14px;\n align-items: center;\n font-weight: 400 !important;\n }\n }\n .ant-select-arrow {\n top: calc(50% - 2px);\n }\n }\n\n .ant-select-focused.ant-select-open {\n box-shadow: none !important;\n\n .ant-select-selector {\n border-color: var(--ant-primary-color) !important;\n }\n }\n\n .ant-select:not(.ant-select-disabled):hover .ant-select-selector,\n .ant-select-focused:not(.ant-select-disabled).ant-select:not(\n .ant-select-customize-input\n )\n .ant-select-selector {\n box-shadow: none !important;\n }\n\n .ant-dropdown,\n .ant-select-dropdown {\n box-shadow: none;\n }\n\n .ant-select-item-option-content {\n font-size: 14px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n margin: 0;\n min-width: 100%;\n max-width: 100%;\n background-color: var(--white);\n\n .client-actions {\n margin: 0;\n padding: 12px;\n border-bottom: 1px solid var(--ghost);\n .close-client {\n display: flex;\n }\n }\n .client-content {\n padding: 24px;\n border-radius: 0;\n box-shadow: none;\n h1 {\n align-items: flex-start;\n flex-direction: column;\n width: calc(100% - 42px);\n\n span {\n display: block;\n svg {\n margin-left: 8px;\n margin-bottom: -5px;\n }\n }\n .contratar-plano {\n margin: 0;\n width: 100%;\n .ant-btn {\n width: 100%;\n margin: 8px 0 0;\n }\n }\n }\n .notification-button {\n top: 12px;\n right: 12px;\n }\n }\n .client-details {\n padding: 32px 24px !important;\n margin-left: -24px;\n width: calc(100% + 48px);\n .ant-tabs {\n .ant-tabs-nav {\n margin-left: -24px;\n width: calc(100% + 48px);\n }\n }\n }\n .client-integration-card {\n .client-integration-card-content {\n div.ant-typography {\n width: 100%;\n }\n }\n }\n\n .client-wallet-header-btns {\n width: 100%;\n margin-top: 8px;\n }\n\n .ant-tabs {\n .ant-tabs-nav {\n margin: 0 0 24px;\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n .ant-tabs-tab {\n padding: 8px 4px;\n .ant-tabs-tab-btn {\n font-size: 12px;\n }\n }\n }\n }\n }\n }\n .investimentos-container {\n width: 100%;\n .patrimonio-atual {\n padding: 0;\n h2 {\n font-size: 30px;\n }\n }\n .lucro-prejuizo-diario-total {\n display: flex;\n font-size: 12px;\n column-gap: 16px;\n margin-top: 16px;\n padding: 16px 0 0;\n border-top: 1px solid var(--ghost);\n }\n .grafico-container {\n padding: 0;\n margin: 64px 0 16px;\n\n .recharts-legend-wrapper {\n top: -8px !important;\n left: 200px !important;\n right: unset !important;\n font-size: 12px;\n }\n .select-container {\n top: -48px;\n left: 0;\n width: 100%;\n display: flex;\n position: absolute;\n align-items: center;\n }\n }\n }\n }\n`;\n\nexport const HiredTag = styled.div`\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n padding: 4px 16px;\n border: none;\n font-size: 14px;\n font-weight: 500;\n color: var(--white);\n background-color: var(--dark-1);\n`;\n\nexport const SelectedContainer = styled.div`\n display: flex;\n`;\n\nexport const PatrimonioContainer = styled.div``;\n\nexport const Patrimonio = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const InfoLabel = styled.p`\n margin: 0;\n white-space: nowrap;\n font-size: 12px;\n color: #1890ff;\n font-weight: 500;\n cursor: pointer;\n transition: 0.3s;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translateX(12px);\n\n &:hover {\n color: #0071d9;\n text-decoration: underline;\n transition: 0.3s;\n }\n`;\n\nexport const B3Link = styled.a`\n display: block;\n font-size: 10px;\n color: rgb(1, 103, 153);\n text-align: center;\n margin: auto;\n width: 450px;\n\n &:hover {\n text-decoration: underline;\n color: rgb(1, 103, 153);\n }\n`;\n\nexport const CopyLink = styled.button`\n color: #0566cd;\n font-weight: 500;\n text-decoration: underline;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n`;\n\nexport const ShareItem = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin-right: 1rem;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n\n img {\n width: 40px;\n height: 40px;\n }\n\n p {\n font-size: 11px;\n margin: 0.5rem 0;\n }\n`;\n\nexport const Instructions = styled.p`\n font-size: 13px;\n margin-bottom: 4px;\n`;\n\nexport const Paragraph = styled.p<{ color?: string }>`\n margin: 0;\n color: ${({ color }) => color ?? \"\"};\n`;\n\nexport const PatrimonioHeader = styled.div`\n display: flex;\n width: 100%;\n position: relative;\n`;\n\nexport const PatrimonioValue = styled.p`\n font-size: 36px;\n font-weight: 700;\n`;\n\nexport const RetornoContainer = styled.div`\n display: flex;\n flex-direction: column;\n margin-left: 1rem;\n border-left: 1px solid var(--ghost);\n padding-left: 0.5rem;\n justify-content: space-around;\n`;\n\nexport const RetornoLabel = styled.p<{ retorno: number }>`\n margin: 0 0 8px;\n color: ${({ retorno }) =>\n retorno > 0\n ? \"var(--ant-success-color)\"\n : retorno < 0\n ? \"var(--ant-error-color)\"\n : \"var(--gray-2)\"};\n`;\n\nexport const RelatorioButton = styled.button`\n display: flex;\n cursor: pointer;\n transition: 0.3s;\n font-weight: 500;\n align-items: center;\n justify-content: center;\n fill: var(--ant-primary-color);\n color: var(--ant-primary-color);\n\n svg {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n }\n\n &:hover {\n color: var(--ant-primary-color-active);\n fill: var(--ant-primary-color-active);\n transition: 0.3s;\n }\n`;\n\nexport const IsentCardStyled = styled.div`\n margin-bottom: 4px;\n height: 110px;\n padding: 23px;\n border: none !important;\n border-radius: 4px !important;\n background-color: var(--velotax-background-color-ghost);\n text-align: center;\n gap: 12px;\n flex-direction: column;\n display: flex;\n\n .overviewTitleIsent {\n color: var(--black);\n font-size: 13px;\n }\n`;\n\nexport const ConatinerDarfs = styled.div`\n min-height: 400px;\n width: 100%;\n padding-bottom: 2rem;\n position: relative;\n overflow: visible;\n`;\n\nexport const BlurBox = styled.div`\n display: flex;\n justify-content: center;\n padding-top: 6rem;\n position: absolute;\n top: -20px;\n left: -20px;\n width: calc(100% + 40px);\n height: 100%;\n background-color: #f8f8f88f;\n backdrop-filter: blur(10px);\n z-index: 10;\n\n .blur-content-title {\n font-weight: 500;\n font-size: 1.25rem;\n text-align: center;\n row-gap: 16px;\n color: var(--velotax-font-color-light);\n max-width: 500px;\n }\n`;\n\nexport const FilterDarfs = styled.div`\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 15px;\n justify-content: space-between;\n\n .filterYear {\n min-width: 120px;\n }\n\n .buttonFilter {\n display: flex;\n justify-content: flex-end;\n flex-grow: 1;\n }\n\n @media only screen and (max-device-width: 450px) {\n .filterYear {\n flex-grow: 1;\n width: 100%;\n margin-bottom: 1rem;\n }\n .buttonFilter {\n button {\n width: calc(50% - 4px);\n }\n }\n }\n`;\n\nexport const DarfFilterButton = styled.button<{ selected: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 8px 1rem;\n border-radius: 2rem;\n background-color: ${({ selected }) => (selected ? \"black\" : \"white\")};\n color: ${({ selected }) => (selected ? \"white\" : \"black\")};\n border: 1px solid black;\n transition: 0.3s;\n\n &:hover {\n background-color: ${({ selected }) =>\n selected ? \"black\" : \"var(--ghost)\"};\n transition: 0.3s;\n }\n`;\n\nexport const DarfCard = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n background-color: white;\n border-radius: 8px;\n box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.1);\n padding: 2rem;\n margin-bottom: 1rem;\n\n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n p {\n font-size: 18px;\n font-weight: 600;\n margin: 0;\n }\n\n button {\n height: 20px;\n font-size: 11px;\n font-weight: 500;\n text-transform: uppercase;\n background-color: var(--gray-1);\n border-radius: 1rem;\n padding: 0 0.5rem;\n }\n\n .payed {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--ant-success-color);\n color: white;\n\n svg {\n font-size: 16px;\n margin-left: 2px;\n transform: translateY(-1px);\n }\n }\n }\n\n .body {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .resumo {\n flex-grow: 1;\n p {\n margin: 0;\n max-width: 240px;\n display: flex;\n justify-content: space-between;\n\n strong {\n min-width: 100px;\n font-weight: 600;\n }\n }\n\n .empty {\n max-width: 100%;\n color: var(--gray-2);\n font-weight: 300;\n }\n }\n\n .action-view {\n display: flex;\n align-items: center;\n button {\n height: 60px;\n border-radius: 0;\n font-weight: 600;\n text-transform: uppercase;\n background-color: white;\n font-size: 15px;\n width: 200px;\n svg {\n color: var(--ant-primary-color);\n }\n &:first-of-type {\n margin-right: 4px;\n }\n &:last-of-type {\n text-transform: none;\n }\n }\n }\n\n .actions {\n display: flex;\n align-items: center;\n\n button {\n height: 40px;\n border-radius: 0;\n font-weight: 600;\n text-transform: uppercase;\n\n svg {\n color: var(--ant-primary-color);\n }\n\n &:first-of-type {\n margin-right: 4px;\n }\n\n &:last-of-type {\n text-transform: none;\n }\n }\n }\n\n @media only screen and (max-device-width: 550px) {\n .actions {\n width: 100%;\n margin-top: 1rem;\n\n button {\n flex-grow: 1;\n }\n }\n\n .action-view {\n button {\n height: 40px;\n width: 100px;\n }\n }\n }\n`;\n\nexport const PlanContainer = styled.div`\n width: fit-content;\n background-color: var(--velotax-background-color);\n padding: 2rem 2rem;\n margin: auto;\n`","import { cpfInputMask, phoneInputMask } from \"../../utils\";\nimport { IClient } from \"../../contexts/ClientsContext\";\nimport {\n MaskFormItem,\n TextFormItem,\n SelectFormItem,\n SelectMultipleFormItem,\n} from \"../formItems\";\nimport { IAuthState } from \"../../contexts/AuthContext\";\nimport {\n validationCpf,\n validationEmail,\n validationFullName,\n validationPhone,\n} from \"../../utils/formValidations\";\nimport { Tooltip } from \"antd\";\nimport { AiFillInfoCircle } from \"react-icons/ai\";\nimport { assessorTooltip } from \"../../pages/Professionals\";\n\ninterface ClientFormItemProps {\n user: IAuthState;\n step?: number;\n assessores?: any;\n professionals?: any;\n client?: IClient | null;\n handleChangeAssessores?: any;\n onBlur?: any;\n userSelected?: any;\n}\n\nexport const FormItemsClients = ({\n user,\n client,\n assessores,\n professionals,\n handleChangeAssessores,\n onBlur,\n}: ClientFormItemProps) => {\n return {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n disabled: !!client,\n }),\n name: TextFormItem({\n name: \"name\",\n placeholder: \"Nome\",\n rules: validationFullName,\n disabled: false,\n }),\n username: MaskFormItem({\n name: \"username\",\n placeholder: \"CPF\",\n rules: validationCpf,\n mask: cpfInputMask,\n disabled: !!client,\n }),\n email: TextFormItem({\n name: \"email\",\n placeholder: \"E-mail\",\n rules: validationEmail,\n disabled: false,\n onBlur,\n }),\n phone: MaskFormItem({\n name: \"phone\",\n placeholder: \"Celular\",\n rules: validationPhone,\n mask: phoneInputMask,\n disabled: false,\n }),\n plan: SelectFormItem({\n name: \"plan\",\n placeholder: \"Plano\",\n disabled: false,\n options: [\n {\n value: \"free\",\n label: \"Gratuito\",\n disabled: client?.hasPlanXp || client?.planType === \"anual\",\n },\n {\n value: \"mensal\",\n label: \"Plano Premium mensal\",\n disabled:\n !user.user?.liberadaContratacao ||\n client?.hasPlanXp ||\n client?.planType === \"anual\" ||\n client?.cancelRecuring,\n },\n {\n value: \"anual\",\n label: \"Plano Premium anual\",\n disabled: !user.user?.liberadaContratacao || client?.hasPlanXp,\n },\n ],\n onBlur,\n }),\n assessores: SelectMultipleFormItem({\n name: \"assessores\",\n placeholder: \"Assessores\",\n assessoresSelected: assessores,\n handleChangeAssessores: handleChangeAssessores,\n professionals,\n disabled: !user?.user?.office && !user?.user?.admin,\n }),\n };\n};\n\nexport const FormItemsAssessores = (client?: IClient | null) => {\n return {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n disabled: !!client,\n }),\n name: TextFormItem({\n name: \"name\",\n placeholder: \"Nome\",\n rules: validationFullName,\n disabled: !!client,\n }),\n username: TextFormItem({\n name: \"username\",\n placeholder: \"CPF\",\n rules: validationCpf,\n disabled: !!client,\n }),\n email: TextFormItem({\n name: \"email\",\n placeholder: \"E-mail\",\n rules: validationEmail,\n disabled: false,\n }),\n acesso: SelectFormItem({\n name: \"acesso\",\n placeholder: \"Selecione o tipo de acesso\",\n label: (\n <>\n Acesso\n \n \n \n \n ),\n disabled: false,\n options: [\n {\n value: \"admin\",\n label: \"Administrador\",\n },\n {\n value: \"gerente\",\n label: \"Gerente\",\n },\n {\n value: \"assessor\",\n label: \"Assessor\",\n },\n ],\n }),\n };\n};\n\nexport const ClientFormItemRows = ({\n user,\n client,\n assessores,\n professionals,\n handleChangeAssessores,\n onBlur,\n userSelected,\n}: ClientFormItemProps) => {\n if (client)\n client.planType =\n client.planDueDate < new Date().getTime() ? \"free\" : client.planType;\n const formItems = FormItemsClients({\n user,\n client,\n assessores,\n professionals,\n handleChangeAssessores,\n onBlur,\n });\n const ret = [];\n ret.push([formItems.id]);\n ret.push([formItems.username]);\n ret.push([formItems.name]);\n ret.push([formItems.email]);\n ret.push([formItems.phone]);\n if (!userSelected?.planType && !userSelected?.username)\n ret.push([formItems.plan]);\n ret.push(\n ...(user?.user?.office || user?.user?.admin ? [[formItems.assessores]] : [])\n );\n return ret;\n};\n\nexport const AssessorFormItemRows = (step: number, client?: IClient | null) => [\n [FormItemsAssessores(client).id],\n [FormItemsAssessores(client).username],\n [FormItemsAssessores(client).name],\n [FormItemsAssessores(client).email],\n [FormItemsAssessores(client).acesso],\n];\n","import { Card } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const Feature = styled.div`\n display: flex;\n align-items: center;\n .feature-icon {\n transform: translateY(1px);\n margin-right: 4px;\n }\n .feature-text {\n color: var(--gray-2);\n }\n`;\n\ninterface CardStyledProps {\n checked: boolean;\n hasConcierge: boolean;\n}\n\nexport const CardStyled = styled(Card)`\n position: relative;\n border-radius: 8px;\n transition: 0.3s;\n border-color: ${({ checked }) => (checked ? \"var(--ant-primary-color)\" : \"\")};\n background-color: ${({ checked }) => (checked ? \"#fbc10512\" : \"\")};\n pointer-events: ${({ hasConcierge }) => (hasConcierge ? \"\" : \"none\")};\n\n &:hover {\n border-color: var(--ant-primary-color);\n transition: 0.3s;\n }\n`;\n\nexport const GrayOverlay = styled.div`\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n background-color: rgba(128, 128, 128, 0.5); /* Cor cinza com transparência */\n pointer-events: none; /* Garante que a camada cinza não intercepte eventos do mouse */\n z-index: 1; /* Coloca a camada cinza acima do conteúdo do card */\n`;\n\nexport const Interval = styled.p`\n color: var(--ant-primary-color);\n font-weight: 500;\n font-size: 16px;\n margin-bottom: 1rem;\n\n @media only screen and (max-device-width: 812px) {\n font-size: 12px;\n margin-bottom: 0.5rem;\n }\n`;\nexport const Price = styled.p`\n font-weight: 600;\n font-size: 40px;\n margin: 0;\n\n @media only screen and (max-device-width: 812px) {\n font-size: 24px;\n margin-bottom: 0.5rem;\n }\n`;\nexport const Info = styled.p`\n font-size: 13px;\n transform: translateY(-8px);\n margin: 0;\n`;\n\nexport const Radio = styled.div<{\n checked: boolean;\n}>`\n position: absolute;\n right: 1rem;\n top: 1rem;\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${({ checked }) =>\n checked ? \"var(--ant-primary-color)\" : \"var(--ghost)\"};\n`;\n","import { useState } from \"react\";\nimport { AiOutlineArrowRight } from \"react-icons/ai\";\nimport { Button, Col, Divider, Radio, Row, Tooltip, Typography } from \"antd\";\nimport { formatCurrency } from \"../../../utils\";\nimport { UserPlans } from \"../../../constants/plans\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { IClient } from \"../../../contexts/ClientsContext\";\nimport {\n CardStyled,\n Feature,\n Info,\n Interval,\n Price,\n GrayOverlay,\n} from \"./styles\";\n\ninterface IProps {\n userCount: number;\n selectedClient?: IClient | null;\n selectedPlan: number;\n setSelectedPlan: React.Dispatch>;\n setPaymentType: Function;\n isCancelRecurring: boolean;\n clientsWithCancelRecurring?: IClient[];\n planBought: string;\n isActive?: boolean;\n handleAction: React.MouseEventHandler;\n}\n\nexport const ChoosePlanStep = ({\n isActive,\n userCount,\n planBought,\n selectedPlan,\n handleAction,\n selectedClient,\n setPaymentType,\n setSelectedPlan,\n isCancelRecurring,\n clientsWithCancelRecurring,\n}: IProps) => {\n const { user } = useAuth();\n\n const [mostrarTip, setMostrarTip] = useState(false);\n\n return (\n <>\n \n A contratação inclui:\n \n
\n \n {UserPlans[0].includedFeatures.map((feature: any) => (\n \n {feature.icon}\n \n {feature.name}\n {feature?.secondaryIcon}\n \n \n ))}\n \n
\n \n {UserPlans.map((plan, i) => (\n setMostrarTip(true)}\n onMouseLeave={() => setMostrarTip(false)}\n span={12}\n key={i}\n >\n \n {\n setSelectedPlan(i);\n setPaymentType(plan.interval.toLowerCase());\n }}\n >\n \n \n \n {/* */}\n \n PLANO {plan.interval.toUpperCase()}\n \n \n \n {formatCurrency(plan.price)}\n \n \n por mês no plano {plan.interval.toLowerCase()}\n \n {!user.user.liberadaContratacao && plan.interval !== \"Anual\" ? (\n \n ) : null}\n \n \n \n ))}\n \n \n
\n \n {isCancelRecurring && selectedPlan === 1\n ? \"Atenção:\"\n : \"Total contratado:\"}\n \n {isCancelRecurring && selectedPlan === 1 ? (\n <>\n \n Não é possível contratar novamente um plano cancelado. Contrate um\n plano anual para os clientes selecionados a seguir:\n \n
    \n {(clientsWithCancelRecurring || []).map((client, i) => (\n
  • \n {client.name} - CPF: {client.username}\n
  • \n ))}\n
\n \n ) : (\n \n {formatCurrency(UserPlans[selectedPlan].price * userCount)} por mês\n ({userCount} {userCount > 1 ? \"usuários\" : \"usuário\"})\n \n )}\n
\n\n \n \n {planBought &&\n isActive &&\n UserPlans[selectedPlan].type ===\n selectedClient?.userPlanInfoVelotax?.type ? (\n \"PLANO SELECIONADO\"\n ) : (\n <>\n PRÓXIMO{\" \"}\n \n \n )}\n \n \n \n );\n};\n","import styled from \"styled-components\";\nimport { Card, Modal } from \"antd\";\n\nexport const Container = styled.div`\n width: 100%;\n height: 100%;\n padding: 0;\n border-radius: 4px;\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--velotax-font-color-ghost);\n }\n .original-price {\n display: grid;\n max-width: 150px;\n }\n .price {\n display: flex;\n width: 100%;\n column-gap: 8px;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n h4 {\n font-size: 22px;\n margin: 8px 0 !important;\n color: var(--ant-primary-color);\n del,\n span.per-month {\n font-size: 14px;\n }\n del {\n opacity: 0.8;\n color: var(--velotax-font-color);\n }\n }\n .ant-typography-danger {\n font-size: 11px;\n text-align: right;\n max-width: 120px;\n }\n }\n .ant-divider.ant-divider-horizontal {\n margin: 16px 0;\n }\n .other-features,\n .included-features-user {\n .feature {\n display: flex;\n align-items: center;\n justify-content: start;\n opacity: 0.7;\n margin: 6px 0;\n column-gap: 16px;\n span {\n font-weight: 500;\n display: flex;\n column-gap: 4px;\n align-items: center;\n svg {\n min-width: 20px;\n min-height: 20px;\n }\n }\n svg.fill {\n fill: var(--velotax-font-color);\n }\n svg:not(.fill) {\n stroke: var(--velotax-font-color);\n }\n &.disabled {\n opacity: 0.4;\n }\n .feature-desc {\n display: block;\n font-size: 10px;\n font-weight: 400;\n }\n }\n }\n .other-features {\n margin-bottom: 24px;\n }\n\n @media only screen and (max-device-width: 812px) {\n .original-price {\n font-size: 14px;\n max-width: 100px;\n\n .per-month {\n font-size: 12px !important;\n }\n }\n }\n`;\n\nexport const PlanModalStyled = styled(Modal)`\n .ant-modal-body {\n padding: 24px 32px !important;\n }\n\n .ant-tabs {\n width: 100%;\n }\n\n .ant-tabs-nav {\n margin: 0 auto 8px !important;\n width: calc(100% - 16px) !important;\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-modal-body {\n padding: 16px !important;\n }\n }\n`;\n\nexport const Content = styled.div``;\n\nexport const Loading = styled.div`\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n border-radius: 8px;\n position: absolute;\n align-items: center;\n justify-content: center;\n background-color: var(--velotax-shadow-default);\n`;\n\nexport const Feature = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const CardStyled = styled(Card)<{ checked: boolean }>`\n position: relative;\n border-radius: 8px;\n transition: 0.3s;\n border-color: ${({ checked }) => (checked ? \"var(--ant-primary-color)\" : \"\")};\n\n &:hover {\n border-color: var(--ant-primary-color);\n transition: 0.3s;\n }\n`;\n\nexport const Interval = styled.p`\n color: var(--ant-primary-color);\n font-weight: 500;\n font-size: 16px;\n margin-bottom: 1rem;\n`;\nexport const Price = styled.p`\n font-weight: 600;\n font-size: 40px;\n margin: 0;\n`;\nexport const Info = styled.p`\n font-size: 13px;\n transform: translateY(-8px);\n margin: 0;\n`;\n\nexport const Radio = styled.div<{\n checked: boolean;\n}>`\n position: absolute;\n right: 1rem;\n top: 1rem;\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${({ checked }) =>\n checked ? \"var(--ant-primary-color)\" : \"var(--ghost)\"};\n`;\n","import styled from \"styled-components\";\n\nexport const ContainerModal: any = styled.div`\n width: 100%;\n margin-top: 0;\n .container-table {\n width: 100%;\n overflow-y: auto;\n th.ant-table-cell {\n font-weight: bold;\n color: black;\n }\n }\n .container-1 {\n gap: 8px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n .ant-btn {\n display: flex;\n align-items: center;\n border-radius: 10px;\n }\n }\n .year-resume {\n .ant-typography {\n font-size: 14px;\n margin: 0px;\n font-weight: 600;\n }\n justify-content: space-between;\n border-radius: 10px;\n margin: 16px 0;\n display: flex;\n padding: 20px 25px;\n background-color: #ededed;\n width: 100%;\n }\n .client-wallet-header-btns {\n display: flex;\n column-gap: 8px;\n align-items: center;\n .ant-btn {\n height: 32px;\n min-width: 32px;\n font-weight: 500;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n svg {\n fill: none;\n width: 18px;\n height: 18px;\n stroke: var(--ant-primary-color);\n &.fill {\n path {\n stroke: var(--ant-primary-color);\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n margin-top: 0px;\n .container-1 {\n flex-direction: column;\n .client-wallet-header-btns {\n width: 100%;\n .ant-select {\n width: 35%;\n }\n .ant-select:first-of-type {\n width: calc(65% - 8px);\n }\n .ant-btn {\n width: calc(50% - 4px);\n }\n }\n }\n }\n`;\n","import styled from \"styled-components\";\n\nexport const ReportTypeContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 20px;\n\n .divider {\n width: 100%;\n max-width: 80px;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 1rem;\n }\n\n .loading {\n display: flex;\n\n h5 {\n margin-left: 1rem;\n }\n }\n\n .textInfo {\n display: flex;\n align-items: start;\n gap: 12px;\n padding: 2px;\n font-size: 10px;\n color: var(--gray-2);\n }\n\n .buttonDownload {\n font-size: 10px;\n align-items: center;\n display: flex;\n gap: 2px;\n }\n`;\n","import { Button, Drawer, Typography } from \"antd\";\nimport { AiOutlineArrowLeft, AiOutlineDownload } from \"react-icons/ai\";\nimport { isMobile } from \"../../utils\";\nimport { ReportTypeContainer } from \"./styles\";\nimport { InfoCircleOutlined, LoadingOutlined } from \"@ant-design/icons\";\n\ninterface IProps {\n open: boolean;\n loading?: boolean;\n setType: Function;\n onClose:\n | ((\n e: React.MouseEvent | React.KeyboardEvent\n ) => void)\n | undefined;\n}\n\nexport const ReportTypeDrawer = ({\n open,\n loading,\n setType,\n onClose,\n}: IProps) => {\n return (\n }\n title={\n
\n Voltar\n
\n }\n {...(isMobile() ? { width: \"100%\" } : { width: \"420px\" })}\n >\n \n
\n Baixar\n
\n
\n
\n \n Qual tipo de arquivo deseja baixar?\n \n
\n
\n \n \n {\" \"}\n O arquivo baixado mostrará suas informações de acordo com os filtros\n selecionados no momento do download.\n \n
\n setType(\"pdf\")}\n >\n \n Arquivo em PDF para simples conferência de dados.\n \n setType(\"xlsx\")}\n className=\"buttonDownload\"\n disabled={loading}\n >\n \n Arquivo em Excel para ser importado em planilhas.\n \n {loading && (\n \n )}\n \n \n );\n};\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport * as XLSX from \"xlsx\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport {\n Checkbox,\n Col,\n DatePicker,\n Modal,\n Row,\n Select,\n Table,\n Typography,\n message,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport { ContainerModal } from \"./styles\";\nimport Button from \"../../components/Button\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport { ReportTypeDrawer } from \"../ReportType/ReportType\";\nimport {\n download,\n downloadPDF,\n formatCurrency,\n monthsExtended,\n} from \"../../utils\";\nimport { ReactComponent as FiltroIcon } from \"../../assets/icons/filtro.svg\";\n\nconst months: any = {\n Jan: 1,\n Fev: 2,\n Mar: 3,\n Abr: 4,\n Mai: 5,\n Jun: 6,\n Jul: 7,\n Ago: 8,\n Set: 9,\n Out: 10,\n Nov: 11,\n Dez: 12,\n};\n\nexport const ProventosModal: React.FC = ({\n open,\n month,\n setOpenModal,\n yearProventos,\n selectedClient,\n proventosLoading,\n setYearProventos,\n setMonthProventos,\n}) => {\n const date = new Date();\n const selectYears = [1, 0, -1, -2, -3];\n const [data, setData] = useState([]);\n const [originalData, setOriginalData] = useState([]);\n const [dataModalPDF, setDataModalPDF] = useState([]);\n const [showFilterModal, setShowFilterModal] = useState(false);\n const [filters, setFilters] = useState({});\n const dateFormat = \"DD/MM/YYYY\";\n const [dateBeginFilter, setDateBeginFilter] = useState(\"\");\n const dateBeginRef = useRef(null);\n const [dateEndFilter, setDateEndFilter] = useState(\n moment().format(\"DD/MM/YYYY\")\n );\n const [appliedFilters, setAppliedFilters] = useState({});\n const [total, setTotal] = useState(0);\n const [loading, setLoading] = useState(false);\n const [reportDrawerProventos, setReportDrawerProventos] = useState(false);\n const { proventos } = useClients();\n\n const downloadRelatorioProventos = async (type: string) => {\n try {\n const escritorioId =\n selectedClient && selectedClient?.code\n ? selectedClient?.code[0].escritorioId\n : null;\n setLoading(true);\n if (type === \"pdf\") {\n let fileUrl = \"\";\n let file = \"\";\n const ret = await api.post(\"/clients/downloadRelatorioProventos\", {\n proventos: dataModalPDF,\n escritorioId: escritorioId,\n username: selectedClient?.username\n });\n if (ret) {\n fileUrl = ret?.data?.fileUrl;\n file = ret?.data?.file;\n }\n if (fileUrl) {\n download(fileUrl);\n } else if (file) {\n downloadPDF(file, \"Proventos\");\n }\n setLoading(false);\n }\n if (type === \"xlsx\") {\n const workbook = XLSX.utils.book_new();\n const worksheet = XLSX.utils.json_to_sheet(data);\n XLSX.utils.book_append_sheet(workbook, worksheet, \"Proventos\");\n XLSX.writeFile(workbook, \"Proventos.xlsx\");\n setLoading(false);\n }\n } catch (err: any) {\n setLoading(false);\n message.error(\n \"Não foi possível baixar o relatório de proventos. Tente novamente mais tarde\"\n );\n }\n };\n\n const handleOpenFilterModal = () => {\n setShowFilterModal(true);\n };\n\n const getCorretFilters = () => {\n const newCorret: any[] = [];\n if (originalData && originalData.length > 0)\n originalData.forEach((el: any) => {\n if (newCorret.includes(el[\"Instituição\"])) {\n } else {\n newCorret.push(el[\"Instituição\"]);\n }\n });\n return newCorret;\n };\n\n const reportPDFData = (data: any, type: string) => {\n const formatModalPDF = data.map((el: any) => {\n if (type === \"prov\") {\n return {\n code: el.code || \"\",\n date: moment(el?.date).format(\"DD/MM/YYYY\"),\n corporateActionTypeDescription: _.capitalize(\n el?.corporateActionTypeDescription\n ),\n corretora: el?.corretora,\n quantity: el?.quantity || \"-\",\n unitPrice: el?.unitPrice || \"-\",\n grossAmount: el?.grossAmount,\n };\n } else if (type === \"other\") {\n return {\n code: el[\"Produto\"] || \"\",\n date: el[\"Pagamento\"],\n corporateActionTypeDescription: _.capitalize(el[\"Tipo\"]),\n corretora: el[\"Instituição\"],\n quantity: el[\"Qtde.\"] || \"-\",\n unitPrice: el[\"Preço unit.\"] || \"-\",\n grossAmount: el[\"Valor líquido\"],\n };\n }\n return {};\n });\n return formatModalPDF;\n };\n\n useEffect(() => {\n let total = 0;\n const monthNumber = months[month];\n\n const dataFiltered = proventos.filter((el: any) => {\n const monthOp = Number(moment(el?.date).format(\"M\"));\n const yearOp = Number(moment(el?.date).format(\"YYYY\"));\n if (monthNumber === monthOp && yearProventos === yearOp) {\n return true;\n }\n return false;\n });\n setDataModalPDF(reportPDFData(dataFiltered, \"prov\"));\n const dataSerialized = dataFiltered.map((el: any) => {\n total += el?.grossAmount;\n\n return {\n Produto: el?.code,\n Pagamento: moment(el?.date).format(\"DD/MM/YYYY\"),\n Tipo: _.capitalize(el?.corporateActionTypeDescription),\n Instituição: el?.corretora,\n \"Qtde.\": el?.quantity || \"-\",\n \"Preço unit.\": !el?.unitPrice\n ? \"-\"\n : \"R$ \" +\n el?.unitPrice?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }),\n \"Valor líquido\":\n \"R$ \" +\n el?.grossAmount?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }),\n };\n });\n setTotal(total);\n setData(dataSerialized);\n setOriginalData(dataSerialized);\n }, [month, yearProventos, proventos]);\n\n useEffect(() => {\n if (Object.keys(filters).length > 0 || (dateBeginFilter && dateEndFilter))\n setData(originalData);\n }, [filters, dateBeginFilter, dateEndFilter, originalData]);\n\n return (\n <>\n setOpenModal(false)}\n >\n \n
\n \n setMonthProventos({ name })}\n options={Object.keys(months).map((m, i) => ({\n value: m,\n label: monthsExtended[i],\n }))}\n />\n setYearProventos(e)}\n options={selectYears.map((y) => ({\n value: date.getFullYear() + y,\n label: date.getFullYear() + y,\n }))}\n />\n \n \n }\n onClick={handleOpenFilterModal}\n className={\n Object.keys(appliedFilters).filter(\n (key) => (appliedFilters[key]?.length || 0) > 0\n ).length > 0\n ? \"filtro-aplicado\"\n : \"\"\n }\n >\n Filtrar\n \n }\n onClick={() => {\n setReportDrawerProventos(true);\n }}\n >\n Baixar\n \n \n
\n downloadRelatorioProventos(type)}\n onClose={() => setReportDrawerProventos(false)}\n />\n \n
\n \n Total recebido no mês:\n \n \n {formatCurrency(total)}\n \n
\n
\n \n
\n \n
\n
\n
\n \n {\n setFilters(appliedFilters);\n setShowFilterModal(false);\n }}\n >\n \n \n \n \n Instituição\n \n \n {\n setFilters((filters: any) => ({ ...filters, corretoras }));\n }}\n >\n \n {getCorretFilters().map((el: any) => {\n const value = `${el.split(\" \")[0]}_${el.split(\" \")[1]}`;\n return (\n \n {el}\n \n );\n })}\n \n \n \n \n Período de pagamento\n \n \n Data inicial\n setDateBeginFilter(\"\")}\n onChange={(el) => {\n if (el) setDateBeginFilter(moment(el).format(\"DD/MM/YYYY\"));\n }}\n format={dateFormat}\n >\n Data final\n setDateEndFilter(\"\")}\n defaultValue={moment()}\n onChange={(el) => {\n if (el) setDateEndFilter(moment(el).format(\"DD/MM/YYYY\"));\n }}\n format={dateFormat}\n >\n \n \n \n \n {\n setAppliedFilters(filters);\n const getProventosWithFilter = (filters: any) => {\n const corretoras = filters?.corretoras || [];\n const dataFiltered: any = [];\n const dataFinal: any = [];\n if (corretoras.length > 0) {\n corretoras.forEach((corret: string) => {\n data.forEach((el: any) => {\n const corretEl = `corret_${\n el[\"Instituição\"]?.split(\" \")[0]\n }_${el[\"Instituição\"]?.split(\" \")[1]}`;\n if (corretEl === corret) dataFiltered.push(el);\n });\n });\n setData(dataFiltered);\n if (dateBeginFilter && dateEndFilter) {\n const dateBegin = moment(\n dateBeginFilter,\n dateFormat\n ).toDate();\n const dateEnd = moment(\n dateEndFilter,\n dateFormat\n ).toDate();\n dataFiltered.forEach((el: any) => {\n const datePagamento = moment(\n el[\"Pagamento\"],\n dateFormat\n ).toDate();\n if (\n datePagamento >= dateBegin &&\n datePagamento <= dateEnd\n )\n dataFinal.push(el);\n });\n setData(dataFinal);\n }\n setDataModalPDF(\n reportPDFData(\n dataFinal.length === 0 ? dataFiltered : dataFinal,\n \"other\"\n )\n );\n return;\n } else if (dateBeginFilter && dateEndFilter) {\n const dateBegin = moment(\n dateBeginFilter,\n dateFormat\n ).toDate();\n const dateEnd = moment(dateEndFilter, dateFormat).toDate();\n data.forEach((el: any) => {\n const datePagamento = moment(\n el[\"Pagamento\"],\n dateFormat\n ).toDate();\n if (\n datePagamento >= dateBegin &&\n datePagamento <= dateEnd\n )\n dataFinal.push(el);\n });\n setData(dataFinal);\n setDataModalPDF(reportPDFData(dataFinal, \"other\"));\n return;\n }\n setData(originalData);\n };\n getProventosWithFilter(filters);\n setTimeout(() => {\n setShowFilterModal(false);\n }, 500);\n }}\n >\n Aplicar\n \n \n \n \n \n );\n};\n","export default __webpack_public_path__ + \"static/media/mail.c0cf6ce6.svg\";","export default __webpack_public_path__ + \"static/media/whatsapp.9cd0446d.svg\";","import styled from \"styled-components\";\n\nexport const B3Link = styled.a`\n margin: auto;\n font-size: 10px;\n text-align: center;\n white-space: normal;\n display: inline-block;\n word-break: break-all;\n color: rgb(1, 103, 153);\n\n &:hover {\n text-decoration: underline;\n color: rgb(1, 103, 153);\n }\n`;\n\nexport const CopyLink = styled.button`\n color: #0566cd;\n font-weight: 500;\n text-decoration: underline;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n`;\n\nexport const ShareItem = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin-right: 1rem;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n\n img {\n width: 40px;\n height: 40px;\n }\n\n p {\n font-size: 11px;\n margin: 0.5rem 0;\n }\n`;\n\nexport const Instructions = styled.p`\n font-size: 13px;\n margin-bottom: 4px;\n`;\n","export default __webpack_public_path__ + \"static/media/Integracao_XP_B3.635b7422.gif\";","export default __webpack_public_path__ + \"static/media/integracao_warren_exterior.abe871c7.gif\";","import { Typography, Image, message, Divider } from \"antd\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport mainIcon from \"../../assets/icons/mail.svg\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport whatsIcon from \"../../assets/icons/whatsapp.svg\";\nimport { IClient } from \"../../contexts/ClientsContext\";\nimport { B3Link, CopyLink, Instructions, ShareItem } from \"./styles\";\nimport b3IntegrationExample from \"../../assets/Integracao_XP_B3.gif\";\nimport warrenIntegrationExample from \"../../assets/integracao_warren_exterior.gif\";\n\nexport type TIntegrationModal = \"B3\" | \"Warren Internacional\" | null;\ninterface IProps {\n integrationModal: TIntegrationModal;\n setIntegrationModal: React.Dispatch>;\n integrationClient: IClient | null;\n sendMail: (type: string, clients?: IClient[]) => Promise;\n}\n\nconst b3Link =\n \"https://b3investidor.b2clogin.com/b3Investidor.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_FINTECH&client_id=069ecfdf-7471-48eb-be82-d50799c99e5c&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fwww.investidor.b3.com.br&scope=openid&response_type=code&prompt=login\";\nconst b3Encoded =\n \"https%3A%2F%2Fb3investidor.b2clogin.com%2Fb3Investidor.onmicrosoft.com%2Foauth2%2Fv2.0%2Fauthorize%3Fp%3DB2C_1A_FINTECH%26client_id%3D069ecfdf-7471-48eb-be82-d50799c99e5c%26nonce%3DdefaultNonce%26redirect_uri%3Dhttps%253A%252F%252Fwww.investidor.b3.com.br%26scope%3Dopenid%26response_type%3Dcode%26prompt%3Dlogin\";\n\nexport const IntegrationModal = ({\n integrationModal,\n setIntegrationModal,\n integrationClient,\n sendMail,\n}: IProps) => {\n const { user } = useAuth();\n return (\n {\n setIntegrationModal(null);\n }}\n >\n {integrationModal === \"B3\" ? (\n \n Os clientes devem permitir a conexão entre Velotax e B3 para leitura\n das operações realizadas na bolsa de valores.\n \n ) : (\n \n Os clientes devem permitir a conexão entre Velotax e Warren\n Internacional para leitura das operações realizadas.\n \n )}\n \n \n
\n\n {integrationModal === \"B3\" ? (\n <>\n \n {b3Link}\n \n\n \n {\n navigator.clipboard.writeText(b3Link);\n message.success(\"Link copiado\");\n }}\n >\n Copiar link\n \n
\n \n ) : (\n <>\n \n Instruções\n \n
\n \n Passo 1. Acesse a aba de{\" \"}\n Investimento Global dentro do aplicativo da\n Warren\n \n \n Passo 2. Deslize a tela para baixo e clique em{\" \"}\n Imposto de Renda e DARF\n \n \n Passo 3. Clique em{\" \"}\n Calcular Imposto de Renda e aceite os termos\n \n
\n \n )}\n\n \n\n \n Compartilhe {integrationModal === \"B3\" ? \"o link\" : \"as instruções\"}{\" \"}\n para conexão:\n \n
\n {\n if (integrationClient) {\n sendMail(\n integrationModal === \"B3\"\n ? \"b3-integration\"\n : \"exterior-integration\",\n [integrationClient]\n );\n setIntegrationModal(null);\n }\n }}\n >\n \"Ícone\n

E-mail

\n \n {\n const text =\n `Instruções:%0APasso 1: Acesse o aplicativo da Warren.%0APasso 2: Na parte inferior da tela principal, clique em \"Imposto de renda e DARF\".%0APasso 3: Clique no botão \"Continuar\".`;\n const url = `https://wa.me${integrationClient?.phone ? `/55${integrationClient?.phone}` : \"\"\n }?text=${integrationModal === \"B3\"\n ? `${encodeURI(\n `Olá,\\n\\n${user.user.name} solicitou a integração da sua conta na B3 com o Velotax para auxiliar na conferência do seu imposto de renda mensal (DARF).\\n\\nPara realizar a integração, clique no link abaixo:\\n\\n`\n )}${b3Encoded}`\n : text\n }`;\n window.open(url, \"_blank\");\n }}\n >\n \"Ícone\n

Whatsapp

\n \n
\n \n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .income-report-uploader\n > div.ant-upload.ant-upload-select.ant-upload-select-text {\n border: 1px solid var(--ant-primary-color);\n border-radius: 1.5rem;\n }\n .income-report-uploader {\n height: auto;\n display: block;\n margin: 1rem 0 1.5rem 0;\n\n .ant-upload {\n width: 100%;\n height: 120px;\n margin-top: 4px;\n\n .upload-text-icon {\n height: 100%;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n svg {\n fill: var(--ant-primary-color);\n }\n\n .upload-text-desc {\n font-size: 14px;\n text-align: center;\n }\n }\n\n .loading-container {\n height: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n .anticon {\n width: 40px;\n height: 40px;\n margin-bottom: 12px;\n\n svg {\n width: 100%;\n height: 100%;\n fill: var(--ant-primary-color);\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { Upload } from \"antd\";\nimport { UploadProps } from \"antd/lib/upload\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineCloudUpload } from \"react-icons/ai\";\nimport { Container } from \"./styles\";\n\nexport interface IUploadProps extends UploadProps {\n loading?: boolean;\n descText?: string;\n customText?: string;\n}\n\nconst UploadNotas: React.FC = ({\n loading,\n descText,\n disabled,\n customText = \"Arraste ou clique\",\n ...props\n}) => {\n return (\n \n \n {loading ? (\n
\n \n Isso pode demorar alguns minutos, aguarde\n
\n ) : (\n
\n \n {customText}\n {descText && {descText}}\n
\n )}\n \n
\n );\n};\n\nexport default UploadNotas;\n","import { Collapse } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const PosicaoCardStyled = styled(Collapse.Panel)`\n margin-bottom: 4px;\n border: 1px solid var(--ghost) !important;\n border-radius: 8px !important;\n background-color: #f8f8f8;\n\n &:last-of-type {\n margin-bottom: 0;\n }\n\n &.ant-collapse-item-active {\n background-color: transparent;\n }\n\n .hr-datails {\n margin: 15px 10px;\n opacity: 0.3;\n }\n\n .ant-collapse-header {\n height: 72px;\n background-color: transparent;\n padding: 24px 72px 24px 32px !important;\n .ant-collapse-arrow {\n right: 32px !important;\n }\n\n .header {\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n .title {\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n span {\n margin-left: 8px;\n font-weight: 600;\n font-size: 0.875rem;\n }\n }\n\n .posicao {\n font-weight: 600;\n font-size: 1.125rem;\n color: var(--velotax-font-color-light);\n }\n }\n }\n\n .ant-collapse-content {\n border: none;\n background-color: transparent;\n border-radius: 0 0 8px 8px !important;\n\n .ant-collapse-content-box {\n padding: 0 32px 32px;\n color: var(--velotax-font-color);\n & > div {\n & > span:first-child {\n width: 180px;\n display: inline-block;\n }\n & > span:not(:first-child) {\n margin-left: 16px;\n .valorUSD {\n font-size: 11px;\n font-weight: 100;\n margin-left: 8px;\n color: var(--velotax-font-color);\n /* &.success {\n color: var(--ant-success-color);\n }\n &.error {\n color: var(--ant-error-color);\n } */\n }\n }\n }\n }\n }\n\n .row-section {\n width: 100%;\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n }\n .chart-section {\n width: 340px;\n flex-grow: 1;\n margin-top: 1rem;\n\n .recharts-responsive-container {\n transform: translateX(2rem);\n }\n\n .recharts-text {\n font-weight: 300;\n font-size: 13px;\n }\n }\n\n .recharts-surface {\n overflow: visible;\n }\n\n .chart-tooltip {\n width: 200px;\n height: 60px;\n background-color: white;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.2);\n padding: 0.5rem 1rem;\n display: flex;\n flex-direction: column;\n\n text {\n &:first-of-type {\n font-weight: 500;\n }\n &:last-of-type {\n color: var(--ant-primary-8);\n }\n }\n }\n\n .info-section {\n div {\n display: flex;\n span {\n &:first-of-type {\n width: 196px;\n }\n }\n }\n }\n\n .info-title {\n font-size: 13px;\n margin: 1rem 0 0 0;\n\n &:first-of-type {\n margin: 0;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-collapse-header {\n height: 64px;\n padding: 20px 48px 20px 16px !important;\n .ant-collapse-arrow {\n right: 16px !important;\n }\n .header {\n .title {\n font-size: 0.6rem;\n span {\n margin-left: 8px;\n font-size: 0.675rem;\n }\n }\n .posicao {\n font-size: 0.875rem;\n text-align: right;\n }\n }\n }\n .ant-collapse-content {\n .ant-collapse-content-box {\n padding: 0 16px 24px 16px;\n & > div {\n & > span:first-child {\n width: 140px;\n font-size: 0.75rem;\n letter-spacing: -0.5px;\n }\n & > span:not(:first-child) {\n font-size: 0.75rem;\n letter-spacing: -0.8px;\n }\n }\n }\n }\n }\n`;\n","import { Link } from \"react-router-dom\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport { AiOutlineArrowDown, AiOutlineArrowUp, AiOutlineMinusCircle, AiOutlinePlusCircle } from \"react-icons/ai\";\nimport { PosicaoCardStyled } from \"./styles\";\nimport { formatCurrency, numberToPercentage } from \"../../utils\";\nimport Loading from \"../Loading\";\nimport { Typography } from \"antd\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport moment from \"moment\";\n\nconst negativeToPositive = (n: number) => (n < 0 ? n * -1 : n);\n\nconst signal = (n: number) => (n > 0 ? \"+\" : n < 0 ? \"-\" : \"\");\n\nconst arrow = (n: number) => (n > 0 \n ? \n : n < 0 \n ? \n : \"\");\n\nconst className = (n: number) => (n === 0 ? \"\" : n > 0 ? \"success\" : \"error\");\n\nexport const LucroPrejuizo: React.FC<{\n n?: number;\n p?: number;\n cotacao?: number;\n}> = ({ n, p, cotacao }) => (\n \n {arrow(n || 0)}\n {formatCurrency(negativeToPositive(n || 0))} ({arrow(n || 0)}\n {numberToPercentage(negativeToPositive(p || 0))})\n {cotacao && (\n \n {signal(n || 0)}\n {formatCurrency(negativeToPositive(n ? n / cotacao : 0), \"US$ \")}\n \n )}\n \n);\n\nexport const HidenValue: React.FC<{\n block?: boolean;\n strong?: boolean;\n currency?: boolean;\n}> = ({ block, strong, currency = true }) => {\n const value = `${currency ? \"R$ \" : \"\"}****`;\n const content = strong ? {value} : value;\n return block ?
{content}
: {content};\n};\n\nexport interface Posicao {\n categoria: string;\n codigo: string;\n posicao: number;\n quantidade: number;\n precoAtual: number;\n precoVenda: number;\n loan?: {\n isLoan?: boolean;\n typeLoan?: string;\n };\n custoMedio: number;\n lucroPrejuizoTotal: number;\n lucroPrejuizoDiario: number;\n lucroPrejuizoTotalPercentual: number;\n lucroPrejuizoDiarioPercentual: number;\n hasPosition2019: boolean;\n corretora: string;\n}\ninterface PosicaoCardProps {\n key: string;\n details?: any;\n posicao?: Partial;\n hideValues?: boolean;\n setHelpModal?: Dispatch>;\n categoria?: string;\n index?: number;\n codigo?: string;\n loading?: boolean;\n cotacaoVenda?: number;\n}\n\nexport const PosicaoHeader = (posicao?: Partial, hideValues?: boolean) => (\n
\n
\n {posicao?.codigo || \"GOOGL\"}\n \n {posicao?.categoria === \"Bonds\"\n ? arrow(posicao?.lucroPrejuizoTotal || 0)\n : arrow(posicao?.lucroPrejuizoDiario || 0)}\n {numberToPercentage(\n posicao?.categoria === \"Bonds\"\n ? negativeToPositive(posicao?.lucroPrejuizoTotalPercentual || 0)\n : negativeToPositive(posicao?.lucroPrejuizoDiarioPercentual || 0)\n )}\n \n
\n \n {hideValues ? (\n \n ) : (\n formatCurrency(\n posicao?.categoria === \"TesouroDireto\"\n ? posicao?.precoAtual || 0\n : posicao?.posicao || 0\n )\n )}\n
\n \n);\n\nexport const CustoMedioModal = {\n title: \"Custo Médio\",\n content: (\n
\n

\n Preencha o custo médio do ativo na aba{\" \"}\n \n Posição 31-12-2019\n \n .\n

\n
\n ),\n};\n\nexport const PosicaoBody = (\n posicao: Partial,\n setHelpModal: Dispatch>,\n hideValues?: boolean,\n details?: any,\n loading?: boolean,\n cotacaoVenda?: number\n) => {\n return (\n <>\n
\n Quantidade:\n \n {hideValues ? : posicao.quantidade}\n \n
\n
\n {posicao.categoria === \"TesouroDireto\" ? (\n Valor atualizado:\n ) : (\n Preço atual:\n )}\n \n {hideValues ? (\n \n ) : (\n formatCurrency(posicao.precoAtual || 0)\n )}\n {cotacaoVenda && (\n \n {formatCurrency(\n posicao.precoAtual ? posicao.precoAtual / cotacaoVenda : 0,\n \"US$ \"\n )}\n \n )}\n \n
\n
\n {posicao?.loan?.typeLoan === \"Tomador\" && (\n <>\n Preço de venda:\n \n {hideValues ? (\n \n ) : (\n formatCurrency(posicao.precoVenda || 0)\n )}\n \n \n )}\n
\n {posicao.hasPosition2019 && posicao?.loan?.typeLoan !== \"Tomador\" && (\n setHelpModal(CustoMedioModal)}\n >\n Custo médio de compra: \n \n \n \n \n )}\n {!posicao.hasPosition2019 && posicao?.loan?.typeLoan !== \"Tomador\" && (\n
\n {posicao.categoria === \"TesouroDireto\" ? (\n Valor Aplicado:\n ) : (\n Custo médio de compra:\n )}\n \n {posicao.custoMedio === 0 || !posicao.custoMedio ? (\n \"N/A\"\n ) : hideValues ? (\n \n ) : (\n formatCurrency(posicao.custoMedio)\n )}\n {cotacaoVenda && posicao.custoMedio && (\n \n {formatCurrency(\n posicao.custoMedio ? posicao.custoMedio / cotacaoVenda : 0,\n \"US$ \"\n )}\n \n )}\n \n
\n )}\n {posicao.categoria !== \"TesouroDireto\" &&\n posicao.categoria !== \"Bonds\" && (\n
\n Lucro/prejuízo diário: \n {hideValues ? (\n \n ) : (\n \n )}{\" \"}\n
\n )}\n {posicao.hasPosition2019 && (\n setHelpModal(CustoMedioModal)}\n >\n Lucro/prejuízo total:{\" \"}\n \n \n )}\n {!posicao.hasPosition2019 && (\n
\n Lucro/prejuízo total: \n {posicao.custoMedio === 0 || !posicao.custoMedio ? (\n \"N/A\"\n ) : hideValues ? (\n \n ) : (\n \n )}\n
\n )}\n {details &&\n (details?.marketCap !== \"N/A\" ||\n details?.beta !== \"N/A\" ||\n details?.peRatio !== \"N/A\" ||\n details?.earningDate !== \"N/A\" ||\n details?.dividendYield !== \"N/A\" ||\n details?.targetPrice !== \"N/A\" ||\n details?.enterpriseValueRevenue !== \"N/A\" ||\n details?.enterpriseValueEbitda !== \"N/A\") && (\n <>\n
\n
\n
\n \n Negociação\n \n
\n Captalização de mercado:\n \n {hideValues ? (\n \n ) : (\n <>\n {formatCurrency(\n Number(details?.marketCap || 0) / 1000000000\n )}{\" \"}\n B\n \n )}\n \n
\n
\n Preço-alvo da ação:\n \n {hideValues ? (\n \n ) : typeof details?.targetPrice === \"string\" ? (\n details?.targetPrice\n ) : (\n formatCurrency(details?.targetPrice)\n )}\n \n
\n
\n Dividend yield (1YFW):\n \n {hideValues ? (\n \n ) : typeof details?.dividendYield === \"string\" ? (\n details?.dividendYield\n ) : (\n `${(details?.dividendYield * 100)?.toFixed(2)}%`\n )}\n \n
\n
\n Divulgação de resultados:\n \n {hideValues ? (\n \n ) : (\n details?.earningDate\n )}\n \n
\n \n Avaliação\n \n {/*
\n Beta:\n \n {hideValues ? : typeof details?.beta !== 'string' ? details?.beta?.toFixed(2) : details?.beta}\n \n
*/}\n
\n EV/Receita (1YFW):\n \n {hideValues ? (\n \n ) : (\n `${\n typeof details?.enterpriseValueRevenue !== \"string\"\n ? `${details?.enterpriseValueRevenue?.toFixed(1)} x`\n : details?.enterpriseValueRevenue\n }`\n )}\n \n
\n
\n EV/EBITDA (1YFW):\n \n {hideValues ? (\n \n ) : (\n `${\n typeof details?.enterpriseValueEbitda !== \"string\"\n ? `${details?.enterpriseValueEbitda?.toFixed(1)} x`\n : details?.enterpriseValueEbitda\n }`\n )}\n \n
\n
\n P/E (1YFW):\n \n {hideValues ? (\n \n ) : (\n `${\n typeof details?.peRatio !== \"string\"\n ? `${details?.peRatio?.toFixed(1)}`\n : details?.peRatio\n } x`\n )}\n \n
\n
\n {details?.chart?.length && (\n
\n \n \n \n \n \n \n \n \n {\n const date = new Date(v);\n return `${date.getMonth() + 1}/${date.getFullYear()}`;\n }}\n />\n \n \n (\n
\n \n {moment(new Date(label)).format(\"DD/MM/YYYY\")}\n \n \n Cotação:{\" \"}\n {formatCurrency(Number(payload?.[0]?.value || 0))}\n \n
\n )}\n />\n \n \n
\n
\n )}\n
\n \n )}\n {loading && (\n
\n \n
\n )}\n \n );\n};\n\nexport const PosicaoCard = ({\n key,\n details,\n posicao,\n hideValues,\n loading,\n setHelpModal,\n cotacaoVenda,\n}: PosicaoCardProps) => {\n return (\n \n {posicao\n ? PosicaoBody(\n posicao,\n setHelpModal!,\n hideValues,\n details,\n loading,\n cotacaoVenda\n )\n : null}\n \n );\n};\n\nexport const ExpandIcon = ({ isActive }: { isActive?: boolean }) =>\n isActive ? (\n \n ) : (\n \n );\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.0519 0.353988C13.5958 -0.117996 14.4042 -0.117996 14.9482 0.353988L16.614 1.79915C16.9496 2.09037 17.4004 2.21119 17.8369 2.12682L20.0019 1.70812C20.709 1.57138 21.409 1.97555 21.6443 2.6563L22.3642 4.74069C22.5092 5.16074 22.8394 5.49082 23.2594 5.63591L25.3438 6.35587C26.0245 6.591 26.4286 7.29103 26.2919 7.99817L25.8733 10.1633C25.7888 10.5996 25.9096 11.0505 26.2009 11.3861L27.6461 13.0519C28.118 13.5958 28.118 14.4042 27.6461 14.9482L26.2009 16.614C25.9096 16.9496 25.7888 17.4004 25.8733 17.8369L26.2919 20.0019C26.4286 20.709 26.0245 21.409 25.3438 21.6443L23.2594 22.3642C22.8394 22.5092 22.5092 22.8394 22.3642 23.2594L21.6443 25.3438C21.409 26.0245 20.709 26.4286 20.0019 26.2919L17.8369 25.8733C17.4004 25.7888 16.9496 25.9096 16.614 26.2009L14.9482 27.6461C14.4042 28.118 13.5958 28.118 13.0519 27.6461L11.3861 26.2009C11.0505 25.9096 10.5996 25.7888 10.1633 25.8733L7.99817 26.2919C7.29103 26.4286 6.591 26.0245 6.35587 25.3438L5.63591 23.2594C5.49082 22.8394 5.16074 22.5092 4.74069 22.3642L2.6563 21.6443C1.97555 21.409 1.57138 20.709 1.70812 20.0019L2.12682 17.8369C2.21119 17.4004 2.09037 16.9496 1.79915 16.614L0.353988 14.9482C-0.117996 14.4042 -0.117996 13.5958 0.353988 13.0519L1.79915 11.3861C2.09037 11.0505 2.21119 10.5996 2.12682 10.1633L1.70812 7.99817C1.57138 7.29103 1.97555 6.591 2.6563 6.35587L4.74069 5.63591C5.16074 5.49082 5.49082 5.16074 5.63591 4.74069L6.35587 2.6563C6.591 1.97555 7.29103 1.57138 7.99817 1.70812L10.1633 2.12682C10.5996 2.21119 11.0505 2.09037 11.3861 1.79915L13.0519 0.353988Z\",\n fill: \"#00BC75\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5 11L12.3125 17L9.5 14.2728\",\n stroke: \"white\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgSelo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSelo);\nexport default __webpack_public_path__ + \"static/media/selo.7aa9cf53.svg\";\nexport { ForwardRef as ReactComponent };","import _ from \"lodash\";\n\nexport const serializePatrimonio = (\n itemPatrimonio: any,\n corretoraFilter?: string[]\n) => {\n let posicoesFiltradas = itemPatrimonio?.wallet?.posicoes || [];\n const corretoras = getTodasAsCorretoras(posicoesFiltradas);\n if (corretoraFilter && corretoraFilter.length > 0) {\n const corretoraNames = corretoraFilter.map((c) =>\n getNomeCorretora({ shortName: c })\n );\n posicoesFiltradas = posicoesFiltradas?.filter((p: any) =>\n corretoraNames.includes(p.corretora)\n );\n }\n\n const patrimonio = calculaSaldoCorretoras(\n posicoesFiltradas,\n itemPatrimonio?.wallet?.posicao2019 || {}\n );\n\n const classesAtivos = calculaClassesAtivos(\n posicoesFiltradas,\n itemPatrimonio?.wallet?.posicao2019 || {}\n );\n const posicoes = calculaPorcentagemPosicoes(posicoesFiltradas);\n\n return { patrimonio, classesAtivos, posicoes, corretoras };\n};\n\nexport const getNomeCorretora = ({\n name,\n shortName,\n}: {\n name?: string;\n shortName?: string;\n}) => {\n const corretoras = [\n {\n name: \"XP INVESTIMENTOS CCTVM S/A\",\n shortName: \"XP Investimentos\",\n },\n {\n name: \"NU INVEST CORRETORA DE VALORES S.A.\",\n shortName: \"Nubank\",\n },\n {\n name: \"INTER DISTRIBUIDORA DE TITULOS E VALORES MOBILIARIOS LTDA\",\n shortName: \"Inter\",\n },\n {\n name: \"ORAMA DTVM S.A.\",\n shortName: \"Orama\",\n },\n {\n name: \"CLEAR CORRETORA - GRUPO XP\",\n shortName: \"Clear Corretora\",\n },\n {\n name: \"Exterior\",\n shortName: \"Warren Internacional\",\n },\n ];\n\n if (name) return corretoras.find((c) => c.name === name)?.shortName || name;\n if (shortName)\n return corretoras.find((c) => c.shortName === shortName)?.name || shortName;\n return \"\";\n};\n\nconst getCategoriaShortName = (categoria: string) => {\n if (categoria.includes(\"Fundos de Investimentos\")) return \"FIs\";\n if (categoria.includes(\"FII\")) return \"FIIs\";\n if (categoria.includes(\"BDR\")) return \"BDRs\";\n if (categoria.includes(\"ETF\")) return \"ETFs\";\n if (categoria.includes(\"Empréstimo de Ativos\")) return \"Empréstimos\";\n if (categoria.includes(\"TesouroDireto\")) return \"Tesouro Direto\";\n return categoria;\n};\n\nconst calculaSaldoCorretoras = (posicoes: any, posicao2019: any) => {\n const agrupadoPorCorretora = _.groupBy(posicoes, (p) => p.corretora);\n const saldosCorretoras = [];\n for (const corretora in agrupadoPorCorretora) {\n const saldo = agrupadoPorCorretora[corretora].reduce((prev, curr) => {\n return (prev || 0) + (curr?.posicao || 0);\n }, 0);\n saldosCorretoras.push({\n name: getNomeCorretora({ name: corretora }),\n value: saldo,\n });\n }\n\n return calculaPorgentagensCategorias(saldosCorretoras);\n};\n\nconst getTodasAsCorretoras = (posicoes: any) => {\n const agrupadoPorCorretora = _.groupBy(posicoes, (p) => p.corretora);\n const corretoras = Object.keys(agrupadoPorCorretora);\n const corretorasShortName = corretoras.map((c) =>\n getNomeCorretora({ name: c })\n );\n return corretorasShortName.sort((a, b) => a.localeCompare(b));\n};\n\nconst calculaClassesAtivos = (posicoes: any, posicao2019: any) => {\n const agrupadoPorCategoria = _.groupBy(posicoes, (p) => p.categoria);\n const saldosCategorias = [];\n for (const categoria in agrupadoPorCategoria) {\n const saldo = agrupadoPorCategoria[categoria].reduce((prev, curr) => {\n return (prev || 0) + (curr?.posicao || 0);\n }, 0);\n saldosCategorias.push({\n name: getCategoriaShortName(categoria),\n value: saldo,\n });\n }\n\n return calculaPorgentagensCategorias(saldosCategorias);\n};\n\nconst calculaPorgentagensCategorias = (\n saldosCategorias: Array<{ name: string; value: number }>\n) => {\n const totalSaldos = saldosCategorias.reduce(\n (acc, curr) => acc + curr.value,\n 0\n );\n\n const porcentagens = saldosCategorias.map((categoria) => ({\n name: categoria.name,\n value: categoria.value,\n percentage: Number(((categoria.value / totalSaldos) * 100).toFixed(1)),\n }));\n\n return porcentagens;\n};\n\nconst calculaPorcentagemPosicoes = (\n posicoes: {\n codigo: string;\n posicao: number;\n custoMedio: number;\n precoAtual: number;\n quantidade: number;\n categoria: string;\n corretora: string;\n hasPosition2019: boolean;\n }[]\n) => {\n if (!posicoes || posicoes.length === 0) return [];\n\n const patrimonioTotal = Number(\n posicoes.reduce((prev, curr) => prev + curr.posicao, 0).toFixed(2)\n );\n\n const posicoesOrdenadas = posicoes.sort((a, b) => {\n return b.posicao - a.posicao;\n });\n const quantidadeDeAtivosMostrados = 8;\n const porcentagens = [];\n\n for (\n let i = 0;\n i <\n (posicoesOrdenadas.length < quantidadeDeAtivosMostrados\n ? posicoesOrdenadas.length\n : quantidadeDeAtivosMostrados);\n i++\n ) {\n const posicao = posicoesOrdenadas[i];\n if (posicao.categoria === \"Exterior\" || !posicao.hasPosition2019) {\n const porcentagem = (posicao.posicao / patrimonioTotal) * 100;\n porcentagens.push({\n name: posicao.codigo,\n value: Number(posicao.posicao),\n percentage: Number(porcentagem.toFixed(1)),\n });\n }\n }\n\n let porcentagensOrdenadas = porcentagens.sort(\n (a, b) => a.percentage - b.percentage\n );\n\n if (porcentagensOrdenadas.length > quantidadeDeAtivosMostrados) {\n porcentagensOrdenadas = porcentagensOrdenadas.slice(\n 0,\n quantidadeDeAtivosMostrados\n );\n }\n\n let somatorioDasMaioresPorcentagens = 0;\n let somatorioDosMaioresValores = 0;\n for (const po of porcentagensOrdenadas) {\n somatorioDasMaioresPorcentagens += po.percentage;\n somatorioDosMaioresValores += po.value;\n }\n\n const ret = porcentagensOrdenadas.sort((a, b) => b.percentage - a.percentage);\n\n if (somatorioDasMaioresPorcentagens < 100) {\n ret.push({\n name: \"Outros\",\n value: patrimonioTotal - somatorioDosMaioresValores,\n percentage: Number((100 - somatorioDasMaioresPorcentagens).toFixed(2)),\n });\n }\n\n return ret;\n};\n","import styled from \"styled-components\";\n\nexport const NotificationContainer = styled.div`\n h3 {\n margin-bottom: 8px;\n }\n\n .divider {\n width: 100%;\n max-width: 80px;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 1rem;\n }\n\n .illustration {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n position: relative;\n\n span {\n margin-right: 1rem;\n color: var(--gray-2);\n }\n\n h5 {\n font-weight: 500;\n }\n\n button,\n span {\n display: flex;\n justify-content: center;\n align-items: center;\n color: black !important;\n }\n span {\n margin: 0 0 0 0.5rem;\n }\n button {\n max-width: 160px;\n height: 52px;\n margin-right: auto;\n margin-top: 1rem;\n }\n }\n\n .loading {\n display: flex;\n\n h5 {\n margin-left: 1rem;\n }\n }\n\n .card {\n background-color: var(--ant-primary-1);\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.15);\n border-radius: 6px;\n margin-bottom: 1rem;\n padding: 1rem;\n cursor: pointer;\n transition: 0.3s;\n position: relative;\n\n &:hover {\n transition: 0.3s;\n background-color: var(--ant-primary-2);\n }\n\n .loading {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n background-color: rgba(0, 0, 0, 0.2);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .header {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 8px;\n\n h5 {\n flex-grow: 1;\n margin-bottom: 0;\n }\n\n svg {\n color: var(--ant-primary-color);\n font-size: 20px;\n margin-right: 4px;\n }\n\n span {\n color: var(--gray-2);\n }\n\n .actionButton {\n color: var(--gray-2);\n margin: 0;\n transition: 0.3s;\n cursor: pointer;\n\n &:hover {\n color: var(--ant-primary-color);\n transition: 0.3s;\n }\n }\n }\n\n .body {\n display: flex;\n span {\n width: 200px;\n flex-grow: 1;\n }\n button {\n &:hover {\n svg {\n fill: var(--ant-primary-7);\n }\n }\n }\n }\n }\n\n .viewed {\n background-color: var(--velotax-ghost);\n h5,\n svg,\n span {\n color: var(--ant-info-color-deprecated-bg) !important;\n }\n\n &:hover {\n background-color: var(--velotax-ghost);\n }\n }\n\n .section {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 2rem;\n\n h5 {\n text-transform: uppercase;\n font-size: 14px;\n }\n\n button {\n color: var(--gray-2);\n transition: 0.3s;\n text-transform: uppercase;\n font-size: 13px;\n font-weight: 500;\n &:hover {\n color: var(--ant-primary-color);\n transition: 0.3s;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .illustration {\n img {\n width: 100%;\n }\n }\n .card {\n .header {\n h5 {\n font-size: 14px;\n }\n span {\n font-size: 13px;\n }\n }\n }\n }\n`;\n","import { useState } from \"react\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineArrowLeft } from \"react-icons/ai\";\nimport { HiOutlineCurrencyDollar } from \"react-icons/hi\";\nimport { Drawer, Tooltip, Typography, message } from \"antd\";\nimport api from \"../../services/api\";\nimport { isMobile } from \"../../utils\";\nimport { NotificationContainer } from \"./styles\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport notificationImage from \"../../assets/notification.png\";\nimport { ReactComponent as SendIcon } from \"../../assets/icons/send.svg\";\n\ninterface IProps {\n open: boolean;\n onClose:\n | ((\n e: React.MouseEvent | React.KeyboardEvent\n ) => void)\n | undefined;\n filters: any;\n searchText: string;\n currentPage: number;\n}\n\nexport const NotificationDrawer = ({\n open,\n onClose,\n filters,\n searchText,\n currentPage,\n}: IProps) => {\n const {\n selectedClient,\n notificacoes,\n setNotificacoes,\n loadingNotificacoes,\n getClients,\n } = useClients();\n const [loadingIndex, setLoadingIndex] = useState(null);\n const lidas = (notificacoes || []).filter((n) => n.viewed);\n const naoLidas = (notificacoes || []).filter((n) => !n.viewed);\n\n const removeNotification = (index?: number) => {\n const notifications = notificacoes.map((n, i: number) => {\n if (index === undefined || index === i)\n return { ...n, viewed: true, viewedDate: new Date() };\n return n;\n });\n\n setLoadingIndex(index === undefined ? \"all\" : index);\n api\n .patch(`/clients/notification/${selectedClient?.username}`, {\n notifications,\n })\n .then(() => {\n setNotificacoes(notifications);\n setLoadingIndex(null);\n getClients({\n ...filters,\n page: currentPage,\n searchText: searchText.length > 0 ? searchText : null,\n });\n })\n .catch(() => {\n message.error(\"Não foi possível remover notificação\");\n });\n };\n\n const sendWhatsapp = (event: any, phone: string, text: string) => {\n event.stopPropagation();\n const url = `https://wa.me${\n phone ? `/55${phone}` : \"\"\n }?text=${text.replaceAll(\" \", \"%20\")}`;\n window.open(url, isMobile() ? undefined : \"_blank\");\n };\n\n return (\n }\n title={\n
\n Voltar\n
\n }\n {...(isMobile() ? { width: \"100%\" } : {})}\n >\n \n
\n Notificações\n
\n
\n\n {(loadingNotificacoes || !notificacoes.length) && (\n
\n \"Notificações\"\n {loadingNotificacoes ? (\n
\n \n \n Buscando notificações\n \n
\n ) : !notificacoes?.length ? (\n \n O seu cliente não possui novas notificações.\n \n ) : (\n <>\n )}\n
\n )}\n\n {}\n {!!naoLidas?.length && !loadingNotificacoes && (\n
\n Não lidas\n \n
\n )}\n {!loadingNotificacoes &&\n (notificacoes || [])?.map((item, i) => {\n if (item.viewed) return <>;\n return (\n
\n {\n if (!(loadingIndex === i || loadingIndex === \"all\"))\n removeNotification(i);\n }}\n >\n {(loadingIndex === i || loadingIndex === \"all\") && (\n
\n \n
\n )}\n
\n \n \n Rendimentos a receber\n \n {item?.date && (\n \n {new Date(item?.date)?.toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n })}\n \n )}\n
\n
\n {item.message}\n \n {\n sendWhatsapp(e, selectedClient?.phone!, item.message);\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n\n {/* Notificações Lidas */}\n {!!lidas?.length && !loadingNotificacoes && (\n
\n Lidas\n
\n )}\n {!loadingNotificacoes &&\n (notificacoes || [])?.map((item, i) => {\n if (!item.viewed) return <>;\n return (\n
\n
\n
\n \n \n Rendimentos a receber\n \n {item?.date && (\n \n {new Date(item?.date)?.toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n })}\n \n )}\n
\n
\n {item.message}\n
\n
\n
\n );\n })}\n
\n \n );\n};\n","export default \"data:image/png;base64,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\"","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_6611_119607)\"\n}, /*#__PURE__*/React.createElement(\"ellipse\", {\n opacity: 0.08,\n cx: 199.244,\n cy: 119.397,\n rx: 100,\n ry: 140,\n transform: \"rotate(-60 199.244 119.397)\",\n fill: \"#808080\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 280,\n y: 120,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 320,\n cy: 160,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 192,\n y: 120,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 232,\n cy: 160,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.25 154.75L229.422 165.25L224.5 160.477\",\n stroke: \"white\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 104,\n y: 120,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 144,\n cy: 160,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 224,\n y: 32,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 264,\n cy: 72,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 136,\n y: 32,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 176,\n cy: 72,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M184.25 66.75L173.422 77.25L168.5 72.4773\",\n stroke: \"white\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 48,\n y: 32,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 88,\n cy: 72,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.25 66.75L85.4219 77.25L80.5 72.4773\",\n stroke: \"white\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_6611_119607\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 408,\n height: 240,\n fill: \"white\"\n})));\n\nfunction SvgSelection(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 408,\n height: 240,\n viewBox: \"0 0 408 240\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSelection);\nexport default __webpack_public_path__ + \"static/media/selection.5db51f88.svg\";\nexport { ForwardRef as ReactComponent };","import clsx from \"clsx\";\nimport moment from \"moment\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { RiGlobalLine } from \"react-icons/ri\";\nimport { ImAttachment } from \"react-icons/im\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport { MdEmail, MdOutlineMailOutline } from \"react-icons/md\";\nimport type { RcFile } from \"antd/es/upload/interface\";\nimport { UploadRequestOption } from \"rc-upload/lib/interface\";\nimport { BiBell, BiCheck, BiChevronDown, BiLock } from \"react-icons/bi\";\nimport { IoMdAddCircleOutline, IoMdOptions } from \"react-icons/io\";\nimport { GrAddCircle, GrDocumentUpload, GrUpdate } from \"react-icons/gr\";\nimport { FiAlertTriangle, FiExternalLink, FiRefreshCw } from \"react-icons/fi\";\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n BsTrash,\n BsWhatsapp,\n BsThreeDotsVertical,\n BsShieldCheck,\n BsEye,\n BsCheck2Circle,\n} from \"react-icons/bs\";\nimport {\n PieChart,\n Pie,\n Cell,\n Legend,\n ResponsiveContainer,\n Tooltip as RechartsTooltip,\n} from \"recharts\";\nimport {\n AiFillInfoCircle,\n AiOutlineSearch,\n AiOutlineCalendar,\n AiOutlineSafety,\n AiOutlineUpload,\n AiOutlineClose,\n} from \"react-icons/ai\";\nimport {\n LoadingOutlined,\n MailOutlined,\n InfoCircleOutlined,\n WhatsAppOutlined,\n SyncOutlined,\n} from \"@ant-design/icons\";\nimport {\n Typography,\n Input,\n Row,\n Col,\n Table,\n Modal,\n message,\n TablePaginationConfig,\n Card,\n Tooltip,\n Dropdown,\n Select,\n Collapse,\n Tag,\n Tabs,\n Checkbox,\n Divider,\n Badge,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport { dayFilters, yearFilters } from \"../Darfs\";\nimport Button from \"../../components/Button\";\nimport Loading from \"../../components/Loading\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { ChartBar } from \"../../components/ChartBar\";\nimport { FormModal } from \"../../components/FormModal\";\nimport { Avisos } from \"../../components/Avisos/Avisos\";\nimport UploadVelotax from \"../../components/UploadVelotax\";\nimport { Previdencia } from \"../../components/Previdencia\";\nimport { ClientFormItemRows } from \"../../constants/clients\";\nimport { UserPlanModal } from \"../../components/UserPlanModal\";\nimport { ProventosModal } from \"../../components/ProventosModal\";\nimport { OperationModal } from \"../../components/OperationModal\";\nimport { SendDarfModal } from \"../../components/Darf/SendDarfModal\";\nimport { IntegrationModal } from \"../../components/IntegrationModal\";\nimport UploadNotas from \"../../components/NotasCorretagem/UploadNotas\";\nimport { ExpandIcon, PosicaoCard } from \"../../components/PosicaoCard\";\nimport { ReactComponent as SeloIcon } from \"../../assets/icons/selo.svg\";\nimport { ReactComponent as EmptyIcon } from \"../../assets/icons/empty.svg\";\nimport { ReactComponent as FiltroIcon } from \"../../assets/icons/filtro.svg\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\nimport { getNomeCorretora, serializePatrimonio } from \"../../utils/patrimonio\";\nimport { NotificationDrawer } from \"../../components/Notification/Notification\";\nimport { ReportTypeDrawer } from \"../../components/ReportType/ReportType\";\nimport { CalcStatus, IClient, useClients } from \"../../contexts/ClientsContext\";\nimport { ReactComponent as SelectionIcon } from \"../../assets/icons/selection.svg\";\nimport { useNotasCorretagem } from \"../../components/NotasCorretagem/useNotasCorretagem\";\nimport {\n downloadPDF,\n formatCurrency,\n maskCpf,\n isMobile,\n numberToCurrency,\n numberToPercentage,\n numberToPhone,\n monthsExtended,\n vendasTotais,\n vendasTotaisExt,\n mesesPassados,\n download,\n arrow,\n negativeToPositive,\n thirdBusinessDayAndMonth,\n} from \"../../utils\";\nimport {\n ClientContainer,\n ClientPlanContent,\n Container,\n ContainerProventos,\n Content,\n EmptyContainer,\n RetornoLabel,\n SideContent,\n IsentCardStyled,\n DarfFilterButton,\n FilterDarfs,\n DarfCard,\n ConatinerDarfs,\n BlurBox,\n PlanContainer,\n} from \"./styles\";\nimport _ from \"lodash\";\nimport { Planos } from \"../../components/Planos\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\n\nconst Months: any = {\n 0: \"Janeiro\",\n 1: \"Fevereiro\",\n 2: \"Março\",\n 3: \"Abril\",\n 4: \"Maio\",\n 5: \"Junho\",\n 6: \"Julho\",\n 7: \"Agosto\",\n 8: \"Setembro\",\n 9: \"Outubro\",\n 10: \"Novembro\",\n 11: \"Dezembro\",\n};\n\nconst b3Encoded =\n \"https%3A%2F%2Fb3investidor.b2clogin.com%2Fb3Investidor.onmicrosoft.com%2Foauth2%2Fv2.0%2Fauthorize%3Fp%3DB2C_1A_FINTECH%26client_id%3D069ecfdf-7471-48eb-be82-d50799c99e5c%26nonce%3DdefaultNonce%26redirect_uri%3Dhttps%253A%252F%252Fwww.investidor.b3.com.br%26scope%3Dopenid%26response_type%3Dcode%26prompt%3Dlogin\";\n\nconst mailTypes = [\n {\n value: \"b3-integration\",\n whatsappMessage:\n \"Olá {fullname}, realize a integração da sua conta na B3 com o Velotax para auxiliar na conferência do seu imposto de renda mensal (DARF). Para realizar a integração clique no link: \",\n link: b3Encoded,\n label: () => (\n <>\n Solicitar integração B3\n \n ),\n icon: () => (\n \n ),\n },\n {\n value: \"exterior-integration\",\n whatsappMessage:\n \"Olá {fullname}, realize a integração da sua conta no exterior com o Velotax para auxiliar na conferência do seu imposto de renda mensal (DARF). Veja como fazer no link: \",\n link: \"https://youtu.be/atYsUXLHOPE?feature=shared\",\n label: () => (\n <>\n Solicitar integração Exterior\n \n ),\n icon: () => (\n \n ),\n },\n {\n value: \"pending-calc\",\n whatsappMessage:\n \"Olá {fullname}, realize a emissão do seu DARF de junho de 2023. Para emiti-lo, clique no link: \",\n link: \"https://warren.velotax.com.br/p/login\",\n label: () => (\n <>\n Lembrar sobre cálculo pendente\n \n ),\n icon: () => (\n \n ),\n },\n {\n value: \"hiring-plan\",\n whatsappMessage:\n \"Olá {fullname}, realize a contratação do plano premium no Velotax para auxiliar na conferência do seu imposto de renda mensal (DARF). Para contratar o plano premium, clique no link: \",\n link: \"https://warren.velotax.com.br/p/login\",\n label: () => (\n <>\n Solicitar que o cliente contrate o plano\n \n ),\n icon: () => (\n \n ),\n },\n];\n\nvar debounce: NodeJS.Timeout;\n\n// const Responsaveis: React.FC<{ item: IClient }> = ({ item }) => (\n//
\n// {item.resp?.length === 0 ? (\n// \"Escritório\"\n// ) : (\n// <>\n// {item.resp?.map((resp: any, index: number, array: any[]) => (\n//

\n// {resp.name}\n// {index === array.length - 1 ? \"\" : \",\"}\n//

\n// ))}\n// \n// )}\n//
\n// );\n\nconst PatrimonioSemPercentual = () => (\n \n \n \n);\n\nconst tooltip: any = () => (\n \n O usuário já possui uma conta cadastrada na plataforma. Enviamos um e-mail\n solicitando a sua permissão de acesso à conta e estamos aguardando a\n confirmação do usuário.\n

\n);\n\nconst handleVencimento = (data: IClient) => {\n // clientPlanActive: planActive da collection clients\n // planCancelPending: cancelPending da collection payment\n if ((!data.planActive || data.planCancelPending) && data.planDueDate) {\n const currentMonth = new Date().getMonth();\n const currentYear = new Date().getFullYear();\n const currentDay = new Date().getDate();\n const currentHour = new Date().getHours() + 3;\n const currentMinute = new Date().getMinutes();\n const valido =\n data.planDueDate >=\n Date.UTC(\n currentYear,\n currentMonth,\n currentDay,\n currentHour,\n currentMinute\n );\n if (valido) {\n return moment(new Date(data.planDueDate)).format(\"DD/MM/YYYY\");\n }\n return \"\";\n } else {\n return \"\";\n }\n};\n\nconst chartColors = [\n { background: \"#FCC102\", label: \"white\" },\n { background: \"#C8D200\", label: \"black\" },\n { background: \"#FF2B01\", label: \"white\" },\n { background: \"#E50045\", label: \"white\" },\n { background: \"#CC13AF\", label: \"white\" },\n { background: \"#5B0084\", label: \"white\" },\n { background: \"#79002B\", label: \"white\" },\n { background: \"#0A9E5A\", label: \"white\" },\n { background: \"#FF7F00\", label: \"white\" },\n];\n\nexport const Clients: React.FC = () => {\n const { user } = useAuth();\n const {\n files,\n history,\n setFiles,\n sendNotas,\n getHistory,\n loadingSend,\n uploadProps,\n downloadNota,\n showNotasCorretagemModal,\n setShowNotasCorretagemModal,\n } = useNotasCorretagem();\n const {\n clients,\n newClient,\n loadingGet,\n getClients,\n getProventos,\n getPatrimonios,\n getNotifications,\n proventos,\n // patrimonios,\n notificacoes,\n loadingLogin,\n removeClient,\n createClient,\n setNewClient,\n totalClients,\n updateClient,\n loginInClient,\n setLoadingGet,\n professionals,\n restoreClient,\n selectedClient,\n getProfessionals,\n setSelectedClient,\n handleDownloadSheet,\n createClientDeleted,\n typeProventos,\n setTypeProventos,\n patrimoniosLoading,\n setCreateClientDeleted,\n setYearProventos,\n yearProventos,\n proventosLoading,\n proventosFileUrl,\n patrimoniosFileUrl,\n getClientsUpdating\n } = useClients();\n\n const [, setLoadingMail] = useState(\"\");\n const [, setLoadingToken] = useState(false);\n const [errors, setErrors] = useState([]);\n const [open, setOpen] = useState(false);\n const [openModal, setOpenModal] = useState(false);\n const [, setDetailedActiveKeys] = useState([]);\n const [activeKeys, setActiveKeys] = useState([]);\n const [monthProventos, setMonthProventos] = useState({});\n const [loadingProventos, setLoadingProventos] = useState(false);\n const [detailedPositions, setDetailedPositions] = useState([]);\n const [hideValues] = useState(false);\n const [, setHelpModal] = useState();\n const [keys, setKeys] = useState([]);\n const [filters, setFilters] = useState({});\n const [searchText, setSearchText] = useState(\"\");\n const [itemRemove, setItemRemove] = useState({});\n const [loadingFile, setLoadingFile] = useState(false);\n const [optionsModal, setOptionsModal] = useState(false);\n const [showDarfTooltip, setShowDarfTooltip] = useState(false);\n const [, setVisibleChart] = useState(false);\n const [visibleTabs, setVisibleTabs] = useState(true);\n const [firstSelected, setFirsSelected] = useState(false);\n const [chartType, setChartType] = useState(\"patrimonio\");\n const [currentPage, setCurrentPage] = useState(1);\n const [userSelected, setUserSelected] = useState({});\n const [sendRequest, setSendRequest] = React.useState(true);\n const [paymentType, setPaymentType] = useState(\"anual\");\n const [appliedFilters, setAppliedFilters] = useState({});\n const [csvModalVisible, setCsvModalVisible] = useState(false);\n const [showFilterModal, setShowFilterModal] = useState(false);\n const [showCorretoraFilterModal, setShowCorretoraFilterModal] =\n useState(false);\n const [filterCorretoraAtivo, setFilterCorretoraAtivo] = useState(\n []\n );\n const [, setConfirmPlanModal] = useState(false);\n const [errorModalVisible, setErrorModalVisible] = useState(false);\n const [deleteModalVisible, setDeleteModalVisible] = useState(false);\n const [createModalVisible, setCreateModalVisible] = useState(false);\n const [removeModalVisible, setRemoveModalVisible] = useState(false);\n const [assessoresSelected, setAssessoresSelected] = useState([]);\n const [updateAllPatrimonio, setUpdateAllPatrimonio] = useState(false);\n const [assessoresListModal, setAssessoresListModal] = useState(false);\n const [clientsSelected, setClientsSelected] = useState([]);\n const [vendasBolsa, setVendasBolsa] = useState(0);\n const [vendasExterior, setVendasExterior] = useState(0);\n const [vendasRestantesBolsa, setVendasRestantesBolsa] = useState(0);\n const [vendasRestantesExterior, setVendasRestantesExterior] =\n useState(0);\n const [sendMailModalVisible, setSendMailModalVisible] = useState(false);\n const [checkboxCorretoras, setCheckboxCorretoras] = useState([]);\n const [selectedCorretoras, setSelectedCorretoras] = useState([]);\n const [patrimonioModalVisible, setPatrimonioModalVisible] = useState(false);\n const [showPaymentModal, setShowPaymentModal] = useState(false);\n const [selectedPlan, setSelectedPlan] = useState(0);\n const [showMobileActionSelectedClients, setShowMobileActionSelectedClients] =\n useState(false);\n const [selectedNotificationType, setSelectedNotificationType] = useState<\n any | undefined\n >(undefined);\n const [integrationModal, setIntegrationModal] = useState<\n \"B3\" | \"Warren Internacional\" | null\n >(null);\n const [integrationClient, setIntegrationClient] = useState(\n null\n );\n const [currentTab, setCurrentTab] = useState(\"investimentos\");\n const [darfs, setDarfs] = useState>([]);\n const [typeDarf, setTypeDarf] = useState('');\n const [yearDarf, setYearDarf] = useState(2023);\n const [prevDarfTabClient, setPrevDarfTabClient] = useState<\n string | undefined\n >();\n const [darfLoading, setDarfLoading] = useState(false);\n const [modalOperationsOpen, setModalOperationsOpen] = useState(false);\n const [sendToResp, setSendToResp] = useState(false);\n const [showSendDarfModal, setShowSendDarfModal] = useState(false);\n const [darfSelected, setDarfSelected] = useState([]);\n const [whatsappRedirectURL, setWhatsappRedirectURL] = useState<\n string | undefined\n >(undefined);\n const [notificationDrawerOpen, setNotificationDrawerOpen] = useState(false);\n const [reportDrawerWallet, setReportDrawerWallet] = useState(false);\n const [reportDrawerProventos, setReportDrawerProventos] = useState(false);\n const [posicoesFilter, setPosicoesFilter] = useState([]);\n const [pagination] = useState({\n current: currentPage,\n pageSize: 10,\n defaultPageSize: 10,\n showSizeChanger: false, // mudar para true quando o back estiver aceitando\n pageSizeOptions: [\"5\", \"10\", \"20\", \"50\", \"100\"],\n });\n const [detailedLoadingIndex, setDetailedLoadingIndex] = useState<\n number | undefined\n >();\n const [showUpgradePlan, setShowUpgradePlan] = useState(false);\n\n const clientsToUpgrade = clientsSelected.filter(\n (client) => client.planName && !client.isConcierge && !client.planName.includes('CONCIERGE')\n )\n\n const getData = async () => {\n try {\n // const { data } = await api.get(\"/dashboard\");\n await api.get(\"/dashboard\");\n } catch (err) {\n message.error(\"Ocorreu um erro ao buscar as informações do dashboard\");\n }\n };\n\n useEffect(() => {\n getData();\n }, []);\n\n useEffect(() => {\n setPosicoesFilter(selectedClient?.wallet?.filters)\n }, [selectedClient]);\n\n useEffect(() => {\n let interval: NodeJS.Timeout | null = null;\n const clientsUpdatingB3Integration = clients.filter(\n (c) => c.updatingB3Integration\n );\n if (clientsUpdatingB3Integration.length) {\n interval = setInterval(() => {\n getClientsUpdating();\n }, 3000);\n } else {\n if (interval) {\n clearInterval(interval);\n }\n }\n return () => clearInterval(interval as unknown as NodeJS.Timeout);\n }, [clients, getClientsUpdating]);\n\n useEffect(() => {\n if (!temInvestimentos) setCurrentTab(\"darfs\");\n else if (temInvestimentos && !currentTab) setCurrentTab(\"investimentos\");\n }, [selectedClient]);\n\n useEffect(() => {\n if(typeDarf === '' && selectedClient) {\n if(selectedClient?.statusBolsa === 'Integração ativa') {\n setTypeDarf('Bolsa')\n } else if (selectedClient?.statusExterior === 'Integração ativa') {\n setTypeDarf('Exterior')\n } else {\n setTypeDarf('Bolsa')\n }\n }\n }, [selectedClient, typeDarf]);\n\n const hosts = [\"-dev\", \"local\"];\n const env = hosts.some((host) => window.location.host.includes(host))\n ? \"_dev\"\n : \"\";\n const isManagerOrOffice = user.user?.isManager || user?.user?.office;\n\n const { patrimonio, classesAtivos, posicoes, corretoras } = useMemo(\n () => serializePatrimonio(selectedClient, selectedCorretoras),\n [selectedClient, selectedCorretoras]\n );\n\n const checkAll = corretoras.length === checkboxCorretoras.length;\n const indeterminate =\n checkboxCorretoras.length > 0 &&\n checkboxCorretoras.length < corretoras.length;\n\n const handleDisabled = (item: any) => {\n const codes = (item.code || []).filter(\n (el: any) =>\n el?.escritorioId?.toString() === user?.user?.officeId?.toString() ||\n el?.assessorId?.toString() === user?.user?.assessorId?.toString()\n );\n return !codes.some((el: any) => !!el?.isAuthorized) ?? false;\n };\n\n const updateFilter = async () => {\n setLoadingGet(true)\n api.patch('/clients/wallet/filter', {\n username: selectedClient?.username,\n filters: posicoesFilter || []\n })\n .then(() => {\n getClients({\n ...filters,\n searchText: searchText ? searchText : '',\n page: currentPage,\n pageSize: pagination.pageSize,\n selectClient: selectedClient?.username\n })\n })\n .catch((err) => {\n console.log(err)\n })\n }\n const carteiraCategorizadaSemFiltros = useMemo(\n () =>\n selectedClient?.wallet?.posicoes?.reduce(\n (acc: any, cur: any) => ({\n ...acc,\n [cur.categoria]: [...(acc[cur.categoria] || []), cur],\n }),\n {} as { [key: string]: any }\n ) || {},\n [selectedClient?.wallet]\n );\n\n const carteiraCategorizada = useMemo(\n () =>\n selectedClient?.wallet?.posicoes\n ?.filter((p: any) => (selectedClient?.wallet?.filters?.length ? selectedClient?.wallet?.filters : [p.codigo]).includes(p.codigo))\n ?.reduce(\n (acc: any, cur: any) => ({\n ...acc,\n [cur.categoria]: [...(acc[cur.categoria] || []), cur],\n }),\n {} as { [key: string]: any }\n ) || {},\n [selectedClient?.wallet?.posicoes]\n );\n\n const beforeUpload = (file: RcFile) => {\n setSendRequest(true);\n if (\n ![\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"application/vnd.ms-excel\",\n \"text/x-csv\",\n \"text/plain\",\n \"text/tab-separated-values\",\n \"text/x-comma-separated-values\",\n \"text/comma-separated-values\",\n \"application/x-csv\",\n \"application/csv\",\n ].includes(file.type)\n ) {\n message.error(\"Envie um arquivo do tipo CSV\");\n setSendRequest(false);\n }\n };\n\n const handleRemoveModal = (item?: any) => {\n setItemRemove(item);\n setRemoveModalVisible(!removeModalVisible);\n };\n\n const handlePatrimonioModal = (item?: any) => {\n setPatrimonioModalVisible(!patrimonioModalVisible);\n setUpdateAllPatrimonio(false);\n };\n\n const renderLegend = (value: string, entry: any) => {\n return {value};\n };\n\n const renderCustomizedLabel = ({\n cx,\n cy,\n midAngle,\n innerRadius,\n outerRadius,\n percent,\n payload,\n }: any) => {\n const RADIAN = Math.PI / 180;\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n let fill = chartColors.find(\n (colors) => colors.background === payload.fill\n )?.label;\n if (payload.fill === \"#FCC102\") fill = \"black\";\n return (\n \n {percent * 100 > 4 && `${(percent * 100).toFixed(0)}%`}\n \n );\n };\n\n const getProviderColor = (provider: string, index: number) => {\n while (index > 8) {\n const differnce = index - 8;\n index = differnce - 1;\n }\n return chartColors[index].background;\n };\n\n const customRequest = ({ file }: UploadRequestOption) => {\n const formData = new FormData();\n if (!sendRequest) return;\n formData.append(\"file\", file);\n setLoadingFile(true);\n api\n .post(\"/clients/batch\", formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n })\n .then(({ data }) => {\n setLoadingFile(false);\n setCsvModalVisible(!csvModalVisible);\n if (data.errors.length === 0) {\n message.success(\"Integração iniciada com sucesso\");\n } else {\n message.error(\n \"Erro durante inserção. Favor conferir no modal apresentado.\"\n );\n setErrors(data.errors);\n setErrorModalVisible(true);\n }\n getClients({ page: currentPage });\n })\n .catch((error) => {\n setLoadingFile(false);\n message.error(error.response.data.message);\n });\n };\n\n const setDeleteModalVisiblity = () => {\n setDeleteModalVisible(!deleteModalVisible);\n };\n\n const handleSearch = (value: string) => {\n setSearchText(value);\n if (debounce) clearTimeout(debounce);\n debounce = setTimeout(() => {\n getClients({\n ...filters,\n searchText: value,\n page: pagination.current,\n pageSize: pagination.pageSize,\n });\n }, 1000);\n };\n\n const handlePlan: any = async (client?: IClient) => {\n if (client) {\n setLoadingToken(true);\n setSelectedClient(client);\n setLoadingToken(false);\n } else {\n setKeys([]);\n setClientsSelected([]);\n setConfirmPlanModal(false);\n setShowMobileActionSelectedClients(false);\n }\n };\n\n const createPlanFromSelectedUsers = async () => {\n try {\n const filteredClients = clientsSelected.filter(\n (client) => !client.planActive\n );\n const usernames = filteredClients.map((client) => client.username);\n const { data } = await api.post(\"/plans\", {\n usernames,\n type: paymentType.toLowerCase(),\n });\n getClients({\n ...filters,\n searchText: searchText.length > 0 ? searchText : null,\n page: currentPage,\n });\n message.success(\n `${data.count} Clientes adicionados no Plano premium com sucesso`\n );\n } catch (err) {\n message.success(\"Ocorreu um erro ao adicionar os clientes no plano\");\n } finally {\n setShowPaymentModal(false);\n setConfirmPlanModal(false);\n setKeys([]);\n setClientsSelected([]);\n }\n };\n\n const sendMail = async (type: string, clients?: IClient[]) => {\n try {\n setSendMailModalVisible(false);\n setSelectedNotificationType(undefined);\n setLoadingGet(true);\n setLoadingMail(type);\n await api.post(\"/clients/send-mail\", {\n type,\n clients: clients ?? clientsSelected,\n });\n setSendMailModalVisible(false);\n setSelectedNotificationType(undefined);\n setClientsSelected([]);\n setKeys([]);\n } catch {\n message.error(\"Algo inesperado aconteceu. Tente novamente\");\n } finally {\n message.success(\"Suas solicitações foram enviadas\");\n setLoadingGet(false);\n setLoadingMail(\"\");\n }\n };\n\n const setOptionsModalVisibility = () => {\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const setCreateModalVisibility = () => {\n setCreateModalVisible(!createModalVisible);\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const setCsvModalVisibility = () => {\n setCsvModalVisible(!csvModalVisible);\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const handleRemove = () => {\n setLoadingGet(true);\n setRemoveModalVisible(!removeModalVisible);\n api.post(\"/clients/remove\", { ...itemRemove }).then(() => {\n getClients({ page: currentPage });\n });\n };\n\n const handleEdit = (item: any) => {\n setUserSelected(clients.find((obj: any) => obj.userId === item.userId));\n setNewClient(clients.find((obj: any) => obj.userId === item.userId));\n setCreateModalVisible(!createModalVisible);\n };\n\n const handleUpdatePatrimonio = async (item: any) => {\n if (updateAllPatrimonio) {\n getClients({\n ...filters,\n searchText: searchText.length > 0 ? searchText : null,\n page: currentPage,\n updateAllClients: true,\n });\n setPatrimonioModalVisible(false);\n setUpdateAllPatrimonio(false);\n } else {\n try {\n setLoadingGet(true);\n const { data } = await api.get(\n \"/clients/updatePatrimonio/\" + item.username\n );\n if (data?.message) message.info(data.message, 5);\n else setSelectedClient((item: any) => ({ ...item, wallet: data }));\n getClients({\n ...filters,\n searchText: searchText.length > 0 ? searchText : null,\n page: currentPage,\n });\n } catch (error) {\n setLoadingGet(false);\n message.error(\n \"Não foi possível atualizar o patrimônio. Tente novamente mais tarde\"\n );\n }\n }\n };\n useEffect(() => {\n setAssessoresSelected(\n //@ts-ignore\n clients\n ?.filter((item: any) => item.username === selectedClient?.username)[0]\n ?.resp?.map((resposavel: any) => resposavel._id)\n );\n // eslint-disable-next-line\n }, [assessoresListModal, createModalVisible, clients]);\n\n useEffect(() => {\n if (user?.user?.office || user?.user?.admin)\n getProfessionals(undefined, undefined, true);\n // eslint-disable-next-line\n }, []);\n\n useEffect(() => {\n getClients();\n }, [getClients]);\n\n useEffect(() => {\n getPatrimonios(selectedClient?.username!);\n getNotifications(selectedClient?.username!);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedClient?.username]);\n\n useEffect(() => {\n getProventos(selectedClient?.username!, yearProventos);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [yearProventos, selectedClient?.username]);\n\n useEffect(() => {\n api\n .post(`/clients/insentometroTransactions`, {\n username: selectedClient?.username,\n month: new Date().getMonth() + 1,\n })\n .then((res) => {\n setVendasBolsa(vendasTotais(res?.data[0]));\n setVendasRestantesBolsa(20000 - vendasTotais(res?.data[0]));\n setVendasExterior(vendasTotaisExt(res?.data[1]));\n setVendasRestantesExterior(35000 - vendasTotaisExt(res?.data[1]));\n })\n .catch(() => { });\n }, [selectedClient]);\n\n useEffect(() => {\n if (!isMobile() && !firstSelected && clients?.length > 0) {\n setFirsSelected(true);\n setSelectedClient(clients[0]);\n }\n }, [clients, firstSelected, setSelectedClient]);\n\n useEffect(() => {\n setYearProventos(new Date().getFullYear());\n if (!isMobile() && !!selectedClient?.username) {\n const index = clients.findIndex(\n (c) => c.userId === selectedClient.userId\n );\n if (index < 0) {\n setSelectedClient(clients[0]);\n handleSelectedTab(clients[0]);\n setActiveKeys([]);\n setDetailedPositions([]);\n setDetailedActiveKeys([]);\n setCheckboxCorretoras([]);\n setSelectedCorretoras([]);\n setFilterCorretoraAtivo([]);\n setVisibleTabs(false);\n setTimeout(() => {\n setVisibleTabs(true);\n }, 1000);\n }\n }\n }, [\n selectedClient?.username,\n selectedClient?.userId,\n clients,\n setSelectedClient,\n setYearProventos,\n ]);\n\n const handleSelectedTab = (item: IClient) => {\n if (!!item?.wallet && (item?.wallet?.posicoes?.length || 0) > 0) {\n setCurrentTab(\"investimentos\");\n } else if (item?.code?.[0].isAuthorized) {\n setCurrentTab(\"darfs\");\n }\n };\n\n const handleChangeAssessores = (value: string[]) => {\n setAssessoresSelected(value);\n };\n\n const onInputBlur = (inputName: string, value: string) => {\n const clientAttr: any = newClient;\n if (inputName === \"plan\" && value === \"free\") {\n return;\n }\n if (!!clientAttr) {\n if (inputName === \"plan\" && value !== \"free\") {\n clientAttr[\"planType\"] = value;\n } else if (inputName === \"phone\") {\n clientAttr[inputName] = value.replace(/[_.-/-() ]/g, \"\");\n } else {\n clientAttr[inputName] = value;\n }\n setNewClient({ ...clientAttr });\n }\n };\n\n const sendPermissionEmail = async (item: any) => {\n try {\n await api.post(\"/clients/sendPermissionEmail\", {\n username: item?.username || \"\",\n });\n message.success(\"E-mail de solicitação de acesso enviado\");\n } catch (err: any) {\n message.error(\n \"Não foi possível enviar o e-mail de solicitação de acesso. Tente novamente mais tarde\"\n );\n }\n };\n\n const patrimonioFiltrado = useMemo(\n () =>\n selectedClient?.wallet?.posicoes?.reduce(\n (acc: any, cur: any) =>\n filterCorretoraAtivo.includes(cur.corretora)\n ? {\n patrimonioTotalFiltrado:\n acc.patrimonioTotalFiltrado + cur.posicao,\n lucroPrejuizoDiario:\n acc.lucroPrejuizoDiario + cur.lucroPrejuizoDiario,\n lucroPrejuizoDiarioPercentualNumerator:\n acc.lucroPrejuizoDiarioPercentualNumerator +\n (cur.categoria === \"TesouroDireto\"\n ? 0\n : cur.resumo?.lucroPrejuizoDiarioPercentualNumerator),\n lucroPrejuizoDiarioPercentualDenominator:\n acc.lucroPrejuizoDiarioPercentualDenominator +\n (cur.categoria === \"TesouroDireto\"\n ? 0\n : cur.resumo?.lucroPrejuizoDiarioPercentualDenominator),\n lucroPrejuizoTotal:\n acc.lucroPrejuizoTotal + cur.lucroPrejuizoTotal,\n lucroPrejuizoTotalPercentualNumerator:\n acc.lucroPrejuizoTotalPercentualNumerator +\n cur.resumo?.lucroPrejuizoTotalPercentualNumerator,\n lucroPrejuizoTotalPercentualDenominator:\n acc.lucroPrejuizoTotalPercentualDenominator +\n cur.resumo?.lucroPrejuizoTotalPercentualDenominator,\n }\n : acc,\n {\n lucroPrejuizoDiario: 0,\n lucroPrejuizoDiarioPercentualNumerator: 0,\n lucroPrejuizoDiarioPercentualDenominator: 0,\n lucroPrejuizoTotal: 0,\n lucroPrejuizoTotalPercentualNumerator: 0,\n lucroPrejuizoTotalPercentualDenominator: 0,\n patrimonioTotalFiltrado: 0,\n }\n ) || {\n lucroPrejuizoDiario: 0,\n lucroPrejuizoDiarioPercentualNumerator: 0,\n lucroPrejuizoDiarioPercentualDenominator: 0,\n lucroPrejuizoTotal: 0,\n lucroPrejuizoTotalPercentualNumerator: 0,\n lucroPrejuizoTotalPercentualDenominator: 0,\n patrimonioTotalFiltrado: 0,\n },\n [selectedClient?.wallet?.posicoes, filterCorretoraAtivo]\n );\n\n const downloadRelatorio = async (\n type: string,\n category: string,\n item: any\n ) => {\n try {\n setLoadingGet(true);\n\n if (type === \"pdf\") {\n let fileUrl = \"\";\n let file = \"\";\n if (category === \"patrimônios\") {\n const ret = await api.post(\"/clients/downloadRelatorio\", {\n username: item.username,\n userId: item.userId,\n escritorioId: item.code[0].escritorioId,\n corretoras: filterCorretoraAtivo,\n });\n getClients({\n ...filters,\n searchText: searchText.length > 0 ? searchText : null,\n page: currentPage,\n });\n if (ret) {\n fileUrl = ret?.data?.fileUrl;\n file = ret?.data?.file;\n }\n } else if (category === \"proventos\") {\n const escritorioId =\n selectedClient && selectedClient?.code\n ? selectedClient?.code[0].escritorioId\n : null;\n const newProventos = proventos.map((el: any) => {\n return {\n code: el.code || \"\",\n date: moment(el?.date).format(\"DD/MM/YYYY\"),\n corporateActionTypeDescription: _.capitalize(\n el?.corporateActionTypeDescription\n ),\n corretora: el?.corretora,\n quantity: el?.quantity || \"-\",\n unitPrice: el?.unitPrice,\n grossAmount: el?.grossAmount,\n };\n });\n const ret = await api.post(\"/clients/downloadRelatorioProventos\", {\n proventos: newProventos,\n escritorioId: escritorioId,\n username: selectedClient?.username\n });\n if (ret) {\n fileUrl = ret?.data?.fileUrl;\n file = ret?.data?.file;\n }\n }\n if (fileUrl) {\n download(fileUrl);\n } else if (file) {\n downloadPDF(\n file,\n `${category === \"patrimônios\" ? \"Meus Investimentos\" : \"Proventos\"}`\n );\n }\n } else if (type === \"xlsx\") {\n if (category === \"patrimônios\") {\n if (filterCorretoraAtivo.length > 0 || posicoesFilter.length > 0) {\n const res = await api.post(\n \"/clients/downloadRelatorioPatrimonioXlsx\",\n {\n username: item.username,\n corretoras: filterCorretoraAtivo,\n posicoes: posicoesFilter\n }\n );\n download(res?.data?.fileUrl);\n } else {\n download(patrimoniosFileUrl);\n }\n } else if (category === \"proventos\") {\n download(proventosFileUrl);\n }\n }\n setLoadingGet(false);\n } catch (err: any) {\n setLoadingGet(false);\n console.error(err);\n message.error(\n `Não foi possível baixar o relatório de ${category}. Tente novamente mais tarde`\n );\n }\n };\n\n const handleOpenFilterModal = () => {\n setShowFilterModal(true);\n };\n\n const getPlan = (item: any) =>{\n return (\n <>\n {'PLANO '}\n {item?.planName?.includes('_BASIC') ? 'BASIC ' : ''}\n {item?.planName?.includes('_CONCIERGE') ? 'CONCIERGE ' : ''}\n {item?.planName?.includes('_PRO') ? 'PREMIUM ' : ''}\n {item?.planName?.includes('ASSESSOR') ? 'ASSESSOR ' : ''}\n {(item.planType !== 'exterior') \n ? ((item?.planName?.includes('_MONTH') || item?.planType?.includes('mensal')) ? 'MENSAL' : 'ANUAL')\n : item.planName?.includes('ASSESSOR') ? ''\n : 'GRATUITO EXTERIOR'}\n {item.planType === \"exterior\"\n ? \"\"\n : item.hasPlanXp\n ? \" (CLIENTE)\"\n : \" (ESCRITÓRIO)\"}\n \n )\n }\n\n const ClientPlan: React.FC<{ item: IClient & { wallet: any } }> = ({\n item,\n }) => {\n\n const dataAtual = moment();\n\n const dataVencimentoPlano = moment(item.planDueDate);\n\n return (\n \n {item.planActive || item.planDueDate && dataVencimentoPlano >= dataAtual || item.planType === \"exterior\"? (\n \n {getPlan(item)}\n {handleDisabled(item) ? (\n <>  |  Solicite permissão ao usuário\n ) : item.wallet ? (\n <>\n   |  PATRIMÔNIO: \n {formatCurrency(item.wallet?.patrimonioTotal || 0)}\n \n ) : (\n \"\"\n )}\n \n ) : (\n \n \n  SEM PLANO\n \n )}\n \n );\n };\n\n const renderIsentCard = (categoria: string) => {\n if (categoria === \"Ações\" || categoria === \"Exterior\") {\n const vendas = categoria === \"Ações\" ? vendasBolsa : vendasExterior;\n const restante =\n categoria === \"Ações\" ? vendasRestantesBolsa : vendasRestantesExterior;\n const limit = categoria === \"Ações\" ? 20000 : 35000;\n const tipVendas = vendas\n ? `R$ ${String(\n vendas.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n )}`\n : \"R$ 0,00\";\n const complete = vendas ? (vendas / limit) * 100 : 0;\n return (\n \n {restante <= 0 ? (\n \n O seu limite de vendas isentas foi atingido neste mês\n \n ) : (\n \n Você ainda possui{\" \"}\n \n {formatCurrency(restante)}{\" \"}\n {\" \"}\n em vendas isentas em{\" \"}\n \n {Months[new Date().getMonth()]} {new Date().getFullYear()}\n \n \n )}\n
\n \n = 100 ? 100 : complete}%`,\n borderBottomRightRadius: complete >= 100 ? \"50px\" : 0,\n borderTopRightRadius: complete >= 100 ? \"50px\" : 0,\n }}\n >\n
\n {vendas > 2500 ? formatCurrency(vendas) : \"\"}\n
\n
\n \n \n
\n );\n }\n };\n\n const downloadExcel = (data: any) => {\n download(proventosFileUrl);\n };\n\n const monthReport = (data?: any, index?: any) => {\n setOpenModal(true);\n if (data) {\n setMonthProventos(data);\n } else {\n const date = new Date();\n const y = date.getFullYear();\n const m = date.toLocaleString(\"pt-BR\", { month: \"short\" });\n const name = `${m[0].toUpperCase()}${m.substring(1, 3)}`;\n setMonthProventos({ name });\n setYearProventos(y);\n }\n };\n\n const handleDarfDownload = async (url?: string, idDarf?: string) => {\n if (url) {\n window.open(url);\n } else if (idDarf) {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const { data } = await apiBolsa.get(`/darf/download/${idDarf}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n window.open(data?.url || \"\");\n }\n };\n\n const handleDarfSendAction = async (\n sendToWhatsapp?: boolean,\n directDownload?: boolean,\n inputClients?: Array\n ) => {\n const firstClient = inputClients?.[0]\n const oldModel = (firstClient?.year ?? 2023) < yearConfigPL4173\n if (oldModel) {\n handleDarfSend(sendToWhatsapp, directDownload, inputClients)\n } else {\n setModalOperationsOpen(false);\n setShowSendDarfModal(true);\n }\n }\n\n const handleDarfSend = async (\n sendToWhatsapp?: boolean,\n directDownload?: boolean,\n inputClients?: Array\n ) => {\n try {\n const clients =\n clientsSelected.length > 0 ? clientsSelected : inputClients || [];\n if (whatsappRedirectURL) window.open(whatsappRedirectURL);\n else {\n setLoadingGet(true);\n if (sendToWhatsapp) setWhatsappRedirectURL(\"loading\");\n const { data } = await api.post(\"/darf/send\", {\n clients: clients,\n sendToResp,\n sendToWhatsapp,\n });\n const phone = clients[0].phone;\n const singleClient = data[0] || {};\n const shortPath = singleClient?.shortPath;\n\n const isExterior = singleClient?.type === 'Exterior'\n const oldModel = (singleClient?.year ?? 2023) < yearConfigPL4173\n const darfLabel = isExterior && !oldModel ? 'relatório' : 'DARF' \n\n if (shortPath && sendToWhatsapp) {\n const text = `Olá, ${singleClient?.name || \"Cliente\"\n }. Segue seu ${darfLabel} do mês ${singleClient?.month}/${singleClient?.year\n }: ${shortPath}`;\n const url = `https://wa.me${phone ? `/55${phone}` : \"\"\n }?text=${text.replaceAll(\" \", \"%20\")}`;\n setWhatsappRedirectURL(url);\n window.open(url);\n }\n if (!sendToWhatsapp) {\n if (directDownload) {\n handleDarfDownload(shortPath);\n } else {\n message.success(`Envio de ${darfLabel}s realizado`);\n setShowSendDarfModal(false);\n }\n }\n setSendToResp(false);\n getClients({\n ...filters,\n getAllDarfStatus: true,\n planActive: true,\n fromClients: true,\n });\n }\n } catch (error: any) {\n setWhatsappRedirectURL(undefined);\n if (error.message.includes(\"400\")) {\n message.error(\n \"É necessário contratar o plano para prosseguir\"\n );\n } else {\n message.error(\"Algo errado aconteceu, tente novamente mais tarde.\");\n }\n }\n setLoadingGet(false);\n };\n\n const TabProventos = () => {\n const date = new Date();\n const selectYears = [1, 0, -1, -2, -3];\n if (\n selectedClient?.statusBolsa === \"Integração inativa\" &&\n selectedClient?.statusExterior === \"Integração ativa\"\n )\n selectYears.splice(0, 1);\n return (\n \n <>\n
\n setYearProventos(e)}\n options={selectYears.map((y) => ({\n value: date.getFullYear() + y,\n label: date.getFullYear() + y,\n }))}\n />\n setTypeProventos(e)}\n options={[\n {\n label: \"Por tipo de provento\",\n value: \"provento\",\n },\n {\n label: \"Por corretora\",\n value: \"corretora\",\n },\n {\n label: \"Por data de recebimento\",\n value: \"data\",\n },\n ]}\n />\n
\n }\n onClick={() => monthReport()}\n >\n Ver detalhes\n \n }\n onClick={() => {\n setReportDrawerProventos(true);\n }}\n >\n Baixar\n \n
\n
\n {proventosLoading ? (\n \n ) : (\n \n )}\n \n \n downloadRelatorio(type, \"proventos\", proventos)\n }\n onClose={() => setReportDrawerProventos(false)}\n />\n
\n );\n };\n\n const onChangeActiveKeys = (keys: string | string[]) => {\n setActiveKeys(keys as string[]);\n const lastOpened = keys[keys.length - 1];\n\n let codigo =\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[3] ||\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[2];\n let market =\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[0] ||\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[1];\n let index = lastOpened?.replaceAll(\" \", \"\").split(\"-\")[1];\n if (\n lastOpened.includes(\"Imobiliário\") ||\n lastOpened.includes(\"Traded\") ||\n lastOpened.includes(\"Brazilian\")\n ) {\n codigo = lastOpened?.replaceAll(\" \", \"\").replace(\"-\", \"\").split(\"-\")[2];\n index = lastOpened?.replaceAll(\" \", \"\").replace(\"-\", \"\").split(\"-\")[1];\n }\n\n if (lastOpened) {\n setDetailedActiveKeys((detailedActiveKeys) => {\n if (\n !detailedActiveKeys.includes(lastOpened) &&\n keys.length > detailedActiveKeys.length\n ) {\n setDetailedLoadingIndex(Number(index));\n api\n .get(`/clients/detalied/${codigo}`, {\n params: {\n exterior:\n market.toLowerCase() === \"exterior\" ? true : undefined,\n },\n })\n .then(({ data }) => {\n setDetailedPositions((positions) => [\n ...positions,\n {\n index,\n codigo: codigo,\n details: data,\n },\n ]);\n return [...detailedActiveKeys, lastOpened];\n })\n .finally(() => {\n setDetailedLoadingIndex(undefined);\n });\n }\n return detailedActiveKeys;\n });\n }\n };\n\n const TabInvestimentos = (\n \n \n {!loadingGet && selectedClient?.wallet && (\n }\n onClick={() => setShowCorretoraFilterModal(true)}\n className={selectedCorretoras.length > 0 ? \"filtro-aplicado\" : \"\"}\n >\n Filtrar\n \n )}\n {!loadingGet && selectedClient?.wallet && (\n \n }\n onClick={() => {\n setReportDrawerWallet(true);\n }}\n />\n \n )}\n \n downloadRelatorio(type, \"patrimônios\", selectedClient)\n }\n onClose={() => setReportDrawerWallet(false)}\n />\n \n \n \n Investimento total:{\" \"}\n {loadingGet ? (\n \n ) : (\n \n {formatCurrency(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.patrimonioTotalFiltrado\n : selectedClient?.wallet?.patrimonioTotal\n )}\n \n )}\n \n \n
\n Retorno diário\n 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiario\n : selectedClient?.wallet?.lucroPrejuizoDiario || 0\n )}\n >\n {arrow(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiario\n : selectedClient?.wallet?.lucroPrejuizoDiario || 0\n )\n )}\n {formatCurrency(negativeToPositive(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiario\n : selectedClient?.wallet?.lucroPrejuizoDiario || 0\n )\n ))}{\" \"}\n {filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length &&\n patrimoniosLoading &&\n (isNaN(\n patrimonioFiltrado.lucroPrejuizoDiarioPercentualNumerator\n ) ||\n isNaN(\n patrimonioFiltrado.lucroPrejuizoDiarioPercentualDenominator\n )) ? (\n \n ) : (\n <>\n (\n {arrow(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiarioPercentualNumerator /\n patrimonioFiltrado.lucroPrejuizoDiarioPercentualDenominator\n : selectedClient?.wallet\n ?.lucroPrejuizoDiarioPercentual || 0\n )\n )}\n {numberToPercentage(negativeToPositive(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiarioPercentualNumerator /\n patrimonioFiltrado.lucroPrejuizoDiarioPercentualDenominator\n : selectedClient?.wallet\n ?.lucroPrejuizoDiarioPercentual || 0\n )\n ))}\n )\n \n )}\n \n
\n
\n Retorno total\n 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotal\n : selectedClient?.wallet?.lucroPrejuizoTotal || 0\n )}\n >\n {arrow(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotal\n : selectedClient?.wallet?.lucroPrejuizoTotal || 0\n )\n )}\n {formatCurrency(negativeToPositive(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotal\n : selectedClient?.wallet?.lucroPrejuizoTotal || 0\n )\n ))}{\" \"}\n {filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length &&\n patrimoniosLoading &&\n (isNaN(\n patrimonioFiltrado.lucroPrejuizoTotalPercentualNumerator\n ) ||\n isNaN(\n patrimonioFiltrado.lucroPrejuizoTotalPercentualDenominator\n )) ? (\n \n ) : (\n <>\n (\n {arrow(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotalPercentualNumerator /\n patrimonioFiltrado.lucroPrejuizoTotalPercentualDenominator\n : selectedClient?.wallet\n ?.lucroPrejuizoTotalPercentual || 0\n )\n )}\n {numberToPercentage(negativeToPositive(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotalPercentualNumerator /\n patrimonioFiltrado.lucroPrejuizoTotalPercentualDenominator\n : selectedClient?.wallet\n ?.lucroPrejuizoTotalPercentual || 0\n )\n ))}\n )\n \n )}\n \n
\n \n {selectedClient?.wallet ? (\n <>\n \n \n <>\n \n {(chartType === \"patrimonio\" ||\n chartType === \"posicoes\" ||\n (chartType === \"classe\" && classesAtivos.length > 0)) && (\n \n )}\n \n {(chartType === \"classe\"\n ? classesAtivos\n : chartType === \"posicoes\"\n ? posicoes\n : patrimonio\n )?.map((entry: any, index: number) => {\n return (\n \n );\n })}\n \n {\n return `${numberToCurrency(Number(value))} (${String(\n payload.percentage\n ).replace(\".\", \",\")}%)`;\n }}\n />\n \n
\n setChartType(value)}\n suffixIcon={}\n getPopupContainer={(target) => target.parentElement!}\n >\n \n Visualizar por corretora\n \n \n Visualizar classe de ativo\n \n \n Visualizar por ativo\n \n \n
\n \n
\n \n\n \n
\n ExpandIcon({ isActive })}\n >\n {filterCorretoraAtivo.length === 0\n ? Object.keys(carteiraCategorizada).map((categoria) => (\n \n \n {categoria === \"TesouroDireto\"\n ? \"Tesouro Direto\"\n : categoria}\n \n \n \n \n }\n >\n \n ExpandIcon({ isActive })\n }\n >\n {(categoria !== \"Exterior\") && renderIsentCard(categoria)}\n {carteiraCategorizada[categoria].map(\n (posicao: any, index: number) => (\n \n {PosicaoCard({\n key: `${categoria}-${index}-${posicao.codigo}`,\n posicao,\n hideValues,\n setHelpModal,\n loading: detailedLoadingIndex === index,\n cotacaoVenda:\n categoria === \"Exterior\" &&\n selectedClient?.wallet?.cotacaoVenda > 0\n ? selectedClient?.wallet?.cotacaoVenda\n : undefined,\n details: detailedPositions?.find(\n (el: any) =>\n el.codigo === posicao.codigo &&\n Number(el.index) === index\n )?.details,\n })}\n \n )\n )}\n \n \n ))\n : Object.keys(carteiraCategorizada).map((categoria) => (\n \n \n {categoria === \"TesouroDireto\"\n ? \"Tesouro Direto\"\n : categoria}\n \n \n \n \n }\n >\n \n ExpandIcon({ isActive })\n }\n >\n {(categoria !== \"Exterior\") && renderIsentCard(categoria)}\n {carteiraCategorizada[categoria]\n .filter((item: any) =>\n filterCorretoraAtivo.includes(item?.corretora)\n )\n .map((posicao: any, index: number) => (\n \n {PosicaoCard({\n key: `${categoria}-${index}-${posicao.codigo}`,\n posicao,\n hideValues,\n setHelpModal,\n loading: detailedLoadingIndex === index,\n cotacaoVenda:\n categoria === \"Exterior\" &&\n selectedClient?.wallet?.cotacaoVenda > 0\n ? selectedClient?.wallet?.cotacaoVenda\n : 0,\n details: detailedPositions?.find(\n (el: any) =>\n el.codigo === posicao.codigo &&\n Number(el.index) === index\n )?.details,\n })}\n \n ))}\n \n \n ))}\n \n {!loadingGet && (\n \n \n \n }\n loading={loadingGet}\n className=\"button-refresh-wallet\"\n onClick={() => handleUpdatePatrimonio(selectedClient)}\n />\n \n {selectedClient?.wallet?.lastUpdate}\n \n \n )}\n \n
    \n
  • \n \n As posições são atualizadas em até quatro dias úteis após\n sua negociação (D+4)\n
  • \n
  • \n \n Bonds e/ou operações fora da bolsa de valores não são\n apresentadas na listagem acima.\n
  • \n
\n \n
\n \n \n ) : (\n \n \n Nenhuma posição encontrada\n \n \n )}\n
\n \n );\n\n const TabDarfs = () => {\n const date = new Date();\n const yearsOperations = [0, -1, -2, -3];\n const filteredDarfs = darfs.filter((d) => d?.type === typeDarf);\n const darfsToDisplay =\n !filteredDarfs?.length || !hasPlan\n ? mesesPassados(new Date(yearDarf, 6, 15, 12)).map((m, i) => ({\n month: m,\n year: yearDarf,\n impostoDevido: 0,\n }))\n : filteredDarfs;\n\n const getDarfs = useCallback((e: number) => {\n setPrevDarfTabClient(selectedClient?.username);\n setDarfLoading(true);\n api\n .get(\"/clients/allDarf\", {\n params: {\n searchText: selectedClient?.username,\n page: 1,\n pageSize: 24,\n year: e,\n username: selectedClient?.username,\n fromClients: true,\n },\n })\n .then((res) => {\n setDarfs(res.data.data);\n })\n .catch(() =>\n message.error(\n \"Não foi possível buscar DARFs. Tente novamente mais tarde\"\n )\n )\n .finally(() => setDarfLoading(false));\n }, []);\n\n useEffect(() => {\n if (\n selectedClient?.username !== prevDarfTabClient &&\n currentTab === \"darfs\"\n ) {\n getDarfs(yearDarf);\n }\n }, [getDarfs]);\n\n return (\n \n {!hasPlan && (\n \n
\n Contrate o plano premium para ver a lista completa de DARFs\n
\n
\n )}\n \n
\n {\n getDarfs(e);\n setYearDarf(e);\n }}\n options={yearsOperations.map((y) => ({\n value: date.getFullYear() + y,\n label: date.getFullYear() + y,\n }))}\n />\n
\n
\n {selectedClient?.statusBolsa === \"Integração ativa\" && (\n setTypeDarf(\"Bolsa\")}\n style={{ marginRight: \"8px\" }}\n >\n Bolsa de valores\n \n )}\n {selectedClient?.statusExterior === \"Integração ativa\" && (\n setTypeDarf(\"Exterior\")}\n >\n Exterior\n \n )}\n
\n
\n {darfLoading ? (\n \n ) : (\n darfsToDisplay.map((d) => {\n const transactions = d?.transactions;\n const impostoDevido: boolean = d?.impostoDevido >= 10;\n const impostoIsento: boolean =\n d?.type === \"Exterior\"\n ? d?.vendasTotais > 0\n : d?.impostoDevido !== 0 && d?.vendasTotais > 0;\n\n const isExterior = d.type === \"Exterior\"\n const oldModel = yearDarf < yearConfigPL4173\n return (\n \n
\n

{`${monthsExtended[d?.month - 1]} ${d?.year}`}

\n {(isExterior && !oldModel) || (d?.year > 2023 && isExterior) ? (<>)\n : d?.darfPago && impostoDevido ? (\n \n ) : impostoDevido ? (\n \n ) : (\n <>\n )}\n {d?.year > 2023 && isExterior &&
\n {\n setDarfSelected([d]);\n setModalOperationsOpen(true);\n }}\n >\n \n {!isMobile() && \"Visualizar\"}\n \n
}\n
\n \n {(d?.year > 2023 && isExterior) &&
\n {transactions?.length ? 'Há movimentações neste mês': \"Sem movimentações\"}\n
}\n {((d?.year <= 2023 && isExterior) || !isExterior) &&
\n {impostoIsento || transactions?.length > 0 ? (\n
\n

\n Vendas totais:{\" \"}\n {formatCurrency(d?.vendasTotais)}\n

\n

\n Imposto a pagar:{\" \"}\n \n {d?.impostoDevido <= 0\n ? \"Isento\"\n : formatCurrency(d?.impostoDevido)}\n \n

\n {impostoDevido && (!isExterior || oldModel) && (\n

\n Vencimento:{\" \"}\n \n {moment({ year: d?.year, month: d?.month - 1 })\n .add(1, \"month\")\n .endOf(\"month\")\n .format(\"DD/MM/YYYY\")}\n \n

\n )}\n
\n ) : (\n
\n

\n Não houve movimentações tributáveis neste mês.\n

\n
\n )}\n
\n {\n impostoDevido && typeDarf === \"Bolsa\" && thirdBusinessDayAndMonth(d).disabled\n ?\n \n {\n setShowDarfTooltip(!showDarfTooltip)\n\n setTimeout(() => {\n setShowDarfTooltip(false)\n }, 1500);\n }}\n >\n Enviar\n \n \n :\n impostoDevido\n ?\n {\n setDarfSelected([d]);\n setShowSendDarfModal(true);\n }}\n >\n {isExterior && !oldModel ? 'Enviar relatório' : \"Enviar\"}\n \n :\n null\n }\n {\n setDarfSelected([d]);\n setModalOperationsOpen(true);\n }}\n >\n \n {!impostoDevido && \"Visualizar\"}\n \n
\n
}\n
\n );\n })\n )}\n
\n );\n };\n\n const temInvestimentos =\n !!selectedClient?.wallet &&\n (selectedClient?.wallet?.posicoes?.length || 0) > 0;\n\n const hasPlan =\n selectedClient?.planActive ||\n moment(new Date(selectedClient?.planDueDate || 2021)).isAfter(\n moment(new Date())\n ) ||\n selectedClient?.planType === \"exterior\";\n\n const isAuthorized = selectedClient?.code?.[0].isAuthorized;\n\n const temAvisos =\n !hasPlan ||\n selectedClient?.statusBolsa !== \"Integração ativa\" ||\n selectedClient?.statusExterior !== \"Integração ativa\";\n\n const mostrarTabs = true;\n // hasPlan &&\n // (selectedClient?.statusBolsa === \"Integração ativa\" ||\n // selectedClient?.statusExterior === \"Integração ativa\");\n\n return (\n \n \n \n \n \n Meus clientes\n \n \n \n }\n onClick={setOptionsModalVisibility}\n >\n Adicionar\n \n \n \n }\n onChange={(e) => handleSearch(e.target.value)}\n />\n \n \n \n item.userId === selectedClient?.userId ? \"selected-client\" : \"\"\n }\n rowSelection={{\n selectedRowKeys: keys,\n onChange: (_: any, selectedRows) => {\n setClientsSelected(selectedRows);\n setShowUpgradePlan(false);\n setKeys((selectedRows ?? []).map((el) => el.username));\n },\n getCheckboxProps: (record: any) => ({\n disabled: handleDisabled(record),\n }),\n }}\n pagination={{\n defaultPageSize: 10,\n total: totalClients,\n defaultCurrent: 1,\n showLessItems: true,\n showSizeChanger: false,\n }}\n onChange={(pagination) => {\n setCurrentPage(pagination.current ?? 1);\n getClients({\n searchText,\n page: pagination.current,\n pageSize: pagination.pageSize,\n resp: (appliedFilters.resp || []) as string[],\n statusBolsa: appliedFilters.statusBolsa as CalcStatus[],\n planActive: (appliedFilters.planActive || []) as string[],\n statusExterior: appliedFilters.statusExterior as CalcStatus[],\n });\n }}\n columns={[\n {\n title: (\n <>\n
\n Selecionar todos\n
\n }\n onClick={handleOpenFilterModal}\n className={\n Object.keys(appliedFilters).filter(\n (key) => (appliedFilters[key]?.length || 0) > 0\n ).length > 0\n ? \"filtro-aplicado\"\n : \"\"\n }\n >\n Filtrar\n \n {clients.length > 0 && (\n \n }\n onClick={() => handleDownloadSheet(\"Clientes\")}\n />\n \n )}\n {clients.length > 0 && false && (\n \n }\n onClick={() => {\n setUpdateAllPatrimonio(true);\n setPatrimonioModalVisible(true);\n }}\n />\n \n )}\n
\n
\n \n ),\n render: (_, item) => (\n {\n setSelectedClient(item);\n setVisibleChart(false);\n setVisibleTabs(false);\n handleSelectedTab(item);\n setActiveKeys([]);\n setDetailedPositions([]);\n setDetailedActiveKeys([]);\n setCheckboxCorretoras([]);\n setSelectedCorretoras([]);\n setFilterCorretoraAtivo([]);\n setTimeout(() => {\n setVisibleChart(true);\n setVisibleTabs(true);\n }, 200);\n }}\n >\n \n \n {item.name}\n {handleDisabled(item) ? (\n \n \n \n \n \n ) : item.planActive ? (\n \n ) : (\n <>\n )}\n \n \n \n \n \n \n {item.statusBolsa !== \"Integração ativa\" ? (\n Inativo Bolsa\n ) : (\n \n Ativo Bolsa\n {item.updatingB3Integration && (\n
\n \n \n \n
\n )}\n {item.b3IntegrationUpdated && (\n
\n \n \n \n
\n )}\n
\n )}\n {item.statusExterior !== \"Integração ativa\" ? (\n Inativo Exterior\n ) : (\n Ativo Exterior\n )}\n \n {(item?.planActive ||\n moment(new Date(item?.planDueDate || 2021)).isAfter(\n moment(new Date())\n )) &&\n (item?.notifications?.filter((n) => !n.viewed)\n ?.length || 0) > 0 && (\n !n.viewed)\n ?.length || 0) >= 100\n ? \"large\"\n : \"\"\n }`}\n >\n \n {(item?.notifications?.filter((n) => !n.viewed)\n ?.length || 0) >= 100\n ? \"+99\"\n : item?.notifications?.filter((n) => !n.viewed)\n ?.length}\n \n \n )}\n
\n ),\n },\n ]}\n />\n \n \n {clientsSelected.length > 0 && (\n
\n {\n setShowMobileActionSelectedClients(true);\n }}\n >\n Ações\n \n
\n )}\n
\n 0 && selectedClient) ||\n (clientsSelected.length > 0 && showMobileActionSelectedClients),\n })}\n >\n {clients?.length === 0 ? (\n \n \n \n Olá, {user.user.name}!\n \n \n Para iniciar, adicione e selecione clientes na lista ao lado para\n visualizar mais detalhes.\n \n \n ) : selectedClient && !clientsSelected.length ? (\n \n
\n {!handleDisabled(selectedClient) ? (\n : }\n onClick={() => {\n loginInClient(selectedClient);\n }}\n >\n Acessar conta\n \n ) : (\n \n ) : (\n \n )\n }\n onClick={() => {\n sendPermissionEmail(selectedClient);\n }}\n >\n Reenviar solicitação de acesso\n \n )}\n ,\n onClick: () => handleRemoveModal(selectedClient),\n },\n ]\n : [\n {\n key: \"editar\",\n label: \"Editar\",\n icon: ,\n onClick: () => handleEdit(selectedClient),\n },\n {\n key: \"remover\",\n label: \"Remover\",\n icon: ,\n onClick: () => handleRemoveModal(selectedClient),\n },\n {\n key: \"patrimonio\",\n label: \"Atualizar Patrimônio\",\n icon: ,\n onClick: () => handleUpdatePatrimonio(selectedClient),\n },\n ],\n }}\n >\n }\n onClick={(e) => e.preventDefault()}\n />\n \n }\n onClick={() => {\n setSelectedClient(null);\n setActiveKeys([]);\n setDetailedPositions([]);\n setDetailedActiveKeys([]);\n }}\n />\n
\n
\n
\n {(selectedClient?.planActive ||\n moment(new Date(selectedClient?.planDueDate || 2021)).isAfter(\n moment(new Date())\n )) && (\n
\n !n.viewed).length\n }\n showZero={false}\n offset={[-12, 48]}\n >\n }\n onClick={() => {\n setNotificationDrawerOpen(true);\n }}\n />\n \n
\n )}\n \n \n {selectedClient.name}\n {selectedClient.planActive && (\n \n \n \n )}\n \n \n {selectedClient.planActive &&\n !handleDisabled(selectedClient) &&\n selectedClient.wallet && (\n \n \n \n PATRIMÔNIO: \n {formatCurrency(\n selectedClient.wallet?.patrimonioTotal || 0\n )}\n  \n {\n setClientsSelected([{ ...selectedClient }]);\n getHistory(selectedClient.username);\n setShowNotasCorretagemModal(true);\n }}\n />\n \n {selectedClient.updatingB3Integration && (\n \n
\n \n Atualizando integração com a B3\n
\n
\n )}\n {selectedClient.b3IntegrationUpdated && (\n \n \n \n Integração com a B3 atualizada\n
\n \n )}\n \n \n )}\n
\n \n {selectedClient.phone && (\n \n
Telefone:
\n
\n {numberToPhone(selectedClient.phone)}\n
\n \n )}\n \n
CPF:
\n
\n {maskCpf(selectedClient.username)}\n
\n \n \n
E-mail:
\n
{selectedClient.email}
\n \n {user.user.office || user?.user?.admin || user?.user?.liberadaContratacao ? (\n \n
\n Concierge responsável:\n
\n
\n {user?.user?.liberadaContratacao ? (\n \n \n {user.user.responsavel?.name}\n {\" \"}\n \n \n ) : !user?.user?.liberadaContratacao ? (\n \n Ativar concierge{\" \"}\n \n \n ) : (\n \"-\"\n )}\n
\n \n ) : (\n <>\n )}\n {handleVencimento(selectedClient) ? (\n \n
Vencimento:
\n
\n {handleVencimento(selectedClient)}\n
\n \n ) : (\n <>\n )}\n
\n {hasPlan && temAvisos && (\n client.cancelRecuring\n )}\n setIntegrationModal={setIntegrationModal}\n setIntegrationClient={setIntegrationClient}\n setClientsSelected={setClientsSelected}\n filters={{...filters, page: currentPage}}\n />\n )}\n {mostrarTabs && !handleDisabled(selectedClient) && (\n
\n {!visibleTabs ? (\n
\n \n
\n ) : (\n {\n setCurrentTab(key);\n if (key === \"darfs\") {\n setTypeDarf(\n (typeDarf === \"Exterior\" &&\n selectedClient?.statusExterior !==\n \"Integração ativa\") ||\n selectedClient?.statusBolsa === \"Integração ativa\"\n ? \"Bolsa\"\n : \"Exterior\"\n );\n } else {\n setVisibleChart(false);\n setTimeout(() => {\n setVisibleChart(true);\n }, 100);\n }\n }}\n items={\n !visibleTabs || !isAuthorized\n ? []\n : [\n ...(temInvestimentos\n ? [\n {\n key: \"investimentos\",\n label: (\n
\n Carteira {!hasPlan && }\n
\n ),\n children: hasPlan ? (\n TabInvestimentos\n ) : (\n // : TabInvestimentosSemPlano,\n <>\n ),\n },\n {\n key: \"proventos\",\n label: (\n
\n Proventos {!hasPlan && }\n
\n ),\n children: hasPlan ? (\n \n ) : (\n // \n <>\n ),\n },\n ]\n : []),\n ...(isAuthorized\n ? [\n {\n key: \"darfs\",\n label: (\n
\n DARFs {!hasPlan && }\n
\n ),\n children: hasPlan ? : <>,\n },\n {\n key: \"previdencia\",\n label: \"Previdência\",\n children: ,\n },\n ]\n : []),\n ]\n }\n />\n )}\n
\n )}\n {!hasPlan && temAvisos && currentTab !== \"previdencia\" && (\n client.cancelRecuring\n )}\n setIntegrationModal={setIntegrationModal}\n setIntegrationClient={setIntegrationClient}\n setClientsSelected={setClientsSelected}\n filters={{...filters, page: currentPage}}\n />\n )}\n \n
\n ) : clientsToUpgrade.length === 1 && showUpgradePlan ? (\n \n {setShowUpgradePlan(false)}} \n onFinish={() => {\n setShowUpgradePlan(false)\n setSelectedClient(clientsSelected[0])\n setClientsSelected([])\n }}/>\n \n ) : (\n \n }\n onClick={() => {\n setShowMobileActionSelectedClients(false);\n }}\n />\n \n \n {clientsSelected.length} cliente\n {clientsSelected.length > 1 ? \"s\" : \"\"}{\" \"}\n \n selecionado{clientsSelected.length > 1 ? \"s\" : \"\"}\n \n \n \n Selecione abaixo qual ação deseja realizar:\n \n \n \n {clientsSelected.filter((client) => !client.planActive).length > 1 \n || clientsSelected.filter((client) => client.isConcierge || client.planName?.includes('CONCIERGE')).length > 0 \n ? (\n
\n 1 ? \"s\" : \"\"\n } cliente${clientsSelected.length > 1 ? \"s\" : \"\"} já ${clientsSelected.length > 1 ? \"possuem\" : \"possui\"\n } plano ativo`}\n >\n
\n \n }\n >\n CONTRATAR PLANO\n \n
\n ) : (\n 1 ? true : false}\n size=\"large\"\n type=\"primary\"\n icon={}\n onClick={() => {\n if (clientsToUpgrade.length === 1) {\n setShowUpgradePlan(true)\n setSelectedClient(clientsSelected[0])\n } else if (clientsSelected[0]) {\n setSelectedClient(clientsSelected[0]);\n setCurrentTab('darfs')\n setActiveKeys([]);\n setKeys([]);\n setClientsSelected([]);\n }\n }}\n >\n {\n clientsToUpgrade.length === 1\n && clientsSelected.length === 1\n ? \"FAZER UPGRADE\"\n : \"CONTRATAR PLANO\"\n }\n \n )}\n \n \n }\n disabled={clientsSelected.length === 0}\n onClick={() => setSendMailModalVisible(true)}\n >\n ENVIAR LEMBRETE\n \n \n \n {\n setKeys([]);\n setClientsSelected([]);\n setShowMobileActionSelectedClients(false);\n }}\n >\n Limpar seleção\n \n \n \n \n )}\n {\n setDeleteModalVisible(false);\n }}\n setVisibility={setDeleteModalVisiblity}\n onOk={() => removeClient(currentPage)}\n />\n {\n // Se ele não for escritório ou manager, não mostra o input de plano\n if (!isManagerOrOffice && input[0]?.name === \"plan\") {\n return false;\n }\n return true;\n })}\n onCancel={() => {\n // getClients({\n // ...filters,\n // searchText: searchText.length > 0 ? searchText : null,\n // page: currentPage,\n // });\n setUserSelected({});\n setCreateModalVisible(false);\n }}\n add={(data: any) => {\n createClient(\n {\n ...data,\n assessores:\n user.user.office || user?.user?.admin\n ? data.assessores\n : [user.user.assessorId],\n },\n currentPage\n );\n setCreateModalVisible(false);\n setClientsSelected([]);\n setKeys([]);\n }}\n edit={(data: any) => {\n if (!user?.user?.office && !user?.user?.admin) {\n data.assessores = (userSelected?.resp || []).map(\n (r: any) => r._id\n );\n }\n updateClient(\n {\n ...data,\n plan: userSelected?.planType || \"free\",\n userId: newClient?.userId,\n },\n currentPage,\n filters\n );\n setCreateModalVisible(false);\n setSelectedClient(null);\n setKeys([]);\n }}\n />\n handlePlan()}\n setPaymentType={setPaymentType}\n clientsSelected={clientsSelected}\n selectedPlan={selectedPlan}\n setSelectedPlan={setSelectedPlan}\n showPaymentModal={showPaymentModal}\n setClientsSelected={setClientsSelected}\n setShowPaymentModal={setShowPaymentModal}\n createConciergePlan={createPlanFromSelectedUsers}\n userCount={\n clientsSelected.filter((client) => !client.planActive).length\n }\n clientsWithCancelRecurring={clientsSelected.filter(\n (client) => client.cancelRecuring\n )}\n />\n {\n if (!loadingSend) {\n setShowNotasCorretagemModal(false);\n setFiles([]);\n setClientsSelected([]);\n }\n }}\n >\n \n \n Você pode também adicionar as notas de corretagem caso queira\n verificar o imposto de renda sobre operações realizadas fora do\n ambiente B3.\n \n \n \n Histórico de notas\n \n {\n const filtros: any = filters;\n getHistory(clientsSelected[0].username, { filters: filtros });\n }}\n locale={{\n filterReset: \"Limpar\",\n }}\n columns={[\n {\n align: \"center\",\n title: \"Dia\",\n dataIndex: \"day\",\n filterIcon: ,\n filters: dayFilters,\n render: (status, item) => <>{status},\n },\n {\n align: \"center\",\n title: \"Mês\",\n dataIndex: \"month\",\n filterIcon: ,\n filters: monthsExtended.map((m, i) => ({\n text: m,\n value: i + 1,\n })),\n render: (status, item) => <>{status},\n },\n {\n align: \"center\",\n title: \"Ano\",\n dataIndex: \"year\",\n filterIcon: ,\n filters: yearFilters,\n render: (status, item) => <>{status},\n },\n {\n className: \"actionColumn\",\n render: (status, item) => (\n \n downloadNota(item.path, item.month, item.year)\n }\n >\n Ver nota\n \n ),\n },\n ]}\n />\n {files?.length > 0 && (\n <>\n \n \n Lembre-se de clicar em finalizar para salvar seus dados\n \n sendNotas(clientsSelected[0].username)}\n >\n Finalizar\n \n \n \n )}\n \n {\n setSelectedNotificationType(undefined);\n setSendMailModalVisible(false);\n }}\n >\n \n {!selectedNotificationType ? (\n <>\n \n \n Escolha qual dos lembretes abaixo deseja enviar para{\" \"}\n {clientsSelected.length > 1 ? (\n os {clientsSelected.length} clientes selecionados\n ) : (\n \"o cliente selecionado\"\n )}\n \n \n {mailTypes.map((mailType) => (\n \n {\n if (clientsSelected.length > 1) {\n sendMail(mailType.value);\n } else {\n setSelectedNotificationType(mailType);\n }\n }}\n >\n {mailType.icon()}\n {mailType.label()}\n \n \n ))}\n \n ) : (\n <>\n \n \n Escolha a forma que deseja enviar o lembrete para o cliente:\n \n \n \n {\n sendMail(selectedNotificationType.value);\n }}\n >\n \n \n \n Enviar lembrete por E-mail\n \n \n \n {\n const text = `${selectedNotificationType.whatsappMessage.replaceAll(\n \" \",\n \"%20\"\n )}${selectedNotificationType.link}`;\n const clientWithPhone = clientsSelected.find(\n (c) => !!c.phone\n );\n const phoneParam = clientWithPhone\n ? `/55${clientWithPhone.phone}`\n : \"\";\n const textParam = clientWithPhone\n ? text.replace(\"{fullname}\", clientWithPhone.name)\n : text.replace(\"%20{fullname}\", \"\");\n const url = `https://wa.me${phoneParam}?text=${textParam}`;\n window.open(url, \"_blank\");\n }}\n >\n \n \n \n Enviar lembrete por Whatsapp\n \n \n \n )}\n \n \n setErrorModalVisible(false)}\n >\n \n (\n <>\n \n {item.user}\n \n \n {maskCpf(item.cpf)}\n \n \n ),\n },\n {\n title: \"Linha do excel\",\n align: \"center\",\n render: (_, item) => (\n \n {item.position}\n \n ),\n },\n {\n title: \"Mensagem\",\n render: (_, item) => (\n \n {item.message}\n \n ),\n },\n ]}\n />\n \n \n setOptionsModal(false)}\n >\n \n \n \n Escolha a forma que deseja adicionar o cliente:\n \n \n \n \n \n \n

\n Adicionar clientes manualmente\n

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

\n Importar clientes de planilha Excel\n

\n
\n
\n \n
\n \n setCsvModalVisible(false)}\n >\n \n \n {\n window.open(\n isManagerOrOffice\n ? `https://velotax-assets.s3.amazonaws.com/cadastro_cliente_1_warren${env}.xlsx`\n : `https://velotax-assets.s3.amazonaws.com/cadastro_cliente_2_warren${env}.xlsx`\n );\n }}\n >\n Baixar planilha modelo\n

\n \n \n \n
\n \n \n setCreateClientDeleted({ showModal: false })}\n onOk={() => {\n restoreClient(\n (createClientDeleted.cpf || \"\").replace(/[_.-/-]/g, \"\")\n );\n setCreateClientDeleted({ showModal: false });\n }}\n okText=\"Recuperar\"\n cancelText=\"Cancelar\"\n >\n O Cliente {createClientDeleted?.name} (CPF:{\" \"}\n {createClientDeleted?.cpf}) foi excluído pelo escritório\n anteriormente. Gostaria de recuperar suas informações?\n \n \n \n \n \n Não\n \n \n \n \n \n \n \n\n handleUpdatePatrimonio(selectedClient)}\n >\n Atualizar patrimônios\n \n }\n >\n \n \n Deseja atualizar os valores de patrimônio de todos os seus\n clientes? Esse processo pode levar até{\" \"}\n {Math.min(30, totalClients * 2)} minutos. Quando for concluído\n enviaremos um e-mail confirmando.\n \n \n \n {\n setAssessoresListModal(false);\n setUserSelected({});\n }}\n >\n \n \n {professionals.map((professional) => (\n \n
\n {professional.name}\n
\n \n ))}\n \n
\n \n \n {\n setAssessoresListModal(false);\n setUserSelected({});\n }}\n >\n Cancelar\n \n \n \n {\n updateClient(\n {\n ...userSelected,\n assessores: assessoresSelected,\n tableEdit: true,\n },\n currentPage\n );\n setAssessoresListModal(false);\n setUserSelected({});\n }}\n >\n Atualizar\n \n \n \n \n \n {\n setFilters(appliedFilters);\n setShowFilterModal(false);\n }}\n >\n \n \n \n \n Plano\n \n \n {\n setFilters((filters: any) => ({ ...filters, planActive }));\n }}\n >\n \n \n Gratuito\n \n \n \n Plano Basic\n \n \n \n \n Plano Premium\n \n \n \n \n Plano Concierge\n \n \n \n \n \n \n \n \n \n \n Responsável\n \n \n trigger.parentNode}\n onChange={(resp) => {\n setFilters((filters: any) => ({ ...filters, resp }));\n }}\n options={[\n { value: \"Escritório\", label: \"Escritório\" },\n ...professionals.map((item) => ({\n value: item._id,\n label: item.name,\n })),\n ]}\n />\n \n \n \n \n \n \n Bolsa de valores\n \n \n {\n setFilters((filters: any) => ({ ...filters, statusBolsa }));\n }}\n >\n \n \n \n Integração ativa\n \n \n \n \n Integração inativa\n \n \n \n \n \n \n \n \n \n \n Exterior\n \n \n {\n setFilters((filters: any) => ({\n ...filters,\n statusExterior,\n }));\n }}\n >\n \n \n \n Integração ativa\n \n \n \n \n Integração inativa\n \n \n \n \n \n \n \n \n {\n setAppliedFilters(filters);\n getClients({\n searchText,\n page: pagination.current,\n pageSize: pagination.pageSize,\n planActive: (filters.planActive || []) as string[],\n resp: (filters.resp || []) as string[],\n statusBolsa: filters.statusBolsa as CalcStatus[],\n statusExterior: filters.statusExterior as CalcStatus[],\n });\n setTimeout(() => {\n setShowFilterModal(false);\n }, 500);\n }}\n >\n Aplicar\n \n \n \n \n }\n onClick={() => {\n setShowCorretoraFilterModal(false);\n setSelectedCorretoras(checkboxCorretoras);\n setFilterCorretoraAtivo(\n checkboxCorretoras.map((corretora: string) =>\n getNomeCorretora({ shortName: corretora })\n )\n );\n updateFilter()\n }}\n >\n Confirmar\n \n }\n open={showCorretoraFilterModal}\n title=\"Filtrar por corretora\"\n className=\"filter-modal\"\n onCancel={() => {\n setShowCorretoraFilterModal(false);\n }}\n >\n \n \n \n \n Corretoras\n \n \n {\n setCheckboxCorretoras(e.target.checked ? corretoras : []);\n }}\n >\n Todas as corretoras\n \n {\n setCheckboxCorretoras(e);\n }}\n >\n \n {corretoras.map((corretora, i) => (\n \n {corretora}\n \n ))}\n \n \n \n \n \n \n
\n
\n Filtrar por posições\n
\n
\n {\n setCheckboxCorretoras([])\n setPosicoesFilter(e || [])\n }}\n options={Object.keys(carteiraCategorizadaSemFiltros).map((categoria) => ({\n label: categoria,\n options: carteiraCategorizadaSemFiltros[categoria].map((c: any) => ({\n label: c.codigo,\n value: c.codigo,\n }))\n }))}\n />\n \n \n \n setNotificationDrawerOpen(false)}\n />\n \n \n );\n};\n","import { message } from \"antd\";\nimport { useRef, useState } from \"react\";\nimport Upload, { RcFile } from \"antd/lib/upload\";\nimport {\n UploadFile,\n UploadFileStatus,\n UploadProps,\n} from \"antd/lib/upload/interface\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport api from \"../../services/api\";\n\nexport interface IHistory {\n id: string;\n month: number;\n year: number;\n path: string;\n}\n\nconst isValidFile = (file: UploadFile) => file.type === \"application/pdf\";\nconst sameNameFile = (file: UploadFile, files: UploadFile[]) =>\n files.findIndex((item) => item.name === file.name) >= 0;\n\nexport const useNotasCorretagem = () => {\n const sameNameFiles = useRef([]);\n const [loadingSend, setLoadingSend] = useState(false);\n const [notas, setNotas] = useState[]>([]);\n const [history, setHistory] = useState([]);\n const [showNotasCorretagemModal, setShowNotasCorretagemModal] =\n useState(false);\n\n const beforeUploadNota = (file: RcFile) => {\n if (!isValidFile(file)) {\n message.error(\"Você só pode fazer upload de arquivos pdf\");\n return Upload.LIST_IGNORE;\n }\n if (sameNameFile(file, notas)) {\n sameNameFiles.current.push(file.name);\n message.error(\"Este arquivo já foi adicionado\");\n return Upload.LIST_IGNORE;\n }\n };\n\n const onChangeNotas = ({\n file,\n fileList,\n }: {\n file: UploadFile;\n fileList: UploadFile[];\n }) => {\n if (file && file.status === \"removed\") return;\n if (!isValidFile(file)) return;\n if (sameNameFiles.current.includes(file.name)) {\n sameNameFiles.current = sameNameFiles.current.filter(\n (name) => name !== file.name\n );\n return;\n }\n setNotas(\n fileList\n .filter((file) => file.status !== \"removed\")\n .map((file) => ({ ...file, status: \"done\" as UploadFileStatus }))\n );\n };\n\n const onRemoveNota = (file: UploadFile) => {\n setNotas((notas) => notas.filter((nota) => nota.uid !== file.uid));\n };\n\n const sendNotas = (cpfCnpj: string) => {\n const formData = new FormData();\n notas.forEach((nota) => {\n formData.append(\"files\", nota.originFileObj as File);\n });\n setLoadingSend(true);\n const token = localStorage.getItem(\"@VeloTax:token\");\n apiBolsa\n .post(`/brokerage-notes/readBatch/${cpfCnpj}`, formData, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .then(() => {\n message.success(\"Informações extraídas com sucesso\");\n getHistory(cpfCnpj);\n })\n .catch((err) => {\n const errorMessage =\n err.reponse?.message?.error || \"Não foi possivel extrair informações\";\n message.error(errorMessage);\n setLoadingSend(false);\n });\n };\n\n const getHistory = async (\n username: string,\n params?: {\n currentPage?: number;\n filters?: {\n day: number[];\n month: number[];\n year: number[];\n };\n }\n ) => {\n const filterDay = params?.filters?.day || null;\n const filterMonth = params?.filters?.month || null;\n const filterYear = params?.filters?.year || null;\n setLoadingSend(true);\n try {\n const { data } = await api.get(`/clients/getNotasHistory/${username}`, {\n params: {\n day: filterDay,\n month: filterMonth,\n year: filterYear,\n },\n });\n if (data?.message) message.error(data.message);\n else\n setHistory(\n data.map((nota: any) => ({\n ...nota,\n id: `${nota.day}${nota.month}${nota.year}`,\n }))\n );\n } catch (error: any) {\n message.error(\"Algo errado aconteceu. Tente novamente mais tarde.\");\n }\n setLoadingSend(false);\n };\n\n const downloadNota = async (path: string, month: number, year: number) => {\n try {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const { data } = await apiBolsa.get(\"/brokerage-notes/download\", {\n headers: { Authorization: `Bearer ${token}` },\n params: { path: path.replace(\"notas/\", \"\"), month, year },\n });\n if (data.url) {\n window.open(data.url, \"_blank\");\n }\n } catch (error) {\n message.error(\"Algo errado aconteceu. Tente novamente mais tarde.\");\n }\n };\n\n const uploadProps: UploadProps = {\n fileList: notas,\n multiple: true,\n listType: \"text\",\n accept: \"application/pdf\",\n onRemove: onRemoveNota,\n onChange: onChangeNotas,\n beforeUpload: beforeUploadNota,\n customRequest: () => {},\n showUploadList: {\n showRemoveIcon: true,\n showPreviewIcon: false,\n showDownloadIcon: false,\n },\n };\n\n return {\n files: notas,\n setFiles: setNotas,\n sendNotas,\n loadingSend,\n uploadProps,\n showNotasCorretagemModal,\n setShowNotasCorretagemModal,\n history,\n getHistory,\n downloadNota,\n };\n};\n","import React from \"react\";\nimport { Navigate, Outlet } from \"react-router-dom\";\nimport { useAuth } from \"../contexts/AuthContext\";\n\ninterface IPrivateRouteProps {}\n\nconst PrivateRoute: React.FC = () => {\n const { signed, loadingSession } = useAuth();\n\n if (loadingSession) {\n return <>;\n }\n\n return signed ? : ;\n};\n\nexport default PrivateRoute;\n","import React from \"react\";\nimport { Navigate, Outlet } from \"react-router-dom\";\nimport { useAuth } from \"../contexts/AuthContext\";\n\nconst OnlyPublicRoute: React.FC = () => {\n const { signed, loadingSession } = useAuth();\n\n if (loadingSession) {\n return <>;\n }\n\n return !signed ? : ;\n};\n\nexport default OnlyPublicRoute;\n","import React from \"react\";\nimport { Outlet } from \"react-router-dom\";\nconst OnlyClientAccountPermissionRoute: React.FC = () => {\n return \n};\nexport default OnlyClientAccountPermissionRoute;","import styled from \"styled-components\";\n\nexport const Content = styled.div`\n padding: 48px;\n max-width: 750px;\n border-radius: 8px;\n margin: 0 auto 54px;\n background-color: var(--white);\n box-shadow: 0px 4px 8px 0px #e0e0e0;\n\n .ant-select {\n min-width: 120px;\n height: 48px !important;\n .ant-select-selector {\n height: 48px !important;\n }\n }\n\n .ant-btn {\n height: 44px;\n font-size: 14px;\n font-weight: 600;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n\n svg {\n fill: none;\n width: 20px;\n height: 20px;\n stroke: var(--ant-primary-color);\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n box-shadow: none;\n border-radius: 0;\n margin: 0 auto 32px;\n padding: 24px 24px 48px;\n border-bottom: 1px solid var(--ghost);\n }\n`;\n\nexport const FaturamentoTable = styled.div`\n width: 100%;\n margin-top: 32px;\n font-weight: 300;\n color: var(--dark-2);\n .row {\n display: flex;\n font-size: 16px;\n border-bottom: 1px solid var(--ghost);\n &.header {\n font-weight: 600;\n }\n & > div {\n width: 20%;\n padding: 12px 16px;\n }\n }\n .empty {\n padding: 16px;\n text-align: center;\n border-bottom: 1px solid var(--ghost);\n }\n .row.column-4 > div {\n width: 25%;\n }\n\n @media only screen and (max-device-width: 812px) {\n margin-left: -24px;\n width: calc(100% + 48px);\n .row {\n font-size: 12px;\n & > div {\n display: flex;\n padding: 12px;\n align-items: center;\n }\n }\n }\n`;\n","import FileSaver from \"file-saver\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { Col, Row, Select, Spin, Typography, message } from \"antd\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { Content, FaturamentoTable } from \"./styles\";\nimport { formatCurrency, monthsExtended } from \"../../utils\";\n\nconst initialYear = 2021;\n\ninterface IInvoice {\n year: number;\n month: number;\n escritorioId: string;\n premiumClients: number;\n value: number;\n clients: any;\n billedClients: number;\n}\n\nexport const Faturamento: React.FC = () => {\n const { user } = useAuth();\n const currentYear = new Date().getFullYear();\n const [buffer, setBuffer] = useState();\n const [year, setYear] = useState(currentYear);\n const [loading, setLoading] = useState(false);\n const [invoices, setInvoices] = useState([]);\n\n const getInvoices = useCallback(() => {\n setLoading(true);\n api\n .get(`/invoice/${year}`)\n .then(({ data }) => {\n setInvoices(\n (data.invoices || []).filter(\n (invoice: IInvoice) => invoice.year === year\n )\n );\n setBuffer(data.buffer?.data);\n })\n .catch(() => {})\n .finally(() => {\n setLoading(false);\n });\n }, [year]);\n\n const handleDownloadSheet = () => {\n try {\n const data = Uint8Array.from(buffer);\n const blob = new Blob([data], { type: \"attach.contentType\" });\n FileSaver.saveAs(blob, \"Faturamento.xlsx\");\n } catch (error: any) {\n message.error(error);\n }\n };\n\n useEffect(() => {\n getInvoices();\n }, [year, getInvoices]);\n\n return (\n \n \n Faturamento\n \n \n Selecione o período\n \n \n \n setYear(value)}\n options={Array.from(Array(currentYear - initialYear + 1))\n .map((y, i) => ({\n label: initialYear + i,\n value: initialYear + i,\n }))\n .reverse()}\n />\n \n \n }\n onClick={handleDownloadSheet}\n >\n Baixar planilha\n \n \n \n\n \n \n \n
Mês
\n
Totais
\n
Premium
\n {user.user.liberadaContratacao &&
Faturados
}\n
Valor
\n
\n {invoices.length > 0 ? (\n invoices.map((item) => (\n \n
{monthsExtended[item.month - 1]}
\n
\n {item?.clients?.length || 0} usuário\n {item?.clients?.length > 1 && \"s\"}\n
\n
\n {item?.premiumClients || 0} usuário\n {item?.premiumClients > 1 && \"s\"}\n
\n {user.user.liberadaContratacao && (\n
\n {item?.billedClients || 0} usuário\n {(item?.billedClients || 0) > 1 && \"s\"}\n
\n )}\n
{formatCurrency(item.value || 0)}
\n \n ))\n ) : (\n
Nenhum dado encontrado
\n )}\n \n \n \n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px;\n min-height: 100%;\n background-color: var(--ghost);\n\n @media only screen and (max-device-width: 812px) {\n padding: 0 0 64px;\n background-color: var(--white);\n }\n`;\n\nexport const Content = styled.div`\n padding: 48px;\n margin: 0 auto;\n max-width: 750px;\n border-radius: 8px;\n background-color: var(--white);\n box-shadow: 0px 4px 8px 0px #e0e0e0;\n\n &.transparent {\n padding: 8px 0;\n box-shadow: none;\n background-color: transparent;\n }\n\n .ant-form-item-label {\n label.ant-form-item-required {\n height: 32px;\n font-weight: 600;\n :before {\n display: none;\n }\n }\n }\n\n .ant-btn {\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .ant-btn-link {\n padding: 0;\n text-transform: none;\n &.signout {\n color: var(--ant-error-color);\n }\n }\n\n .ant-upload {\n font-weight: normal;\n .upload-logo {\n width: 100%;\n display: flex;\n padding: 8px 16px;\n flex-direction: row;\n justify-content: space-between;\n\n .upload-drag-icon {\n width: 140px;\n height: 100%;\n margin: 8px;\n\n .anticon-download {\n font-size: 60px;\n }\n\n img {\n max-height: 70px;\n }\n }\n\n .upload-text {\n display: flex;\n max-width: 380px;\n flex-direction: column;\n .ant-upload-hint {\n font-size: 11px;\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n box-shadow: none;\n border-radius: 0;\n padding: 0 24px 48px;\n border-bottom: 1px solid var(--ghost);\n\n &.transparent {\n border-bottom: none;\n padding: 0 24px;\n }\n }\n`;\n","import { BiLock } from \"react-icons/bi\";\nimport { RcFile } from \"antd/lib/upload\";\nimport { useEffect, useState } from \"react\";\nimport Dragger from \"antd/lib/upload/Dragger\";\nimport { useNavigate } from \"react-router-dom\";\nimport { MdOutlineLogout } from \"react-icons/md\";\nimport { DownloadOutlined } from \"@ant-design/icons\";\nimport {\n Col,\n Form,\n Input,\n message,\n Modal,\n Row,\n Typography,\n UploadFile,\n UploadProps,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { Faturamento } from \"../Faturamento\";\nimport { Container, Content } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport {\n validationEmail,\n validationFieldRequired,\n validationFullName,\n validationLogo,\n validationPassword,\n} from \"../../utils/formValidations\";\n\nexport const MinhaConta: React.FC = () => {\n const { user, setUser, signOut, updateUserInfo } = useAuth();\n const [form] = Form.useForm();\n const navigate = useNavigate();\n const [loading, setLoading] = useState(false);\n const [showPassword, setShowPassword] = useState(false);\n const [passwordAlreadyExists, setPasswordAlreadyExists] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [previewImage, setPreviewImage] = useState(user.user.fileLink);\n const [previewTitle, setPreviewTitle] = useState(\"\");\n const [fileList, setFileList] = useState(\n user.user.fileLink\n ? [\n {\n uid: \"-1\",\n name: \"Logotipo\",\n status: \"done\",\n url: `${user.user.fileLink}`,\n },\n ]\n : []\n );\n\n useEffect(() => {\n if (user?.user) {\n setPasswordAlreadyExists(user.user.hasPassword);\n form.setFieldsValue({\n username: user.user.username,\n name: user.user.name,\n email: user.user.email,\n });\n }\n }, [user.user, form]);\n\n useEffect(() => {\n if (!fileList || fileList.length === 0) setPreviewImage(\"\");\n }, [fileList]);\n\n const onFinish = (data: any) => {\n const formData = new FormData();\n formData.append(\"email\", data.email);\n formData.append(\"name\", data.name);\n if (fileList && fileList.length > 0)\n formData.append(\"files\", data.logo.file.originFileObj as File);\n if (showPassword) {\n if (passwordAlreadyExists) {\n formData.append(\"password\", data.pass);\n formData.append(\"currentPassword\", data.currentPass);\n } else {\n formData.append(\"password\", data.pass);\n }\n }\n\n setLoading(true);\n api\n .post(`/accountants/logo/${data.username}`, formData)\n .then(() => {\n message.config({ top: 90 });\n message.success(\"Dados atualizados com sucesso\");\n setLoading(false);\n updateUserInfo();\n setUser({\n ...user,\n user: {\n ...user.user,\n email: data.email,\n name: data.name,\n ...(showPassword\n ? !passwordAlreadyExists\n ? {\n hasPassword: true,\n }\n : {}\n : {}),\n },\n });\n })\n .catch((err) => {\n message.error(\n err.response?.data?.message ||\n \"Erro ao atualizar dados. Tente novamente mais tarde\"\n );\n setLoading(false);\n });\n };\n\n const onCancel = () => {\n navigate(\"/clients\");\n };\n\n const handlePassword = () => {\n setShowPassword((show) => !show);\n };\n\n const getBase64 = (file: RcFile): Promise =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n\n const handlePreview = async (file: UploadFile) => {\n if (!file.url && !file.preview) {\n file.preview = await getBase64(file.originFileObj as RcFile);\n }\n setPreviewImage(file.url || (file.preview as string));\n setPreviewOpen(true);\n setPreviewTitle(\n file.name || file.url!.substring(file.url!.lastIndexOf(\"/\") + 1)\n );\n };\n\n const handleChange: UploadProps[\"onChange\"] = async ({\n fileList: newFileList,\n }) => {\n const conditions = [\"image/jpeg\", \"image/png\"];\n const file = newFileList[0];\n setFileList(newFileList);\n const preview = await getBase64(file.originFileObj as RcFile);\n setPreviewImage(preview);\n message.config({ top: 40 });\n const { status } = file;\n if (status === \"done\") {\n message.success(`Logotipo ${file.name} carregado com sucesso.`);\n } else if (status === \"error\") {\n if (\n file?.size &&\n file.size > 15000 &&\n conditions.some((el) => file.type?.includes(el))\n )\n message.error(`Tamanho máximo permitido: 15KB.`);\n else if (file.type && !conditions.some((el) => file.type?.includes(el)))\n message.error(`Formato de arquivo inválido.`);\n else\n message.error(`Houve um problema ao carregar o logotipo ${file.name}.`);\n }\n };\n\n const props: UploadProps = {\n name: \"file\",\n multiple: false,\n action: \"https://run.mocky.io/v3/435e224c-44fb-4773-9faf-380c5e6a2188\",\n onDrop(e) {\n console.log(\"Arquivo carregado\", e.dataTransfer.files);\n },\n };\n\n return (\n \n {(user.user.office || user?.user?.admin) && }\n \n \n Dados do usuário\n \n
\n
\n \n \n \n\n \n \n \n\n \n \n \n\n {(user.user.office || user?.user?.admin) && (\n \n \n
\n \n {previewImage ? (\n \"Logo\"\n ) : (\n \n )}\n

\n
\n

\n Clique ou arraste seu logotipo\n

\n

\n Obs: Recomendamos arquivos .PNG com fundo transparente e\n tamanho de no máximo 125x50px até 15KB\n

\n
\n
\n \n \n )}\n\n setPreviewOpen(false)}\n >\n \"Logo\"\n \n\n }\n >\n {showPassword ? \"Não alterar senha\" : \"Alterar senha\"}\n \n\n {showPassword && (\n \n {passwordAlreadyExists && (\n \n \n \n \n \n )}\n \n \n \n \n \n \n )}\n\n
\n\n \n \n \n \n \n \n Salvar\n \n \n \n \n
\n \n }\n >\n Sair\n \n \n
\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.788 39.035h6.343c2.372 0 4.022-1.083 4.022-3.3 0-2.218-1.65-3.3-4.022-3.3h-6.343v6.6zm0 11.5h8.457c4.486 0 6.807-2.321 6.807-6.808v-4.692h-.155c-1.29 3.919-4.641 5.105-8.612 5.105h-6.29c-.155 0-.207.051-.207.206v6.188zm-11.911-14.8l6.497 6.29v-12.58l-6.497 6.29zm-22.07 14.8h28.567V49.09c0-2.527.877-3.97 2.887-4.744v-.154H30.27c-.413 0-.567-.052-.877-.361l-4.177-4.332-4.331 4.383c-.206.206-.361.31-.774.31h-6.445c-.361 0-.361-.207-.155-.413l8.25-7.993-8.405-8.147c-.206-.206-.154-.412.207-.412h6.497c.36 0 .516.051.722.309l4.538 4.538 4.28-4.538c.206-.206.36-.31.67-.31h16.965c3.919 0 7.374 1.29 8.663 5.209h.155V6.807C56.052 2.32 53.732 0 49.245 0H6.807C2.32 0 0 2.32 0 6.807v36.972c0 4.435 2.32 6.755 6.807 6.755z\",\n fill: \"#fff\"\n});\n\nfunction SvgXp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 56,\n height: 51,\n fill: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgXp);\nexport default __webpack_public_path__ + \"static/media/xp.070672ea.svg\";\nexport { ForwardRef as ReactComponent };","import { Result, Row } from \"antd\";\nimport { useNavigate } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport Button from \"../../components/Button\";\nimport { ReactComponent as XPLogo } from \"../../assets/xp.svg\";\n\nexport const Container = styled.div`\n height: 100vh;\n background-color: var(--ant-info-color);\n .ant-result-subtitle,\n .ant-result-title {\n color: var(--white);\n }\n svg.error * {\n fill: var(--ant-error-color);\n }\n`;\n\nconst PageNotFound: React.FC = () => {\n const navigate = useNavigate();\n return (\n \n }\n title=\"Página não encontrada\"\n subTitle=\"Esta página que você visitou não existe\"\n extra={\n \n navigate(\"/clients\")}\n >\n Voltar para o app\n \n \n }\n />\n \n );\n};\n\nexport default PageNotFound;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n }\n`;\n\nexport const Content = styled.div`\n padding: 0 48px;\n margin: 0 auto;\n max-width: 920px;\n\n div.ant-typography {\n margin: 0;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n }\n\n h3 {\n color: var(--velotax-font-color);\n }\n\n span.link {\n cursor: pointer;\n color: var(--ant-primary-color);\n }\n\n .ant-typography:not(h1) {\n text-align: justify;\n }\n\n a.ant-typography,\n .ant-typography a {\n color: var(--ant-primary-color);\n }\n\n .ant-typography i strong {\n font-size: 13px;\n letter-spacing: 0.625px;\n word-spacing: 0.625px;\n }\n\n iframe {\n max-width: 100%;\n }\n\n .ant-list {\n margin-bottom: 1em;\n }\n\n .ant-collapse,\n .ant-collapse.ant-collapse-borderless {\n border-radius: 8px;\n background-color: transparent;\n border: 1px solid var(--ghost);\n .ant-collapse-item {\n .ant-collapse-header {\n padding: 16px;\n font-size: 1.125rem;\n color: var(--velotax-font-color);\n .ant-collapse-arrow {\n font-size: 0.875rem;\n }\n }\n .ant-collapse-content {\n color: var(--velotax-font-color);\n border-bottom: 1px solid;\n border-color: var(--ghost);\n }\n }\n\n .ant-collapse-item:last-child {\n .ant-collapse-content {\n border-bottom: none;\n border-radius: 0 0 8px 8px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px 128px;\n border-radius: 0;\n }\n`;\n","import { Divider, Typography } from \"antd\";\n\nexport const CompaniesExemptList = {\n title: \"Lista de empresas isentas\",\n content: (\n
\n \n \n Lista de ações que, se vendidas com lucro até o dia 31/12/2023, são\n isentas de Impostos de Renda com base na lei 13.043, de 13 de novembro\n de 2014:\n \n \n \n - NUTRIPLANT (NUTR3)\n
\n - PETRORIO (PRIO3)*\n
\n - GENERAL SHOPPING (GSHP3)\n
\n - POMIFRUTAS (FRTA3)\n
\n - CR2 EMPREENDIMENTOS IMOBILIÁRIOS (CRDE3)\n
\n - SINQIA (SQIA3)*\n
\n - BRASIL AGRO (AGRO3)\n
- PRINER (PRNR3)\n
\n \n \n * Válido para ações compradas antes do follow-on. A Sinqia e a Petrorio\n fizeram uma oferta de ações em setembro de 2019 e fevereiro de 2021,\n respectivamente. Caso você tenha comprado essas ações antes das datas\n das respectivas ofertas, você tem direito a isenção de imposto de renda\n sobre seus ganhos.\n \n
\n ),\n};\n","import { useState } from \"react\";\nimport { List, Typography, Modal, Collapse, Divider, Row, Col } from \"antd\";\nimport { Container, Content } from \"./styles\";\nimport { CompaniesExemptList } from \"../../constants/regulation\";\n\ninterface RegulationProps {}\n\nexport const Regulation: React.FC = () => {\n const [showListModal, setShowListModal] = useState(false);\n\n const handleListModal = () => {\n setShowListModal((show) => !show);\n };\n return (\n \n \n \n \n \n Regras de IR utilizadas pelo Velotax\n \n \n \n \n Entenda quais são as normativas da Receita Federal que utilizamos\n para calcular automaticamente o seu imposto de renda\n \n \n \n
\n \n \n \n Se você investe na bolsa de valores, é fundamental que você\n entenda as regras de IR aplicáveis para investimentos em renda\n variável.\n \n \n Entendendo o que é renda variável\n \n \n O mercado de renda variável compreende ativos cuja remuneração ou\n retorno de capital não pode ser dimensionado no momento da\n aplicação. São eles as ações, quotas ou quinhões de capital, o\n ouro, ativo financeiro, e os contratos negociados nas bolsas de\n valores, de mercadorias, de futuros e assemelhadas.\n \n \n (Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, arts.\n 56, 58 e 60 a 62)\n \n \n Qual imposto de renda incide sobre operações de renda variável\n \n \n O ganhos líquidos são constituídos pela diferença positiva entre o\n valor de venda do ativo e o seu custo de aquisição. Os ganhos\n líquidos auferidos em operações realizadas em bolsas de valores,\n de mercadorias, de futuros, e assemelhadas, inclusive day trade,\n serão tributados às seguintes alíquotas:\n \n \n \n a) 15%, nas operações realizadas nos mercados à vista, a termo,\n de opções e de futuros;\n \n b) 20%, no caso de operação day trade;\n \n c) 20%, no caso de operação com fundos imobiliários (FIIs).\n \n \n \n (Lei nº 11.033, de 21 de dezembro de 2004, art. 2º, caput, incisos\n I e II, e §§ 1º e 2º; e Instrução Normativa RFB nº 1.585, de 31 de\n agosto de 2015, arts. 57, 63 e 65)\n \n \n Quando o imposto deve ser pago\n \n \n O imposto sobre a renda deve ser pago até o último dia útil do mês\n subsequente àquele em que os ganhos houverem sido apurados.\n
\n
O código a ser utilizado no Documento de Arrecadação das\n Receitas Federais (Darf) para pagamento desse tributo é 6015.\n
\n \n (Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, art.\n 56, § 5º)\n \n \n Operações isentas de imposto de renda\n \n \n A isenção de imposto de renda aplica-se para transações realizadas\n em mercados comuns e que se encaixem nas situações abaixo:\n \n \n \n a) com ações, no mercado à vista de bolsas de valores ou mercado\n de balcão, se o total das alienações desse ativo, realizadas no\n mês, não exceder a R$ 20.000,00 (vinte mil reais);\n \n \n b) com ações de pequenas e médias empresas a que se refere o\n art. 16 da Lei nº 13.043, de 13 de novembro de 2014;\n
\n \n Clique aqui para ver a lista de empresas isentas\n \n
\n \n c) com ouro, ativo financeiro, se o total das alienações desse\n ativo, realizadas no mês, não exceder a R$ 20.000,00 (vinte mil\n reais);\n \n
\n \n A isenção acima não se aplica, entre outras, às operações de day\n trade, às negociações de cotas de fundos de investimentos\n imobiliários (FIIs) e fundos de investimento em índice de ações,\n aos resgates de cotas de fundos ou clubes de investimento em ações\n e à alienação de ações efetivada em operações de exercício de\n opções e no vencimento ou liquidação antecipada de contratos a\n termo.\n \n \n (Lei nº 11.033, de 21 de dezembro de 2004, art.3º, inciso I; Lei\n nº 13.043, de 13 de novembro de 2014, art. 16; e Instrução\n Normativa RFB nº 1.585 , de 31 de agosto de 2015, art. 59, incisos\n I e II e § 2º)\n \n \n O que é operação day trade\n \n \n Considera-se day trade a operação ou a conjugação de operações\n iniciadas e encerradas em um mesmo dia, com o mesmo ativo,{\" \"}\n em uma mesma instituição intermediadora (isto é, corretora)\n , em que a quantidade negociada tenha sido liquidada, total ou\n parcialmente. Na apuração do resultado da operação day trade são\n considerados, pela ordem, o primeiro negócio de compra com o\n primeiro de venda ou o primeiro negócio de venda com o primeiro de\n compra, sucessivamente.\n \n \n (Lei nº 9.959, de 27 de janeiro de 2000, art. 8º; Lei nº 12.350,\n de 20 de dezembro de 2010, art. 45; e Instrução Normativa RFB nº\n 1.585, de 31 de agosto de 2015, art. 65)\n \n \n Compensação de perdas passadas\n \n \n As perdas incorridas nas operações de renda variável nos mercados\n à vista, de opções, futuros, a termo e assemelhados, poderão ser\n compensadas com os ganhos líquidos auferidos, no próprio mês ou\n nos meses subsequentes, em outras operações realizadas em qualquer\n das modalidades operacionais previstas nesses mercados.\n \n \n Atenção: as perdas incorridas em operações\n comuns, somente poderão ser compensadas com ganhos líquidos\n auferidos em operações da mesma espécie (comuns), realizadas no\n mês ou meses subsequentes. Do mesmo modo, as perdas incorridas em\n operações day trade somente são compensáveis com os ganhos\n líquidos auferidos nessas operações, e perdas incorridas em FIIs\n são compensáveis com os ganhos líquidos auferidos em FIIs.\n \n \n (Regulamento do Imposto sobre a Renda – RIR/2018, art. 841, §§ 1º\n e 2º, aprovado pelo Decreto nº 9.580, de 22 de novembro de 2018; e\n Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, art.\n 64)\n \n \n Dedução de despesas operacionais\n \n \n As despesas efetivamente pagas destacadas na nota de corretagem ou\n no extrato da conta-corrente para a realização de operações de\n compra ou venda (corretagens, emolumentos etc.) podem ser\n consideradas na apuração do ganho líquido, sendo acrescidas ao\n preço de compra e deduzidas do preço de venda dos ativos ou\n contratos negociados.\n \n \n (Lei nº 8.383, de 30 de dezembro de 1991, art. 27; e Regulamento\n do Imposto sobre a Renda - RIR/2018, art. 841, caput e § 2º,\n aprovado pelo Decreto nº 9.580, de 22 de novembro de 2018; e\n Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, art.\n 56, § 3º)\n \n \n O que é o Portal da B3\n \n \n O Portal da B3 armazena os saldos e os históricos de transação de\n forma consolidada para os investidores da bolsa de valores.\n
\n
\n Caso você nunca tenha se cadastrado no Portal da B3, faça o seu{\" \"}\n \n cadastro aqui\n \n . Só precisa ter o seu CPF e a data de nascimento em mãos.\n
\n
\n Para facilitar nos seus cálculos, o Velotax está completamente\n integrado com a B3. Para garantir sua segurança e privacidade,\n nunca armazenaremos a sua senha do CEI.\n
\n {/*Remover os vídeos do passo a posso pois são baseados na calculadora antiga*/}\n {/* \n Ajustando manualmente o Velotax\n \n \n Apesar do sistema do Velotax ser o mais automático possível, algumas\n informações não estão disponíveis na B3. Portanto os investidores\n devem ter atenção para ajustar manualmente na{\" \"}\n Calculadora os pontos\n abaixo.\n */}\n {/* \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n */}\n \n Ainda tem dúvidas? Acesse:\n \n \n Central de Ajuda\n \n , onde nosso time de suporte responde suas dúvidas\n
\n\n \n \n Se você investe em moedas virtuais ou tokens, é fundamental que\n você entenda as regras de IR aplicáveis para criptoativos.\n \n \n Entendendo o que são criptoativos\n \n \n Os criptoativos são a representação digital de valor denominada em\n sua própria unidade de conta, cujo preço pode ser expresso em\n moeda soberana local ou estrangeira, transacionado eletronicamente\n com a utilização de criptografia e de tecnologias de registros\n distribuídos, que pode ser utilizado como forma de investimento,\n instrumento de transferência de valores ou acesso a serviços, e\n que não constitui moeda de curso legal.\n \n \n Alguns exemplos de criptoativos são Bitcoins, Altcoins (Ether,\n Ripple, Litecoin, entre outros) e Payment Tokens (Chiliz, Binance\n Coin, Chainlink, entre outros). Eles podem ser equiparados a\n ativos financeiros sujeitos a ganho de capital e devem ser\n declarados pelo seu valor de aquisição.\n \n \n (Instrução Normativa RFB nº 1.888, de 3 de maio de 2019)\n \n \n Qual imposto de renda incide sobre ganhos com criptoativos\n \n \n Os ganhos obtidos com a alienação de criptoativos cujo total\n alienado no mês seja superior a R$ 35.000,00 são tributados, a\n título de ganho de capital, segundo alíquotas progressivas\n estabelecidas em função do lucro:\n \n \n \n a) 15% sobre a parcela dos ganhos que não ultrapassar R$\n 5.000.000,00;\n \n \n b) 17,5% sobre a parcela dos ganhos que exceder R$ 5.000.000,00\n e não ultrapassar R$ 10.000.000,00;\n \n \n c) 20% sobre a parcela dos ganhos que exceder R$ 10.000.000,00 e\n não ultrapassar R$ 30.000.000,00; e\n \n \n d) 22,5% sobre a parcela dos ganhos que ultrapassar R$\n 30.000.000,00.\n \n \n \n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n \n \n Quando o imposto deve ser pago\n \n \n O recolhimento do imposto sobre a renda deve ser feito até o\n último dia útil do mês seguinte ao da transação de venda.\n \n \n O código a ser utilizado no Documento de Arrecadação das Receitas\n Federais (Darf) para pagamento desse tributo é 4600.\n \n \n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n \n \n Operações isentas de imposto de renda\n \n \n A isenção relativa às alienações de até R$ 35.000,00 mensais deve\n observar o conjunto de criptoativos ou moedas virtuais alienados\n no Brasil ou no exterior, independente de seu nome (bitcoin,\n ethereum, litecoin, tether ...). Caso o total alienado no mês\n ultrapasse esse valor, o ganho de capital relativo a todas as\n alienações estará sujeito à tributação.\n \n \n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n \n \n Como converter de dólares (US$) para reais (R$)\n \n \n Para a conversão de valores em reais, o valor expresso em moeda\n estrangeira deve ser convertido em dólar dos Estados Unidos da\n América e convertido em moeda nacional pela cotação do dólar dos\n Estados Unidos da América fixada, para venda, pelo Banco Central\n do Brasil (BCB) para a data da operação ou saldo, extraída do\n boletim de fechamento PTAX divulgado pelo BCB.\n \n \n (Instrução Normativa RFB nº 1.888, de 3 de maio de 2019)\n \n \n Compensação de perdas passadas\n \n \n Como os ganhos em criptoativos estão sujeitos as regulações de\n ganho de capital, as perdas passadas em criptoativos não podem ser\n compensadas dos ganhos futuros. As operações em criptoativos são\n tratadas de maneira singular, não sendo possível compensar os\n prejuízos de algumas operações com lucros de outras.\n \n \n Mesmo para operações no mesmo mês, de forma conservadora, valem as\n disposições acima: informar cada operação de venda, sem compensar\n lucros com perdas.\n \n \n (Instrução Normativa SRF nº 84, de 11 de outubro de 2001, art. 2º,\n parágrafo único)\n \n \n Dedução de despesas operacionais\n \n \n As despesas com corretagem na venda de criptoativos podem ser\n abatidas do ganho de capital a ser tributado.\n \n Mineração de bitcoins\n \n Apesar de ainda existirem diversos entedimentos a respeito de como\n a mineração deve ser tributada, acreditamos que a mineração deve\n ser tratada como renda auferida - isto é, uma retribuição por\n serviço prestado. Assim sendo, o recebimento de bitcoin por\n mineração deveria ser tributado conforme as regras de IRPF, com\n alíquotas de até 27,5%. Não existe, entretanto, consenso formado\n ainda sobre as regras em mineração.\n \n \n Utilizando o Velotax em criptoativos\n \n \n A{\" \"}\n navigate(`/${currentBroker.path}/cripto-darf`)}\n >\n Calculadora\n {\" \"}\n do Velotax para cálculo e pagamento de IR sobre ganhos em\n criptoativos permite a inclusão manual de operações, e realiza os\n cálculos automaticamente seguindo as regras da Receita Federal.\n \n \n Após inserir as informações de suas operações de venda, o Velotax\n calculará os seus impostos devidos de acordo com as regras acima e\n emitirá a sua DARF para pagamento.\n \n \n Caso você esteja pagando em atraso, o Velotax incluirá\n automaticamente os juros e multa devidos na sua DARF.\n \n \n Ainda tem dúvidas? Acesse:\n \n -{\" \"}\n \n Central de Ajuda\n \n , onde nosso time de suporte responde suas dúvidas\n \n\n \n \n Se você investe em ações no exterior, é fundamental que você\n entenda as regras de IR aplicáveis para ativos no exterior.\n \n \n Entendendo quais ativos no exterior estão sujeitos a tributação\n \n \n A alienação de bens ou direitos e liquidação ou resgate de\n aplicações financeiras, de propriedade de pessoa física,\n adquiridos em moeda estrangeira estarão sujeitos as regras de\n tributação sobre ganho de capital.\n \n \n Caso você tenha realizado operações que importem na alienação\n (venda) de bens ou direitos adquiridos em moeda estrangeira, como\n ações e outros ativos financeiros em bolsa de valores, de\n mercadorias, de futuros ou assemelhadas, você deverá efetuar o\n cálculo de ganho de capital tributável e o recolhimento do imposto\n devido segundo as alíquotas progressivas estabelecidas em função\n do lucro.\n \n \n (Lei nº 13.254, de 13 de janeiro de 2016; Lei nº 13.428, de 30 de\n março de 2017; Instrução Normativa SRF nº 118, de 27 de dezembro\n de 2000; Instrução Normativa SRF nº 84, de 11 de outubro de 2001,\n art. 3º; Instrução Normativa RFB nº 1.627, de 11 de março de 2016;\n e Instrução Normativa RFB nº 1.704, de 31 de março de 2017)\n \n \n Qual imposto de renda incide sobre ganhos na venda de ativos no\n exterior\n \n \n Os ganhos obtidos com a alienação de investimentos no exterior\n cujo total alienado no mês seja superior a R$ 35.000,00 são\n tributados, a título de ganho de capital, segundo alíquotas\n progressivas estabelecidas em função do lucro:\n \n \n \n a) 15% sobre a parcela dos ganhos que não ultrapassar R$\n 5.000.000,00;\n \n \n b) 17,5% sobre a parcela dos ganhos que exceder R$ 5.000.000,00\n e não ultrapassar R$ 10.000.000,00;\n \n \n c) 20% sobre a parcela dos ganhos que exceder R$ 10.000.000,00 e\n não ultrapassar R$ 30.000.000,00;\n \n \n d) 22,5% sobre a parcela dos ganhos que ultrapassar R$\n 30.000.000,00.\n \n \n \n (Lei nº 8.981, de 20 de janeiro de 1995, art. 21; Lei nº 13.259,\n de 16 de março de 2016; e Ato Declaratório Interpretativo RFB nº\n 3, de 27 de abril de 2016)\n \n \n Quando o imposto deve ser pago\n \n \n O recolhimento do imposto sobre a renda deve ser feito até o\n último dia útil do mês seguinte ao da transação de venda.\n \n \n O código a ser utilizado no Documento de Arrecadação das Receitas\n Federais (Darf) para pagamento desse tributo é 8523.\n \n \n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n \n \n Operações isentas de imposto de renda\n \n \n A isenção relativa às alienações de até R$ 35.000,00 mensais deve\n observar o conjunto de instrumentos financeiros negociados em\n bolsa de valores no exterior, como ETFs (Exchange Traded Funds),\n REITs (Real Estate Investment Trust), ADRs (American Depositary\n Receipt) e Stocks (ações). Caso o total alienado no mês ultrapasse\n esse valor, o ganho de capital relativo a todas as alienações\n estará sujeito à tributação.\n \n \n (Lei nº 9.250, de 26 de dezembro de 1995, art. 22, I e II; Lei nº\n 10.406, de 10 de janeiro de 2002, art. 1.725; Instrução Normativa\n SRF nº 599, de 28 de dezembro de 2005, art. 1º; Solução de\n Consulta Cosit nº 320, de 20 de junho de 2017; e Solução de\n Consulta Cosit nº 264, de 24 de junho de 2019)\n \n \n Como funciona o cálculo do imposto de renda no exterior\n \n \n Na hipótese de bens ou direitos adquiridos e aplicações\n financeiras realizadas em moeda estrangeira com rendimentos\n auferidos originariamente em reais, o ganho de capital corresponde\n à diferença positiva, em reais, entre o valor de venda e o custo\n de aquisição da aplicação financeira.\n \n \n Neste caso, o valor de venda deve ser convertido para reais pela\n cotação do dólar fixada para compra, pelo Banco Central do Brasil,\n para a data do recebimento. Já o custo de aquisição deve ser\n convertido em reais pela cotação do dólar fixada para venda para a\n data do pagamento.\n \n \n Caso os rendimentos auferidos utilizados na aquisição sejam\n originariamente em moeda estrangeira, o ganho de capital\n corresponde à diferença positiva, em dólares dos Estados Unidos da\n América, entre o valor de venda e o custo de aquisição da\n aplicação, convertida em moeda nacional mediante a utilização da\n cotação do dólar fixada, para compra, pelo Banco Central do\n Brasil, para a data do recebimento\n \n \n (Medida Provisória nº 2.158-35, de 24 de agosto de 2001, art. 24;\n Lei nº 8.981, de 20 de janeiro de 1995, art. 21; Instrução\n Normativa SRF nº 208, de 27 de setembro de 2002; Instrução\n Normativa SRF nº 118, de 27 de dezembro de 2000; Solução de\n Consulta Interna Cosit nº 5, de 15 de fevereiro de 2013; e Solução\n de Consulta Cosit nº 33, de 26 de fevereiro de 2015)\n \n \n Como converter de dólares (US$) para reais (R$)\n \n \n Para a conversão de valores em reais, o valor expresso em moeda\n estrangeira deve ser convertido em dólar dos Estados Unidos da\n América e convertido em moeda nacional pela cotação do dólar dos\n Estados Unidos da América fixada, para compra ou venda, pelo Banco\n Central do Brasil (BCB) para a data da operação ou saldo, extraída\n do boletim de fechamento PTAX divulgado pelo BCB.\n \n \n (Instrução Normativa RFB nº 1.888, de 3 de maio de 2019)\n \n \n Compensação de perdas passadas\n \n \n Como os ganhos na venda de ativos no exterior estão sujeitos as\n regulações de ganho de capital, as perdas passadas em ativos no\n exterior não podem ser compensadas dos ganhos futuros. As\n operações com ativos no exterior são tratadas de maneira singular,\n não sendo possível compensar os prejuízos de algumas operações com\n lucros de outras.\n \n \n Mesmo para operações no mesmo mês, de forma conservadora, valem as\n disposições acima: informar cada operação de venda, sem compensar\n lucros com perdas.\n \n \n (Instrução Normativa SRF nº 84, de 11 de outubro de 2001, art. 2º,\n parágrafo único)\n \n \n Dedução de despesas operacionais\n \n \n As despesas com corretagem na venda de ativos no exterior podem\n ser abatidas do ganho de capital a ser tributado.\n \n \n Utilizando o Velotax em investimentos no exterior\n \n \n A{\" \"}\n navigate(`/${currentBroker.path}/exterior-darf`)}\n >\n Calculadora\n {\" \"}\n do Velotax para cálculo e pagamento de IR sobre ganhos em\n investimentos no exterior permite a inclusão manual de operações,\n e realiza os cálculos automaticamente seguindo as regras da\n Receita Federal.\n \n \n Após inserir as informações de suas operações de venda, o Velotax\n calculará os seus impostos devidos de acordo com as regras acima e\n emitirá a sua DARF para pagamento.\n \n \n Caso você esteja pagando em atraso, o Velotax incluirá\n automaticamente os juros e multa devidos na sua DARF.\n \n \n Ainda tem dúvidas? Acesse:\n \n -{\" \"}\n \n Central de Ajuda\n \n , onde nosso time de suporte responde suas dúvidas\n \n\n \n \n Imposto de Renda sobre Rendimentos\n \n \n Os rendimentos recebidos de outras pessoas físicas ou de fontes no\n exterior que ultrapassem o valor isento de R$1.903,98 por mês\n estarão sujeitos ao recolhimento mensal do imposto de renda.\n \n \n Nessa categoria, os principais rendimentos tributados incluem,\n entre outros:\n \n \n \n a) Autônomos, incluindo trabalhos sem vínculo empregatício;\n \n \n b) Aluguéis, incluindo a locação e sublocação de bens móveis e\n imóveis;\n \n \n c) Pensão, incluindo pensão alimentícia e alimentos\n provisionais;\n \n \n d) Exterior, incluindo quaisquer valores recebidos de fontes do\n exterior.\n \n \n \n (Regulamento do Imposto sobre a Renda - RIR/2018, arts. 118 a 121\n e art. 123, aprovado pelo Decreto nº 9.580, de 22 de novembro de\n 2018; Instrução Normativa RFB nº 1.500, de 29 de outubro de 2014,\n arts. 24, § 4º, 53 e 54; Instrução Normativa RFB nº 1.531, de 19\n de dezembro de 2014)\n \n Autônomos\n \n Inclui os profissionais não-assalariados que recebem de outras\n pessoas físicas, e que possuem rendimentos advindos da prestação\n de serviços de representante comercial autônomo, intermediação na\n realização de negócios por conta de terceiros, prestação de\n serviços de transporte de passageiros, prestação de serviços de\n transporte de cargas, entre outros trabalhos sem vínculo\n empregatício.\n \n Aluguéis\n \n Inclui proprietários de imóveis que possuem rendimentos de\n aluguéis, considerando que:\n \n \n \n (a) Apenas o valor líquido do aluguel é tributado. As despesas\n de IPTU, condomínio, cobrança/recebimento e aluguel no caso de\n imóvel sublocado podem ser descontadas do rendimento;\n \n \n (b) Se você tiver mais de um imóvel e receber mais de um aluguel\n por mês, será necessário considerar a quantia total dos aluguéis\n recebidos.\n \n \n \n A data do pagamento, para efeito de incidência do imposto, será\n considerada aquela em que o locatário pagar o aluguel ao\n proprietário do bem ou à administradora.\n \n Pensão Alimentícia\n \n Inclui os alimentandos que recebem pensão alimentícia. A pensão\n alimentícia pode ser recebida não apenas pelos filhos, mas por\n qualquer pessoa que tenha recebido esse benefício por decisão\n judicial, acordo homologado judicialmente ou por escritura\n pública. O contribuinte é o beneficiário da pensão, ainda que\n tenha sido paga a seu representante legal.\n \n Exterior\n \n Inclui pessoas físicas com rendimentos ou quaisquer outros valores\n recebidos de fontes do exterior. Neste caso, é importante observar\n a possível existência de{\" \"}\n \n acordos, convenções e tratados internacionais\n {\" \"}\n firmados entre o Brasil e o país de origem dos rendimentos para\n evitar a bitributação.\n \n \n Qual imposto de renda incide\n \n \n O imposto sobre rendimentos é calculado sobre o total recebido no\n mês, mediante a aplicação da seguinte tabela progressiva mensal:\n \n \n \n a) Até R$ 1.903,98 não há impostos a pagar;\n \n \n b) De R$ 1.903,99 até R$ 2.826,65, a alíquota é de 7,5% sobre os\n rendimentos, com parcela a deduzir de R$ 142,80;\n \n \n c) De R$ 2.826,66 até R$ 3.751,05, a alíquota é de 15% sobre os\n rendimentos, com parcela a deduzir de R$ 354,80;\n \n \n d) De R$ 3.751,06 até R$ 4.664,68, a alíquota é de 22,5% sobre\n os rendimentos, com parcela a deduzir de R$ 636,13;\n \n \n e) Acima de R$ 4.664,68, a alíquota é de 27,5% sobre os\n rendimentos, com parcela a deduzir de R$ 869,36.\n \n \n \n (Lei nº 11.482, de 31 de maio de 2007, arts. 1º e 3º; Lei nº\n 12.024, de 27 de agosto de 2009, art. 3º; Regulamento do Imposto\n sobre a Renda - RIR/2018, art. 121, aprovado pelo Decreto nº\n 9.580, de 22 de novembro de 2018; Instrução Normativa RFB nº\n 1.500, de 29 de outubro de 2014, arts. 53 a 57 e 65; Solução de\n Consulta Interna Cosit nº 3, de 8 de fevereiro de 2012; e Solução\n de Consulta Interna Cosit nº 6, de 25 de maio de 2015)\n \n \n Quando o imposto deve ser pago\n \n \n O recolhimento do imposto de renda deve ser feito até o último dia\n útil do mês seguinte ao recebimento dos rendimentos.\n \n \n O código a ser utilizado no Documento de Arrecadação das Receitas\n Federais (Darf) para pagamento desse tributo é 0190.\n \n \n (Lei nº 8.383, de 30 de dezembro de 1991, art. 7º; e Instrução\n Normativa RFB nº 1.500, de 29 de outubro de 2014, arts. 53 a 57 e\n 67)\n \n \n \n \n \n Deduções no imposto de renda\n \n \n São admitidas as seguintes deduções na base de cálculo do imposto\n sobre rendimentos:\n \n \n \n a) Contribuição previdenciária oficial, o INSS;\n \n \n b) Dependentes, sendo R$ 189,59 por dependente a partir do ano\n 2021;\n \n \n c) Pensão alimentícia, quando paga em cumprimento de decisão\n judicial, inclusive os alimentos provisionais, de acordo\n homologado judicialmente ou de escritura pública; e\n \n \n d) Despesas relacionadas à atividade do profissional autônomo\n \n \n \n No caso de autônomos, somente as seguintes categorias de despesas\n podem ser deduzidas da base tributária:\n \n \n \n i) Despesas trabalhistas;\n \n \n ii) Serviços de terceiros;\n \n \n iii) Despesas com custeio e funcionamento;\n \n \n iv) Propaganda, assinatura de jornais e revistas;\n \n v) Roupas especiais;\n \n vi) Contribuições a sindicatos, associações ou conselhos;\n \n \n vii) Despesas com congressos e seminários;\n \n \n viii) Honorários profissionais;\n \n \n ix) Imóvel residencial ou profissional;\n \n \n x) Manutenção e conservação;\n \n \n xi) Correios e transporte;\n \n \n xii) Instalações, máquinas e equipamentos;\n \n \n xii) Despesas Comuns como rateio sob forma de Condomínio;\n \n \n xiv) Outras despesas necessárias à atividade específica e\n individual de cada contribuinte não contempladas anteriormente.\n \n \n \n (Lei nº 7.290, de 19 de dezembro de 1984; Lei nº 7.713, de 22 de\n dezembro de 1988, art. 9º; Regulamento do Imposto sobre a Renda -\n RIR/2018, arts. 39 e 158, § 1º, aprovado pelo Decreto nº 9.580, de\n 22 de novembro de 2018; e Parecer Normativo CST nº 122, de 8 de\n junho de 1974)\n \n \n Utilizando o Velotax para IR em Rendimentos\n \n \n A{\" \"}\n navigate(`/${currentBroker.path}/autonomos`)}\n >\n Calculadora\n {\" \"}\n do Velotax para cálculo e pagamento de IR sobre rendimentos de\n pessoas físicas ou fontes no exterior permite a inclusão manual de\n operações, e realiza os cálculos automaticamente seguindo as\n regras da Receita Federal.\n \n \n Após inserir os seus rendimentos do mês, o Velotax calculará os\n seus impostos devidos de acordo com as regras acima e emitirá a\n sua DARF para pagamento.\n \n \n Caso você esteja pagando em atraso, o Velotax também incluirá\n automaticamente os juros e multa devidos na sua DARF.\n \n \n Ainda tem dúvidas? Acesse:\n \n \n -{\" \"}\n \n Fórum\n {\" \"}\n , onde nossa comunidade de usuários responde suas dúvidas\n \n \n
\n
\n\n \n {CompaniesExemptList?.content}\n \n
\n );\n};\n","import { Layout } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const LayoutHeader = styled(Layout.Header)`\n height: 64px;\n padding: 0 32px;\n background: var(--white);\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n\n span {\n display: flex;\n }\n\n .ant-btn.menu-button {\n border-radius: 4px;\n background-color: var(--ant-primary-color) !important;\n svg {\n width: 24px;\n height: 24px;\n margin: 0 0 1px 2px;\n fill: var(--white);\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n z-index: 2;\n padding: 0 24px;\n column-gap: 8px;\n justify-content: space-between;\n box-shadow: rgba(0, 0, 102, 0.16) 0px 0px 16px 0px;\n }\n`;\n","import React from \"react\";\nimport { Col, Row } from \"antd\";\nimport { HiOutlineMenu } from \"react-icons/hi\";\nimport Button from \"../Button\";\nimport { isMobile } from \"../../utils\";\nimport { LayoutHeader } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n\ninterface IHeaderProps {}\n\nconst Header: React.FC = () => {\n const { setShowDrawer } = useAuth();\n\n const theme = {\n isMobile: isMobile(),\n };\n\n return (\n <>\n \n {isMobile() && (\n \n \n }\n onClick={() => setShowDrawer(true)}\n />\n \n \n )}\n \n \n );\n};\n\nexport default Header;\n","import styled from \"styled-components\";\n\nexport const LogoStyled = styled.div`\n height: 64px;\n background-color: transparent;\n &.sidebar {\n .ant-image {\n margin: 0;\n .ant-image-img {\n height: 30px;\n width: 54px;\n }\n }\n }\n .ant-image {\n height: 64px;\n margin: 0 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n .ant-image-img {\n height: 32px;\n }\n }\n\n &.mobile {\n background-color: var(--white);\n .ant-image {\n margin: 0 8px;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-image {\n .ant-image-img {\n margin: 0px;\n max-width: 40px;\n }\n }\n }\n`;\n","export default __webpack_public_path__ + \"static/media/Logo 1_Branca.24ff6bb2.png\";","import { Image } from \"antd\";\nimport { LogoStyled } from \"./styles\";\nimport WarrenLogo from \"../../assets/Logo 1_Branca.png\";\n\ninterface LogoProps {\n className?: string;\n src?: string;\n}\n\nexport const Logo: React.FC = ({ src, className }) => {\n return (\n \n \n \"Warren\n \n \n );\n};\n","import styled from \"styled-components\";\nimport { Drawer, Layout, Menu } from \"antd\";\n\nexport const DrawerSider = styled(Drawer)`\n z-index: 99999999999;\n .ant-drawer-wrapper-body {\n position: relative;\n .ant-drawer-header {\n right: 16px;\n top: 24px;\n padding: 0;\n position: absolute;\n }\n .ant-drawer-body {\n padding: 0;\n background: var(--dark-3);\n }\n }\n`;\n\nexport const LayoutSider = styled(Layout.Sider)`\n top: 0;\n left: 0;\n z-index: 11;\n height: 100%;\n position: fixed;\n box-shadow: 0px 0px 48px rgba(0, 0, 102, 0.08);\n\n &.expandedSidebar {\n width: 192px !important;\n min-width: 192px !important;\n max-width: 192px !important;\n }\n\n .ant-layout-sider-children {\n background-color: var(--dark-3);\n }\n`;\n\nexport const Modules = styled(Menu)`\n overflow-y: auto;\n overflow-x: hidden;\n border-right: none;\n height: calc(100% - 64px);\n background-color: var(--dark-3) !important;\n\n @media only screen and (max-device-width: 812px) {\n height: calc(100% - 66px);\n }\n`;\n\nexport const Module = styled(Menu.Item)`\n color: var(--white) !important;\n margin: 0 !important;\n height: 64px !important;\n padding-left: 20px !important;\n background-color: var(--dark-3);\n transition: color 500ms ease-in-out;\n\n &:first-of-type {\n border-top: 1px solid var(--dark-1);\n }\n\n * {\n z-index: 1;\n }\n\n &.conta {\n bottom: 0;\n left: -1px;\n position: absolute;\n border-top: 1px solid var(--dark-1);\n }\n\n svg {\n margin-right: 4px;\n &.no-fill {\n stroke: var(--ghost);\n transition: stroke 0.3s ease-in-out;\n }\n }\n\n &.ant-menu-item:active {\n background-color: var(--dark-3) !important;\n }\n &.ant-menu-item-selected {\n background-color: var(--dark-3) !important;\n &::after {\n border-right: none;\n opacity: 0;\n }\n &::before {\n opacity: 1;\n }\n }\n\n &::before {\n content: \"\";\n top: 8px;\n left: 10px;\n z-index: 0;\n opacity: 0;\n position: absolute;\n border-radius: 4px;\n width: calc(100% - 20px);\n height: calc(100% - 16px);\n background-color: var(--dark-1);\n transition: opacity 500ms ease-in-out;\n }\n\n &:hover {\n color: var(--ant-primary-color) !important;\n svg {\n color: var(--ant-primary-color) !important;\n }\n svg:not(.no-fill) {\n fill: var(--ant-primary-color) !important;\n }\n svg.no-fill {\n stroke: var(--ant-primary-color) !important;\n }\n }\n\n &.ant-menu-item-selected {\n color: var(--ant-primary-color) !important;\n svg {\n color: var(--ant-primary-color);\n }\n svg:not(.no-fill) {\n fill: var(--ant-primary-color);\n }\n svg.no-fill {\n stroke: var(--ant-primary-color);\n }\n }\n`;\n\nexport const SessionContainer = styled.div`\n height: 64px;\n display: flex;\n flex-direction: column;\n background-color: var(--dark-3);\n`;\n\nexport const ActionContainer = styled.div`\n width: 100%;\n height: 64px;\n padding: 8px;\n border-top: 1px solid var(--dark-1);\n\n .active {\n color: var(--ant-primary-color);\n }\n`;\n\nexport const ActionButton = styled.button`\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: space-around;\n width: 100%;\n height: 100%;\n font-size: 12px;\n transition: 0.3s;\n\n &:hover {\n color: var(--ant-primary-color);\n transition: 0.3s;\n &.logout {\n color: var(--ant-error-color);\n }\n }\n\n svg {\n width: 20px;\n height: 20px;\n }\n`;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.75 17H17.75C18.855 17 19.75 16.105 19.75 15V5C19.75 3.895 18.855 3 17.75 3H9.75C8.645 3 7.75 3.895 7.75 5V7M7.75 12H11.75M7.75 16H11.75M13.75 21H5.75C4.645 21 3.75 20.105 3.75 19V9C3.75 7.895 4.645 7 5.75 7H13.75C14.855 7 15.75 7.895 15.75 9V19C15.75 20.105 14.855 21 13.75 21Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgDarfs(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDarfs);\nexport default __webpack_public_path__ + \"static/media/darfs.33b52582.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.307 19.257C16.923 17.417 14.705 16 12 16C9.29499 16 7.07699 17.417 6.69299 19.257M18.3639 5.63604C21.8787 9.15076 21.8787 14.8492 18.3639 18.3639C14.8492 21.8787 9.15074 21.8787 5.63604 18.3639C2.12132 14.8492 2.12132 9.15074 5.63604 5.63604C9.15076 2.12132 14.8492 2.12132 18.3639 5.63604ZM14.1213 7.87868C15.2929 9.05025 15.2929 10.9497 14.1213 12.1213C12.9497 13.2929 11.0502 13.2929 9.87868 12.1213C8.70711 10.9497 8.70711 9.05025 9.87868 7.87868C11.0502 6.70711 12.9497 6.70711 14.1213 7.87868Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgConta(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgConta);\nexport default __webpack_public_path__ + \"static/media/conta.532d26e3.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23 19V17.904C23 16.523 21.881 15.404 20.5 15.404H19.699M1 19V17.904C1 16.523 2.119 15.404 3.5 15.404H4.301M17.339 19V17.399C17.339 15.466 15.772 13.899 13.839 13.899H10.16C8.227 13.899 6.66 15.466 6.66 17.399V19M20.7925 9.52352C21.5825 10.3136 21.5825 11.5944 20.7925 12.3845C20.0025 13.1745 18.7216 13.1745 17.9316 12.3845C17.1415 11.5944 17.1415 10.3135 17.9316 9.52352C18.7216 8.73349 20.0025 8.73349 20.7925 9.52352ZM14.2026 5.91236C15.4191 7.12884 15.4191 9.10115 14.2026 10.3176C12.9861 11.5341 11.0138 11.5341 9.79732 10.3176C8.58084 9.10116 8.58084 7.12885 9.79732 5.91236C11.0138 4.69588 12.9861 4.69588 14.2026 5.91236ZM6.06848 9.52352C6.85851 10.3136 6.85851 11.5944 6.06848 12.3845C5.27845 13.1745 3.99756 13.1745 3.20753 12.3845C2.4175 11.5944 2.4175 10.3135 3.20753 9.52352C3.99756 8.73349 5.27845 8.73349 6.06848 9.52352Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgClientes(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClientes);\nexport default __webpack_public_path__ + \"static/media/clientes.50c0ab33.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 9.5H19M17.4 13.5H15M12.095 16.5C11.92 16.061 11.65 15.667 11.303 15.346C10.716 14.802 9.946 14.5 9.146 14.5H7.854C7.054 14.5 6.284 14.802 5.697 15.346C5.35 15.667 5.08 16.061 4.905 16.5M10.091 8.15901C10.9697 9.03769 10.9697 10.4623 10.091 11.341C9.21232 12.2197 7.7877 12.2197 6.90902 11.341C6.03034 10.4623 6.03034 9.03769 6.90902 8.15901C7.7877 7.28033 9.21232 7.28033 10.091 8.15901ZM2 18.5V5.541C2 4.414 2.914 3.5 4.041 3.5H20C21.105 3.5 22 4.395 22 5.5V18.5C22 19.605 21.105 20.5 20 20.5H4C2.895 20.5 2 19.605 2 18.5Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgAssessores(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAssessores);\nexport default __webpack_public_path__ + \"static/media/assessores.ebef8d7b.svg\";\nexport { ForwardRef as ReactComponent };","import clsx from \"clsx\";\nimport { useNavigate } from \"react-router-dom\";\nimport React, { Dispatch, SetStateAction, useState } from \"react\";\nimport { Logo } from \"../Logo\";\nimport { isMobile } from \"../../utils\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { DrawerSider, LayoutSider, Module, Modules } from \"./styles\";\nimport { ReactComponent as DarfsIcon } from \"../../assets/icons/sidebar/darfs.svg\";\nimport { ReactComponent as ContaIcon } from \"../../assets/icons/sidebar/conta.svg\";\nimport { ReactComponent as ClientesIcon } from \"../../assets/icons/sidebar/clientes.svg\";\nimport { ReactComponent as AssessoresIcon } from \"../../assets/icons/sidebar/assessores.svg\";\n\ninterface ISideBarProps {\n pagePath: string;\n}\n\ninterface ISideBarContainerProps {\n visible: boolean;\n setVisible: Function;\n expandedSidebar: boolean;\n setExpandedSidebar: Dispatch>;\n}\n\nconst SideBarContainer: React.FC = ({\n children,\n visible,\n setVisible,\n expandedSidebar,\n setExpandedSidebar,\n}) =>\n isMobile() ? (\n setVisible(false)}\n >\n {children}\n \n ) : (\n {\n setExpandedSidebar(true);\n }}\n onMouseLeave={() => {\n setExpandedSidebar(false);\n }}\n >\n {children}\n \n );\n\nconst Sidebar: React.FC = ({ pagePath }) => {\n const navigate = useNavigate();\n const {\n user,\n showDrawer,\n setShowDrawer,\n expandedSidebar,\n setExpandedSidebar,\n } = useAuth();\n\n const [openKeys] = useState([\"\"]);\n\n const handleNavigate = (path: string) => {\n if (path.includes(\"http\")) {\n window.open(path, \"_blank\")?.focus();\n } else {\n setShowDrawer(false);\n navigate(path);\n }\n };\n\n return (\n \n \n \n {user.user && (\n handleNavigate(\"/clients\")}\n icon={}\n >\n Clientes\n \n )}\n {user.user && (user.user.office || user?.user?.admin) && (\n handleNavigate(\"/professionals\")}\n icon={}\n >\n Assessores\n \n )}\n {user.user && (\n handleNavigate(\"/darf\")}\n icon={}\n >\n DARFs\n \n )}\n {user.user && (\n }\n onClick={() => handleNavigate(\"/conta\")}\n >\n Minha conta\n \n )}\n \n \n );\n};\n\nexport default Sidebar;\n","import { Layout as AntLayout } from \"antd\";\nimport { BiX } from \"react-icons/bi\";\nimport styled from \"styled-components\";\n\nexport const MainLayout = styled(AntLayout)`\n height: 100%;\n background-color: var(--white);\n position: relative;\n`;\n\nexport const Layout = styled(AntLayout)`\n height: 100%;\n margin-left: 64px;\n position: relative;\n background-color: var(--white);\n &:after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n transition: background-color 0.2s;\n }\n &.expandedSidebar {\n &:after {\n width: 100%;\n height: 100%;\n background-color: rgb(0, 0, 0, 0.2);\n }\n }\n & > .content {\n height: 100%;\n &.overflow {\n overflow-y: auto;\n }\n }\n @media only screen and (max-device-width: 812px) {\n margin-left: 0;\n }\n`;\n\nexport const BannerContainer = styled.div`\n width: 100%;\n height: 42px;\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n padding: 8px 32px 8px 24px;\n background-color: var(--ant-primary-color-hover);\n\n @media only screen and (max-device-width: 812px) {\n font-size: 12px;\n line-height: 16px;\n }\n`;\n\nexport const BannerAnchor = styled.a`\n color: black;\n min-width: 80px;\n font-weight: 600;\n margin-left: 16px;\n text-align: center;\n text-decoration: underline;\n\n &:hover {\n color: var(--ant-primary-9);\n text-decoration: underline;\n }\n\n @media only screen and (max-device-width: 812px) {\n margin-left: 12px;\n }\n`;\n\nexport const CloseIcon = styled(BiX)`\n position: absolute;\n right: 8px;\n width: 20px;\n height: 20px;\n color: black;\n cursor: pointer;\n transition: 0.3s;\n\n &:hover {\n color: var(--ant-primary-9);\n transition: 0.3s;\n }\n`;\n","import clsx from \"clsx\";\nimport { Typography } from \"antd\";\nimport { useLocation } from \"react-router-dom\";\nimport React, { useMemo, useState } from \"react\";\nimport Header from \"../Header\";\nimport Sidebar from \"../Sidebar\";\nimport { isMobile } from \"../../utils\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport {\n BannerAnchor,\n BannerContainer,\n CloseIcon,\n Layout,\n MainLayout,\n} from \"./styles\";\n\ninterface IPageWrapperProps {\n header?: boolean;\n sideBar?: boolean;\n overflow?: boolean;\n page?: string;\n}\n\nconst PageWrapper: React.FC = ({\n children,\n sideBar,\n header,\n overflow,\n}) => {\n const { pathname } = useLocation();\n const { user, expandedSidebar } = useAuth();\n const [bannerClosed, setBannerClosed] = useState(false);\n\n const currentPage = useMemo(\n () =>\n [\n {\n sidebar: true,\n header: true,\n path: \"/\",\n name: \"Instruções\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/conta\",\n name: \"Minha conta\",\n title: \"Minha conta\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/clients\",\n name: \"Clientes\",\n title: \"Clientes\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/darf\",\n name: \"Envio de DARF\",\n title: \"Envio de DARF\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/professionals\",\n name: \"Profissionais\",\n title: \"Profissionais\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/earnings\",\n name: \"Faturamento\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/regulacao\",\n name: \"Regulação\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/p/cadastrar\",\n name: \"Cadastre-se\",\n title: \"Cadastre-se\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/p/login\",\n name: \"Entrar\",\n title: \"Entrar\",\n },\n ].find(\n (page) =>\n pathname ===\n (page.path.substring(0, 1) === \"/\" ? page.path : `/${page.path}`)\n ),\n [pathname]\n );\n\n return (\n \n {(sideBar ||\n (typeof currentPage?.sidebar === \"boolean\" &&\n currentPage?.sidebar)) && (\n \n )}\n \n {isMobile() &&\n (header ||\n (typeof currentPage?.header === \"boolean\" &&\n currentPage?.header)) &&
}\n
\n {children}\n
\n \n \n );\n};\n\nexport default PageWrapper;\n","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport api from \"../../services/api\";\nimport { Spin } from \"antd\";\nimport Button from \"../../components/Button\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport const Authorization: React.FC = () => {\n const { token } = useParams();\n const [isSucess, setIsSucess] = useState(false);\n const [loading, setLoading] = useState(false);\n const { user } = useAuth();\n\n const navigate = useNavigate();\n\n useEffect(() => {\n setLoading(true);\n api\n .post(`/auth/client/${token}`, {})\n .then(() => {\n setIsSucess(true);\n })\n .catch(() => setIsSucess(false))\n .finally(() => setLoading(false));\n }, [token]);\n\n return (\n \n
\n {loading ? (\n \n ) : isSucess ? (\n

Permissão Concedida.

\n ) : (\n

Houve algum erro.

\n )}\n {\n user?.user\n ?\n navigate(\"/clients\")}\n >\n Voltar para o APP\n \n :\n null\n }\n
\n
\n );\n};\n","import React, { useState } from \"react\";\nimport { Form, Input, message } from \"antd\";\nimport { useNavigate } from \"react-router-dom\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { validationMaxLength20 } from \"../../utils/formValidations\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\n\ninterface IData {\n username: string;\n}\n\nexport const ForgotPassword: React.FC = () => {\n const navigate = useNavigate();\n const [form] = Form.useForm();\n const [loading, setLoading] = useState(false);\n const { setApiError } = useAuth();\n\n const onFinish = async (data: IData) => {\n try {\n setLoading(true);\n\n const res = await api.post(\"/accountants/forgot-password\", {\n username: data.username.replace(/[_.-/-]/g, \"\"),\n });\n message.success(\n `O link de recuperação de senha foi enviado para o email ${res.data?.email}`,\n 5\n );\n\n setTimeout(() => {\n setLoading(false);\n setApiError(\"\");\n navigate(\"/p/login\");\n }, 500);\n } catch (err: any) {\n if (err?.response?.status === 400 || err?.response?.status === 500) {\n message.error(err.response?.data?.message || \"Ocorreu um erro\");\n }\n setLoading(false);\n return;\n }\n };\n\n const handleNavigateCreateAccount = () => {\n navigate(\"/p/cadastrar\");\n };\n\n const handleNavigateLogin = () => {\n navigate(\"/p/login\");\n };\n\n return (\n \n
\n
\n

Recupere sua senha

\n
\n \n \n \n\n
\n \n Recuperar\n \n
\n
\n \n Voltar para o login\n \n
\n
\n\n
\n Ainda não possui uma conta?\n \n Cadastrar\n \n
\n
\n
\n
\n );\n};\n","import React, { useState } from \"react\";\nimport { Form, Input, message } from \"antd\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport Button from \"../../components/Button\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport {\n validationPassConfirmation,\n validationPassword,\n} from \"../../utils/formValidations\";\nimport api from \"../../services/api\";\n\ninterface IData {\n pass: string;\n passwordConfirmation: string;\n}\n\nexport const ChangePassword: React.FC = () => {\n const navigate = useNavigate();\n const { token } = useParams();\n const [form] = Form.useForm();\n const [loading, setLoading] = useState(false);\n\n const onFinish = async (data: IData) => {\n try {\n setLoading(true);\n\n await api.post(`/accountants/change-password/${token}`, {\n password: data.pass,\n passwordConfirmation: data.passwordConfirmation,\n });\n message.success(\"Senha alterada com sucesso\", 5);\n\n setTimeout(() => {\n setLoading(false);\n navigate(\"/p/login\");\n }, 500);\n } catch (err: any) {\n if (err?.response?.status === 400) {\n message.error(err.response?.data?.message || \"Ocorreu um erro\");\n }\n setLoading(false);\n return;\n }\n };\n\n return (\n \n
\n
\n

Cadastrar senha

\n
\n \n \n \n\n \n \n \n\n
\n \n Enviar\n \n
\n \n
\n
\n
\n );\n};\n","import styled from \"styled-components\";\n\nexport const HeaderContainer = styled.header`\n z-index: 1;\n display: flex;\n column-gap: 32px;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 80px;\n padding: 26px 48px;\n top: 0;\n position: fixed;\n border-bottom: 1px solid transparent;\n background-color: var(--dark-2);\n box-shadow: 0px 8px 24px rgba(0, 0, 88, 0.08);\n\n img {\n @media only screen and (max-device-width: 390px) {\n margin: 0px;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n column-gap: 2px;\n padding: 13px 12px;\n }\n\n .buttons {\n display: flex;\n column-gap: 16px;\n\n @media only screen and (max-device-width: 812px) {\n column-gap: 2px;\n }\n\n button {\n height: 40px;\n font-weight: 500;\n color: var(--white);\n &.ant-btn-primary {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n }\n`;\n","import { useNavigate, useLocation } from \"react-router-dom\";\nimport Button from \"../../Button\";\nimport { HeaderContainer } from \"./styles\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { Logo } from \"../../Logo\";\n\nexport const Header = () => {\n const { user } = useAuth();\n const navigate = useNavigate();\n const { pathname } = useLocation();\n\n return (\n \n \n {!user.user && !pathname.includes(\"/p/authorize-accountant\") && (\n
\n navigate(\"/p/login\")}\n >\n ENTRAR\n \n navigate(\"/p/cadastrar\")}\n >\n COMEÇAR\n \n
\n )}\n
\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n height: 100%;\n`;\n","import { Header } from \"./Header\";\nimport { Container } from \"./styles\";\n\nexport const PublicWrapper: React.FC = ({ children }) => {\n return (\n \n
\n {children}\n \n );\n};\n","import React, { useEffect } from \"react\";\nimport { Form, message } from \"antd\";\nimport { useParams } from \"react-router-dom\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport api from \"../../services/api\";\n\nexport const AuthorizeAccountant: React.FC = () => {\n const { token } = useParams();\n\n useEffect(() => {\n api\n .post(`/clients/authorize-accountant/${token}`)\n .then(() => {\n message.success(\"Usuário autorizado com sucesso\", 5);\n })\n .catch((err: any) => {\n if (err?.response?.status === 400) {\n message.error(err.response?.data?.message || \"Ocorreu um erro\");\n }\n\n return;\n });\n }, [token]);\n\n return (\n \n
\n
\n

Autorização de usuário

\n
\n
\n
\n
\n );\n};\n","import { ConfigProvider } from \"antd\";\nimport { Navigate, Route, Routes as Switch } from \"react-router-dom\";\nimport SSO from \"../pages/SSO\";\nimport { Login } from \"../pages/Login\";\nimport { Darfs } from \"../pages/Darfs\";\nimport Cadastro from \"../pages/Cadastro\";\nimport { Clients } from \"../pages/Clients\";\nimport PrivateRoute from \"./PrivateRoutes\";\nimport OnlyPublicRoute from \"./OnlyPublicRoute\";\nimport OnlyClientAccountPermissionRoute from \"./OnlyClientAccountPermissionRoute\";\nimport { MinhaConta } from \"../pages/MinhaConta\";\nimport PageNotFound from \"../pages/PageNotFound\";\nimport { Regulation } from \"../pages/Regulation\";\nimport PageWrapper from \"../components/PageWrapper\";\nimport { Professionals } from \"../pages/Professionals\";\nimport { Authorization } from \"../pages/Authorization\";\nimport { ForgotPassword } from \"../pages/ForgotPassword\";\nimport { ChangePassword } from \"../pages/ChangePassword\";\nimport { PublicWrapper } from \"../components/PublicWrapper\";\nimport { AuthorizeAccountant } from \"../pages/AuthorizeAccountant\";\n\nfunction Routes() {\n ConfigProvider.config({\n theme: {\n primaryColor: \"#E02B57\",\n infoColor: \"#181818\",\n errorColor: \"#DD2244\",\n successColor: \"#00BC75\",\n },\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\n \n \n \n }\n >\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n \n\n } />\n } />\n \n \n );\n}\n\nexport default Routes;\n","import { createGlobalStyle } from \"styled-components\";\n\nexport default createGlobalStyle`\n body {\n --red: #DD2244;\n --green: #0A9E5A;\n --green-1: #0A9E5A;\n --white: #ffffff;\n --black: #000000;\n --ghost: #E8E8E8;\n --gray-1: #ABAAA8;\n --gray-2: #808080;\n --gray-3: #3D3D3D;\n --dark-1: #242424;\n --dark-2: #1f1f1f;\n --dark-3: #181818;\n --velotax-ghost: #f4f6f8;\n --velotax-ghost-white: #f4f6f8;\n --velotax-disabled: #626368;\n --velotax-font-color: var(--dark-1);\n --velotax-font-color-ghost: #9099aa;\n --velotax-background-color: #ffffff;\n --velotax-background-color-ghost: #eaecee;\n --velotax-shadow-primary: rgba(0, 0, 88, 0.24);\n --velotax-shadow-default: rgba(144, 153, 170, 0.16);\n --velotax-orange: #ff8400;\n --light-gray: #ECF0F6;\n &.dark {\n --velotax-ghost: #101112;\n --velotax-ghost-white: #848688;\n --velotax-disabled: #525358;\n --velotax-font-color: #cacbcc;\n --velotax-font-color-ghost: #9099aa;\n --velotax-background-color: #1a1b1c;\n --velotax-background-color-ghost: #222222;\n --velotax-shadow-primary: rgba(0, 0, 88, 0.24);\n --velotax-shadow-default: rgba(144, 153, 170, 0.16);\n }\n }\n\n * {\n margin: 0;\n padding: 0;\n outline: 0;\n box-sizing: border-box;\n }\n\n *:focus {\n outline: 0;\n }\n\n html, body, #root {\n height: 100%;\n overflow: hidden;\n color: var(--light-gray);\n }\n\n body {\n -webkit-font-smoothing: antialiased;\n position: relative;\n width: 100% !important;\n background: var(--velotax-background-color);\n }\n\n body, input, button {\n font: 14px 'Poppins', sans-serif;\n }\n\n a {\n text-decoration: none;\n }\n\n ul {\n list-style: none;\n }\n\n button {\n cursor: pointer;\n background: transparent;\n border: 0;\n outline: 0;\n color: var(--white);\n letter-spacing: 0.4px;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: var(--velotax-font-color);\n }\n\n body > iframe {\n display: none;\n }\n\n .full-width {\n width: 100%;\n }\n\n .column-center {\n text-align: center;\n }\n\n .beauty-scrollbar.zero-scrollbar {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 0;\n }\n }\n\n .beauty-scrollbar.slim-scrollbar {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 4px;\n }\n }\n\n .ant-modal-wrap,\n .beauty-scrollbar {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-thumb,\n ::-webkit-scrollbar-thumb {\n border-radius: 0;\n background-color: var(--ant-primary-color);\n }\n\n &::-webkit-scrollbar-track,\n ::-webkit-scrollbar-track {\n background-color: var(--velotax-background-color-ghost);\n }\n }\n\n .input {\n\n .label {\n margin-bottom: 6px;\n }\n\n & + div {\n margin-top: 12px;\n }\n }\n\n .ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .error {\n margin: 12px auto -12px auto;\n color: var(--ant-error-color);\n }\n\n .success {\n color: var(--ant-success-color);\n }\n\n .loading-session {\n background: var(--ant-info-color);\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 12;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n width: 250px;\n padding: 20px;\n }\n\n .anticon {\n color: var(--white);\n\n svg {\n\n height: 40px;\n width: 40px;\n }\n }\n }\n\n .hiring-modal {\n .ant-typography {\n color: var(--velotax-font-color);\n }\n .ant-modal-title::before {\n display: none;\n }\n .hiring-modal-title {\n font-size: 32px;\n font-weight: bold;\n margin: 32px auto;\n text-align: center;\n color: var(--ant-primary-color);\n }\n }\n\n .ant-modal .malha-fina-button {\n width: 100% !important;\n }\n\n ::placeholder {\n color: var(--velotax-font-color-ghost) !important;\n }\n .ant-upload {\n color: var(--ant-primary-color);\n background-color: transparent !important;\n /* border-color: var(--ant-primary-color) !important; */\n }\n\n .ant-btn-text:focus,\n .ant-btn-text:hover {\n color: var(--velotax-font-color-ghost);\n }\n .ant-layout-sider-light,\n .ant-menu {\n background-color: var(--dark-2);\n }\n\n .ant-table-filter-dropdown {\n min-width: 150px;\n }\n\n .ant-table-filter-dropdown-btns {\n .ant-btn-sm {\n width: 50%\n }\n }\n\n .ant-card {\n box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\n cursor: pointer;\n }\n .ant-card.lembretes {\n height: 150px;\n }\n\n @media screen and (max-width: 575px) {\n .ant-card {\n height: auto;\n }\n }\n\n /* .anticon, */\n .ant-btn-text,\n .ant-checkbox + span,\n .ant-divider-inner-text,\n /* .ant-dropdown-menu, */\n /* .ant-dropdown-menu-item, */\n .ant-empty,\n .ant-form,\n .ant-form-item-label > label,\n .ant-input,\n .ant-input-number-input,\n .ant-list,\n .ant-list-item,\n .ant-radio-wrapper,\n .ant-select,\n /* .ant-select-dropdown,\n .ant-select-item, */\n .ant-upload-list-item-name,\n .ant-typography {\n color: var(--velotax-font-color);\n }\n .ant-input[disabled],\n .ant-select-disabled .ant-select-selector {\n color: var(--velotax-disabled) !important;\n background-color: var(--light-gray);\n }\n /* .ant-select-item:hover,\n .ant-dropdown-menu-item:hover,\n .ant-select-item-option-active {\n }*/\n .ant-select-item-option-selected {\n color: var(--black) !important;\n background-color: var(--gray-1) !important;\n border: none;\n }\n .ant-modal-footer,\n .ant-divider {\n border-color: var(--velotax-ghost-white);\n }\n .ant-btn.ant-btn-icon-only.ant-btn-primary {\n background: transparent;\n svg {\n fill: var(--white);\n }\n }\n .ant-btn.ant-btn-icon-only {\n svg {\n fill: var(--velotax-font-color);\n }\n }\n\n .success-icon {\n svg {\n fill: var(--ant-success-color) !important;\n }\n }\n .error-icon {\n svg {\n fill: var(--ant-error-color) !important;\n }\n }\n\n .footer-secure {\n position: fixed;\n background: var(--white);\n height: 56px;\n bottom: 24px;\n right: 104px;\n z-index: 10;\n display: flex;\n justify-content: flex-end;\n padding: 0 10px;\n max-height: 64px;\n border-radius: 6px;\n box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.1);\n\n &.goleft {\n left: 32px;\n right: auto;\n }\n\n img {\n width: 70px;\n }\n }\n\n .footer-velotax {\n left: 0;\n right: auto;\n row-gap: 5px;\n display: flex;\n box-shadow: none;\n align-items: center;\n flex-direction: column;\n background-color: transparent;\n transform: scale(0.75) translateY(16px);\n opacity: 0.625;\n color: var(--velotax-font-color);\n :hover {\n color: var(--velotax-font-color);\n i {\n opacity: 0.8;\n }\n }\n\n img {\n width: 128px;\n }\n\n i {\n font-size: 12px;\n font-weight: 600;\n }\n }\n\n .poweredby-velotax {\n height: 64px;\n padding: 6px 10px;\n max-height: 64px;\n row-gap: 5px;\n display: flex;\n align-items: center;\n flex-direction: column;\n color: var(--velotax-font-color);\n :hover {\n color: var(--velotax-font-color);\n i {\n opacity: 0.8;\n }\n }\n \n &.sidebar {\n border-top: 1px solid var(--dark-1);\n img {\n height: 20px;\n }\n i {\n font-size: 12px;\n font-weight: 600;\n }\n }\n }\n\n /**\n * ANT-RADIO\n */\n .ant-radio-group {\n display: flex;\n row-gap: 8px;\n flex-direction: column;\n\n .ant-radio-wrapper {\n font-size: 18px;\n\n .ant-radio {\n width: 20px;\n height: 20px;\n margin-right: 8px;\n }\n\n .ant-radio-inner {\n width: 22px;\n height: 22px;\n border-width: 2px;\n\n &:after {\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 8px;\n }\n }\n }\n }\n\n /**\n * ANT-INPUT\n */\n .ant-input {\n font-weight: 500;\n border-radius: 8px;\n border-radius: 4px;\n border: 2px solid var(--ghost);\n background-color: var(--ghost);\n\n &:hover, &:focus {\n border-right-width: 2px !important;\n }\n\n &:focus {\n box-shadow: none;\n /* box-shadow: 0 0 0 4px var(--ant-primary-color-outline); */\n }\n\n &[disabled] {\n cursor: default;\n /* background-color: var(--ghost);\n border-color: var(--ghost); */\n }\n\n &.ant-input-lg {\n height: 56px;\n }\n }\n\n .ant-form-item-has-error {\n .ant-input:not(.ant-input-disabled):not(.ant-input-borderless) {\n background-color: var(--ghost) !important;\n }\n\n .ant-input:not(.ant-input-disabled):not(.ant-input-borderless):focus {\n border-right-width: 2px !important;\n box-shadow: none;\n /* box-shadow: 0 0 0 4px var(--ant-error-color-outline) !important; */\n }\n }\n\n .ant-input-affix-wrapper {\n padding: 0;\n height: 48px;\n border-radius: 24px;\n border: 2px solid var(--ghost);\n background-color: var(--ghost);\n\n :not(.ant-input-affix-wrapper-disabled):hover,\n :not(.ant-input-affix-wrapper-disabled).ant-input-affix-wrapper-focused {\n border: 2px solid var(--ant-primary-color);\n border-right-width: 2px !important;\n }\n\n :not(.ant-input-affix-wrapper-disabled).ant-input-affix-wrapper-focused {\n box-shadow: none;\n /* box-shadow: 0 0 0 4px var(--ant-primary-color-outline); */\n\n .ant-input-prefix {\n svg {\n fill: var(--ant-primary-color);\n }\n }\n }\n\n .ant-input-prefix {\n padding: 0 8px 0 12px;\n\n svg {\n fill: var(--velotax-font-color-ghost);\n }\n }\n\n .ant-input {\n height: 44px;\n font-weight: 300;\n color: var(--black);\n border-radius: 24px;\n background-color: var(--ghost);\n }\n }\n\n /**\n * ANT-INPUT-NUMBER\n */\n .ant-input-number {\n font-weight: 500;\n border-radius: 8px;\n border: 2px solid var(--darl-1);\n background-color: var(--dark-1);\n display: flex;\n align-items: center;\n\n &:hover {\n border-right-width: 2px !important;\n }\n\n &.ant-input-number-focused {\n border-right-width: 2px !important;\n border-color: var(--ant-primary-color);\n box-shadow: 0 0 0 4px var(--ant-primary-color-outline);\n }\n\n &.ant-input-number-lg {\n height: 48px;\n }\n\n &.ant-input-number-disabled,\n &.ant-input-number-disabled .ant-input-number-input {\n cursor: default;\n }\n\n .ant-input-number-handler-wrap {\n display: none;\n }\n\n .ant-input-number-input-wrap {\n .ant-input-number-input {\n font-size: 18px;\n font-weight: 500;\n }\n }\n }\n\n .ant-form-item-has-error {\n .ant-input-number:not([disabled]):hover,\n .ant-input-number-focused:not([disabled]) {\n background-color: var(--velotax-ghost-white) !important;\n border-right-width: 2px !important;\n border-color: var(--ant-error-color);\n box-shadow: 0 0 0 4px var(--ant-error-color-outline) !important;\n }\n }\n\n /**\n * ANT-SELECT\n */\n .ant-select-focused .ant-select-selector {\n box-shadow: none !important;\n border: none !important;\n }\n .ant-select-arrow {\n color: black;\n }\n\n .ant-select-single:not(.ant-select-customize-input) .ant-select-selector {\n width: 100%;\n height: 40px;\n}\n\n .ant-select .ant-select-selector {\n border-radius: 4px !important;\n border: 1px solid var(--ghost) !important;\n background-color: var(--ghost) !important;\n .ant-select-selection-search, .ant-select-selection-item {\n display: flex;\n align-items: center;\n font-weight: 600 !important;\n font-size: 14px;\n }\n }\n /* .ant-select {\n border-radius: 8px !important;\n\n &[disabled],\n &.ant-select-disabled,\n &.ant-select-disabled input,\n &.ant-select-disabled .ant-select-selector {\n cursor: default !important;\n }\n }\n\n .ant-select .ant-select-selector {\n border-radius: 8px !important;\n border: 2px solid var(--dark-1) !important;\n background-color: var(--dark-1) !important;\n .ant-select-selection-search, .ant-select-selection-item {\n display: flex;\n align-items: center;\n font-weight: 500 !important;\n }\n }\n\n .ant-select-focused.ant-select-open {\n box-shadow: none !important;\n\n .ant-select-selector {\n border-color: var(--ant-primary-color) !important;\n }\n }\n\n .ant-select:not(.ant-select-disabled):hover .ant-select-selector,\n .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {\n border-right-width: 2px !important;\n box-shadow: 0 0 0 4px var(--ant-primary-color-outline) !important;\n }\n\n .ant-form-item-has-error {\n .ant-select:not(.ant-select-disabled):hover .ant-select-selector,\n .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {\n border-right-width: 2px !important;\n box-shadow: 0 0 0 4px var(--ant-error-color-outline) !important;\n }\n }\n\n .ant-select-lg, .ant-select-lg .ant-select-selector {\n height: 48px !important;\n\n .ant-select-selection-placeholder {\n display: flex;\n align-items: center;\n }\n } */\n\n .ant-select-lg, .ant-select-lg .ant-select-selector {\n height: 56px !important;\n\n .ant-select-selection-placeholder {\n display: flex;\n font-size: 14px;\n align-items: center;\n }\n }\n\n .ant-select-lg.ant-select-multiple {\n min-height: 56px !important;\n .ant-select-selector {\n min-height: 56px !important;\n overflow-y: auto;\n }\n }\n .ant-select-multiple {\n max-height: 128px;\n height: auto !important;\n .ant-select-selector {\n max-height: 128px;\n height: auto !important;\n }\n }\n\n /**\n * ANT-DROPDOWN\n */\n .ant-dropdown,\n .ant-select-dropdown {\n /* border-radius: 2px; */\n border: none;\n\n z-index:1000;\n\n .ant-select-item,\n .ant-dropdown-menu-item {\n font-size: 16px\n }\n\n .ant-dropdown-menu {\n border-radius: 8px;\n }\n }\n\n /**\n * ANT-MODAL\n */\n .ant-modal-root {\n .ant-modal {\n top: 32px;\n\n .ant-modal-content {\n border-radius: 4px;\n background-color: var(--white);\n\n .description {\n background-color: rgba(10, 158, 90, 0.10);\n padding: 9px 15px;\n color: rgb(10, 158, 90);\n }\n\n .modal-row {\n margin-top: 10px;\n }\n .ant-upload.ant-upload-select-picture-card {\n border: 1px solid #d9d9d9;\n }\n .ant-modal-close {\n top: 16px;\n right: 16px;\n\n .ant-modal-close-x {\n .anticon.anticon-close.ant-modal-close-icon {\n color: var(--ant-primary-color);\n font-size: 20px;\n }\n }\n }\n\n .ant-modal-header {\n border-bottom: none;\n padding: 48px 96px 0 48px;\n border-radius: 4px 4px 0 0;\n background-color: var(--white);\n\n .ant-modal-title {\n font-size: 20px;\n line-height: 28px;\n font-weight: 600;\n padding-bottom: 16px;\n position: relative;\n\n &::before {\n content: '';\n bottom: 0;\n width: 80px;\n left: 0;\n height: 2px;\n position: absolute;\n background-color: var(--ant-primary-color);\n }\n }\n }\n\n .ant-modal-body {\n .icon-card {\n color: var(--ant-primary-color);\n }\n padding: 32px 48px 48px;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100% !important;\n max-width: calc(100% - 32px);\n margin: 0 16px;\n padding-bottom: 54px;\n\n .ant-modal-content {\n .ant-modal-header {\n padding: 32px 64px 0 24px;\n }\n .ant-modal-body {\n padding: 24px 24px 32px;\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .envio-darf-modal {\n .ant-btn {\n font-size: 13px;\n }\n }\n }\n\n .filter-modal {\n .month-select {\n width: 100%;\n height: auto !important;\n min-height: 56px;\n max-height: auto;\n .ant-select-selector {\n height: auto !important;\n min-height: 56px;\n max-height: auto;\n }\n }\n .ant-radio-group .ant-radio-wrapper {\n font-size: 14px;\n .ant-radio {\n margin-right: 0;\n padding-top: 1px;\n .ant-radio-inner {\n width: 20px;\n height: 20px;\n :after {\n top: 50%;\n left: 50%;\n width: 16px;\n height: 16px;\n }\n }\n }\n }\n .ant-checkbox-wrapper {\n align-items: center;\n .ant-checkbox {\n top: 0;\n }\n .ant-checkbox-checked {\n .ant-checkbox-inner {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n .ant-checkbox-inner {\n width: 20px;\n height: 20px;\n border-color: var(--ghost);\n background-color: var(--ghost);\n :after {\n width: 7px;\n height: 13px;\n top: calc(50% - 2px);\n }\n }\n }\n }\n\n\n /**\n * ANT-TABLE\n */\n .ant-table-wrapper {\n .ant-table-content,\n .ant-table-container {\n font-weight: 100;\n color: var(--gray-3);\n border-color: var(--dark-1);\n }\n\n .ant-checkbox-checked {\n .ant-checkbox-inner {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n .ant-checkbox-inner {\n border-color: var(--ghost);\n background-color: var(--ghost);\n }\n\n .ant-tag {\n align-items: center;\n display: inline-flex;\n justify-content: center;\n height: 24px;\n padding: 0 10px;\n font-weight: 500;\n border-radius: 12px;\n text-transform: uppercase;\n }\n\n .ant-table-thead > tr > th {\n font-size: 14px;\n font-weight: 300;\n color: var(--gray-2);\n background-color: var(--white);\n border-bottom: 1px solid var(--ghost);\n }\n\n table tr td.ant-table-selection-column,\n table tr th.ant-table-selection-column {\n padding-left: 16px;\n }\n\n .ant-table-tbody > tr > td {\n cursor: pointer;\n border-bottom: 1px solid var(--ghost);\n }\n .ant-table-row-selected > td {\n background-color: #f5f5f5 !important;\n border-bottom: 1px solid var(--dark-3);\n }\n .ant-table-row:hover > td,\n .ant-table-cell-row-hover {\n /* background-color: var(--dark-1) !important; */\n }\n\n .ant-pagination {\n .ant-icon {\n /* color: var(--black); */\n }\n }\n\n .ant-pagination-item {\n min-width: 28px;\n }\n\n .ant-pagination-next, .ant-pagination-prev {\n min-width: 28px;\n }\n\n .ant-pagination-item-link,\n .ant-pagination-disabled:hover .ant-pagination-item-link {\n /* border-color: var(--dark-1); */\n }\n\n .ant-pagination-item a {\n /* color: var(--black); */\n }\n\n .ant-pagination-item-active {\n /* border-color: var(--ant-primary-color); */\n a {\n /* color: var(--ant-primary-color); */\n }\n }\n\n .ant-pagination-item,\n .ant-pagination-item-link,\n .ant-pagination-item-active {\n /* background-color: var(--white); */\n }\n }\n /* .ant-table-title + .ant-table-container {\n border-radius: 12px;\n }\n .ant-table,\n .ant-table-title,\n .ant-table-footer {\n color: var(--velotax-font-color);\n background-color: var(--velotax-background-color);\n }\n .ant-table-tbody > tr.ant-table-row:hover > td,\n .ant-table-tbody > tr > td.ant-table-cell-row-hover,\n .ant-table-tbody > tr.ant-table-placeholder:hover > td {\n background-color: var(--velotax-background-color-ghost);\n }\n\n .ant-table-title {\n font-weight: 600;\n padding: 16px 0;\n }\n\n .ant-table-container {\n border-radius: 12px;\n border: 1px solid var(--velotax-ghost-white);\n background-color: var(--velotax-background-color);\n\n .ant-table-content {\n border-radius: 8px;\n\n overflow-x: auto;\n @media only screen and (min-device-width: 813px) {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n height: 4px;\n }\n\n &::-webkit-scrollbar-thumb,\n ::-webkit-scrollbar-thumb {\n border-radius: 0;\n background-color: var(--ant-primary-color);\n }\n\n &::-webkit-scrollbar-track,\n ::-webkit-scrollbar-track {\n background-color: var(--velotax-background-color-ghost);\n }\n }\n\n .ant-table-thead {\n .ant-table-cell {\n color: var(--velotax-font-color);\n border-bottom-color: var(--velotax-ghost-white);\n background-color: var(--dark-1);\n &::before {\n display: none;\n }\n\n &:first-child {\n border-radius: 12px 0 0 0;\n }\n\n &:last-child {\n border-radius: 0 12px 0 0;\n }\n }\n }\n\n .ant-table-tbody {\n .ant-table-cell {\n border-bottom-color: var(--velotax-ghost-white);\n }\n .ant-table-row:last-child {\n .ant-table-cell {\n border-bottom: none;\n\n &:first-child {\n border-radius: 0 0 0 12px;\n }\n\n &:last-child {\n border-radius: 0 0 12px 0;\n }\n }\n }\n }\n\n .ant-table-placeholder {\n .ant-table-cell {\n border-bottom: none;\n }\n }\n }\n\n .ant-table-row-error {\n .ant-table-cell {\n border-top: 1px solid;\n border-bottom: 1px solid !important;\n border-color: var(--ant-error-color) !important;\n\n &:first-of-type {\n border-left: 1px solid;\n }\n\n &:last-child {\n border-right: 1px solid;\n }\n }\n\n svg.error-icon {\n display: block;\n margin: 0 auto;\n fill: var(--ant-error-color);\n }\n }\n\n .ant-table-row-error + .ant-table-row-error {\n .ant-table-cell {\n border-top: none;\n }\n }\n } */\n\n body.dark {\n .ant-table-container {\n .ant-table-content {\n .ant-table-thead {\n .ant-table-cell {\n background-color: var(--velotax-background-color-ghost);\n }\n }\n }\n }\n }\n\n /**\n * ANT-DESCRIPTIONS\n */\n .ant-descriptions.ant-descriptions-bordered {\n .ant-descriptions-view {\n border-radius: 8px;\n border-color: var(--velotax-background-color-ghost);\n\n tbody {\n .ant-descriptions-row {\n border-color: var(--velotax-background-color-ghost);\n .ant-descriptions-item-label {\n color: var(--velotax-font-color);\n background-color: var(--light-gray);\n border-color: var(--velotax-background-color-ghost);\n }\n .ant-descriptions-item-content {\n background-color: var(--velotax-background-color);\n color: var(--velotax-font-color) !important;\n }\n }\n }\n }\n }\n\n /**\n * ANT-COLLAPSE\n */\n .ant-collapse,\n .ant-collapse.ant-collapse-borderless {\n background-color: transparent;\n /* background-color: var(--white); verificar */\n .ant-collapse-item {\n border-bottom: none;\n .ant-collapse-header {\n color: var(--velotax-font-color);\n }\n }\n }\n\n /**\n * ANT-LIST\n */\n .ant-list {\n &.ant-list-vertical {\n .ant-list-item {\n .ant-list-item-extra {\n text-align: right;\n }\n }\n }\n }\n .ant-list.ant-list-split {\n .ant-list-item {\n border-bottom-color: var(--velotax-background-color-ghost);\n }\n }\n .ant-list-empty-text {\n opacity: 0.75;\n color: var(--velotax-font-color);\n }\n\n .ant-list-loading {\n .ant-spin-blur:after {\n opacity: 0;\n }\n }\n\n /**\n * ANT-STEPS\n */\n .ant-steps {\n .ant-steps-item {\n &.ant-steps-item-active .ant-steps-item-title {\n color: var(--ant-primary-color) !important;\n }\n &.ant-steps-item-disabled .ant-steps-item-title {\n color: var(--velotax-font-color-ghost) !important;\n }\n .ant-steps-item-title {\n color: var(--velotax-font-color) !important;\n }\n }\n .ant-steps-item-process\n > .ant-steps-item-container\n > .ant-steps-item-tail::after,\n .ant-steps-item-wait\n > .ant-steps-item-container\n > .ant-steps-item-tail::after {\n background: var(--velotax-background-color-ghost);\n }\n }\n\n /**\n * ANTICON-LOADING\n */\n .anticon.anticon-loading.anticon-spin {\n width: 24px;\n height: 24px;\n svg {\n width: 24px;\n height: 24px;\n }\n }\n\n /**\n * ANT-MESSAGE\n */\n .ant-message {\n .ant-message-notice {\n text-align: right;\n max-width: calc(100% - 8px);\n }\n }\n\n /**\n * ANT-PICKER\n */\n .ant-picker {\n display: flex;\n align-items: center;\n border: 2px solid var(--gray-2);\n &:hover {\n border-right-width: 2px !important;\n }\n &.ant-picker-large {\n height: 48px;\n border-radius: 8px;\n }\n &.ant-picker-focused {\n border-right-width: 2px !important;\n border-color: var(--ant-primary-color);\n box-shadow: 0 0 0 4px var(--ant-primary-color-outline);\n }\n &.ant-picker-disabled {\n background-color: var(--light-gray);\n .ant-picker-input input {\n opacity: 0.75;\n }\n }\n .ant-picker-input input {\n color: var(--velotax-font-color);\n }\n }\n .ant-picker-suffix {\n svg {\n fill: var(--velotax-font-color);\n }\n }\n .ant-picker-dropdown {\n .ant-picker-panel {\n border-bottom: none;\n }\n .ant-picker-panel-container {\n * {\n color: var(--velotax-font-color);\n }\n border-radius: 8px;\n background-color: var(--velotax-background-color);\n border: 2px solid var(--velotax-background-color-ghost);\n .ant-picker-header {\n border-bottom-color: var(--velotax-background-color-ghost);\n }\n .ant-picker-body {\n padding: 8px 0;\n .ant-picker-content {\n height: 240px;\n width: 100%;\n .ant-picker-cell-inner {\n height: 25px;\n line-height: 25px;\n border-radius: 6px;\n border: 1px solid var(--velotax-background-color-ghost);\n }\n }\n }\n .ant-picker-footer {\n border-top-color: var(--velotax-background-color-ghost);\n }\n }\n .ant-picker-cell:hover:not(.ant-picker-cell-selected) .ant-picker-cell-inner {\n opacity: 0.45;\n background-color: var(--ghost) !important;\n }\n }\n\n body.dark .ant-picker-dropdown .ant-picker-panel-container {\n box-shadow: 0 3px 6px -4px #6666661E, 0 6px 16px 0 #66666614, 0 9px 28px 8px #6666660C;\n }\n\n .ant-tooltip {\n padding-left: 40px;\n }\n\n .ant-picker-cell-disabled {\n opacity: 0.2;\n }\n\n .sample-payed::after,\n .sample-regular::after,\n .sample-pending::after,\n .sample-not-payed::after,\n .ant-picker-cell-inner.payed::after,\n .ant-picker-cell-inner.regular::after,\n .ant-picker-cell-inner.pending::after,\n .ant-picker-cell-inner.not-payed::after {\n content: \"\";\n top: -4px;\n right: -4px;\n position: absolute;\n width: 16px;\n height: 16px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--ant-primary-color);\n }\n .sample-payed::after,\n .sample-regular::after,\n .ant-picker-cell-inner.payed::after,\n .ant-picker-cell-inner.regular::after {\n background-color: var(--ant-success-color);\n }\n .sample-pending::after,\n .ant-picker-cell-inner.pending::after {\n background-color: var(--ant-error-color);\n }\n .sample-not-payed::after,\n .ant-picker-cell-inner.not-payed::after {\n background-color: var(--ant-warning-color);\n }\n .sample-payed,\n .sample-regular,\n .sample-pending,\n .sample-not-payed {\n position: relative;\n &::after {\n top: 11px;\n left: 0px;\n }\n span {\n margin-left: 24px;\n }\n }\n\n /**\n * ANT-UPLOAD\n */\n .ant-upload-text-icon {\n svg {\n fill: var(--ant-primary-color);\n }\n }\n\n .anticon.anticon-delete {\n svg {\n fill: var(--ant-error-color);\n }\n }\n\n .ant-upload-list-item .ant-upload-list-item-info {\n padding: 8px;\n height: 32px;\n border-radius: 8px;\n }\n .ant-upload-list-item:hover .ant-upload-list-item-info {\n background-color: var(--light-gray);\n }\n\n .progress {\n height: 5px;\n z-index: 1;\n background: var(--ant-primary-color);\n position: fixed;\n -webkit-transition: width 0.6s ease-in-out;\n -moz-transition: width 0.6s ease-in-out;\n -o-transition: width 0.6s ease-in-out;\n transition: width 0.6s ease-in-out;\n }\n\n .xmovel-content.ant-collapse-item {\n border-top: none;\n margin-bottom: 16px;\n .ant-collapse-header {\n margin-bottom: 4px;\n border-radius: 8px !important;\n color: var(--velotax-font-color);\n background-color: var(--velotax-ghost-white) !important;\n }\n .ant-collapse-content > .ant-collapse-content-box {\n padding: 0;\n }\n .ant-descriptions-view {\n table {\n tbody {\n .ant-descriptions-row {\n .ant-descriptions-item-label {\n border-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-descriptions-item-content {\n border-color: var(--velotax-background-color-ghost);\n padding: 8px 16px !important;\n }\n }\n }\n }\n }\n }\n body.dark {\n .xmovel-content.ant-collapse-item {\n .ant-collapse-header {\n background-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-descriptions-view {\n border-color: var(--velotax-background-color-ghost) !important;\n table {\n tbody {\n .ant-descriptions-row {\n border-color: var(--velotax-disabled) !important;\n .ant-descriptions-item-label {\n border-color: var(--velotax-background-color-ghost) !important;\n background-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-descriptions-item-content {\n border-color: var(--velotax-background-color-ghost);\n }\n }\n }\n }\n }\n }\n }\n\n h1.app-title {\n margin: 0;\n padding-bottom: 12px;\n font-weight: 500;\n font-size: 1.5rem;\n line-height: 2rem;\n position: relative;\n letter-spacing: -0.01em;\n color: var(--black);\n\n :before {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 0;\n width: 80px;\n height: 2px;\n background-color: var(--ant-primary-color);\n }\n }\n\n .add-card {\n height: 150px;\n border-radius: 8px;\n box-shadow: rgb(0 0 0 / 7%) 0px 3px 8px;\n }\n\n .user-menu {\n .icon-card {\n color: var(--ant-primary-color);\n }\n ul {\n margin: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--white);\n box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;\n\n > li {\n display: flex;\n column-gap: 8px;\n cursor: pointer;\n align-items: center;\n white-space: nowrap;\n height: 56px;\n font-weight: 600;\n border-radius: 4px;\n color: var(--dark-2);\n padding: 6px 32px 6px 16px;\n transition: color var(--transition-duration-default)\n var(--transition-timing-function-default);\n transition: background-color var(--transition-duration-default)\n var(--transition-timing-function-default);\n\n :last-of-type {\n border-bottom: none;\n }\n\n :hover {\n color: var(--ant-primary-color);\n background-color: rgba(22, 52, 255, 0.06);\n }\n\n &.logout {\n :hover {\n color: var(--ant-error-color);\n }\n }\n\n svg {\n cursor: pointer;\n width: 1.25rem;\n height: 1.25rem;\n margin-right: 2px;\n\n :not(.stroke-color) path {\n transition: fill var(--transition-duration-default)\n var(--transition-timing-function-default);\n }\n\n &.stroke-color path {\n stroke-width: 1.6px;\n transition: stroke var(--transition-duration-default)\n var(--transition-timing-function-default);\n }\n }\n }\n }\n }\n\n .tableFilter {\n border: none !important;\n box-shadow: none !important;\n font-weight: 500 !important;\n color: #8b8b8b !important;\n transition: .3s !important;\n }\n .tableFilter:hover{\n color: var(--ant-primary-color) !important;\n transition: .3s !important;\n }\n .tableFilter svg {\n color: #8b8b8b !important;\n fill: #8b8b8b !important;\n transition: .3s !important;\n }\n .tableFilter svg:hover {\n color: var(--ant-primary-color) !important;\n fill: var(--ant-primary-color) !important;\n transition: .3s !important;\n }\n\n .updatePatrimonioIcon {\n color: #8b8b8b !important;\n transition: .3s !important;\n }\n\n .updatePatrimonioIcon:hover {\n color: var(--ant-primary-color) !important;\n transition: .3s !important;\n }\n\n .defaultIconSize {\n width: 18px;\n height: 18px;\n }\n .actionColumn {\n width: 70px;\n }\n\n .modalNotasCorretagem .ant-modal-body {\n padding-top: 1rem !important;\n }\n \n .assinaturasModal > .ant-modal-content > .ant-modal-body {\n padding-top: 0 !important;\n }\n .userPlanModal {\n width: 100%;\n max-width: 600px;\n }\n\n .last-update {\n display: flex;\n margin-top: 32px;\n align-items: center;\n font-size: 0.75rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n .button-refresh-wallet {\n width: 20px;\n height: 20px;\n padding: 4px;\n box-shadow: none;\n margin-right: 8px;\n border-radius: 4px;\n border: none !important;\n background-color: #FBC1051F !important;\n color: var(--ant-primary-color) !important;\n svg {\n width: 10px !important;\n height: 10px !important;\n min-width: 10px !important;\n min-height: 10px !important;\n * {\n stroke: var(--ant-primary-color) !important;\n }\n }\n }\n .button-refresh-wallet:hover {\n background-color: #c0d4f9;\n transition: .3s;\n }\n }\n\n .MuiTextField-root {\n width: 100%;\n }\n .MuiInput-root {\n width: 100%;\n }\n\n .modalProventos {\n width: calc(100% - 128px) !important;\n }\n\n @media only screen and (max-device-width: 812px) {\n .modalProventos {\n width: 100% !important;\n }\n }\n\n .paymentModal > .ant-modal-content > .ant-modal-header {\n padding: 64px 88px 32px !important;\n }\n\n @media (max-width: 768px) {\n .paymentModal > .ant-modal-content > .ant-modal-header {\n padding: 64px 32px 32px !important;\n }\n }\n\n .recharts-default-legend {\n display: flex !important;\n flex-direction: column !important;\n transform: translateY(1.5rem) !important;\n }\n \n .recharts-layer > text {\n font-weight: 600;\n font-size: 15px;\n }\n\n .check {\n width: 24px;\n height: 24px;\n fill: var(--ant-primary-color);\n }\n .cross {\n width: 24px;\n height: 24px;\n fill: var(--gray-1);\n }\n\n .patrimonio-collapse {\n padding: 48px;\n margin-top: 2rem;\n margin-left: -48px;\n width: calc(100% + 96px);\n border-radius: 0 0 8px 8px;\n background-color: var(--white);\n & > .ant-collapse {\n border: none;\n }\n & > .ant-collapse > .ant-collapse-item.ativos-categoria {\n margin-bottom: 48px;\n &:last-of-type {\n margin-bottom: 0;\n }\n & > .ant-collapse-header {\n padding: 0;\n align-items: center;\n & > .ant-collapse-header-text {\n display: flex;\n align-items: center;\n }\n .ant-collapse-arrow {\n right: 0;\n }\n h2 {\n margin: 0 16px 0 0;\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n }\n .collapse-title-divider {\n flex-grow: 1;\n display: block;\n margin: 0;\n border-bottom: 1px solid var(--ghost);\n width: 20px;\n padding: 0 2rem;\n }\n .collapse-title-hidden {\n width: 32px;\n height: 24px;\n display: block;\n visibility: hidden;\n }\n }\n & > .ant-collapse-content {\n border: none;\n background-color: transparent;\n & > .ant-collapse-content-box {\n padding: 1rem 0 0 0;\n & > .ant-collapse {\n border: none;\n }\n & > div {\n font-size: 13px;\n }\n }\n }\n }\n\n .progress_container {\n width: 100%;\n background-color: #ffffff;\n height: 15px;\n position: relative;\n border-radius: 50px;\n }\n\n .loading_bar {\n height: 100%;\n background-color: var(--ant-primary-color);\n border-top-left-radius: 50px;\n border-bottom-left-radius: 50px;\n display: flex; /* Para que os elementos dentro da barra de progresso se alinhem corretamente */\n align-items: center; /* Para centralizar verticalmente o texto */\n justify-content: center; /* Para alinhar o texto à esquerda dentro da barra de progresso */\n padding-left: 10px; /* Adicione o padding necessário para dar espaço ao texto na barra */\n }\n\n .progress_container_text_align_center {\n /* Estilos para o texto (se necessário) */\n font-size: 11px;\n font-weight: 700;\n white-space: nowrap;\n position: absolute;\n top: -1px;\n left: 0;\n width: 100%;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .patrimonio-collapse {\n padding: 24px;\n margin-top: 2rem;\n border-radius: 0;\n margin-left: -24px;\n width: calc(100% + 48px);\n & > .ant-collapse > .ant-collapse-item.ativos-categoria {\n margin-bottom: 48px;\n & > .ant-collapse-header {\n & > .ant-collapse-header-text {\n display: flex;\n align-items: center;\n h2 {\n font-size: 1rem;\n line-height: 1.25rem;\n letter-spacing: -1px;\n }\n }\n }\n }\n .progress_container_text_align_center {\n top: -2px;\n }\n }\n }\n\n .patrimonioMessages {\n margin-top: 16px;\n font-weight: 400;\n padding-top: 16px;\n line-height: 1rem;\n font-size: 0.75rem;\n color: var(--gray-2);\n border-top: 1px solid var(--ghost);\n li {\n padding-left: 16px;\n margin-bottom: 6px;\n position: relative;\n .anticon-info-circle {\n left: 0;\n top: 1px;\n position: absolute;\n color: var(--gray-2);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n iframe[title^=\"Botão para abrir a janela\"] {\n display: none;\n }\n }\n\n .operationsModal .ant-modal-header, .operationsModal .ant-modal-body {\n @media only screen and (max-device-width: 670px) {\n padding: 2rem 1rem 1rem 1rem !important;\n }\n }\n\n .operationsCollapse{\n .ant-collapse-header{\n padding: 2rem 0 1rem 0 !important;\n }\n .ant-collapse-content {\n padding: 0 !important;\n }\n .ant-collapse-content-box {\n padding: 0 !important;\n }\n }\n\n .corretoras-allcheck > .ant-checkbox > .ant-checkbox-inner::after {\n width: 8px;\n height: 8px;\n top: 50%;\n }\n\n .corretoras-allcheck > .ant-checkbox-checked > .ant-checkbox-inner::after {\n width: 7px;\n height: 13px;\n top: calc(50% - 2px);\n }\n`;\n","import axios from \"axios\";\n\nexport const chatApi = axios.create({\n baseURL:\n process.env.REACT_APP_AI_DASHBOARD_API_URL || \"http://localhost:4000\",\n});\n","import styled from \"styled-components\";\n\nexport const ChatButton = styled.div`\n position: fixed;\n width: 3.75rem;\n height: 3.75rem;\n right: 0.625rem;\n bottom: 0.625rem;\n z-index: 100;\n display: flex;\n cursor: pointer;\n user-select: none;\n border-radius: 2rem;\n align-items: center;\n justify-content: center;\n transition: 0.3s filter;\n background-color: #1634ff;\n :hover {\n filter: contrast(1.2);\n }\n :active {\n filter: contrast(1.5);\n }\n\n svg {\n width: 2rem;\n height: 2rem;\n stroke: white;\n margin-top: -0.25rem;\n }\n\n &.hide {\n display: none;\n }\n\n @media (max-device-width: 812px) {\n display: none;\n }\n`;\n\nexport const ChatWindow = styled.div`\n left: unset;\n right: 0.875rem;\n border: none;\n bottom: 80px;\n width: 458px;\n height: 85dvh;\n display: flex;\n position: fixed;\n user-select: none;\n max-height: 824px;\n border-radius: 8px;\n z-index: 2147483647;\n flex-direction: column;\n background-color: white;\n box-shadow: rgba(150, 150, 150, 0.2) 0 10px 30px 0,\n rgba(150, 150, 150, 0.2) 0 0 0 1px;\n\n &.hide,\n &.hidden {\n display: none;\n }\n\n .chat-header {\n height: 80px;\n padding: 1rem;\n display: flex;\n align-items: center;\n border-bottom: 1px solid #f0f0f0;\n\n h1 {\n color: #212121;\n }\n .chat-icon {\n display: flex;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 1.25rem;\n align-items: center;\n justify-content: center;\n background-color: #000058;\n\n svg {\n width: 1rem;\n height: 1.5rem;\n margin-left: 2px;\n }\n }\n\n .reset-icon,\n .close-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .reset-icon {\n cursor: pointer;\n margin-left: auto;\n margin-right: 0.5rem;\n transition: 0.3s opacity, 0.3s transform;\n :hover {\n opacity: 0.5;\n }\n svg {\n width: 1.25rem;\n height: 1.25rem;\n path {\n stroke: #212121;\n }\n }\n }\n .close-icon {\n cursor: pointer;\n transition: 0.3s opacity, 0.3s transform;\n :hover {\n opacity: 0.5;\n }\n svg {\n width: 2rem;\n height: 2rem;\n fill: #212121;\n }\n }\n\n h1 {\n font-size: 1.125rem;\n margin: 0 0 0 0.75rem;\n }\n }\n\n .chat-body {\n display: flex;\n flex: 1 1 100%;\n overflow-y: auto;\n scroll-behavior: smooth;\n\n .chat-body-conversation {\n width: 100%;\n flex: 1 1 0%;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: 1rem 1rem 0 1rem;\n\n .chat-body-white-space {\n width: 100%;\n min-height: 1rem;\n }\n\n .chat-msg {\n :first-of-type {\n margin-top: 0;\n }\n &.chat-msg-user {\n padding-right: 0;\n padding-left: 2.5rem;\n justify-content: flex-end;\n .chat-mgs-text {\n color: white;\n background-color: #2573e2;\n border-radius: 1.25rem 1.25rem 0.25rem 1.25rem;\n }\n }\n display: flex;\n margin-top: 1.25rem;\n padding-right: 2rem;\n align-items: flex-end;\n .chat-msg-icon {\n display: flex;\n width: 2rem;\n height: 2rem;\n min-width: 2rem;\n min-height: 2rem;\n border-radius: 1rem;\n align-items: center;\n margin-right: 0.5rem;\n justify-content: center;\n background-color: #000058;\n &.error {\n margin: 0 0.5rem 0 0;\n background-color: #ff4d4f;\n svg {\n margin: 0;\n fill: white;\n width: 1.5rem;\n }\n }\n svg {\n width: 0.75rem;\n height: 1.125rem;\n margin-left: 0.125rem;\n }\n }\n .chat-mgs-text {\n color: #212121;\n text-align: left;\n user-select: text;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0.875rem 1rem;\n background-color: #f0f0f0;\n border-radius: 1.25rem 1.25rem 1.25rem 0.25rem;\n\n ol,\n ul {\n list-style-position: inside;\n }\n\n .anticon-loading,\n .anticon-loading svg {\n width: 1rem;\n height: 1rem;\n color: #1634ff;\n }\n }\n }\n }\n }\n\n .chat-footer {\n display: flex;\n margin-top: auto;\n flex-direction: column;\n justify-content: flex-end;\n border-top: 1px solid #f0f0f0;\n .chat-input-container {\n display: flex;\n align-items: flex-end;\n textarea {\n flex-grow: 1;\n padding: 0.75rem;\n min-height: 2rem;\n max-height: 10rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n margin: 0;\n border: none;\n resize: none;\n overflow-y: auto;\n border-radius: 0;\n pointer-events: auto;\n background-color: white;\n overflow-wrap: break-word;\n tab-size: 4;\n text-align: start;\n border-bottom-left-radius: 0.5rem;\n display: flex;\n color: #212121;\n }\n button {\n cursor: pointer;\n white-space: nowrap;\n align-items: center;\n display: inline-flex;\n justify-content: center;\n background-color: transparent;\n width: 2.25rem;\n height: 2.25rem;\n border-radius: 0.375rem;\n margin: 0.75rem 0.75rem 1rem;\n background-color: hsla(240, 5%, 96%, 0.9);\n :hover {\n filter: opacity(0.8);\n }\n :disabled {\n cursor: default;\n filter: grayscale(1) opacity(0.8);\n background-color: hsla(240, 5%, 96%, 0.9);\n }\n svg {\n fill: #1634ff;\n }\n }\n }\n }\n @media (max-device-width: 812px) {\n display: none;\n }\n`;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.21 68.556L0.0999756 0V66.1133C0.0999756 75.9813 5.58003 84.8533 14.41 89.2653L49.74 106.935L74.09 96.1226L23.6 70.8773C21.79 69.9693 20.66 68.144 20.66 66.1133V33.2666L128.02 86.9453C130.75 88.3106 130.98 90.828 130.96 91.8466C130.93 92.864 130.57 95.3626 127.77 96.588L68.55 122.499L68.53 122.504L51.34 130.025V130.024L32.5 138.268C23.08 142.389 16.99 151.697 16.99 161.983V226.865L115.29 182.187C124.51 177.997 130.46 168.748 130.46 158.621V141.609L109.9 150.739V158.621C109.9 160.704 108.68 162.608 106.78 163.469L37.55 194.937V161.983C37.55 159.867 38.8 157.952 40.74 157.103L136.01 115.423C145.31 111.355 151.25 102.523 151.51 92.372C151.77 82.2226 146.29 73.0973 137.21 68.556Z\",\n fill: \"#FFFFFD\"\n});\n\nfunction SvgVeloicon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 152,\n height: 227,\n viewBox: \"0 0 152 227\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgVeloicon);\nexport default __webpack_public_path__ + \"static/media/veloicon.2ac5c010.svg\";\nexport { ForwardRef as ReactComponent };","import clsx from \"clsx\";\nimport DOMPurify from \"dompurify\";\nimport { BsX } from \"react-icons/bs\";\nimport { FaPaperPlane } from \"react-icons/fa\";\nimport { GrPowerReset } from \"react-icons/gr\";\nimport { MdErrorOutline } from \"react-icons/md\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { IoChatbubblesOutline } from \"react-icons/io5\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { chatApi } from \"../../services/chatApi\";\nimport { ChatButton, ChatWindow } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { ReactComponent as VelotaxIcon } from \"../../assets/velotax/veloicon.svg\";\n\ninterface Msg {\n user: \"velotax\" | \"user\";\n text: string;\n error?: boolean;\n}\n\ninterface APIChatMessage {\n userMessage: string;\n botResponse: string;\n formattedGptAnswer: string;\n createdAt: Date;\n}\n\nconst KEY = \"velochat.thread_id\";\nconst KEY_TIMESTAMP = \"velochat.timestamp\";\nconst USER_MESSAGE_MAX_LENGTH = 200;\nconst defaultMsg: Msg = {\n user: \"velotax\",\n text: \"Olá! Eu sou o assistente virtual da Velotax. Como posso te ajudar?\",\n};\n\nexport const ChatGPT = () => {\n const storage = localStorage;\n const { signed, user } = useAuth();\n const chatBodyRef = useRef(null);\n const textareaRef = useRef(null);\n\n const [msg, setMsg] = useState(\"\");\n const [show, setShow] = useState(false);\n const [loading, setLoading] = useState(false);\n const [scrolled, setScrolled] = useState(false);\n const [firstLoading, setFirstLoading] = useState(false);\n const [msgs, setMsgs] = useState([defaultMsg]);\n\n chatApi.defaults.headers.common[\"Authorization\"] = `Bearer ${user?.token}`;\n\n const hide =\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n\n const disabled =\n !msg.replace(/\\s/g, \"\").length || msg.length > USER_MESSAGE_MAX_LENGTH;\n\n const resetChat = () => {\n setMsg(\"\");\n setMsgs([defaultMsg]);\n storage.removeItem(KEY);\n storage.removeItem(KEY_TIMESTAMP);\n };\n\n const scrollToBottom = useCallback(() => {\n setTimeout(() => {\n chatBodyRef.current?.scrollTo({\n top: chatBodyRef.current?.scrollHeight,\n });\n }, 50);\n }, []);\n\n const after24H = useCallback(() => {\n try {\n const timestamp = storage.getItem(KEY_TIMESTAMP);\n if (\n timestamp &&\n new Date().getTime() >\n new Date(Number(timestamp)).getTime() + 24 * 60 * 60 * 1000\n ) {\n storage.removeItem(KEY);\n return true;\n }\n return false;\n } catch (err) {\n console.log(err);\n return true;\n }\n }, [storage]);\n\n const loadMsgs = useCallback(async () => {\n const threadId = storage.getItem(KEY);\n if (!threadId) return;\n if (after24H()) return;\n try {\n setFirstLoading(true);\n const { data } = await chatApi.get(\"/chat/user\", {\n params: { threadId },\n });\n if (data?.length > 0) {\n setMsgs([\n defaultMsg,\n ...data.reduce(\n (acc, cur) => [\n ...acc,\n { user: \"user\", text: cur.userMessage } as Msg,\n {\n user: \"velotax\",\n text: cur.formattedGptAnswer\n ? DOMPurify.sanitize(cur.formattedGptAnswer)\n : cur.botResponse,\n } as Msg,\n ],\n [] as Msg[]\n ),\n ]);\n }\n } catch {\n } finally {\n setFirstLoading(false);\n scrollToBottom();\n }\n }, [scrollToBottom, storage, after24H]);\n\n const sendMsg = async (text: string) => {\n setMsgs((msgs) => [...msgs, { user: \"user\", text }]);\n setLoading(true);\n scrollToBottom();\n setTimeout(() => setMsg(\"\"), 100);\n try {\n const threadId = storage.getItem(KEY);\n const { data } = await chatApi.post(\"/chat/user\", {\n userMessage: text,\n threadId,\n });\n setLoading(false);\n const now = new Date();\n storage.setItem(KEY, data.threadId);\n storage.setItem(\n KEY_TIMESTAMP,\n String(\n new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime()\n )\n );\n setMsgs((msgs) => [\n ...msgs,\n {\n user: \"velotax\",\n text: data.formattedGptAnswer\n ? DOMPurify.sanitize(data.formattedGptAnswer)\n : data.botResponse,\n },\n ]);\n } catch {\n setLoading(false);\n setMsgs((msgs) => [\n ...msgs,\n {\n error: true,\n user: \"velotax\",\n text: \"Não conseguimos responder sua mensagem. Tente novamente mais tarde!\",\n },\n ]);\n } finally {\n scrollToBottom();\n }\n };\n\n useEffect(() => {\n if (signed) {\n loadMsgs();\n }\n }, [signed, loadMsgs]);\n\n return signed ? (\n <>\n {\n setShow((show) => {\n if (!show && !scrolled) {\n setScrolled(true);\n scrollToBottom();\n }\n return !show;\n });\n }}\n >\n \n \n \n
\n
\n \n
\n

Assistente Velotax

\n
\n \n
\n
setShow(false)}>\n \n
\n
\n
\n
\n {firstLoading ? (\n <>\n ) : (\n msgs.map(({ user, text, error }, i) =>\n user === \"velotax\" ? (\n
\n \n {error ? : }\n \n \n
\n ) : (\n
\n {text}\n
\n )\n )\n )}\n {(loading || firstLoading) && (\n
\n
\n \n \n \n \n \n \n
\n
\n )}\n
\n
\n
\n
\n
\n {\n setMsg(e.target.value || \"\");\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }}\n onKeyDown={(e) => {\n if (e.code === \"Enter\" && !disabled) {\n sendMsg(msg);\n }\n }}\n />\n {\n if (!disabled) {\n sendMsg(msg);\n }\n }}\n >\n \n \n
\n
\n \n \n ) : (\n <>\n );\n};\n","import { createGlobalStyle } from \"styled-components\";\n\nexport default createGlobalStyle`\n .ant-drawer.modal-drawer.drawer-closable {\n .ant-drawer-header-title {\n flex-direction: row-reverse;\n }\n }\n .ant-drawer.operationsModal {\n .ant-drawer-body {\n padding: 16px;\n }\n .ant-drawer-title {\n :after {\n display: none;\n }\n }\n }\n .ant-drawer.modal-drawer.permissoes-acesso-modal {\n .ant-drawer-body {\n padding: 0;\n table {\n .ant-table-cell {\n width: 20%;\n font-size: 11px;\n }\n .ant-table-cell:first-of-type {\n width: 40%;\n font-size: 12px;\n padding: 8px 0 8px 8px;\n }\n .ant-table-cell:not(:first-of-type) {\n padding: 8px 4px;\n }\n }\n }\n }\n .ant-drawer.modal-drawer {\n color: var(--velotax-font-color);\n .ant-drawer-content-wrapper {\n .ant-drawer-content {\n .ant-drawer-wrapper-body {\n .ant-drawer-header {\n .ant-drawer-header-title {\n height: 32px;\n .ant-drawer-close {\n margin: 0;\n }\n .ant-drawer-title {\n padding: 8px 0;\n font-size: 18px;\n font-weight: 600;\n position: relative;\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n width: 80px;\n height: 2px;\n background-color: var(--ant-primary-color);\n }\n }\n }\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { AuthProvider } from \"./AuthContext\";\nimport { ClientsProvider } from \"./ClientsContext\";\n\nconst ContextWrapper: React.FC = ({ children }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default ContextWrapper;\n","import React from \"react\";\nimport { Result, Row } from \"antd\";\nimport { ErrorBoundary } from \"@rollbar/react\";\nimport Button from \"../Button\";\nimport { Container } from \"../../pages/PageNotFound\";\nimport { ReactComponent as XPLogo } from \"../../assets/xp.svg\";\n\nconst FallbackUI = () => (\n \n }\n title=\"Erro inesperado\"\n subTitle=\"Um erro inesperado ocorreu\"\n extra={\n \n (window.location.href = \"/\")}\n >\n Volte para o app\n \n \n }\n />\n \n);\n\nconst ErrorBoundaryRollbar: React.FC = ({ children }) => (\n {children}\n);\n\nexport default ErrorBoundaryRollbar;\n","import { ConfigProvider } from \"antd\";\nimport { Provider } from \"@rollbar/react\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport Routes from \"./routes\";\nimport GlobalStyles from \"./styles/global\";\nimport { ChatGPT } from \"./components/ChatGPT\";\nimport DrawerModalStyles from \"./styles/drawer-modal\";\nimport ContextWrapper from \"./contexts/ContextWrapper\";\nimport ErrorBoundaryRollbar from \"./components/ErrorBoundary\";\nimport ptBR from \"antd/lib/locale/pt_BR\";\n\nfunction App() {\n const { host } = window.location;\n const isDev = host.includes(\"localhost\") || host.includes(\"dev\");\n const rollbarConfig = {\n accessToken: \"30ca0272bd6e40e0bd69c225fa9e2c64\",\n captureUncaught: true,\n captureUnhandledRejections: true,\n payload: {\n environment: isDev ? \"development\" : \"production\",\n },\n };\n\n return (\n \n \n \"Nenhum dado encontrado\"}\n >\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport \"antd/dist/antd.variable.min.css\";\nimport \"react-credit-cards/es/styles-compiled.css\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}