{"version":3,"sources":["static/img/googlePlay.png","static/img/appleStore.png","modules/Dashboard/components/FastOperations/assets/images/vektornyi_smart-obekt.jpg","modules/Dashboard/components/FastOperations/assets/images/vektornyi_smart-obekt_3.jpg","modules/Dashboard/components/FastOperations/assets/images/vektornyi_smart-obekt_4.jpg","modules/Dashboard/components/FastOperations/assets/images/vektornyi_smart-obekt_5.jpg","static/img/logo.png","modules/Dashboard/components/FastOperations/assets/images/vektornyi_smart-obekt_2.jpg","utils/PromiseHelper.js","constants/index.js","utils/index.js","modules/App/reducers/index.js","modules/Accounts/reducers/index.js","modules/Transfers/reducers/index.js","modules/Transfers/reducers/loanTransfes.js","modules/Transfers/reducers/innerTransfer.js","modules/Transfers/reducers/partnerTransfer.js","modules/Transfers/reducers/salaryTransfer.js","modules/Transfers/reducers/depositTransfer.js","modules/Transfers/reducers/currencyTransfer.js","modules/Applications/reducers/index.js","modules/Applications/reducers/forms.js","modules/News/reducers/index.js","modules/Dashboard/reducers/index.js","modules/Dashboard/constants/index.js","modules/Notices/reducers/index.js","rootReducer/index.js","store/index.js","modules/Notices/actions/index.js","modules/App/api/UserApi.ts","modules/App/actions/index.js","commonComponents/Wrapper/index.jsx","commonComponents/SiteLogo/index.jsx","modules/App/components/MainMenu/index.jsx","modules/App/components/UserData/index.jsx","modules/News/actions/index.js","commonComponents/Icon/index.jsx","commonComponents/Throbber/index.jsx","modules/News/components/NewsContainer/index.jsx","modules/App/components/HeaderNews/index.jsx","modules/App/components/ExchangeRates/index.jsx","modules/App/components/Header/index.jsx","modules/App/components/Footer/index.jsx","modules/App/components/SubMenu/index.jsx","commonComponents/Button/index.jsx","modules/App/components/SessionModal/index.jsx","modules/Chat/containers/Chat/index.jsx","modules/Notices/components/NotifyString/index.jsx","modules/App/containers/Main/index.jsx","modules/App/containers/PrivateComponent/index.js","commonComponents/FormControl/label.jsx","commonComponents/FormControl/error.jsx","commonComponents/FormControl/currencyInput.jsx","commonComponents/FormControl/index.jsx","modules/App/components/LoginForm/index.jsx","modules/App/containers/Login/index.jsx","modules/App/components/MobileDisclamer/index.jsx","modules/App/components/RecoveryForm/index.jsx","modules/App/components/RecoverySuccess/index.jsx","modules/App/containers/RecoveryPassword/index.jsx","modules/Accounts/actions/index.js","modules/Applications/components/Status/index.jsx","commonComponents/Table/index.jsx","modules/Accounts/components/AccountsBanner/index.jsx","commonComponents/DataTable/index.jsx","modules/Accounts/components/Actions/index.jsx","modules/Accounts/components/SalaryTable/index.jsx","modules/Accounts/components/CurrentTable/index.jsx","modules/Accounts/pages/Listing/index.jsx","commonComponents/SelectBox/index.jsx","commonComponents/DatePicker/index.jsx","modules/Accounts/components/AccountFilters/index.jsx","modules/Accounts/utils/index.js","commonComponents/SummaryBlock/index.jsx","commonComponents/Pagination/index.jsx","modules/Accounts/pages/Details/operationsTable.jsx","modules/Accounts/pages/Details/index.jsx","commonComponents/FormLine/index.tsx","modules/Settings/components/AccountSettingsForm/index.jsx","commonComponents/PhoneInput/index.js","modules/Settings/components/UserSettingsForm/index.jsx","modules/Settings/pages/Settings/index.jsx","modules/Settings/pages/ChangePassword/index.jsx","commonComponents/BlockLikeInput/index.jsx","commonComponents/Typography/index.jsx","modules/Transfers/components/SetMaxSum/index.jsx","modules/Transfers/actions/index.js","modules/Transfers/actions/salaryTransfer.js","modules/Transfers/components/ConfirmMethodControls/index.jsx","modules/Transfers/components/TransferFormSalary/index.jsx","modules/Transfers/actions/innerTransfer.js","modules/Transfers/components/TransferFormInner/index.jsx","modules/Transfers/actions/loanTransfers.js","commonComponents/Modal/index.jsx","modules/Transfers/components/TransferFormLoan/index.jsx","modules/Transfers/actions/depositTransfer.js","modules/Transfers/components/TransferFormDeposit/index.jsx","modules/Transfers/actions/currencyTransfer.js","modules/Transfers/components/TransferFormCurrency/utils.js","modules/Transfers/components/TransferFormCurrency/overlay.jsx","modules/Transfers/components/TransferFormCurrency/index.jsx","modules/Transfers/components/Views/index.tsx","modules/Transfers/components/TransferFormPartner/api.ts","modules/Transfers/components/TransferFormPartner/views.tsx","modules/Transfers/components/TransferFormPartner/index.tsx","modules/Transfers/pages/Transfers/index.jsx","modules/Transfers/components/TransferConfirm/index.jsx","modules/Transfers/pages/ConfirmPage/index.jsx","commonComponents/Link/index.jsx","modules/Transfers/components/SuccessMessage/index.jsx","modules/Transfers/pages/TransferSuccess/index.jsx","modules/Applications/actions/index.js","modules/Applications/components/SingleRequest/index.jsx","modules/Applications/pages/ApplicationsList/index.jsx","commonComponents/Page/index.jsx","modules/Applications/actions/forms.js","modules/Applications/components/DepositForm/index.jsx","modules/Applications/components/LoanForm/index.jsx","modules/Applications/pages/ApplicationsForms/index.jsx","modules/Applications/pages/RequestSuccess/index.jsx","modules/Notices/components/NoticesList/index.jsx","modules/Notices/pages/Notices/index.jsx","modules/Notices/pages/SingleNotice/index.jsx","modules/News/pages/SingleNews/index.jsx","modules/Dashboard/components/Table/index.jsx","modules/Dashboard/components/AvailableFunds/index.jsx","modules/Dashboard/components/SavingAccounts/index.jsx","modules/Dashboard/components/FastOperations/index.jsx","modules/Dashboard/components/LoanBalance/index.jsx","modules/Dashboard/components/LastOperations/index.jsx","modules/Dashboard/pages/Dasboard/Dashboard.jsx","modules/Dashboard/actions/index.js","modules/Dashboard/pages/Dasboard/index.jsx","routes/index.js","index.js","static/img/logo_sm.png"],"names":["module","exports","PromiseHelper","_this","this","Object","classCallCheck","request","promise","key","minInterval","arguments","length","undefined","now","Date","cancellation","cancellationsStore","timestamp","Promise","reject","Error","race","resolve","cancel","then","result","catch","BASE_API_URL","MENU","accounts","title","name","path","childrens","transfers","sheduleColumns","COLUMNS","current","shares","salary","deposit","loan","raising","operations","shedule","schedule","applications","ACCOUNT_TYPES_FOR_TRANSFER","EMPTY_TABLE_TEXT","availableFunds","DEFAULT_STRING_VALUE","DEFAULT_CURRENCY_LABEL","CONFIRM_TYPES","sms","email","push","ACCOUNT_TYPES_FOR_REQUESTS","objectToCamelCase","obj","dataItem","keys","forEach","string","property","charAt","toLowerCase","slice","propertyValue","Array","isArray","map","item","resultDataToCamelCase","setCookie","value","options","opts","val","encodeURIComponent","expires","d","setTime","getTime","toUTCString","updatedCookie","concat","document","cookie","getCookie","matches","match","RegExp","replace","decodeURIComponent","getMoneyString","balance","currency","toLocaleString","style","getAccountLabel","account","getAccountLabelTransfer","accountName","sum","currencyName","EMAIL_REGEX","getDateString","date","moment","isValid","format","declOfNum","number","titles","getCurrencyTitle","initialState","isAuthenticated","authError","fetching","userFetching","user","address","birthday","phone","login","phoneCountryId","phoneNumber","userError","sessionExpired","settingsError","settingsChanged","showRecoveryForm","recoveryBySms","recoverySuccess","recoveryError","recoveryCodeError","isTempPassword","tempPasswordError","userSettingsSaved","globalExchangeRates","globalExchangeRatesFetching","globalExchangeRatesError","limitInfo","IsActivated","IsAccepted","Description","countries","appReducer","state","action","type","objectSpread","payload","pathname","search","accountsFetching","detailsFetching","details","accountsError","accountsFilters","accountId","dateStart","dateEnd","minDate","maxDate","sheduleCount","accountsReducer","defineProperty","accountType","data","operationsCount","count","transferCodeError","fetchError","transfersReducer","loanAccount","debitAccount","transferSum","transferFormError","sheduleError","accountFrom","accountTo","accountsLoadingError","depositAccountId","debitAccountId","incomeAfterRefill","incomeFetching","incomeError","applicationsCount","error","currentPage","requestFetching","requestData","accountForFilter","cancelInProgress","applicationsReducer","depositIncome","depositIncomeError","loanShedule","loanSheduleError","loanMonthlyPayment","requestError","news","newsFetching","newsFetchError","newsReducer","publications","loading","lastOperations","dashboardReducer","notices","noticesNew","sorting","notice","countNew","singleNoticeError","noticeFetching","noticesFetching","noticesReducer","filter","id","rootReducer","combineReducers","transfersReducerLoan","transfersReducerInner","transfersReducerPartner","transfersReducerSalary","transfersReducerDeposit","transfersReducerCurrency","direction","applicationsFormsReducer","billLoanPlanCalendarPeriods","monthlyPayment","startDate","router","routerReducer","history","createLogger","createHistory","middlewares","routerMiddleware","thunkMiddleware","withExtraArgument","getNotices","section","_ref","limit","page","dispatch","token","urlBase","offset","url","fetch","method","headers","Authorization","response","ok","json","status","text","Message","message","promiseHelper","_callee","regenerator_default","a","wrap","_context","prev","next","sent","t0","t1","abrupt","t2","stop","modulueBaseApi","authFail","fetchStart","fetchStop","logout","Content-Type","extendSession","_refreshToken","apply","UserApi","tokenSet","access_token","expires_in","refresh_token","console","getUser","asyncToGenerator","mark","getState","_x","_x2","_x3","loginData","password","body","JSON","stringify","Login","Password","content-type","authSuccess","sessionWasExpired","userSettingsFail","changeUserSettings","userData","changeUserAccountSettings","recoveryPasswordStep1","recoveryData","recoveryInfo","recoveryMethod","recoveryPasswordErrorHandler","recoveryBackToStep1","confirmRecoveryCode","code","recoveryCodeErrorHandler","recoveryDone","changeTempPassword","new","confirm","passwordConfirm","getGlobalExchangeRates","_ref2","_callee2","rates","_context2","currenciesList","_x4","_x5","_x6","checkLimitInfo","_ref3","_callee3","_context3","_x7","_x8","_x9","acceptLimitInfo","_ref4","_callee4","_context4","AcceptedFrom","_x10","_x11","_x12","getCounties","_ref5","_callee5","_context5","country","Value","Text","regions","iso2","CountryCode","dialCode","PhoneCode","_x13","_x14","_x15","Wrapper","props","react_default","createElement","className","cx","children","defaultProps","SiteLogo","src","logo","alt","MainMenu","activeLink","getActiveLinkNode","roller","setProperty","offsetLeft","offsetWidth","link1","link3","link4","find","classList","contains","NavLink","innerRef","element","activeClassName","to","ref","React","Component","withRouter","UserData","possibleConstructorReturn","getPrototypeOf","call","toggleDropdown","bind","assertThisInitialized","open","setState","prevState","_this2","user__button--open","onClick","onKeyPress","role","tabIndex","user__dropdown--open","user__link--has-new","hasNewNotice","href","event","preventDefault","connect","getSingleNews","newsId","Icon","icon","faChevronLeft","faChevronRight","faSyncAlt","faTimesCircle","faCheckCircle","faRss","faRedo","faSpinner","faExchangeAlt","getIcon","index_es","Throbber","inPanel","inline","throbber--in-panel","throbber--inline","ArrowPrev","assign","commonComponents_Icon","ArrowNext","NewsContainer","sliderRef","slider","forceUpdate","commonComponents_Throbber","newsFetchingError","lib_default","dots","arrows","asNavFor","dotsClass","appendDots","customPaging","i","nextArrow","NewsContainer_ArrowNext","prevArrow","NewsContainer_ArrowPrev","infinite","slidesToScroll","slidesToShow","speed","react_lines_ellipsis_lib_default","preview","maxLine","HeaderNews","components_NewsContainer","ExchangeRates","ratesList","USD","EUR","groupRates","minimumFractionDigits","maximumFractionDigits","Header","commonComponents_Wrapper","components_HeaderNews","components_UserData","commonComponents_SiteLogo","components_MainMenu","components_ExchangeRates","Footer","year","getSubmenus","Button","handleClick","stopPropagation","disabled","_cx","size","fakeDisabled","block","Tag","SessionModal","exitHandler","show","Button_Button","subscribeToSocket","callbacks","_attempt","attempt","socket","WebSocket","onopen","onmessage","onclose","setTimeout","onerror","Chat","changeHandler","keypressHandler","collapsHandler","onmessageHandler","input","messages","collapsed","interlocutor","e","warn","setChatOffset","window","getElementById","addEventListener","prevProps","messagesContainer","scrollTop","parse","toConsumableArray","author","Name","scrollHeight","offsetHeight","scrollY","containerElement","target","keyCode","Id","Token","send","_this3","react_draggable_default","axis","handle","bounds","chat--collapsed","getStatusText","Math","random","substring","getMessageKey","chat__message--you","chat__author--you","rows","onChange","onKeyDown","placeholder","NotifyString","Main","isAliveToken","callback","tick","appActions","components_NotifyString","components_Header","components_SubMenu","currentPath","components_Footer","components_SessionModal","containers_Chat","location","bindActionCreators","PrivateComponent","Authentication","_React$Component","inherits","createClass","containers_Main","Redirect","FormLabel","Node","formLabelProps","htmlFor","FormError","CurrencyInput","handleChange","parsedValue","parseValue","rawValue","clearValue","isValidValue","handleFocus","persist","focused","onFocus","handleBlur","onBlur","test","toString","Number","toFixed","formatValue","parseFloat","isZeroValue","renderValue","nextProps","onChangeEvent","_this$props","rest","objectWithoutProperties","FormControl","label","form-control--error","FormControl_label","currencyInput_CurrencyInput","form-control__input--error","float","FormControl_error","Radio","field","checked","form-control__radio-icon--active","LoginForm","submitHandler","recoveryHandler","showPassword","loginError","passwordError","_this$setState","_event$target","loginAction","onSubmit","FormControl_FormControl","defaultChecked","LoginContainer","components_LoginForm","MobileDisclamer","continueSerfing","getMobileOperatingSystemLogo","googlePlay","appleStore","PureComponent","userAgent","navigator","vendor","opera","logoSm","MSStream","RecoveryForm","repeatCode","changeUserHandler","backHandler","changeRecoveryMethod","changeCodeHandler","submitCodeHandler","codeError","FormControl_Radio","RecoveryPasswordContainer","components_RecoverySuccess","components_RecoveryForm","RecoveryPassword","getFetchConfig","fetchFail","getAccountsListing","accountsUrl","getDetails","setAccountFilters","getBalanceDetails","getOperations","_state$accountsReduce","Operations","Count","getShedule","_state$accountsReduce2","Payments","clearAccountDetails","resetDetailsAndFilters","RejectedStatus","CompletedStatus","InProcessStatus","Canceled","ApplicationStatus","0","Status_InProcessStatus","1","Status_CompletedStatus","2","Status_RejectedStatus","3","Status_Canceled","Table","log","getColumns","column","table__cell--head-actions","entity","columnName","dataType","table__action--collapse","dateOfCreate","Status","getValue","colSpan","getNotFoundText","getTableDescription","AccountsBanner","getTitle","Cell","parentType","Row","Children","child","cloneElement","Head","Body","notFoundMessage","columnsCount","DataTable_Row","DataTable_Cell","DataTable","LinkToTransfer","account-action--collapse","LinkToDetails","Print","CurrencyTransfer","AccountActions","DataTable_DataTable","clearBalance","percent","incomeToday","Actions_AccountActions","Listing","renderTable","params","components_CurrentTable","components_SalaryTable","Table_Table","accountsActions","components_AccountsBanner","SelectBoxOption","handleMouseDown","handleMouseEnter","handleMouseMove","onSelect","option","isFocused","selectbox__option--focused","onMouseDown","onMouseEnter","onMouseMove","aria-selected","SelectBox","noResultsText","react_select_es","optionComponent","getPeriodValueString","start","end","DatePicker","isDisabled","dates","datepicker__input--disabled","readOnly","datepicker__calendar--is-open","react_date_range_lib","classNames","dateRange","calendar","days","day","dayInRange","dayActive","dayPassive","weekDays","weekDay","monthAndYearWrapper","month","monthAndYearDivider","prevButton","nextButton","endDate","lang","calendars","linkedCalendars","onlyClasses","AccountFilters","getDefaultAccount","currentType","currentAccountId","defaultAccount","changeTypeHandler","changeAccountHandler","handleChangeDates","commonComponents_SelectBox","clearable","searchable","isLoading","DatePicker_DatePicker","getValueString","paramName","ACCOUNT_SUMMARY_COLUMNS","CONDITIONS_COLUMNS","pension","DETAILS_TABS","SummaryBlock","columns","getParam","param","accountData","getParamValue","index","Pagination","pages","ceil","totalCount","changePage","onChangePage","pagination__link--current","OperationsTable","isLoan","Details","getData","isPensionAccount","currentAccountType","productTypeId","tabChange","getDetailsTab","getSchedule","getConditions","tabs","conditions","currentTab","shedulePage","locationState","operationsDateStart","operationsDateEnd","tab","operationsTable","commonComponents_Pagination","items","_this4","valueOf","commonComponents_SummaryBlock","components_AccountFilters","getAccountSummaryColumns","getDetailsTabsControls","FormLineColumn","styled","react","_templateObject","parseInt","FormLine","center","_templateObject2","css","_templateObject3","AccountSettingsForm","formHasError","accountPasswordNewError","accountPasswordNewConfirmError","accountPasswordOldError","accountLoginError","submitForm","hasError","_this$state","accountPasswordNew","accountPasswordNewConfirm","accountPasswordOld","accountLogin","formChangeHandler","formWasChanged","ModelState","commonComponents_FormLine","join","required","PhoneInput","updateStateData","PhoneCountryId","onlyCountries","selectedCountry","o","getProbableCandidate","memoize","queryString","startsWith","guessSelectedCountry","inputNumber","secondBestGuess","trim","bestGuess","reduce","priority","updateCountry","newSelectedCountry","indexOf","formattedNumber","disableCountryCode","prefix","scrollTo","middle","container","dropdownRef","containerHeight","containerTop","getBoundingClientRect","top","containerBottom","elementOffset","elementHeight","elementTop","elementBottom","newScrollTop","middleOffset","enableSearch","heightDifference","scrollToTop","formatNumber","patternArg","pattern","enableLongNumbers","autoFormat","split","shift","formattedObject","acc","character","remainingText","formattedText","_acc$remainingText","toArray","head","tail","includes","cursorToEnd","numberInputRef","focus","len","setSelectionRange","getElement","getCountryData","countryCode","handleFlagDropdownClick","showDropdown","highlightCountryIndex","preferredCountries","allCountries","findIndex","enableAreaCodes","handleInput","freezeSelection","countryCodeEditable","mainCode","hasAreaCodes","updatedInput","returnValue","caretPosition","selectionStart","oldFormattedText","diff","handleInputClick","handleDoubleClick","handleFlagItemClick","handleInputFocus","jumpCursorToEnd","handleInputBlur","handleInputCopy","copyNumbersOnly","getSelection","clipboardData","setData","getHighlightCountryIndex","getSearchFilteredCountries","searchCountry","probableCandidate","probableCandidateIndex","handleKeydown","which","ENTER","ESC","blur","UP","DOWN","moveHighlight","A","Z","SPACE","String","fromCharCode","debouncedQueryStingSearcher","handleInputKeyDown","onEnterKeyPress","handleClickOutside","dropdownContainerRef","handleSearchChange","searchValue","currentTarget","_this$state2","getDropdownCountryName","localName","_this$state3","sanitizedSearchValue","iso2countries","some","searchedCountries","Set","getCountryDropdownList","_classNames","_this$state4","_this$props2","disableSearchIcon","searchClass","searchStyle","searchPlaceholder","autocompleteSearch","countryDropdownList","itemClasses","preferred","active","highlight","inputFlagClasses","el","data-flag-key","data-dial-code","data-country-code","dashedLi","splice","dropDownClasses","dropdownClass","dropdownStyle","search-emoji","aria-label","search-box","autoFocus","autoComplete","countryGuess","debounce","removeEventListener","snapshot","isEqual","updateFormattedNumber","_this$state5","_classNames5","_classNames6","_this$state6","_this$props3","disableDropdown","renderStringAsFlag","arrowClasses","arrow","up","inputClasses","inputClass","selectedFlagClasses","selected-flag","flagViewClasses","buttonClass","containerClass","containerStyle","inputStyle","onDoubleClick","onCopy","inputProps","buttonStyle","excludeCountries","flagsImagePath","enableTerritories","localization","masks","areaCodes","preserveOrder","defaultMask","alwaysDefaultMask","RIGHT","LEFT","PLUS","UserSettingsForm","onChangePhoneInput","additionalData","formSubmitHandler","userName","userBirthday","userEmail","userAddress","emailError","phoneError","Phone","commonComponents_PhoneInput","saved","Settings","tabChangeHandler","activeTab","components_UserSettingsForm","components_AccountSettingsForm","settings__tab-button--active","getForm","ChangePassword","errors","formData","every","Inner","RegularText","BlockLikeInput_Inner","BoldText","CustomText","innerDefaultProps","BlockLikeInput","Link","Typography","SetMaxSum","cancelTransfer","submitConfirmCode","transferType","transferData","apiUrl","getUrlForConfirmCode","Code","get","toBill","reFetchConfirmCode","codeType","getUrlForReFetchCode","CodeType","getAccounts","requests","all","b","changeAccount","setTransferSum","submitTransferForm","confirmMethod","_getState$transfersRe","Sum","ConfirmMethodControls","selectedMethod","TransferFormSalary","setMaxSum","availableSum","handleChangeAccount","resetErrors","handleChangeSum","handleChangeConfirmMethod","sumError","accountFromError","validateAccoutFrom","validateSumm","submitHasDisabled","renderBlockForm","dangerouslySetInnerHTML","__html","acceptBlocking","showBlockForm","focusSum","initialAccount","selectedAccount","BlockLikeInput_BlockLikeInput","components_SetMaxSum","Typography_Typography","components_ConfirmMethodControls","changeTransferSum","FromBill","ToBill","TransferFormInner","getavailableSum","getAccountFromOptions","selectedToAccount","avaliableAccounts","changeFromAccount","changeToAccount","handleChangetransferSum","accountToError","validateAccoutTo","isSubmitDisabled","selectedAccountFrom","transferError","Modal","opened","additionalProps","openModal","add","closeModal","onClose","remove","handleKeyPress","onScroll","propsFromModal","TransferFormLoan","getSelectedAccountFrom","getAccountLabelLoan","getCurrency","renderLatePaymentData","latePayment","renderSecondNearestPaymentData","paymentData","secondNearestPayment","modal","renderScheduleTable","renderMaxSumLabel","isFullPaymentAvailable","changeSummTimer","selectedLoan","balanceToClose","maxSum","clearTimeout","payments","selectedAccountLoan","availableAccounts","getDebitAccounts","Modal_Modal","setAccount","initialDepositId","TransferFormDeposit","time","closeDate","openingSum","income","getDepositLabel","depositAccount","getDeositTimeString","handleChangeTransferSum","periods","_getState$transfersRe2","getRate","TIMER","TransferFormCurrency","setCurrency","currentAccountFrom","rateList","rate","ratesIsNotAvailable","rateLoading","startCounter","stopCounter","counter","timer","fetchRate","checkRates","renderRate","currentRate","targetAccounts","selectedTargetAccount","sumFieldIsDisabled","overlay","TransferFormContainer","div","Views_templateObject","processResponse","errorResult","_getAccounts","getPartner","_getPartner","partnerPhoneOrEmail","getCode","_getCode","PartnerLabel","views_templateObject","JsFormControl","JsBlockLikeInput","JsSelectBox","TransferFormPartner","accountsLoading","t3","finish","partnerLoading","partner","partnerError","handleChangePartner","debouncedParterRequest","accountError","validateAccount","requestCode","toParnertId","partnerSecureId","Transfers","getHeading","getTransferType","_this$props$match$par","components_TransferFormSalary","components_TransferFormInner","components_TransferFormLoan","components_TransferFormDeposit","components_TransferFormCurrency","components_TransferFormPartner","renderForm","isValidCode","TransferConfirm","moveBack","transfer","goBack","handleChangeCode","submitCode","isDisabledSubmit","ConfirmPage","components_TransferConfirm","SuccessMessage","commonComponents_Link","TransferSuccess","components_SuccessMessage","es_Link","getRequests","_ref2$page","_ref2$status","_ref2$account","queryParams","URLSearchParams","append","getQueryParams","cancelRequest","SingleRequest","requestId","getRequest","partnerName","billCode","payer","payerBill","payerBank","receiver","receiverBill","receiverBank","ApplicationsList","getAccountOptions","accountOptions","handleChangePage","pageNumber","selectedStatus","handleRequestClick","handleChangeStatus","subtract","availableStatuses","applicationDate","executionDate","components_SingleRequest","Heading","SubHeading","Content","Page","formType","term","Currency","Period","requestUrl","sendRequest","BillType","resetFormData","CURRENCIES","DEPOSIT_TERMS","DepositForm","handleChangeCurrency","handleChangeTerm","LoanForm","renderPaymentData","ApplicationsForms","components_DepositForm","components_LoanForm","Page_Page","RequestSuccess","NoticesList","notice-preview--unread","isUnread","Notices","sectionLinks","link","nextState","desc","asc","renderSortingButton","components_NoticesList","noticesCount","ownProps","SingleNotice","getBackButton","noticeId","renderHTML","content","SingleNews","getNews","reverse","white","cn","table-dashboard__row--body","table-dashboard__row--body_reverse","Col","SubCol","_this$props4","withBottomDevider","AvailableFunds","Current","Share","Salary","take","orderBy","isEmpty","components_Table_Table","Title","Balance","SavingAccounts","Deposit","image","img","img4","img2","img3","FastOperations","checkDisabled","accaunts","preventClick","LoanBalance","payLoan","Loan","LoanSum","DateOfCreate","NextPaymentSum","NextPaymentDate","DateOfEnd","LastOperations","Dashboard","fetchAccaunts","fetchLastOperations","getUserName","components_AvailableFunds","components_SavingAccounts","components_FastOperations","components_LoanBalance","components_LastOperations","preloadedState","Routes","Switch","check","substr","innerWidth","innerHeight","detectmob","Route","component","exact","render","routeProps","store","createStore","applyMiddleware","ReactGA","initialize","debug","process","listen","pageview","ReactDOM","es","react_router_redux_es","routes","__webpack_require__","p"],"mappings":"2EAAAA,EAAAC,QAAA,glSCAAD,EAAAC,QAAA,wlXCAAD,EAAAC,QAAA,qzDCAAD,EAAAC,QAAA,6nDCAAD,EAAAC,QAAA,iqDCAAD,EAAAC,QAAA,w8ECAAD,EAAAC,QAAA,8uSCAAD,EAAAC,QAAA,02GCIqBC,EAInB,SAAAA,IAAc,IAAAC,EAAAC,KAAAC,OAAAC,EAAA,EAAAD,CAAAD,KAAAF,GAAAE,KAcdG,QAAU,SAACC,EAASC,GAAyB,IAApBC,EAAoBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAN,EAC/BG,EAAMC,KAAKD,MACXE,EAAeb,EAAKc,mBAAmBR,GAC7C,OAAIO,GAAgBN,GAAeI,EAAME,EAAaE,UAAYR,EACzDS,QAAQC,OAAO,IAAIC,MAAM,oFAG3BF,QAAQG,KAAK,CAClB,IAAIH,QAAQ,SAACI,EAASH,GACpBjB,EAAKc,mBAAmBR,GAAO,CAC7Be,OAAQJ,EACRF,UAAWJ,KAGfN,IAECiB,KAAK,SAACC,GAEL,cADOvB,EAAKc,mBAAmBR,GACxBiB,IAERC,MAAM,kBACExB,EAAKc,mBAAmBR,MAnCvBL,KA2CdoB,OAAS,SAACf,GACJN,EAAKc,mBAAmBR,IAC1BN,EAAKc,mBAAmBR,GAAKe,UA5C/BpB,KAAKa,mBAAqB,4BCTjBW,EAAe,OAMfC,EAAO,CAClBC,SAAU,CACRC,MAAO,iCACPC,KAAM,WACNC,KAAM,YACNC,UAAW,CACT,CACEH,MAAO,4EACPC,KAAM,UACNC,KAAM,qBAER,CACEF,MAAO,iFACPC,KAAM,SACNC,KAAM,oBAER,CACEF,MAAO,8FACPC,KAAM,SACNC,KAAM,oBAER,CACEF,MAAO,8IACPC,KAAM,UACNC,KAAM,qBAER,CACEF,MAAO,iCACPC,KAAM,OACNC,KAAM,kBAER,CACEF,MAAO,4EACPC,KAAM,UACNC,KAAM,uBAIZE,UAAW,CACTJ,MAAO,iCACPC,KAAM,WACNC,KAAM,YACNC,UAAW,CACT,CACEH,MAAO,sGACPC,KAAM,WACNC,KAAM,wBAER,CACEF,MAAO,4JACPC,KAAM,YACNC,KAAM,yBAOR,CACEF,MAAO,+IACPC,KAAM,OACNC,KAAM,mBAER,CACEF,MAAO,oGACPC,KAAM,UACNC,KAAM,yBAiERG,EAAiB,CACrB,CACEJ,KAAM,OACND,MAAO,uEAET,CACEC,KAAM,MACND,MAAO,6EAET,CACEC,KAAM,UACND,MAAO,qIAOEM,EAAU,CACrBC,QAAS,CACP,CACEN,KAAM,QACND,MAAO,+FAET,CACEC,KAAM,UACND,MAAO,uEAET,CACEC,KAAM,UACND,MAAO,qDAGXQ,OAAQ,CACN,CACEP,KAAM,QACND,MAAO,+FAET,CACEC,KAAM,eACND,MAAO,6EAET,CACEC,KAAM,UACND,MAAO,uEAET,CACEC,KAAM,UACND,MAAO,qDAGXS,OAAQ,CACN,CACER,KAAM,QACND,MAAO,+FAET,CACEC,KAAM,eACND,MAAO,6EAET,CACEC,KAAM,gBACND,MAAO,qGAET,CACEC,KAAM,cACND,MAAO,0FAET,CACEC,KAAM,UACND,MAAO,uEAET,CACEC,KAAM,UACND,MAAO,qDAGXU,QAAS,CACP,CACET,KAAM,QACND,MAAO,+FAET,CACEC,KAAM,YACND,MAAO,wHAET,CACEC,KAAM,aACND,MAAO,qGAET,CACEC,KAAM,cACND,MAAO,qGAET,CACEC,KAAM,UACND,MAAO,uEAET,CACEC,KAAM,UACND,MAAO,kGAET,CACEC,KAAM,UACND,MAAO,2GAET,CACEC,KAAM,UACND,MAAO,qDAGXW,KAAM,CACJ,CACEV,KAAM,UACND,MAAO,iEAET,CACEC,KAAM,eACND,MAAO,6EAET,CACEC,KAAM,YACND,MAAO,8HAET,CACEC,KAAM,iBACND,MAAO,kGAET,CACEC,KAAM,iBACND,MAAO,0DAET,CACEC,KAAM,UACND,MAAO,6EAET,CACEC,KAAM,UACND,MAAO,qDAGXY,QAAS,CACP,CACEX,KAAM,QACND,MAAO,+FAET,CACEC,KAAM,YACND,MAAO,wHAET,CACEC,KAAM,aACND,MAAO,qGAET,CACEC,KAAM,cACND,MAAO,qGAET,CACEC,KAAM,UACND,MAAO,uEAET,CACEC,KAAM,UACND,MAAO,qDAGXa,WA7Lw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ACL,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,qBACH,OAAOhB,EAAepB,EAAOsB,GAE/B,IAAK,UACL,IAAK,YACH,SAAAX,OAAUX,EAAV,KAEF,IAAK,WACL,IAAK,eACH,OAjD0B,SAACsB,GAC/B,OAAQA,GACN,IAAK,MACH,MAAO,8CAET,IAAK,MACH,MAAO,2BAET,IAAK,MACH,MAAO,0DAET,QACE,OAAOA,GAqCAkB,CAAiBxC,GAE1B,QACE,OAAOA,IAIA6tB,GAA0B,CACrClwB,QAAS,CACP,CACE,CACEN,KAAM,UACND,MAAO,yCAGX,CACE,CACEC,KAAM,SACND,MAAO,kEAGX,CACE,CACEC,KAAM,cACND,MAAO,yJAIbQ,OAAQ,CACN,CACE,CACEP,KAAM,UACND,MAAO,yCAGX,CACE,CACEC,KAAM,SACND,MAAO,kEAGX,CACE,CACEC,KAAM,cACND,MAAO,yJAIbW,KAAM,CACJ,CACE,CACEV,KAAM,UACND,MAAO,oIAET,CACEC,KAAM,qBACND,MAAO,wEAGX,CACE,CACEC,KAAM,SACND,MAAO,kEAGX,CACE,CACEC,KAAM,kBACND,MAAO,qIAGX,CACE,CACEC,KAAM,iBACND,MAAO,4IAIbU,QAAS,CACP,CACE,CACET,KAAM,UACND,MAAO,gGAGX,CACE,CACEC,KAAM,SACND,MAAO,kEAGX,CACE,CACEC,KAAM,kBACND,MAAO,uJAGX,CACE,CACEC,KAAM,iBACND,MAAO,8JAIbS,OAAQ,CACN,CACE,CACER,KAAM,eACND,MAAO,0FAGX,CACE,CACEC,KAAM,SACND,MAAO,kEAGX,CACE,CACEC,KAAM,kBACND,MAAO,uJAGX,CACE,CACEC,KAAM,iBACND,MAAO,8JAIbY,QAAS,CACP,CACE,CACEX,KAAM,UACND,MAAO,gGAGX,CACE,CACEC,KAAM,SACND,MAAO,kEAGX,CACE,CACEC,KAAM,kBACND,MAAO,uJAGX,CACE,CACEC,KAAM,iBACND,MAAO,+JAMF0wB,GAAqB,CAChC/vB,KAAM,CACJ,CACE,CACEV,KAAM,aACND,MAAO,mFAET,CACEC,KAAM,UACND,MAAO,4BAET,CACEC,KAAM,cACND,MAAO,yHAGX,CACE,CACEC,KAAM,eACND,MAAO,6EAET,CACEC,KAAM,YACND,MAAO,8HAET,CACEC,KAAM,UACND,MAAO,mFAET,CACEC,KAAM,UACND,MAAO,qGAET,CACEC,KAAM,YACND,MAAO,qIAGX,CACE,CACEC,KAAM,YACND,MAAO,gLAET,CACEC,KAAM,aACND,MAAO,sLAET,CACEC,KAAM,cACND,MAAO,yJAIbU,QAAS,CACP,CACE,CACET,KAAM,WACND,MAAO,wCAET,CACEC,KAAM,eACND,MAAO,6EAET,CACEC,KAAM,YACND,MAAO,+HAGX,CACE,CACEC,KAAM,UACND,MAAO,mFAET,CACEC,KAAM,UACND,MAAO,qGAET,CACEC,KAAM,YACND,MAAO,sIAIbY,QAAS,CACP,CACE,CACEX,KAAM,WACND,MAAO,wCAET,CACEC,KAAM,eACND,MAAO,6EAET,CACEC,KAAM,YACND,MAAO,+HAGX,CACE,CACEC,KAAM,UACND,MAAO,mFAET,CACEC,KAAM,UACND,MAAO,uGAIbS,OAAQ,CACN,CACE,CACER,KAAM,WACND,MAAO,wCAET,CACEC,KAAM,eACND,MAAO,6EAET,CACEC,KAAM,YACND,MAAO,+HAGX,CACE,CACEC,KAAM,UACND,MAAO,mFAET,CACEC,KAAM,UACND,MAAO,qGAET,CACEC,KAAM,YACND,MAAO,qIAGX,CACE,CACEC,KAAM,YACND,MAAO,gLAET,CACEC,KAAM,aACND,MAAO,sLAET,CACEC,KAAM,cACND,MAAO,yJAIb2wB,QAAS,CACP,CACE,CACE1wB,KAAM,WACND,MAAO,wCAET,CACEC,KAAM,eACND,MAAO,6EAET,CACEC,KAAM,YACND,MAAO,+HAGX,CACE,CACEC,KAAM,UACND,MAAO,mFAET,CACEC,KAAM,UACND,MAAO,wGAMF4wB,GAAe,CAC1BrwB,QAAS,CACP,CACEN,KAAM,aACND,MAAO,sGAGXQ,OAAQ,CACN,CACEP,KAAM,aACND,MAAO,sGAGXW,KAAM,CACJ,CACEV,KAAM,aACND,MAAO,qGAET,CACEC,KAAM,aACND,MAAO,gEAET,CACEC,KAAM,WACND,MAAO,0FAGXU,QAAS,CACP,CACET,KAAM,aACND,MAAO,qGAET,CACEC,KAAM,aACND,MAAO,iEAGXS,OAAQ,CACN,CACER,KAAM,aACND,MAAO,qGAET,CACEC,KAAM,aACND,MAAO,iEAGXY,QAAS,CACP,CACEX,KAAM,aACND,MAAO,qGAET,CACEC,KAAM,aACND,MAAO,kECzbP6wB,WAAe,SAAC3b,GAAU,IACtBvM,EAA6BuM,EAA7BvM,KAAMmoB,EAAuB5b,EAAvB4b,QAASzb,EAAcH,EAAdG,UAkBjB0b,EAAW,SAACC,EAAOC,GAAR,OACf9b,EAAAtG,EAAAuG,cAAA,OACEC,UAAWC,KAAG,sBAAD,wBAAA/R,OAAgDytB,EAAM/wB,OACnEvB,IAAKsyB,EAAM/wB,MAEXkV,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,wBAAwB2b,EAAMhxB,OAC3CmV,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,wBAtBG,SAACmb,GACrB,IACE,GAAkB,YAAdA,GAAgD,YAArB7nB,EAAKD,YAA2B,CAC7D,IAAM9F,EACJ2tB,GAAe5nB,EAAK6nB,GAAYA,EAAW7nB,EAAKzE,WDZtB,MCa5B,SAAAX,OAA4B,QAAlBoF,EAAKzE,SAAqB,wFAAoB,0DAAxD,OAAAX,OAA0EX,GAE5E,YAAwB9D,IAApB6J,EAAK6nB,IAAgD,OAApB7nB,EAAK6nB,GDfZ,MCkBvBD,GAAe5nB,EAAK6nB,GAAYA,EAAW7nB,EAAKzE,UACvD,MAAO6a,GACP,MDpB8B,OC+B3BmS,CAAcF,EAAM/wB,MACC,SAArBgxB,EAAYzpB,MACI,mBAAfwpB,EAAM/wB,MACJkV,EAAAtG,EAAAuG,cAAA,WACED,EAAAtG,EAAAuG,cAACsI,GAAD,CACEP,KAAK,KACLpF,QAAS,kBAAMjL,GAAQrL,KAAK,kBAAmB,CAAEyG,UAAW+oB,EAAYnlB,OAF1E,sGAQgB,YAArBmlB,EAAYzpB,MACI,YAAfwpB,EAAM/wB,MACJkV,EAAAtG,EAAAuG,cAAA,WACED,EAAAtG,EAAAuG,cAACsI,GAAD,CACEP,KAAK,KACLpF,QAAS,kBAAMjL,GAAQrL,KAAK,qBAAsB,CAAEyG,UAAW+oB,EAAYnlB,OAF7E,6FAYZ,OACEqJ,EAAAtG,EAAAuG,cAAA,OAAKC,UAAWC,KAAG,gBAADhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAqB+W,EAAYA,KAChDyb,EAAQtuB,IAAI,SAACsnB,EAAQqH,GACpB,IAAMzyB,EAAG,UAAA6E,OAAa4tB,GACtB,OACEhc,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,wBAAwB3W,IAAKA,GACzCorB,EAAOtnB,IAAI,SAAAC,GAAI,OACdsuB,EAAStuB,EAAM,CACb+E,KAAMmB,EAAKD,YACXoD,GAAInD,EAAKmD,aASV+kB,MAgBfA,GAAarb,aAAe,CAC1B7M,KAAM,KACN0M,UAAW,iBC5FP+b,GAAa,SAAClc,GAGlB,IAFA,IAAMmc,EAAQ,GAELtW,EAAI,EAAGA,EAAI6F,KAAK0Q,KAAKpc,EAAMqc,WAAarc,EAAM1H,OAAQuN,GAAK,EAClEsW,EAAM5vB,KAAKsZ,EAAI,GAGjB,OAAIsW,EAAMxyB,OAAS,EACV,KAGPsW,EAAAtG,EAAAuG,cAAA,OAAKC,UAAWC,KAAG,aAADhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAkB4W,EAAMG,UAAYH,EAAMG,aACzDgc,EAAM7uB,IAAI,SAAAC,GAAI,OACb0S,EAAAtG,EAAAuG,cAAA,UACE2C,QAAS,WAEH7C,EAAMsc,aACRlhB,QAAQ0O,KAAK,iCACb9J,EAAMsc,WAAW/uB,IAEnByS,EAAMuc,aAAahvB,IAErB4S,UAAWC,KACT,gBACA,mBACA,CACEoc,4BAA6Bxc,EAAM3U,SAAW2U,EAAM3U,UAAYkC,IAGpE/D,IAAK+D,GAEJA,OAcX2uB,GAAW5b,aAAe,CACxBH,UAAW,MAGE+b,UCJAO,GA5CS,SAAApkB,GAAA,IAAG5E,EAAH4E,EAAG5E,KAAMzE,EAATqJ,EAASrJ,SAAU0tB,EAAnBrkB,EAAmBqkB,OAAnB,OACtBzc,EAAAtG,EAAAuG,cAAC2W,GAAD,KACE5W,EAAAtG,EAAAuG,cAAC2W,GAAUb,KAAX,KACE/V,EAAAtG,EAAAuG,cAAC2W,GAAUjB,IAAX,KACE3V,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,8FACAzV,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,yDACAzV,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,6CACAzV,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,6CACAzV,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KAAiBgH,EAAS,+EAAuB,0CAGrDzc,EAAAtG,EAAAuG,cAAC2W,GAAUZ,KAAX,KACGxiB,EAAKnG,IAAI,SAAAC,GAAI,OACZ0S,EAAAtG,EAAAuG,cAAC2W,GAAUjB,IAAX,CAAepsB,IAAK+D,EAAKqJ,IACvBqJ,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KAAiB9lB,IAAOrC,EAAKoC,MAAMG,OAAO,yBAC1CmQ,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KACEzV,EAAAtG,EAAAuG,cAAA,YACED,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,oBAAoB5S,EAAKzC,OACzCmV,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,SAAOC,UAAU,8CAA8C5S,EAAKsF,WAGxEoN,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KAAiBnoB,EAAKgC,KAAO,GAAKT,EAAevB,EAAKgC,IAAKP,IAC3DiR,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KAAiBnoB,EAAKgC,IAAM,GAAKT,EAAevB,EAAKgC,IAAKP,IAC1DiR,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KAAiB5mB,EAAevB,EAAKwB,QAASC,UCXlD2tB,eAmDJ,SAAAA,EAAY3c,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAwzB,IACjBzzB,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAuzB,GAAAva,KAAAjZ,KAAM6W,KAsGR4c,QAAU,WACJ1zB,EAAK8W,MAAMjK,UAIf7M,EAAK8W,MAAMwX,gBAAgBxE,WACzB9pB,EAAK2zB,mBAAqB,UAAY3zB,EAAK8W,MAAM8c,mBACjD5zB,EAAK8W,MAAM2a,kBAGbzxB,EAAK8W,MAAMwX,gBAAgBtE,kBAAkBhqB,EAAK8W,MAAM2a,kBAElB,SAAlCzxB,EAAK8W,MAAM8c,oBACb5zB,EAAK8W,MAAMwX,gBAAgBjE,WAAWrqB,EAAK8W,MAAM2a,oBApHlCzxB,EA8MnB2zB,iBAAmB,WACjB,IAAIA,GAAmB,EACvB,GAAsC,YAAlC3zB,EAAK8W,MAAM8c,oBAAoC5zB,EAAK8W,MAAMnV,SAASW,QAAQ7B,OAAS,EAAG,CACzF,IAAMyF,EAAUlG,EAAK8W,MAAMnV,SAASW,QAAQ6V,KAAK,SAAAhJ,GAAA,OAAAA,EAAGzB,KAAgB1N,EAAK8W,MAAM2a,mBAE3EvrB,IACFytB,EAA6C,QAA1BztB,EAAQ2tB,eAAqD,QAA1B3tB,EAAQ2tB,eAIlE,OAAOF,GArNP3zB,EAAK8zB,UAAY9zB,EAAK8zB,UAAU1a,KAAflZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KACjBA,EAAK+zB,cAAgB/zB,EAAK+zB,cAAc3a,KAAnBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KACrBA,EAAKiqB,cAAgBjqB,EAAKiqB,cAAc7Q,KAAnBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KACrBA,EAAKg0B,YAAch0B,EAAKg0B,YAAY5a,KAAjBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KACnBA,EAAKi0B,cAAgBj0B,EAAKi0B,cAAc7a,KAAnBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KAErBA,EAAKk0B,KAAO,CACVzxB,WAAYzC,EAAKiqB,cACjBtnB,SAAU3C,EAAKg0B,YACfG,WAAYn0B,EAAKi0B,eAGnBj0B,EAAKkJ,MAAQ,CACXkrB,WAAY,aACZ/kB,KAAM,EACNglB,YAAa,GAlBEr0B,qFAuBjBoF,SAASxD,MAAQ,qEACjB,IAAM0yB,EAAgBr0B,KAAK6W,MAAMiN,SAAS7a,MAEtCorB,GAAiBA,EAAcxI,UAAYwI,EAAcxqB,UAC3D7J,KAAK6W,MAAMwX,gBAAgBvE,kBAAkB,CAC3C3gB,KAAMkrB,EAAcxI,SACpBhiB,UAAWwqB,EAAcxqB,UACzBC,UAAWrD,IAAO4tB,EAActI,cAChChiB,QAAStD,MACTuD,QAASvD,IAAO4tB,EAActI,cAC9B9hB,QAASxD,QAGXzG,KAAK6W,MAAMwX,gBAAgBvE,kBAAkB,CAC3C3gB,KAAM,uDAKO6X,GACbhhB,KAAK6W,MAAMjK,UAKb5M,KAAK6W,MAAM2a,mBAAqBxQ,EAAUwQ,kBAC1CxxB,KAAK6W,MAAM8c,qBAAuB3S,EAAU2S,oBAE5C3zB,KAAKyzB,UAILzzB,KAAK6W,MAAMyd,sBAAwBtT,EAAUsT,qBAC7Ct0B,KAAK6W,MAAM0d,oBAAsBvT,EAAUuT,mBAE3Cv0B,KAAK6W,MAAMwX,gBAAgBrE,cAAchqB,KAAK6W,MAAM2a,kEAKtDxxB,KAAK6W,MAAMwX,gBAAgB7D,iEAI3B,OAAOxqB,KAAKi0B,KAAKj0B,KAAKiJ,MAAMkrB,+DAGL,IAAA3a,EAAAxZ,KACjBi0B,EAAO1B,GAAavyB,KAAK6W,MAAM8c,oBACrC,IACE,OAAIM,EAAKzzB,OAAS,EAEdsW,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,mBACZid,EAAK9vB,IAAI,SAAAqwB,GAAG,OACX1d,EAAAtG,EAAAuG,cAAA,SACE2N,QAAO,aAAAxf,OAAesvB,EAAI5yB,MAC1BvB,IAAKm0B,EAAI5yB,KACToV,UAAU,yBAEVF,EAAAtG,EAAAuG,cAAA,SACEtJ,GAAE,aAAAvI,OAAesvB,EAAI5yB,MACrBuH,KAAK,QACL6d,QAASxN,EAAKvQ,MAAMkrB,aAAeK,EAAI5yB,KACvC2C,MAAOiwB,EAAI5yB,KACXA,KAAK,aACLkhB,SAAUtJ,EAAKqa,UACf7c,UAAU,2BAEZF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,0BAA0Bwd,EAAI7yB,WAMjD,KACP,MAAO+e,GACP,OAAO,8CAqBK,IAAAsB,EAAAhiB,KACRuzB,EAA2C,SAAlCvzB,KAAK6W,MAAM8c,mBAC1B,MAAO,CACL7c,EAAAtG,EAAAuG,cAAC0d,GAAD,CACEp0B,IAAI,OACJiK,KAAMtK,KAAK6W,MAAMrU,WAAWuB,MnEjMJ,ImEkMrB/D,KAAKiJ,MAAMmG,KAAO,GnElMG,GmEmMHpP,KAAKiJ,MAAMmG,MAEhCvJ,SAAU7F,KAAK6W,MAAM5Q,QAAUjG,KAAK6W,MAAM5Q,QAAQJ,SAAW,KAC7D0tB,OAAQA,IAEVzc,EAAAtG,EAAAuG,cAAC2d,GAAD,CACEr0B,IAAI,aACJs0B,MAAO30B,KAAK6W,MAAMrU,WAClB0wB,WAAYlzB,KAAK6W,MAAMrU,WAAWhC,OAClC0B,QAASlC,KAAKiJ,MAAMmG,KACpBD,MnE7MwB,GmE8MxBikB,aAAc,SAAAhkB,GAAI,OAChB4S,EAAK1I,SAAS,CACZlK,mDAOI,IAAAwlB,EAAA50B,KACZ,MAAO,CACL8W,EAAAtG,EAAAuG,cAACqX,GAAD,CACE/tB,IAAI,OACJ8I,KAAK,UACLmB,KAAM,CACJ7H,QAASzC,KAAK6W,MAAMpU,QACjB0B,IAAI,SAAAC,GAAI,OAAAnE,OAAAmJ,EAAA,EAAAnJ,CAAA,GACJmE,EADI,CAEPyB,SAAU+uB,EAAK/d,MAAM5Q,QAAQJ,SAC7B4H,GAAIrJ,EAAKwB,QAAUxB,EAAKgC,KAAOK,IAAOrC,EAAKoC,MAAMquB,UAAY,SAE9D9wB,MnEnOmB,ImEmOZ/D,KAAKiJ,MAAMmG,KAAO,GnEnON,GmEmOgDpP,KAAKiJ,MAAMmG,SAGrF0H,EAAAtG,EAAAuG,cAAC2d,GAAD,CACEr0B,IAAI,aACJs0B,MAAO30B,KAAK6W,MAAMpU,QAClBywB,WAAYlzB,KAAK6W,MAAMpU,QAAQjC,OAC/B0B,QAASlC,KAAKiJ,MAAMmrB,YACpBjlB,MnE3OwB,GmE4OxBikB,aAAc,SAAAhkB,GAAI,OAChBwlB,EAAKtb,SAAS,CACZ8a,YAAahlB,gDAQrB,IAAMjG,EAAOnJ,KAAK0zB,mBAAqB,UAAY1zB,KAAK6W,MAAM8c,mBAC9D,OAAItB,GAAmBlpB,GAEnB2N,EAAAtG,EAAAuG,cAAC+d,GAAD,CACErC,QAASJ,GAAmBlpB,GAC5BmB,KAAIrK,OAAAmJ,EAAA,EAAAnJ,CAAA,GACCD,KAAK6W,MAAM5Q,QACXjG,KAAK6W,MAAMjR,QAFZ,CAGFyE,YAAalB,MAKd,wDAIP,IAAMA,EAAOnJ,KAAK6W,MAAM8c,mBAExB,OADgBvB,GAAwBjpB,IACtB,qCAGV+Q,GACRla,KAAKsZ,SAAS,CACZ6a,WAAYja,EAAMyH,OAAOpd,yCAkB3B,OACEuS,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,WACbF,EAAAtG,EAAAuG,cAACge,GAAD,MACC/0B,KAAK6W,MAAMjK,QACVkK,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAEjBvE,EAAAtG,EAAAuG,cAAC+d,GAAD,CACErC,QAASzyB,KAAKg1B,2BACd1qB,KAAIrK,OAAAmJ,EAAA,EAAAnJ,CAAA,GACCD,KAAK6W,MAAM5Q,QACXjG,KAAK6W,MAAMjR,QAFZ,CAGFyE,YAAarK,KAAK6W,MAAM8c,uBAI7B3zB,KAAK6W,MAAM8c,oBACV3zB,KAAK6W,MAAM5Q,SACT6Q,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,kBACXF,EAAAtG,EAAAuG,cAAA,KACEC,UAAU,+BACViD,KAAI,GAAA/U,OAAK1D,EAAL,cAAA0D,OACFlF,KAAK6W,MAAM5Q,QAAQwH,GADjB,yBAAAvI,OAEoBG,EAAU,gBAF9B,cAAAH,OAE0DlF,KAAK6W,MAAMyd,oBAAoB3tB,OAAO,cAFhG,YAAAzB,OAEwHlF,KAAK6W,MAAM0d,kBAAkB5tB,OAAO,eAChKgb,OAAO,UAEP7K,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,qCAAqCrV,MAAM,oFAP7D,6LAYL3B,KAAK6W,MAAM8c,oBAAsB3zB,KAAK6W,MAAM5Q,SAAWjG,KAAKi1B,yBAC7Dne,EAAAtG,EAAAuG,cAAA,WAAM/W,KAAK6W,MAAMrU,YAAcxC,KAAK6W,MAAM5Q,SAAWjG,KAAK8zB,yBA9S5Cnb,IAAMC,WAAtB4a,GAuCGrc,aAAe,CACpBwc,mBAAoB,KACpBnC,iBAAkB,KAClBvrB,QAAS,KACTL,QAAS,KACT0uB,oBAAqB,KACrBC,kBAAmB,KACnB7yB,SAAU,CACRW,QAAS,KAqQf,IAkBe+X,eAlBS,SAAAnR,GAAK,MAAK,CAChCvH,SAAUuH,EAAMkB,gBAAgBzI,SAChCuE,QAASgD,EAAMkB,gBAAgBT,QAAQzD,QACvCL,QAASqD,EAAMkB,gBAAgBT,QAAQ9D,QACvC4rB,iBAAkBvoB,EAAMkB,gBAAgBP,gBAAgBC,UACxD8pB,mBAAoB1qB,EAAMkB,gBAAgBP,gBAAgBT,KAC1D3G,WAAYyG,EAAMkB,gBAAgBT,QAAQlH,WAC1CC,QAASwG,EAAMkB,gBAAgBT,QAAQjH,QACvC6xB,oBAAqBrrB,EAAMkB,gBAAgBP,gBAAgBE,UAC3DyqB,kBAAmBtrB,EAAMkB,gBAAgBP,gBAAgBG,QACzD6C,QAAS3D,EAAMD,WAAW7B,SAC1B2c,SAAU7a,EAAMsF,OAAOuV,WAGE,SAAAzU,GAAQ,MAAK,CACtCgf,gBAAiBtK,YAAmBsK,EAAiBhf,KAGxC+K,CAA6CvB,aAAW2a,gbCpUvE,IAEa0B,GAAiBC,aAFa,SAAAjmB,KAAG4P,KAAH,IAAmBjI,EAAnB5W,OAAAomB,GAAA,EAAApmB,CAAAiP,EAAA,iBAA+BkmB,EAAA,oBAASve,IAErDse,CAAHE,KAEhB,SAAA/gB,GAAA,IAAGwK,EAAHxK,EAAGwK,KAAH,SAAA5Z,OAAkBowB,SAASxW,EAAM,IAAM,GAAM,IAA7C,OAwBIyW,GAdEJ,aAF8B,SAAApgB,KAAGygB,OAAH,IAAc3e,EAAd5W,OAAAomB,GAAA,EAAApmB,CAAA8U,EAAA,mBAA0BqgB,EAAA,oBAASve,IAEjEse,CAAHM,KAOV,SAAAngB,GAAA,OAAAA,EAAGkgB,QAEHE,aADMC,QClCJC,uBAqBJ,SAAAA,EAAY/e,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAA41B,IACjB71B,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAA21B,GAAA3c,KAAAjZ,KAAM6W,KAwDRgf,aAAe,oBACb91B,EAAKkJ,MAAM6sB,yBACX/1B,EAAKkJ,MAAM8sB,gCACXh2B,EAAKkJ,MAAM+sB,yBACXj2B,EAAKkJ,MAAMgtB,oBA7DMl2B,EAgEnBm2B,WAAa,SAAChc,GACZA,EAAMC,iBACN,IAAIgc,GAAW,EAFOC,EASlBr2B,EAAKkJ,MAJPotB,EALoBD,EAKpBC,mBACAC,EANoBF,EAMpBE,0BACAC,EAPoBH,EAOpBG,mBACAC,EARoBJ,EAQpBI,aAGGD,IACHx2B,EAAKuZ,SAAS,CACZ0c,wBAAyB,uIAE3BG,GAAW,GAGRK,IACHz2B,EAAKuZ,SAAS,CACZ2c,kBAAmB,uIAErBE,GAAW,GAGTE,IAAuBC,IACzBv2B,EAAKuZ,SAAS,CACZyc,+BAAgC,2IAElCI,GAAW,GAGTE,GAAsBA,IAAuBC,IAC/Cv2B,EAAKuZ,SAAS,CACZyc,+BAAgC,6GAElCI,GAAW,GAGTI,GAAsBF,IAAuBE,IAC/Cx2B,EAAKuZ,SAAS,CACZwc,wBAAyB,oMAE3BK,GAAW,GAGb,IAAMtqB,EAAc,CAClB3J,QAASnC,EAAKkJ,MAAMstB,oBAGlBx2B,EAAKkJ,MAAMotB,qBACbxqB,EAAYqI,IAAMnU,EAAKkJ,MAAMotB,mBAC7BxqB,EAAYsI,QAAUpU,EAAKkJ,MAAMqtB,2BAG/Bv2B,EAAKkJ,MAAMutB,eAAiBz2B,EAAK8W,MAAMxP,KAAKI,QAC9CoE,EAAYpE,MAAQ1H,EAAKkJ,MAAMutB,cAG5BL,GACHp2B,EAAK8W,MAAMxH,SAASiE,GAA0BzH,KAzHhD9L,EAAK02B,kBAAoB12B,EAAK02B,kBAAkBtd,KAAvBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KAEzBA,EAAKkJ,MAAQ,CACXutB,aAAc3f,EAAMxP,KAAKI,MACzB4uB,mBAAoB,GACpBC,0BAA2B,GAC3BC,mBAAoB,GACpBT,wBAAyB,KACzBC,+BAAgC,KAChCC,wBAAyB,KACzBC,kBAAmB,KACnBS,gBAAgB,GAdD32B,2FAkBOkmB,GACnBjmB,KAAKiJ,MAAMutB,cAAgBx2B,KAAKiJ,MAAMutB,eAAiBvQ,EAAU5e,KAAKI,OACzEzH,KAAKsZ,SAAS,CACZkd,aAAcvQ,EAAU5e,KAAKI,QAI7BmL,KAAKC,UAAU7S,KAAK6W,MAAM/O,iBAAmB8K,KAAKC,UAAUoT,EAAUne,iBACpEme,EAAUne,eAAiBme,EAAUne,cAAc6uB,YACrD32B,KAAKsZ,SAAS,CACZwc,wBAAyB7P,EAAUne,cAAc6uB,WAAW,aAC5DZ,+BAAgC9P,EAAUne,cAAc6uB,WAAW,iBACnEX,wBAAyB/P,EAAUne,cAAc6uB,WAAW,iBAC5DV,kBAAmBhQ,EAAUne,cAAc6uB,WAAW,iBAIrD1Q,EAAUne,eACb9H,KAAKsZ,SAAS,CACZwc,wBAAyB,KACzBC,+BAAgC,KAChCC,wBAAyB,KACzBC,kBAAmB,kDAMT/b,GAAO,IAAAsN,EACvBxnB,KAAKsZ,UAALkO,EAAA,GAAAvnB,OAAAmK,EAAA,EAAAnK,CAAAunB,EACGtN,EAAMyH,OAAO/f,KAAOsY,EAAMyH,OAAOpd,OADpCtE,OAAAmK,EAAA,EAAAnK,CAAAunB,EAAA,kBAEkB,GAFlBvnB,OAAAmK,EAAA,EAAAnK,CAAAunB,EAAA,0BAG2B,MAH3BvnB,OAAAmK,EAAA,EAAAnK,CAAAunB,EAAA,iCAIkC,MAJlCvnB,OAAAmK,EAAA,EAAAnK,CAAAunB,EAAA,0BAK2B,MAL3BvnB,OAAAmK,EAAA,EAAAnK,CAAAunB,EAAA,oBAMqB,MANrBA,qCAkFA,OACE1Q,EAAAtG,EAAAuG,cAAA,QAAM4Q,SAAU3nB,KAAKk2B,WAAYlf,UAAU,oBACzCF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,0BACV7N,KAAK,OACLod,MAAM,wHACN3kB,KAAK,eACL6L,GAAG,eACHlJ,MAAOvE,KAAKiJ,MAAMutB,aAClB1T,SAAU9iB,KAAKy2B,kBACf/qB,MACEzH,MAAMC,QAAQlE,KAAKiJ,MAAMgtB,mBACrBj2B,KAAKiJ,MAAMgtB,kBAAkBY,KAAK,KAClC72B,KAAKiJ,MAAMgtB,sBAKvBnf,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,0BACV7N,KAAK,WACLod,MAAM,8HACN3kB,KAAK,qBACL6L,GAAG,qBACHlJ,MAAOvE,KAAKiJ,MAAMotB,mBAClBvT,SAAU9iB,KAAKy2B,kBACf/qB,MACEzH,MAAMC,QAAQlE,KAAKiJ,MAAM6sB,yBACrB91B,KAAKiJ,MAAM6sB,wBAAwBe,KAAK,KACxC72B,KAAKiJ,MAAM6sB,2BAIrBhf,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,0BACV7N,KAAK,WACLod,MAAM,yIACN3kB,KAAK,4BACL6L,GAAG,4BACHlJ,MAAOvE,KAAKiJ,MAAMqtB,0BAClBxT,SAAU9iB,KAAKy2B,kBACfK,SAAU92B,KAAKiJ,MAAMotB,mBACrB3qB,MACEzH,MAAMC,QAAQlE,KAAKiJ,MAAM8sB,gCACrB/1B,KAAKiJ,MAAM8sB,+BAA+Bc,KAAK,KAC/C72B,KAAKiJ,MAAM8sB,mCAKvBjf,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,0BACV7N,KAAK,WACLod,MAAM,6HACN3kB,KAAK,qBACL6L,GAAG,qBACHlJ,MAAOvE,KAAKiJ,MAAMstB,mBAClBzT,SAAU9iB,KAAKy2B,kBACf/qB,MACEzH,MAAMC,QAAQlE,KAAKiJ,MAAM+sB,yBACrBh2B,KAAKiJ,MAAM+sB,wBAAwBa,KAAK,KACxC72B,KAAKiJ,MAAM+sB,2BAIrBlf,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uCAAb,mVAKJF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACsI,GAAD,CACErI,UAAU,wBACV7N,KAAK,UACLyV,UAAW5e,KAAKiJ,MAAMytB,gBAAkB12B,KAAK61B,gBAE5C71B,KAAK6W,MAAM1P,SAAW,4DAAiB,iHAEzCnH,KAAK6W,MAAM9O,iBACV+O,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,8DAAf,qHA9OoB2B,IAAMC,YAAlCgd,GAiBGze,aAAe,CACpBrP,cAAe,MAuOnB,IAMesS,eANS,SAAAnR,GAAK,MAAK,CAChClB,gBAAiBkB,EAAMD,WAAWjB,gBAClCV,KAAM4B,EAAMD,WAAW3B,KACvBS,cAAemB,EAAMD,WAAWlB,gBAGnBsS,CAAyBwb,oDC9PlCmB,uBA2IJ,SAAAA,EAAYlgB,GAAO,IAAA9W,EAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAA+2B,IACjBh3B,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAA82B,GAAA9d,KAAAjZ,KAAM6W,KAuFRmgB,gBAAkB,WAAM,IACdC,EAAmBl3B,EAAK8W,MAAxBogB,eACAC,EAAkBn3B,EAAKkJ,MAAvBiuB,cAERn3B,EAAKuZ,SAAS,CACZ6d,gBAAiBD,EAAchf,KAAK,SAAAkf,GAAC,OAAIA,EAAE3pB,IAAMwpB,KAAmB,KA7FrDl3B,EAiGnBs3B,qBAAuBC,mBAAQ,SAACC,GAC9B,OAAKA,GAAsC,IAAvBA,EAAY/2B,OAINT,EAAKkJ,MAAMiuB,cAAc1pB,OAAO,SAACyI,GACzD,OAAOuhB,sBAAWvhB,EAAQrU,KAAKkC,cAAeyzB,EAAYzzB,gBADlC7D,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KAGD,GANhB,OAnGQA,EA4GnB03B,qBAAuBH,mBAAQ,SAACI,EAAaR,EAAejhB,GAC1D,IAAM0hB,EAAkBT,EAAchf,KAAK,SAAAkf,GAAC,OAAIA,EAAE/gB,MAAQJ,IAC1D,GAA2B,KAAvByhB,EAAYE,OAAe,OAAOD,EAEtC,IAAME,EAAYX,EAAcY,OAAO,SAACX,EAAiBlhB,GACvD,GAAIuhB,sBAAWE,EAAazhB,EAAQM,UAAW,CAC7C,GAAIN,EAAQM,SAAS/V,OAAS22B,EAAgB5gB,SAAS/V,OACrD,OAAOyV,EAET,GAAIA,EAAQM,SAAS/V,SAAW22B,EAAgB5gB,SAAS/V,QAAUyV,EAAQ8hB,SAAWZ,EAAgBY,SACpG,OAAO9hB,EAGX,OAAOkhB,GACN,CAAC5gB,SAAU,GAAIwhB,SAAU,OAVV93B,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KAYlB,OAAK83B,EAAUj2B,KACRi2B,EADqBF,IA5HX53B,EAiInBi4B,cAAgB,SAAC/hB,GACf,IAAIgiB,GAEFA,EADEhiB,EAAQiiB,QAAQ,IAAM,KAAOjiB,EAAQiiB,QAAQ,IAAM,IAChCn4B,EAAKkJ,MAAMiuB,cAAchf,KAAK,SAAAkf,GAAC,OAAIA,EAAE7gB,WAAaN,IAElDlW,EAAKkJ,MAAMiuB,cAAchf,KAAK,SAAAkf,GAAC,OAAIA,EAAE/gB,MAAQJ,MAE1CgiB,EAAmB1hB,UAC3CxW,EAAKuZ,SAAS,CACZrD,QAASA,EACTkhB,gBAAiBc,EACjBE,gBAAiBp4B,EAAK8W,MAAMuhB,mBAAqB,GAAKr4B,EAAK8W,MAAMwhB,OAAOJ,EAAmB1hB,YA5I9ExW,EA4KnBu4B,SAAW,SAACriB,EAASsiB,GACnB,GAAKtiB,EAAL,CACA,IAAMuiB,EAAYz4B,EAAK04B,YACvB,GAAKD,GAAcrzB,SAASwN,KAA5B,CAEA,IAAM+lB,EAAkBF,EAAUhX,aAE5BmX,EADkBH,EAAUI,wBACGC,IAAM1zB,SAASwN,KAAKuO,UACnD4X,EAAkBH,EAAeD,EAEjCngB,EAAUtC,EACV8iB,EAAgBxgB,EAAQqgB,wBAExBI,EAAgBzgB,EAAQiJ,aACxByX,EAAaF,EAAcF,IAAM1zB,SAASwN,KAAKuO,UAC/CgY,EAAgBD,EAAaD,EAE/BG,EAAeF,EAAaN,EAAeH,EAAUtX,UACnDkY,EAAgBV,EAAkB,EAAMM,EAAgB,EAE9D,GAAIj5B,EAAK8W,MAAMwiB,aAAeJ,EAAaN,EAAe,GAAKM,EAAaN,EAEtEJ,IACFY,GAAgBC,GAElBZ,EAAUtX,UAAYiY,OAEnB,GAAID,EAAgBJ,EAAiB,CAEpCP,IACFY,GAAgBC,GAElB,IAAME,EAAmBZ,EAAkBM,EAC3CR,EAAUtX,UAAYiY,EAAeG,MA7MtBv5B,EAiNnBw5B,YAAc,WACZ,IAAMf,EAAYz4B,EAAK04B,YAClBD,GAAcrzB,SAASwN,OAC5B6lB,EAAUtX,UAAY,IApNLnhB,EAuNnBy5B,aAAe,SAACtpB,EAAMupB,GAAe,IAG/BC,EAH+BvT,EAC2BpmB,EAAK8W,MAA3DuhB,EAD2BjS,EAC3BiS,mBAAoBuB,EADOxT,EACPwT,kBAAmBC,EADZzT,EACYyT,WAW/C,GARIxB,GAAsBqB,IACxBC,EAAUD,EAAWI,MAAM,MACnBC,QACRJ,EAAUA,EAAQ7C,KAAK,MAEvB6C,EAAUD,GAGPvpB,GAAwB,IAAhBA,EAAK1P,OAChB,OAAO43B,EAAqB,GAAKr4B,EAAK8W,MAAMwhB,OAK9C,GAAKnoB,GAAQA,EAAK1P,OAAS,IAAOk5B,IAAYE,EAC5C,OAAOxB,EAAqBloB,EAAOnQ,EAAK8W,MAAMwhB,OAAOnoB,EAGvD,IAuBIioB,EAvBE4B,EAAkBjC,kBAAO4B,EAAS,SAACM,EAAKC,GAC5C,GAAiC,IAA7BD,EAAIE,cAAc15B,OACpB,OAAOw5B,EAGT,GAAkB,MAAdC,EACF,MAAO,CACLE,cAAeH,EAAIG,cAAgBF,EACnCC,cAAeF,EAAIE,eARmC,IAAAE,EAAAn6B,OAAAo6B,GAAA,EAAAp6B,CAYhC+5B,EAAIE,eAAtBI,EAZkDF,EAAA,GAYzCG,EAZyCH,EAAAr2B,MAAA,GAc1D,MAAO,CACLo2B,cAAeH,EAAIG,cAAgBG,EACnCJ,cAAeK,IAEhB,CACDJ,cAAe,GACfD,cAAehqB,EAAK2pB,MAAM,MAY5B,OAPE1B,EADEwB,EACgBI,EAAgBI,cAAgBJ,EAAgBG,cAAcrD,KAAK,IAEnEkD,EAAgBI,eAIhBK,SAAS,OAASrC,EAAgBqC,SAAS,OAAMrC,GAAmB,KACjFA,GA7QUp4B,EAiRnB06B,YAAc,WACZ,IAAMna,EAAQvgB,EAAK26B,eACnBpa,EAAMqa,QACN,IAAMC,EAAMta,EAAM/b,MAAM/D,OACxB8f,EAAMua,kBAAkBD,EAAKA,IArRZ76B,EAwRnB+6B,WAAa,SAAChI,GACZ,OAAO/yB,EAAA,WAAAmF,OAAgB4tB,KAzRN/yB,EA6RnBg7B,eAAiB,WACf,OAAKh7B,EAAKkJ,MAAMkuB,gBACT,CACL1pB,GAAI1N,EAAKkJ,MAAMkuB,gBAAgB1pB,IAAM,GACrC7L,KAAM7B,EAAKkJ,MAAMkuB,gBAAgBv1B,MAAQ,GACzC2U,SAAUxW,EAAKkJ,MAAMkuB,gBAAgB5gB,UAAY,GACjDykB,YAAaj7B,EAAKkJ,MAAMkuB,gBAAgB9gB,MAAQ,GAChD1P,OAAQ5G,EAAKkJ,MAAMkuB,gBAAgBxwB,QAAU,IANP,IA9RvB5G,EAwSnBk7B,wBAA0B,WACxB,GAAKl7B,EAAKkJ,MAAMiyB,eAAgBn7B,EAAK8W,MAAM+H,SAA3C,CAD8B,IAK1Buc,EAL0B/E,EAEkBr2B,EAAKkJ,MAA7CmyB,EAFsBhF,EAEtBgF,mBAAoBjE,EAFEf,EAEFe,gBACtBkE,EAAeD,EAAmBl2B,OAAOnF,EAAKkJ,MAAMiuB,eAIxDiE,EADEC,EAAmBZ,SAASrD,GACNiE,EAAmBE,UAAU,SAAAlE,GAAC,OAAIA,GAAKD,IAEvCp3B,EAAK8W,MAAM0kB,gBAAkBF,EAAaC,UAAU,SAAAlE,GAAC,OAAIA,GAAKD,IAClFkE,EAAaC,UAAU,SAAAlE,GAAC,OAAIA,EAAE/gB,MAAQ8gB,EAAgB9gB,OAG5DtW,EAAKuZ,SAAS,CACZ4hB,cAAen7B,EAAKkJ,MAAMiyB,aAC1BC,yBACC,WACGp7B,EAAKkJ,MAAMiyB,cACbn7B,EAAKu4B,SAASv4B,EAAK+6B,WAAW/6B,EAAKkJ,MAAMkyB,4BA1T5Bp7B,EA+TnBy7B,YAAc,SAAC9a,GACb,IAAIyX,EAAkBp4B,EAAK8W,MAAMuhB,mBAAqB,GAAKr4B,EAAK8W,MAAMwhB,OAClEJ,EAAqBl4B,EAAKkJ,MAAMkuB,gBACdp3B,EAAKkJ,MAAMwyB,gBAEjC,IAAK17B,EAAK8W,MAAM6kB,oBAAqB,CACnC,IAAMC,EAAW1D,EAAmB2D,aAClC77B,EAAKkJ,MAAMiuB,cAAchf,KAAK,SAAAkf,GAAC,OAAIA,EAAE/gB,OAAS4hB,EAAmB5hB,MAAQ+gB,EAAEuE,WAAUplB,SACrF0hB,EAAmB1hB,SAEfslB,EAAe97B,EAAK8W,MAAMwhB,OAAOsD,EACvC,GAAIjb,EAAEiB,OAAOpd,MAAMR,MAAM,EAAG83B,EAAar7B,UAAYq7B,EAAc,OAIrE,KAAInb,EAAEiB,OAAOpd,MAAMkB,QAAQ,MAAO,IAAIjF,OAAS,KAG3CkgB,EAAEiB,OAAOpd,QAAUxE,EAAKkJ,MAAMkvB,gBAAlC,CAWA,GARIzX,EAAEvG,eACJuG,EAAEvG,iBAEFuG,EAAEob,aAAc,EAGd/7B,EAAK8W,MAAMiM,UAAUpC,EAAE0E,UAEvB1E,EAAEiB,OAAOpd,MAAM/D,OAAS,EAAG,CAE7B,IAAMk3B,EAAchX,EAAEiB,OAAOpd,MAAMkB,QAAQ,MAAO,MAK7C1F,EAAKkJ,MAAMwyB,iBAAmB17B,EAAKkJ,MAAMkuB,gBAAgB5gB,SAAS/V,OAASk3B,EAAYl3B,UAC1Fy3B,EAAqBl4B,EAAK03B,qBAAqBC,EAAYjV,UAAU,EAAG,GAAI1iB,EAAKkJ,MAAMiuB,cAAen3B,EAAKkJ,MAAMgN,UAAYlW,EAAKkJ,MAAMkuB,iBACtH,GAEpBgB,EAAkBF,EAChBl4B,EAAKy5B,aAAa9B,EAAaO,EAAmBtxB,QAAU+wB,EAC9DO,EAAqBA,EAAmB1hB,SAAW0hB,EAAqBl4B,EAAKkJ,MAAMkuB,gBAGrF,IAAI4E,EAAgBrb,EAAEiB,OAAOqa,eACvBC,EAAmBl8B,EAAKkJ,MAAMkvB,gBAC9B+D,EAAO/D,EAAgB33B,OAASy7B,EAAiBz7B,OAEvDT,EAAKuZ,SAAS,CACZ6e,gBAAiBA,GAGhB,WACG+D,EAAO,IACTH,GAAgCG,GAKlB,KAFC/D,EAAgBt0B,OAAOs0B,EAAgB33B,OAAS,GAG/DT,EAAK26B,eAAeG,kBAAkB1C,EAAgB33B,OAAS,EAAG23B,EAAgB33B,OAAS,GAEpFu7B,EAAgB,GAAKE,EAAiBz7B,QAAU23B,EAAgB33B,QACvET,EAAK26B,eAAeG,kBAAkBkB,EAAeA,GAGnDh8B,EAAK8W,MAAMiM,UAAU/iB,EAAK8W,MAAMiM,SAAS/iB,EAAKkJ,MAAMkvB,gBAAiBp4B,EAAKg7B,iBAAkBra,OAlYjF3gB,EAsYnBo8B,iBAAmB,SAACzb,GAClB3gB,EAAKuZ,SAAS,CAAE4hB,cAAc,IAC1Bn7B,EAAK8W,MAAM6C,SAAS3Z,EAAK8W,MAAM6C,QAAQgH,EAAG3gB,EAAKg7B,mBAxYlCh7B,EA2YnBq8B,kBAAoB,SAAC1b,GACnB,IAAMka,EAAMla,EAAEiB,OAAOpd,MAAM/D,OAC3BkgB,EAAEiB,OAAOkZ,kBAAkB,EAAGD,IA7Yb76B,EAgZnBs8B,oBAAsB,SAACpmB,GAErB,IAAMgiB,EAAqBl4B,EAAKkJ,MAAMiuB,cAAchf,KAAK,SAAAkf,GAAC,OAAIA,EAAE3pB,KAAOwI,EAAQxI,KAC1EwqB,GAMLl4B,EAAKuZ,SAAS,CACZ4hB,cAAc,EACd/D,gBAAiBc,EACjBwD,iBAAiB,GAEhB,WACD17B,EAAK06B,cACD16B,EAAK8W,MAAMiM,UAAU/iB,EAAK8W,MAAMiM,SAAS/iB,EAAKkJ,MAAMkvB,gBAAgB1yB,QAAQ,WAAW,IAAK1F,EAAKg7B,qBAhatFh7B,EAoanBu8B,iBAAmB,SAAC5b,GAEd3gB,EAAK26B,gBACH36B,EAAK26B,eAAen2B,QAAUxE,EAAK8W,MAAMwhB,QAAUt4B,EAAKkJ,MAAMkuB,kBAAoBp3B,EAAK8W,MAAMuhB,oBAC/Fr4B,EAAKuZ,SAAS,CACZ6e,gBAAiBp4B,EAAK8W,MAAMwhB,OAASt4B,EAAKkJ,MAAMkuB,gBAAgB5gB,UAC/D,WAAOxW,EAAK8W,MAAM0lB,iBAAmBxc,WAAWhgB,EAAK06B,YAAa,KAIzE16B,EAAKuZ,SAAS,CAAE0J,YAAa,KAE7BjjB,EAAK8W,MAAMyO,SAAWvlB,EAAK8W,MAAMyO,QAAQ5E,EAAG3gB,EAAKg7B,kBACjDh7B,EAAK8W,MAAM0lB,iBAAmBxc,WAAWhgB,EAAK06B,YAAa,IAjb1C16B,EAobnBy8B,gBAAkB,SAAC9b,GACZA,EAAEiB,OAAOpd,OAAOxE,EAAKuZ,SAAS,CAAE0J,YAAajjB,EAAK8W,MAAMmM,cAC7DjjB,EAAK8W,MAAM2O,QAAUzlB,EAAK8W,MAAM2O,OAAO9E,EAAG3gB,EAAKg7B,mBAtb9Bh7B,EAybnB08B,gBAAkB,SAAC/b,GACjB,GAAK3gB,EAAK8W,MAAM6lB,gBAAhB,CACA,IAAMxsB,EAAO2Q,OAAO8b,eAAejX,WAAWjgB,QAAQ,WAAW,IACjEib,EAAEkc,cAAcC,QAAQ,aAAc3sB,GACtCwQ,EAAEvG,mBA7bepa,EAgcnB+8B,yBAA2B,SAAC5uB,GAE1B,IAAMitB,EAAwBp7B,EAAKkJ,MAAMkyB,sBAAwBjtB,EAEjE,OAAIitB,EAAwB,GAAKA,GAA0Bp7B,EAAKkJ,MAAMiuB,cAAc12B,OAAST,EAAKkJ,MAAMmyB,mBAAmB56B,OAClH26B,EAAwBjtB,EAG7BnO,EAAK8W,MAAMwiB,cAAgB8B,EAAwBp7B,EAAKg9B,6BAA6Bv8B,OAAe,EACjG26B,GAzcUp7B,EA4cnBi9B,cAAgB,WACd,IAAMC,EAAoBl9B,EAAKs3B,qBAAqBt3B,EAAKkJ,MAAMsuB,cAAgBx3B,EAAKkJ,MAAMiuB,cAAc,GAClGgG,EAAyBn9B,EAAKkJ,MAAMiuB,cAAcoE,UAAU,SAAAlE,GAAC,OAAIA,GAAK6F,IAAqBl9B,EAAKkJ,MAAMmyB,mBAAmB56B,OAE/HT,EAAKu4B,SAASv4B,EAAK+6B,WAAWoC,IAAyB,GAEvDn9B,EAAKuZ,SAAS,CAACie,YAAa,GAAI4D,sBAAuB+B,KAldtCn9B,EAqdnBo9B,cAAgB,SAACzc,GAAM,IACbjd,EAAS1D,EAAK8W,MAAdpT,KACUuT,EAAgB0J,EAA1BiB,OAAU3K,UAElB,GAAIA,EAAUwjB,SAAS,kBAAoB9Z,EAAE0c,QAAU35B,EAAK45B,QAAUt9B,EAAKkJ,MAAMiyB,aAAc,OAAOn7B,EAAKk7B,0BAC3G,GAAIjkB,EAAUwjB,SAAS,kBAAoB9Z,EAAE0c,QAAU35B,EAAK45B,OAAS3c,EAAE0c,QAAU35B,EAAK65B,KAAM,OAAO5c,EAAEiB,OAAO4b,OAE5G,GAAKx9B,EAAKkJ,MAAMiyB,eAAgBn7B,EAAK8W,MAAM+H,YACvC5H,EAAUwjB,SAAS,eACjB9Z,EAAE0c,QAAU35B,EAAK+5B,IAAM9c,EAAE0c,QAAU35B,EAAKg6B,MAAQ/c,EAAE0c,QAAU35B,EAAK45B,OAC/D3c,EAAE0c,QAAU35B,EAAK65B,KAA0B,KAAnB5c,EAAEiB,OAAOpd,OAFzC,CAWImc,EAAEvG,eAAkBuG,EAAEvG,iBACnBuG,EAAEob,aAAc,EAEvB,IAAM4B,EAAgB,SAACxvB,GACrBnO,EAAKuZ,SAAS,CACZ6hB,sBAAuBp7B,EAAK+8B,yBAAyB5uB,IACpD,WACDnO,EAAKu4B,SAASv4B,EAAK+6B,WAAW/6B,EAAKkJ,MAAMkyB,wBAAwB,MAIrE,OAAQza,EAAE0c,OACR,KAAK35B,EAAKg6B,KACRC,EAAc,GACd,MACF,KAAKj6B,EAAK+5B,GACRE,GAAe,GACf,MACF,KAAKj6B,EAAK45B,MACJt9B,EAAK8W,MAAMwiB,aACbt5B,EAAKs8B,oBAAoBt8B,EAAKg9B,6BAA6Bh9B,EAAKkJ,MAAMkyB,wBAA0Bp7B,EAAKg9B,6BAA6B,GAAIrc,GAEtI3gB,EAAKs8B,oBAAoBp8B,OAAAmhB,GAAA,EAAAnhB,CAAIF,EAAKkJ,MAAMmyB,oBAAfl2B,OAAAjF,OAAAmhB,GAAA,EAAAnhB,CAAsCF,EAAKkJ,MAAMiuB,gBAAen3B,EAAKkJ,MAAMkyB,uBAAwBza,GAE9H,MACF,KAAKjd,EAAK65B,IACRv9B,EAAKuZ,SAAS,CACZ4hB,cAAc,GACbn7B,EAAK06B,aACR,MACF,SACO/Z,EAAE0c,OAAS35B,EAAKk6B,GAAKjd,EAAE0c,OAAS35B,EAAKm6B,GAAMld,EAAE0c,QAAU35B,EAAKo6B,QAC/D99B,EAAKuZ,SAAS,CACZie,YAAax3B,EAAKkJ,MAAMsuB,YAAcuG,OAAOC,aAAard,EAAE0c,QAC3Dr9B,EAAKkJ,MAAM+0B,gCA1gBHj+B,EA+gBnBk+B,mBAAqB,SAACvd,GAAM,IAClBjd,EAAS1D,EAAK8W,MAAdpT,KACJid,EAAE0c,QAAU35B,EAAK45B,OACnBt9B,EAAK8W,MAAMqnB,gBAAgBxd,GAGzB3gB,EAAK8W,MAAMkM,WAAWhjB,EAAK8W,MAAMkM,UAAUrC,IArhB9B3gB,EAwhBnBo+B,mBAAqB,SAACzd,GAChB3gB,EAAK04B,cAAgB14B,EAAKq+B,qBAAqBhmB,SAASsI,EAAEiB,SAC5D5hB,EAAKkJ,MAAMiyB,cAAgBn7B,EAAKuZ,SAAS,CAAE4hB,cAAc,KA1hB1Cn7B,EA8hBnBs+B,mBAAqB,SAAC3d,GAAM,IACM4d,EAAkB5d,EAA1C6d,cAAiBh6B,MADCi6B,EAEsBz+B,EAAKkJ,MAA7CmyB,EAFkBoD,EAElBpD,mBAAoBjE,EAFFqH,EAEErH,gBACxBgE,EAAwB,EAE5B,GAAoB,KAAhBmD,GAAsBnH,EAAiB,KACjCD,EAAkBn3B,EAAKkJ,MAAvBiuB,cACRiE,EAAwBC,EAAmBl2B,OAAOgyB,GAAeoE,UAAU,SAAAlE,GAAC,OAAIA,GAAKD,IAErFpX,WAAW,kBAAMhgB,EAAKu4B,SAASv4B,EAAK+6B,WAAWK,KAAyB,KAE1Ep7B,EAAKuZ,SAAS,CAAEglB,cAAanD,2BAziBZp7B,EA4iBnB0+B,uBAAyB,SAACxoB,GACxB,OAAOA,EAAQyoB,WAAazoB,EAAQrU,MA7iBnB7B,EAgjBnBg9B,2BAA6B,WAAM,IAAA4B,EAC0B5+B,EAAKkJ,MAAxDmyB,EADyBuD,EACzBvD,mBAAoBlE,EADKyH,EACLzH,cAAeoH,EADVK,EACUL,YACnCjF,EAAiBt5B,EAAK8W,MAAtBwiB,aACFgC,EAAeD,EAAmBl2B,OAAOgyB,GACzC0H,EAAuBN,EAAY1G,OAAO9zB,cAChD,GAAIu1B,GAAgBuF,EAAsB,CAGxC,IAAMC,EAAgBxD,EAAa7tB,OAAO,SAAA0B,KAAGtN,KAAHsN,EAASwvB,UAAT,IAAoBroB,EAApBnH,EAAoBmH,KAApBnH,EAA0BqH,SAA1B,MACxC,IAAArR,OAAImR,IAAQyoB,KAAK,SAAA/X,GAAK,OAAIA,EAAMjjB,cAAc02B,SAASoE,OACnDG,EAAoB1D,EAAa7tB,OAAO,SAAA8G,GAAA,IAAG1S,EAAH0S,EAAG1S,KAAM88B,EAATpqB,EAASoqB,UAAiBnoB,GAA1BjC,EAAoB+B,KAApB/B,EAA0BiC,UAA1B,MAC5C,IAAArR,OAAItD,GAAJ,GAAAsD,OAAew5B,GAAa3+B,EAAK8W,MAAMwhB,OAAO9hB,GAAUuoB,KAAK,SAAA/X,GAAK,OAAIA,EAAMjjB,cAAc02B,SAASoE,OAErG,OADA7+B,EAAKw5B,cACEt5B,OAAAmhB,GAAA,EAAAnhB,CAAI,IAAI++B,IAAI,GAAG95B,OAAO25B,EAAeE,KAE5C,OAAO1D,GA/jBQt7B,EAmkBnBk/B,uBAAyB,WAAM,IAAAC,EAAAC,EACoDp/B,EAAKkJ,MAA9EmyB,EADqB+D,EACrB/D,mBAAoBD,EADCgE,EACDhE,sBAAuBD,EADtBiE,EACsBjE,aAAcoD,EADpCa,EACoCb,YADpCc,EAEgFr/B,EAAK8W,MAA1GwiB,EAFqB+F,EAErB/F,aAAcgG,EAFOD,EAEPC,kBAAmBC,EAFZF,EAEYE,YAAaC,EAFzBH,EAEyBG,YAAaC,EAFtCJ,EAEsCI,kBAAmBC,EAFzDL,EAEyDK,mBAIlFC,EAFsB3/B,EAAKg9B,6BAEa54B,IAAI,SAAC8R,EAAS6c,GACxD,IAAM6M,EAAc1P,KAAW,CAC7Bha,SAAS,EACT2pB,UAA4B,OAAjB3pB,EAAQI,MAAkC,OAAjBJ,EAAQI,KAC5CwpB,OAAyB,OAAjB5pB,EAAQI,KAChBypB,UAAW3E,IAA0BrI,IAGjCiN,EAAgB,QAAA76B,OAAW+Q,EAAQI,MAEzC,OACES,EAAAtG,EAAAuG,cAAA,MACE2B,IAAK,SAAAsnB,GAAE,OAAIjgC,EAAA,WAAAmF,OAAgB4tB,IAAWkN,GACtC3/B,IAAG,WAAA6E,OAAa4tB,GAChBmN,gBAAA,WAAA/6B,OAA0B4tB,GAC1B9b,UAAW2oB,EACXO,iBAAe,IACfrmB,SAAU9Z,EAAK8W,MAAMgD,SACrBsmB,oBAAmBlqB,EAAQI,KAC3BqD,QAAS,kBAAM3Z,EAAKs8B,oBAAoBpmB,KAExCa,EAAAtG,EAAAuG,cAAA,OAAKC,UAAW+oB,IAChBjpB,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,gBAAgBjX,EAAK0+B,uBAAuBxoB,IAC5Da,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,aAAaf,EAAQtP,OAAS5G,EAAKy5B,aAAavjB,EAAQM,SAAUN,EAAQtP,QAAW5G,EAAK8W,MAAMwhB,OAAOpiB,EAAQM,aAK/H6pB,EAAYtpB,EAAAtG,EAAAuG,cAAA,MAAI1W,IAAK,SAAU2W,UAAU,YAE9CokB,EAAmB56B,OAAS,KAAQ64B,GAAgBA,IAAiBiF,EAAY1G,SAClF8H,EAAoBW,OAAOjF,EAAmB56B,OAAQ,EAAG4/B,GAEzD,IAAME,EAAkBrQ,MAAUiP,EAAA,GAAAj/B,OAAAmK,EAAA,EAAAnK,CAAAi/B,EAC/Bn/B,EAAK8W,MAAM0pB,eAAgB,GADItgC,OAAAmK,EAAA,EAAAnK,CAAAi/B,EAEhC,gBAAgB,GAFgBj/B,OAAAmK,EAAA,EAAAnK,CAAAi/B,EAGhC,QAAShE,GAHuBgE,IAMlC,OACEpoB,EAAAtG,EAAAuG,cAAA,MACE2B,IAAK,SAAAsnB,GAAE,OAAIjgC,EAAK04B,YAAcuH,GAC9BhpB,UAAWspB,EACXv6B,MAAOhG,EAAK8W,MAAM2pB,eAEjBnH,GACCviB,EAAAtG,EAAAuG,cAAA,MACEC,UAAWiZ,KAAWhwB,OAAAmK,EAAA,EAAAnK,CAAA,CACpBsJ,QAAQ,GACP+1B,EAAcA,MAGfD,GACAvoB,EAAAtG,EAAAuG,cAAA,QACEC,UAAWiZ,KAAWhwB,OAAAmK,EAAA,EAAAnK,CAAA,CACpBwgC,gBAAgB,GADG,GAAAv7B,OAEfo6B,EAFe,UAEOA,IAE5B1lB,KAAK,MACL8mB,aAAW,oBANb,gBAUF5pB,EAAAtG,EAAAuG,cAAA,SACEC,UAAWiZ,KAAWhwB,OAAAmK,EAAA,EAAAnK,CAAA,CACpB0gC,cAAc,GADK,GAAAz7B,OAEfo6B,EAFe,QAEKA,IAE1Bv5B,MAAOw5B,EACPp2B,KAAK,SACL6Z,YAAawc,EACboB,WAAW,EACXC,aAAcpB,EAAqB,KAAO,MAC1Cl7B,MAAO+5B,EACPxb,SAAU/iB,EAAKs+B,sBAIpBqB,EAAoBl/B,OAAS,EAC1Bk/B,EAEA5oB,EAAAtG,EAAAuG,cAAA,MAAIC,UAAU,sBACZF,EAAAtG,EAAAuG,cAAA,sCAzpBV,IAKI+pB,EALA5J,EAAiBrgB,EAAM9N,UAGrB2uB,EAAc7gB,EAAMtS,MAAMkB,QAAQ,aAAc,KAAO,GAK3Dq7B,EAFEpJ,EAAYl3B,OAAS,EAERT,EAAK03B,qBAAqBC,EAAYjV,UAAU,EAAG,GAAIyU,EAAergB,EAAMZ,UAAY,EAC9FY,EAAMZ,SAEAihB,EAAchf,KAAK,SAAAkf,GAAC,OAAIA,EAAE/gB,MAAQQ,EAAMZ,WAGxC,EAGjB,IAMIkiB,EANE5hB,EACJmhB,EAAYl3B,OAAS,GACrBsgC,IACCtJ,sBAAWE,EAAYjyB,QAAQ,MAAO,IAAKq7B,EAAavqB,UACvDuqB,EAAavqB,SAAW,GAG5B4hB,EAAmC,KAAhBT,GAAuC,IAAjBoJ,EAAsB,GAC/D/gC,EAAKy5B,cACF3iB,EAAMuhB,mBAAqB,GAAK7hB,GAAYmhB,EAAYjyB,QAAQ,MAAO,IACxEq7B,EAAal/B,KAAOk/B,EAAan6B,YAASlG,GAG5C,IAAM06B,EAAwBjE,EAAcoE,UAAU,SAAAlE,GAAC,OAAIA,GAAK0J,IAhC/C,OAkCjB/gC,EAAKkJ,MAAQ,CACXkvB,kBACAjB,cAAergB,EAAM9N,UACrBqyB,mBAlCuB,GAmCvBnlB,QAASY,EAAMZ,QACfkhB,gBAAiBD,EAAchf,KAAK,SAAAkf,GAAC,OAAIzR,OAAOyR,EAAE3pB,MAAQkY,OAAO9O,EAAMogB,mBAAoB,EAC3FkE,wBACA5D,YAAa,GACb2D,cAAc,EACdO,iBAAiB,EACjBuC,4BAA6B+C,KAAShhC,EAAKi9B,cAAe,KAC1DsB,YAAa,IA7CEv+B,qFAkDjBC,KAAK6W,MAAMxH,SAASwG,MAChB1Q,SAAS4b,kBACX5b,SAAS4b,iBAAiB,YAAa/gB,KAAKm+B,mEAK1Ch5B,SAAS67B,qBACX77B,SAAS67B,oBAAoB,YAAahhC,KAAKm+B,+DAIhCnd,EAAWzH,EAAW0nB,GAElCC,mBAAQlhC,KAAKiJ,MAAMiuB,cAAel3B,KAAK6W,MAAM9N,YAChD/I,KAAKsZ,SAAS,CACZ4d,cAAel3B,KAAK6W,MAAM9N,YAIzBm4B,mBAAQ3nB,EAAU2d,cAAel3B,KAAKiJ,MAAMiuB,gBAC/Cl3B,KAAKg3B,kBAGHhW,EAAUiW,iBAAmBj3B,KAAK6W,MAAMogB,gBAC1Cj3B,KAAKg3B,2EAIwB/Q,GAC3BA,EAAUhQ,SAAWgQ,EAAUhQ,UAAYjW,KAAKiJ,MAAMgN,QACxDjW,KAAKg4B,cAAc/R,EAAUhQ,SAEtBgQ,EAAU1hB,QAAUvE,KAAKiJ,MAAMkvB,iBACtCn4B,KAAKmhC,sBAAsBlb,EAAU1hB,qDA6DnBA,GAAO,IAEvB0zB,EAFuBmJ,EACQphC,KAAKiJ,MAAhCiuB,EADmBkK,EACnBlK,cAAejhB,EADImrB,EACJnrB,QAEnByhB,EAAcnzB,EACd4zB,EAAkB5zB,EAItB,GAAKizB,sBAAWE,EAAa13B,KAAK6W,MAAMwhB,QAStCX,EAAcA,EAAYjyB,QAAQ,MAAO,IAEzC0yB,GADAF,EAAqBj4B,KAAKy3B,qBAAqBC,EAAYjV,UAAU,EAAG,GAAIyU,EAAejhB,IAAYjW,KAAKiJ,MAAMkuB,iBAEhHn3B,KAAKw5B,aAAa9B,EAAaO,EAAmBtxB,QAAU+wB,MAZf,CAE/C,IAAMnhB,GADN0hB,EAAqBj4B,KAAKiJ,MAAMkuB,iBAAmBD,EAAchf,KAAK,SAAAkf,GAAC,OAAIA,EAAE/gB,MAAQJ,OAC7CuhB,sBAAWE,EAAYjyB,QAAQ,MAAO,IAAKwyB,EAAmB1hB,UAAY0hB,EAAmB1hB,SAAW,GAChJ4hB,EAAkBn4B,KAAKw5B,cACpBx5B,KAAK6W,MAAMuhB,mBAAqB,GAAK7hB,GAAYmhB,EAAYjyB,QAAQ,MAAO,IAC7EwyB,EAAsBA,EAAmBtxB,YAAUlG,GAUvDT,KAAKsZ,SAAS,CAAE6d,gBAAiBc,EAAoBE,qDA0f9C,IAAAkJ,EAAAC,EAAA9nB,EAAAxZ,KAAAuhC,EACmEvhC,KAAKiJ,MAAvEiuB,EADDqK,EACCrK,cAAeC,EADhBoK,EACgBpK,gBAAiB+D,EADjCqG,EACiCrG,aAAc/C,EAD/CoJ,EAC+CpJ,gBAD/CqJ,EAEyCxhC,KAAK6W,MAA7C4qB,EAFDD,EAECC,gBAAiBC,EAFlBF,EAEkBE,mBAEnBC,EAAe1R,KAAW,CAAC2R,OAAS,EAAMC,GAAM3G,IAChD4G,EAAe7R,MAAUoR,EAAA,GAAAphC,OAAAmK,EAAA,EAAAnK,CAAAohC,EAC5BrhC,KAAK6W,MAAMkrB,YAAa,GADI9hC,OAAAmK,EAAA,EAAAnK,CAAAohC,EAE7B,gBAAgB,GAFaphC,OAAAmK,EAAA,EAAAnK,CAAAohC,EAG7B,kBAAmBrhC,KAAK6W,MAAMnQ,QAAQyxB,EAAgB1yB,QAAQ,MAAO,IAAKyxB,IAAkBl3B,KAAK6W,MAAMsf,UAH1El2B,OAAAmK,EAAA,EAAAnK,CAAAohC,EAI7B,OAAQnG,GAJqBj7B,OAAAmK,EAAA,EAAAnK,CAAAohC,EAK7B,qBAAsBrhC,KAAK6W,MAAM+H,UALJyiB,IAOzBW,EAAsB/R,KAAW,CACrCgS,iBAAiB,EACjB5oB,KAAQ6hB,IAEJgH,EAAkBjS,MAAUqR,EAAA,GAAArhC,OAAAmK,EAAA,EAAAnK,CAAAqhC,EAC/BthC,KAAK6W,MAAMsrB,aAAc,GADMliC,OAAAmK,EAAA,EAAAnK,CAAAqhC,EAEhC,iBAAiB,GAFerhC,OAAAmK,EAAA,EAAAnK,CAAAqhC,EAGhC,OAAQpG,GAHwBoG,IAK5BvB,EAAgB,QAAA76B,OAAWiyB,GAAmBA,EAAgB9gB,MAEpE,OACES,EAAAtG,EAAAuG,cAAA,OACEC,UAAWhX,KAAK6W,MAAMurB,eACtBr8B,MAAO/F,KAAK6W,MAAM9Q,OAAS/F,KAAK6W,MAAMwrB,eACtCtf,UAAW/iB,KAAKm9B,eAChBrmB,EAAAtG,EAAAuG,cAAA,QAAA9W,OAAAyb,OAAA,CACE1E,UAAW8qB,EACX/7B,MAAO/F,KAAK6W,MAAMyrB,WAClBxf,SAAU9iB,KAAKw7B,YACf9hB,QAAS1Z,KAAKm8B,iBACdoG,cAAeviC,KAAKo8B,kBACpB9W,QAAStlB,KAAKs8B,iBACd9W,OAAQxlB,KAAKw8B,gBACbgG,OAAQxiC,KAAKy8B,gBACbl4B,MAAO4zB,EACPzf,IAAK,SAAAsnB,GAAE,OAAIxmB,EAAKkhB,eAAiBsF,GACjCjd,UAAW/iB,KAAKi+B,mBAChBjb,YAAahjB,KAAK6W,MAAMmM,YACxBpE,SAAU5e,KAAK6W,MAAM+H,SACrBzV,KAAK,OACDnJ,KAAK6W,MAAM4rB,aAGjB3rB,EAAAtG,EAAAuG,cAAA,OACEC,UAAWkrB,EACXn8B,MAAO/F,KAAK6W,MAAM6rB,YAClBhqB,IAAK,SAAAsnB,GAAE,OAAIxmB,EAAK4kB,qBAAuB4B,GACvCnmB,SAAU7Z,KAAK6W,MAAMgD,SACrBD,KAAK,UAEJ8nB,EACD5qB,EAAAtG,EAAAuG,cAAA,OAAKC,UAAWgrB,GAAsBN,GAEtC5qB,EAAAtG,EAAAuG,cAAA,OACE2C,QAAS+nB,OAAkBhhC,EAAYT,KAAKi7B,wBAC5CjkB,UAAWgrB,EACXrgC,MAAOw1B,EAAe,GAAAjyB,OAAMiyB,EAAgBv1B,KAAtB,QAAAsD,OAAiCiyB,EAAgB5gB,UAAa,IAEpFO,EAAAtG,EAAAuG,cAAA,OAAKC,UAAW+oB,IAChBjpB,EAAAtG,EAAAuG,cAAA,OAAKC,UAAW,0BAA2BmgB,EAAgB5gB,SAAhB,KAAArR,OAAgCiyB,EAAgB5gB,UAAa,IACxGO,EAAAtG,EAAAuG,cAAA,OAAKC,UAAW2qB,KAGjB3hC,KAAKi/B,kCA/2BStmB,IAAMC,YAAzBme,GA2EG5f,aAAe,CACpBlB,QAAS,GACT1R,MAAO,GAEP2yB,cAAe,GACfkE,mBAAoB,GACpBuH,iBAAkB,GAElB3f,YAAa,GACbwc,kBAAmB,iCACnBoD,eAAgB,cAChBhkB,UAAU,EAEVyjB,eAAgB,GAChBC,WAAY,GACZI,YAAa,GACblC,cAAe,GACfjB,YAAa,GAEb6C,eAAgB,kBAChBL,WAAY,GACZI,YAAa,GACb5B,cAAe,GACfjB,YAAa,GAEb1F,YAAY,EACZ2B,iBAAiB,EACjBsH,mBAAmB,EACnBn8B,QAAS,SAACgxB,EAAaR,GAAd,OAAgC,GACzCkB,oBAAoB,EACpBqJ,iBAAiB,EACjB9H,mBAAmB,EACnB+B,qBAAqB,EACrBrC,cAAc,EACdgG,mBAAmB,EACnBpI,eAAgB,EAEhB7gB,QAAS,GAETqsB,WAAY,GACZK,aAAc,GACdC,MAAO,GACPC,UAAW,GAEXC,cAAe,GAEfC,YAAa,qBACbC,mBAAmB,EACnB9K,OAAQ,IACRqE,iBAAiB,EACjBgF,mBAAoB,GACpBjC,oBAAoB,EACpBlD,iBAAiB,EACjB1iB,SAAU,IACVke,SAAU,KAEVmG,gBAAiB,aAEjBz6B,KAAM,CACJ+5B,GAAI,GAAIC,KAAM,GAAI2F,MAAO,GAAIC,KAAM,GAAIhG,MAAO,GAC9CC,IAAK,GAAIgG,KAAM,GAAI3F,EAAG,GAAIC,EAAG,GAAIC,MAAO,KA+uB9C,IAIezjB,eAJS,SAACnR,GAAD,MAAY,CAClCF,UAAWE,EAAMD,WAAWD,YAGfqR,CAAyB2c,ICr3BlCwM,eAyBJ,SAAAA,EAAY1sB,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAujC,IACjBxjC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAsjC,GAAAtqB,KAAAjZ,KAAM6W,KA4ER2sB,mBAAqB,SAAC77B,EAAa87B,GACjC1jC,EAAKuZ,SAAS,CACZ3R,cACAD,eAAgB+7B,EAAeh2B,MA7EjC1N,EAAK02B,kBAAoB12B,EAAK02B,kBAAkBtd,KAAvBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KACzBA,EAAK2jC,kBAAoB3jC,EAAK2jC,kBAAkBvqB,KAAvBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KAEzBA,EAAKkJ,MAAQ,CACX06B,SAAU9sB,EAAMjV,MAAQ,GACxBgiC,aAAc/sB,EAAMtP,UAAY,GAChCs8B,UAAWhtB,EAAM1T,OAAS,GAC1B2gC,YAAajtB,EAAMvP,SAAW,GAC9BoL,SAAU,GACVqxB,WAAY,GACZC,WAAY,GACZzc,cAAe,GACf5f,YAAakP,EAAMlP,aAAe,GAClCD,eAAgBmP,EAAMnP,gBAAkB,GAhBzB3H,2FAoBOkmB,GACxBjmB,KAAKsZ,SAAS,SAAArQ,GAAK,MAAK,CACtB06B,SAAW16B,EAAM06B,SAAoC16B,EAAM06B,SAA9B1d,EAAUrkB,MAAQ,GAC/CgiC,aAAe36B,EAAM26B,aAA4C36B,EAAM26B,aAAlC3d,EAAU1e,UAAY,GAC3Ds8B,UAAY56B,EAAM46B,UAAsC56B,EAAM46B,UAA/B5d,EAAU9iB,OAAS,GAClD2gC,YAAc76B,EAAM66B,YAA0C76B,EAAM66B,YAAjC7d,EAAU3e,SAAW,GACxDI,eAAiBuB,EAAMvB,eAAoDuB,EAAMvB,eAAxCue,EAAUve,gBAAkB,GACrEC,YAAcsB,EAAMtB,YAA8CsB,EAAMtB,YAArCse,EAAUte,aAAe,gDAI9CuS,GAAO,IAAAsN,EACvBxnB,KAAKsZ,UAALkO,EAAA,GAAAvnB,OAAAmK,EAAA,EAAAnK,CAAAunB,EACGtN,EAAMyH,OAAO/f,KAAOsY,EAAMyH,OAAOpd,OADpCtE,OAAAmK,EAAA,EAAAnK,CAAAunB,EAAA,aAEc,IAFdvnB,OAAAmK,EAAA,EAAAnK,CAAAunB,EAAA,aAGc,IAHdvnB,OAAAmK,EAAA,EAAAnK,CAAAunB,EAAA,gBAIiB,IAJjBA,8CAQgBtN,GAChBA,EAAMC,iBACN,IAAIgc,GAAW,EAEV7vB,EAAYmf,KAAKzlB,KAAKiJ,MAAM46B,aAC/B7jC,KAAKsZ,SAAS,CACZyqB,WAAY,8MAEd5N,GAAW,GAGRn2B,KAAKiJ,MAAMtB,cACd3H,KAAKsZ,SAAS,CACZ0qB,WAAY,6JAEd7N,GAAW,GAGsB,IAA/Bn2B,KAAKiJ,MAAMyJ,SAASlS,SACtBR,KAAKsZ,SAAS,CACZiO,cAAe,uIAEjB4O,GAAW,GAGb,IAAMtqB,EAAc,CAClBorB,eAAgBj3B,KAAKiJ,MAAMvB,eAC3Bu8B,MAAOjkC,KAAKiJ,MAAMtB,YAClBxE,MAAOnD,KAAKiJ,MAAM46B,UAClBnxB,SAAU1S,KAAKiJ,MAAMyJ,UAGlByjB,GACHn2B,KAAK6W,MAAMxH,SAAS+D,GAAmBvH,qCAYzC,OAAI7L,KAAK6W,MAAMjK,QACNkK,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAGxBvE,EAAAtG,EAAAuG,cAAA,QAAM4Q,SAAU3nB,KAAK0jC,kBAAmB1sB,UAAU,iBAChDF,EAAAtG,EAAAuG,cAAA,SAAO2N,QAAQ,WAAW1N,UAAU,uBAClCF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,wBAAhB,wEACAF,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,uBACV7N,KAAK,OACLvH,KAAK,WACL6L,GAAG,WACHlJ,MAAOvE,KAAKiJ,MAAM06B,SAClB/kB,UAAQ,EACRkE,SAAU,gBAGdhM,EAAAtG,EAAAuG,cAAA,SAAO2N,QAAQ,eAAe1N,UAAU,uBACtCF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,wBAAhB,6EACAF,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,uBACV7N,KAAK,OACLvH,KAAK,eACL6L,GAAG,eACHlJ,MAAOvE,KAAKiJ,MAAM26B,aAAen9B,IAAOzG,KAAKiJ,MAAM26B,cAAcj9B,OAAO,gBAAkB,GAC1FiY,UAAQ,EACRkE,SAAU,gBAGdhM,EAAAtG,EAAAuG,cAAA,SAAO2N,QAAQ,YAAY1N,UAAU,uBACnCF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,wBAAhB,qGACAF,EAAAtG,EAAAuG,cAACmtB,GAAD,CACE/N,SAAUn2B,KAAKiJ,MAAM+6B,WACrBz/B,MAAOvE,KAAKiJ,MAAMtB,YAClBsvB,eAAgBj3B,KAAKiJ,MAAMvB,eAC3Bob,SAAU9iB,KAAKwjC,mBACfpL,oBAAkB,KAGtBthB,EAAAtG,EAAAuG,cAAA,SAAO2N,QAAQ,YAAY1N,UAAU,uBACnCF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,wBAAhB,qGACAF,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,uBACV7N,KAAK,OACLvH,KAAK,YACL6L,GAAG,YACHqpB,UAAQ,EACR+J,aAAa,MACbt8B,MAAOvE,KAAKiJ,MAAM46B,UAClBn4B,MAAO1L,KAAKiJ,MAAM86B,WAClBjhB,SAAU9iB,KAAKy2B,qBAGnB3f,EAAAtG,EAAAuG,cAAA,SAAO2N,QAAQ,cAAc1N,UAAU,oDACrCF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,wBAAhB,kCACAF,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,uBACV7N,KAAK,OACLvH,KAAK,cACL6L,GAAG,cACHlJ,MAAOvE,KAAKiJ,MAAM66B,YAClBllB,UAAQ,EACRkE,SAAU,gBAGdhM,EAAAtG,EAAAuG,cAAA,SAAO2N,QAAQ,WAAW1N,UAAU,uBAClCF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,wBAAhB,8HACAF,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,uBACV7N,KAAK,WACLvH,KAAK,WACL6L,GAAG,WACHlJ,MAAOvE,KAAKiJ,MAAMyJ,SAClBmuB,aAAa,MACb/d,SAAU9iB,KAAKy2B,kBACf/qB,MAAO1L,KAAKiJ,MAAMse,iBAGtBzQ,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,2DAAb,+bAGChX,KAAK6W,MAAM/O,eACVgP,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,4CAA4ChX,KAAK6W,MAAM/O,eAEtEgP,EAAAtG,EAAAuG,cAAA,SACE5N,KAAK,SACL6N,UAAU,+BACVzS,MAAM,mHAELvE,KAAK6W,MAAM/O,eAAiB9H,KAAK6W,MAAMstB,OACxCrtB,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,0BACXF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,gCADlB,sKAxMqB2B,IAAMC,WAA/B2qB,GAcGpsB,aAAe,CACpBrP,cAAe,KACfR,QAAS,GACTC,SAAU,GACVpE,MAAO,GACPqE,MAAO,GACP5F,KAAM,GACN+F,YAAa,GACbD,eAAgB,GA2LpB,IAce0S,eAdS,SAAAnR,GAAK,MAAK,CAChC3B,QAAS2B,EAAMD,WAAW3B,KAAKC,QAC/BC,SAAU0B,EAAMD,WAAW3B,KAAKE,SAChCpE,MAAO8F,EAAMD,WAAW3B,KAAKlE,MAC7B0D,OAAQoC,EAAMD,WAAW3B,KAAKR,OAC9Ba,eAAgBuB,EAAMD,WAAW3B,KAAKK,eACtCC,YAAasB,EAAMD,WAAW3B,KAAKM,YACnCH,MAAOyB,EAAMD,WAAW3B,KAAKG,MAC7B5F,KAAMqH,EAAMD,WAAW3B,KAAKzF,KAC5BkG,cAAemB,EAAMD,WAAWlB,cAChCq8B,MAAOl7B,EAAMD,WAAWT,kBACxBqE,QAAS3D,EAAMD,WAAW5B,eAGbgT,CAAyBmpB,ICxOnBa,uBACnB,SAAAA,EAAYvtB,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAokC,IACjBrkC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAmkC,GAAAnrB,KAAAjZ,KAAM6W,KAEDwtB,iBAAmBtkC,EAAKskC,iBAAiBlrB,KAAtBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KAExBA,EAAKkJ,MAAQ,CACXq7B,UAAW,QANIvkC,qFAWjBoF,SAASxD,MAAQ,8GAIjB,MAA6B,SAAzB3B,KAAKiJ,MAAMq7B,UACNxtB,EAAAtG,EAAAuG,cAACwtB,GAAD,MAEFztB,EAAAtG,EAAAuG,cAACytB,GAAD,+CAGQtqB,GACfla,KAAKsZ,SAAS,CACZgrB,UAAWpqB,EAAMyH,OAAOpd,yCAK1B,OACEuS,EAAAtG,EAAAuG,cAAA,WACED,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,0BACbF,EAAAtG,EAAAuG,cAAA,SACE2N,QAAQ,eACR1N,UAAWC,KAAG,uBAAwB,CAAEwtB,+BAAyD,SAAzBzkC,KAAKiJ,MAAMq7B,aAEnFxtB,EAAAtG,EAAAuG,cAAA,SACEtJ,GAAG,eACHtE,KAAK,QACLvH,KAAK,YACL2C,MAAM,OACNue,SAAU9iB,KAAKqkC,iBACfrd,QAAkC,SAAzBhnB,KAAKiJ,MAAMq7B,YAVxB,6EAcAxtB,EAAAtG,EAAAuG,cAAA,SACE2N,QAAQ,gBACR1N,UAAWC,KAAG,uBAAwB,CAAEwtB,+BAAyD,YAAzBzkC,KAAKiJ,MAAMq7B,aAEnFxtB,EAAAtG,EAAAuG,cAAA,SACEtJ,GAAG,gBACHtE,KAAK,QACLvH,KAAK,YACL2C,MAAM,UACNue,SAAU9iB,KAAKqkC,iBACfrd,QAAkC,YAAzBhnB,KAAKiJ,MAAMq7B,YAVxB,4GAeFxtB,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,uBACZhX,KAAK0kC,mBA9DsB/rB,IAAMC,YCEtC+rB,uBAmBJ,SAAAA,EAAY9tB,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAA2kC,IACjB5kC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAA0kC,GAAA1rB,KAAAjZ,KAAM6W,KAEDqJ,cAAgBngB,EAAKmgB,cAAc/G,KAAnBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KACrBA,EAAKonB,cAAgBpnB,EAAKonB,cAAchO,KAAnBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KAErBA,EAAKkJ,MAAQ,CACXxB,MAAOoP,EAAMpP,MACbiL,SAAU,GACV0B,gBAAiB,GACjBwwB,OAAQ,CACNn9B,MAAO,GACPiL,SAAU,GACV0B,gBAAiB,IAEnBiT,cAAc,GAfCtnB,qFAoBjBoF,SAASxD,MAAQ,wHAGOskB,IACnBjmB,KAAK6W,MAAMpP,OAASwe,EAAUxe,OACjCzH,KAAKsZ,SAAS,CACZ7R,MAAOwe,EAAUxe,QAIjBzH,KAAK6W,MAAMvO,oBAAsB2d,EAAU3d,oBACzC2d,EAAU3d,mBAAqB2d,EAAU3d,kBAAkBquB,YAC7D32B,KAAKsZ,SAAS,SAAAC,GAAS,MAAK,CAC1BqrB,OAAO3kC,OAAAmJ,EAAA,EAAAnJ,CAAA,GACFsZ,EAAUqrB,OADT,CAEJn9B,MAAOxD,MAAMC,QAAQ+hB,EAAU3d,kBAAkBquB,WAAW,gBAAkB1Q,EAAU3d,kBAAkBquB,WAAW,eAAeE,KAAK,KAAO,GAChJnkB,SAAUzO,MAAMC,QAAQ+hB,EAAU3d,kBAAkBquB,WAAW,cAAgB1Q,EAAU3d,kBAAkBquB,WAAW,aAAaE,KAAK,KAAO,QAKhJ5Q,EAAU3d,mBACbtI,KAAKsZ,SAAS,CACZsrB,OAAQ,CACNn9B,MAAO,GACPiL,SAAU,GACV0B,gBAAiB,6CAOb8F,GAAO,IAAAuN,EACcvN,EAAMyH,OAA/Bpd,EADWkjB,EACXljB,MAAO3C,EADI6lB,EACJ7lB,KAAMolB,EADFS,EACET,QACR,iBAATplB,EACF5B,KAAKsZ,SAAS,CACZ+N,aAAcL,IAGhBhnB,KAAKsZ,SAAS,SAAAC,GAAS,IAAArK,EAAA,OAAAA,EAAA,GAAAjP,OAAAmK,EAAA,EAAAnK,CAAAiP,EACpBtN,EAAO2C,GADatE,OAAAmK,EAAA,EAAAnK,CAAAiP,EAAA,SAAAjP,OAAAmJ,EAAA,EAAAnJ,CAAA,GAGhBsZ,EAAUqrB,OAHM3kC,OAAAmK,EAAA,EAAAnK,CAAA,GAIlB2B,EAAO,MAJWsN,0CAUbgL,GAAO,IAAAV,EAAAxZ,KACnBka,EAAMC,iBACN,IAAM0qB,EAAW,CACfp9B,MAAOzH,KAAKiJ,MAAMxB,MAClBiL,SAAU1S,KAAKiJ,MAAMyJ,SACrB0B,gBAAiBpU,KAAKiJ,MAAMmL,iBAG9BnU,OAAOwD,KAAKohC,GAAUnhC,QAAQ,SAACqjB,GACE,IAA3B8d,EAAS9d,GAAOvmB,QAClBgZ,EAAKF,SAAS,SAAAC,GAAS,MAAK,CAC1BqrB,OAAO3kC,OAAAmJ,EAAA,EAAAnJ,CAAA,GACFsZ,EAAUqrB,OADT3kC,OAAAmK,EAAA,EAAAnK,CAAA,GAEH8mB,EAAQ,4IAMb8d,EAASnyB,SAASlS,QAAUqkC,EAASzwB,gBAAgB5T,QACpDqkC,EAASnyB,SAASlS,SAAWqkC,EAASzwB,gBAAgB5T,OACzDR,KAAKsZ,SAAS,SAAAC,GAAS,MAAK,CAC1BqrB,OAAO3kC,OAAAmJ,EAAA,EAAAnJ,CAAA,GACFsZ,EAAUqrB,OADT,CAEJxwB,gBAAiB,wIAMnBnU,OAAOwD,KAAKzD,KAAKiJ,MAAM27B,QAAQE,MAAM,SAAA1gC,GAAI,MAAgC,KAA5BoV,EAAKvQ,MAAM27B,OAAOxgC,MACjEpE,KAAK6W,MAAMxH,SAAS4E,GAAmB4wB,qCAQzC,OAHK7kC,KAAK6W,MAAMxO,gBACdrI,KAAK6W,MAAMxH,SAASjM,YAAK,MAGzB0T,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,iBACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,4BACbF,EAAAtG,EAAAuG,cAAA,MAAIC,UAAU,0BAAd,wMACAF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAb,0RACwDF,EAAAtG,EAAAuG,cAAA,WADxD,2PAIAD,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,sBAAsB2Q,SAAU3nB,KAAKmnB,eACnDrQ,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,8BACV7N,KAAK,OACLsE,GAAG,QACH7L,KAAK,QACL2kB,MAAM,iCACNhiB,MAAOvE,KAAKiJ,MAAMxB,MAClBiE,MAAO1L,KAAKiJ,MAAM27B,OAAOn9B,MACzBqb,SAAU9iB,KAAKkgB,gBAEjBpJ,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,8BACV7N,KAAMnJ,KAAKiJ,MAAMoe,aAAe,OAAS,WACzC5Z,GAAG,WACH7L,KAAK,WACL2kB,MAAM,sEACNhiB,MAAOvE,KAAKiJ,MAAMyJ,SAClBhH,MAAO1L,KAAKiJ,MAAM27B,OAAOlyB,SACzBoQ,SAAU9iB,KAAKkgB,gBAEjBpJ,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACE5Q,UAAU,8BACV7N,KAAMnJ,KAAKiJ,MAAMoe,aAAe,OAAS,WACzC5Z,GAAG,kBACH7L,KAAK,kBACL2kB,MAAM,6HACNhiB,MAAOvE,KAAKiJ,MAAMmL,gBAClB1I,MAAO1L,KAAKiJ,MAAM27B,OAAOxwB,gBACzB0O,SAAU9iB,KAAKkgB,gBAEjBpJ,EAAAtG,EAAAuG,cAAA,SAAO2N,QAAQ,eAAe1N,UAAU,gCACtCF,EAAAtG,EAAAuG,cAAA,SACE5N,KAAK,WACLsE,GAAG,eACH7L,KAAK,eACLolB,QAAShnB,KAAKiJ,MAAMoe,aACpBvE,SAAU9iB,KAAKkgB,gBANnB,yFAUApJ,EAAAtG,EAAAuG,cAAA,SACE5N,KAAK,SACL5E,MAAM,wHACNyS,UAAU,2CApLK2B,IAAMC,YAA7B+rB,GAcGxtB,aAAe,CACpB7O,kBAAmB,KACnBb,MAAO,IA6KX,IAMe2S,eANS,SAAAnR,GAAK,MAAK,CAChCZ,eAAgBY,EAAMD,WAAWX,eACjCC,kBAAmBW,EAAMD,WAAWV,kBACpCb,MAAOwB,EAAMD,WAAW3B,KAAKI,QAGhB2S,CAAyBuqB,ICrMlCI,WAAQ,SAAA71B,GAAA,IAAGgI,EAAHhI,EAAGgI,SAAUF,EAAb9H,EAAa8H,UAAb,OACZF,EAAAtG,EAAAuG,cAAA,QACEC,UAAWC,KACT,0BADWhX,OAAAmK,EAAA,EAAAnK,CAAA,GAER+W,EAAYA,KAGhBE,KAIC8tB,GAAc,SAAA1wB,GAAA,IAAG4C,EAAH5C,EAAG4C,SAAUF,EAAb1C,EAAa0C,UAAb,OAClBF,EAAAtG,EAAAuG,cAACkuB,GAAD,CAAOjuB,UAAWC,KAAG,mCAADhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAwC+W,EAAYA,KACrEE,IAICguB,GAAW,SAAAnwB,GAAA,IAAGmC,EAAHnC,EAAGmC,SAAUF,EAAbjC,EAAaiC,UAAb,OACfF,EAAAtG,EAAAuG,cAACkuB,GAAD,CAAOjuB,UAAWC,KAAG,gCAADhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAqC+W,EAAYA,KAClEE,IAICiuB,GAAa,SAAA7vB,GAAA,IAAG4B,EAAH5B,EAAG4B,SAAUF,EAAb1B,EAAa0B,UAAb,OACjBF,EAAAtG,EAAAuG,cAACkuB,GAAD,CAAOjuB,UAAWC,KAAGhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAG+W,EAAYA,KACjCE,IAgBCkuB,GAAoB,CACxBluB,SAAU,KACVF,UAAW,MAQbguB,GAAY7tB,aAAeiuB,GAC3BF,GAAS/tB,aAAeiuB,GACxBD,GAAWhuB,aAAeiuB,GAC1BL,GAAM5tB,aAAeiuB,OAGAC,wLAuBjB,OACEvuB,EAAAtG,EAAAuG,cAAA,OACEC,UAAWC,KACT,mBADWhX,OAAAmK,EAAA,EAAAnK,CAAA,GAERD,KAAK6W,MAAMG,UAAYhX,KAAK6W,MAAMG,aAGtChX,KAAK6W,MAAMK,iBA9BwByB,IAAMC,WAA7BysB,GACZL,YAAcA,GADFK,GAEZH,SAAWA,GAFCG,GAGZF,WAAaA,GAHDE,GAiBZluB,aAAe,CACpBH,UAAW,KACXE,SAAU,iBC9ERouB,GAAO,SAAAp2B,GAAA,IAAGgI,EAAHhI,EAAGgI,SAAH,OAAkBJ,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,oBAAoBE,IAMnEouB,GAAKnuB,aAAe,CAClBD,SAAU,UAGSquB,wCACZD,KAAOA,cCQDE,GAlBG,SAAAt2B,GAAA,IAAGqX,EAAHrX,EAAGqX,MAAO7M,EAAVxK,EAAUwK,QAAV,OAChB5C,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,eACbF,EAAAtG,EAAAuG,cAAA,aACED,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,SACLuQ,QAASA,GAER6M,MC8CIkf,GAAiB,kBAAM,SAACp2B,GACnCA,EAAS,CACPlG,KAAM,sBAIGu8B,GAAoB,SAAC5xB,EAAD5E,GAAA,IAASy2B,EAATz2B,EAASy2B,aAAcC,EAAvB12B,EAAuB02B,aAAvB,OAA0C,SAACv2B,GAC1E,IAAMC,EAAQjK,EAAU,gBAClBwgC,EAjDqB,SAACF,GAC5B,OAAQA,GACN,IAAK,SACH,SAAAzgC,OAAU1D,EAAV,aAEF,IAAK,OACH,SAAA0D,OAAU1D,EAAV,kBAEF,IAAK,UACH,SAAA0D,OAAU1D,EAAV,qBAEF,IAAK,WACH,SAAA0D,OAAU1D,EAAV,sBAEF,IAAK,aACH,SAAA0D,OAAU1D,EAAV,mBAEF,QACE,OAAO,MA+BIskC,CAAqBH,GAC/B7xB,GAAS+xB,IAIdx2B,EAnE+B,CAC/BlG,KAAM,yBAoENuG,MAAMm2B,EAAQ,CACZl2B,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,oBAElBmB,KAAMC,KAAKC,UAAL5S,OAAAmJ,EAAA,EAAAnJ,CAAA,GAAoB2lC,EAApB,CAAkCG,KAAMjyB,OAE7CzS,KAAK,SAACyO,GACL,OAAIA,EAASC,GACWulB,SAASxlB,EAASF,QAAQo2B,IAAI,kBAAmB,IAE9Dl2B,EAASE,OAEXjP,QAAQI,UAGO,MAApB2O,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,WACJgO,EA7F0B,CAC9BlG,KAAM,wBA6FFkG,EAASjM,YAAK,qBAAsB,CAClCuiC,eACA97B,UACqB,aAAjB87B,GAA+BC,EAC3BvhC,EAAsBuhC,GAAcK,OACpC,QAEV52B,EAASo2B,QAEVlkC,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,6BACNE,QAASqC,EAAM0E,UAEjBf,EA5G0B,CAC9BlG,KAAM,6BA+GK+8B,GAAqB,SAAA5xB,GAAA,IAAGqxB,EAAHrxB,EAAGqxB,aAAcC,EAAjBtxB,EAAiBsxB,aAAjB,OAAoC,SAACv2B,GACrE,IAAMI,EAlFqB,SAACk2B,EAAcQ,GAC1C,OAAQR,GACN,IAAK,SACH,SAAAzgC,OAAU1D,EAAV,0BAEF,IAAK,OACH,SAAA0D,OAAU1D,EAAV,+BAEF,IAAK,UACH,SAAA0D,OAAU1D,EAAV,kCAEF,IAAK,aACH,SAAA0D,OAAU1D,EAAV,iCAAA0D,OAAsDihC,GAExD,QACE,OAAO,MAmECC,CAAqBT,EAAcC,EAAaS,UACtD/2B,EAAQjK,EAAU,gBAEnBiK,GAAUG,IAGfJ,EA3H+B,CAC/BlG,KAAM,yBA2HNuG,MAAMD,EAAK,CACTE,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,oBAElBmB,KAAMC,KAAKC,UAAL5S,OAAAmJ,EAAA,EAAAnJ,CAAA,GAAoB2lC,MAEzBvkC,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAGe,MAApBA,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,WACJgO,EAhJ0B,CAC9BlG,KAAM,wBAgJFkG,EAAS,CACPlG,KAAM,4BAGT5H,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,qBACNE,QAASqC,EAAM0E,UAEjBf,EA1J0B,CAC9BlG,KAAM,6BCMKm9B,GAAc,kBAAM,SAACj3B,GAChC,IAAMC,EAAQjK,EAAU,gBACxB,GAAKiK,EAAL,CAIAD,EDjB+B,CAC/BlG,KAAM,yBCkBN,IAAMo9B,EAAW3jC,EAA2BuB,IAAI,SAAAC,GAAI,OAAIsL,MAAK,GAAAxK,OACxD1D,EADwD,cAAA0D,OAC/Bd,GAC5B,CACEwL,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAGpBnQ,KAAK,SAACyO,GACN,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,eAIzBpP,QAAQylC,IAAID,GAAUllC,KAAK,SAAC2O,GAC1BX,EDxC4B,CAC9BlG,KAAM,wBCwCJkG,EAAS,CACPlG,KAAM,yCACNE,QAAShF,EAAsB2L,EAAK8nB,OAAO,SAACtnB,EAAGi2B,GAAJ,OAAUj2B,EAAEtL,OAAOuhC,UAE/DllC,MAAM,SAACmK,GACR2D,EAAS,CACPlG,KAAM,sCACNE,QAASqC,EAAM0E,UAEjBf,EDlD4B,CAC9BlG,KAAM,6BCqDKu9B,GAAgB,SAAAj5B,GAAE,MAAK,CAClCtE,KAAM,gCACNE,QAASoE,IAGEk5B,GAAiB,SAAAvgC,GAAG,MAAK,CACpC+C,KAAM,kCACNE,QAASjD,IAGEwgC,GAAqB,SAAAC,GAAa,OAAI,SAACx3B,EAAUgD,GAC5D,IAAM/C,EAAQjK,EAAU,gBAExB,GAAKiK,GAAUrM,EAAc4jC,GAA7B,CAGAx3B,ED1E+B,CAC/BlG,KAAM,yBCmEmE,IAAA29B,EAQpCz0B,IAAWtE,uBAAxC9C,EARiE67B,EAQjE77B,YAAaH,EARoDg8B,EAQpDh8B,YACfe,EAAc,CAClBw6B,SAAUpjC,EAAc4jC,GACxBhlB,GAAI5W,EACJ87B,IAAKj8B,GAGP4E,MAAK,GAAAxK,OAAI1D,EAAJ,0BAA0C,CAC7CmO,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,oBAElBmB,KAAMC,KAAKC,UAAUhH,KACpBxK,KAAK,SAACyO,GACP,OAAIA,EAASC,IACXV,EDxF0B,CAC9BlG,KAAM,wBCwFKkG,EAASjM,YAAK,qBAAsB,CACzCyjC,gBACAlB,aAAc,SACdC,aAAc/5B,MAIM,MAApBiE,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAEtB5O,MAAM,SAACmK,GACR2D,EAAS,CACPlG,KAAM,kCACNE,QAASqC,EAAM0E,UAEjBf,ED9G4B,CAC9BlG,KAAM,6BEuCO69B,GA3Ce,SAAA93B,GAAA,IAAGgR,EAAHhR,EAAGgR,cAAe+mB,EAAlB/3B,EAAkB+3B,eAAlB,OAC5BnwB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,uKACAzN,EAAAtG,EAAAuG,cAACqS,GAAD,CACE3b,GAAG,cACHsZ,MAAM,gBACNjE,SAAU5C,EACV3b,MAAM,MACNyiB,QAA4B,QAAnBigB,GALX,4EASAnwB,EAAAtG,EAAAuG,cAACqS,GAAD,CACE3b,GAAG,gBACHsZ,MAAM,gBACNjE,SAAU5C,EACV3b,MAAM,QACNyiB,QAA4B,UAAnBigB,GALX,qFASAnwB,EAAAtG,EAAAuG,cAACqS,GAAD,CACE3b,GAAG,eACHsZ,MAAM,gBACNjE,SAAU5C,EACV3b,MAAM,OACNyiB,QAA4B,SAAnBigB,GALX,kECJAC,eA0BJ,SAAAA,EAAYrwB,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAknC,IACjBnnC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAinC,GAAAjuB,KAAAjZ,KAAM6W,KA4CRswB,UAAY,WACVpnC,EAAK8W,MAAMxH,SAASs3B,GAAe5mC,EAAKkJ,MAAMm+B,gBA9C7BrnC,EAiDnBsnC,oBAAsB,SAAAn4B,GAAmB,IAATzB,EAASyB,EAAhB3K,MACvBxE,EAAKunC,YAAY,kBAAMvnC,EAAK8W,MAAMxH,SAASq3B,GAAcj5B,OAlDxC1N,EAqDnBwnC,gBAAkB,SAAChjC,GACjBxE,EAAK8W,MAAMxH,SAASs3B,GAAepiC,KAtDlBxE,EAyDnBynC,0BAA4B,SAACttB,GAC3Bna,EAAKuZ,SAAS,CACZutB,cAAe3sB,EAAMyH,OAAOpd,SA3DbxE,EA+DnBunC,YAAc,SAAClkB,GACbrjB,EAAKuZ,SACH,CACEmuB,SAAU,KACVC,iBAAkB,MAEpB,WAC0B,oBAAbtkB,GACTA,OAvEWrjB,EA6EnB4nC,mBAAqB,WAGnB,OAFgB5nC,EAAK8W,MAAM5L,YAMpB,KAHE,8HAjFQlL,EAuFnB6nC,aAAe,WACb,IAAMxhC,EAAM0f,WAAW/lB,EAAK8W,MAAM/L,aAElC,OAAI1E,GAAO,EACF,6HAGLA,EAAMrG,EAAKkJ,MAAMm+B,aACZ,kKAGF,MAlGUrnC,EAqGnB6mC,mBAAqB,WACf7mC,EAAK8W,MAAM1P,UAIfpH,EAAKuZ,SACH,CACEmuB,SAAU1nC,EAAK6nC,eACfF,iBAAkB3nC,EAAK4nC,sBAEzB,WACM5nC,EAAKkJ,MAAMw+B,UAAY1nC,EAAKkJ,MAAMy+B,kBAItC3nC,EAAK8W,MAAMxH,SAASu3B,GAAmB7mC,EAAKkJ,MAAM49B,mBApHrC9mC,EAyHnB8nC,kBAAoB,WAAM,IAAA1hB,EACuBpmB,EAAK8W,MAA5C1P,EADgBgf,EAChBhf,SAAU8D,EADMkb,EACNlb,YAAaH,EADPqb,EACOrb,YACvB28B,EAAa1nC,EAAKkJ,MAAlBw+B,SACR,SAAUtgC,GAAa8D,GAAgBH,IAAe28B,IA5HrC1nC,EA+HnB0lC,eAAiB,WACf1lC,EAAK8W,MAAMxH,SAASo2B,OAhIH1lC,EAmInB+nC,gBAAkB,WAAM,IACdn/B,EAAc5I,EAAK8W,MAAnBlO,UACR,OACEmO,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,iBACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,uBAAuB+wB,wBAAyB,CAACC,OAAQr/B,EAAUG,YAAYrD,QAAQ,UAAW,aACjHqR,EAAAtG,EAAAuG,cAACsI,GAAD,CACErI,UAAU,wBACV7N,KAAK,UACLuQ,QAAS3Z,EAAKkoC,eACdjpB,OAAK,GAJP,kEAxIajf,EAoJnBmoC,cAAgB,WAAM,IACZC,EAAapoC,EAAKkJ,MAAlBk/B,SACAx/B,EAAc5I,EAAK8W,MAAnBlO,UAER,OAAOw/B,GAAYx/B,EAAUC,cAAgBD,EAAUE,YAxJtC9I,EA2JnBulB,QAAU,WACRvlB,EAAKunC,cACLvnC,EAAKuZ,SAAS,CACZ6uB,UAAU,KA9JKpoC,EAkKnBkoC,eAAiB,WACfloC,EAAK8W,MAAMxH,SAASgG,OAhKpBtV,EAAKkJ,MAAQ,CACXw+B,SAAU,KACV5hC,SAAU7C,EACVokC,aAAc,EACdP,cAAe,MACfa,iBAAkB,KAClBS,UAAU,GATKpoC,qFAcjBC,KAAK6W,MAAMxH,SAASi3B,MACpBtmC,KAAK6W,MAAMxH,SAASyF,MAChB9U,KAAK6W,MAAMuxB,gBACbpoC,KAAK6W,MAAMxH,SAASq3B,GAAc1mC,KAAK6W,MAAMuxB,mEAIvBniB,GACxB,IAAMoiB,EAAkBpiB,EAAUvkB,SAASwW,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAOwY,EAAUhb,cAE1Eo9B,GACFroC,KAAKsZ,SAAS,CACZzT,SAAUwiC,EAAgBhiC,aAC1B+gC,aAAciB,EAAgBjiC,MAI7B6f,EAAUhb,aACbjL,KAAKsZ,SAAS,CACZzT,SAAU7C,EACVokC,aAAc,+CAKDpmB,IACZhhB,KAAK6W,MAAMnV,SAASlB,QAAUwgB,EAAUtf,SAASlB,QACpDR,KAAK6W,MAAMxH,SAASi3B,uCA+HtB,OACExvB,EAAAtG,EAAAuG,cAAA,OAAKC,UAAWC,KAAG,gBAAiB,yBAAlBhX,OAAAmK,EAAA,EAAAnK,CAAA,GAA+CD,KAAK6W,MAAMG,UAAYhX,KAAK6W,MAAMG,aAChGhX,KAAKkoC,iBAAmBloC,KAAK8nC,kBAC9BhxB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,kFACAzN,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAASxE,KAAK6W,MAAMnV,SAASyC,IAAI,SAAAC,GAAI,MAAK,CACxCG,MAAOH,EAAKqJ,GACZ8Y,MAAOrgB,EAAwB9B,GAC/B6B,QAAS7B,KAEXxC,KAAK,cACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU9iB,KAAKqnC,oBACf9iC,MAAOvE,KAAK6W,MAAM5L,YAClB+X,YAAY,4EACZtX,QAAS1L,KAAKiJ,MAAMy+B,mBAEtB5wB,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,KAAwB3kB,KAAKiJ,MAAMy+B,oBAGvC5wB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,iHACAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KACGr/B,EAAe3F,KAAKiJ,MAAMm+B,aAAcpnC,KAAKiJ,MAAMpD,aAI1DiR,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,6CACAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KAA6BhlC,KAAKiJ,MAAMpD,aAI9CiR,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACEze,KAAK,QACLvH,KAAK,eACL6L,GAAG,eACH8Y,MAAM,8HACNhiB,MAAOvE,KAAK6W,MAAM/L,YAClBgY,SAAU9iB,KAAKunC,gBACf77B,QAAS1L,KAAKiJ,MAAMm+B,cAAgBpnC,KAAKiJ,MAAMw+B,SAC/C7oB,UAAW5e,KAAKiJ,MAAMm+B,aACtB9hB,QAAStlB,KAAKslB,WAGjBtlB,KAAKiJ,MAAMm+B,aAAe,GACzBtwB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACwxB,GAAD,CACE7uB,QAAS1Z,KAAKmnC,UACd5gB,MACEzP,EAAAtG,EAAAuG,cAAA,wFACgB,IACdD,EAAAtG,EAAAuG,cAACyxB,GAAWlD,KAAZ,KACG3/B,EAAe3F,KAAKiJ,MAAMm+B,aAAcpnC,KAAKiJ,MAAMpD,gBAQlEiR,EAAAtG,EAAAuG,cAAC0xB,GAAD,CACEvoB,cAAelgB,KAAKwnC,0BACpBP,eAAgBjnC,KAAKiJ,MAAM49B,gBAE5B7mC,KAAK6W,MAAM9L,mBACV+L,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAuBhX,KAAK6W,MAAM9L,mBAEjD+L,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,UACLuQ,QAAS1Z,KAAK4mC,mBACd7nB,aAAc/e,KAAK6nC,oBACnB7oB,OAAK,GAEJhf,KAAK6W,MAAM1P,SAAW,4DAAiB,iIAvRrBwR,IAAMC,WAAjCsuB,GAmBG/vB,aAAe,CACpBH,UAAW,KACX/L,YAAa,KACbF,kBAAmB,KACnBq9B,eAAgB,MAyQpB,IASehuB,eATS,SAAAnR,GAAK,MAAK,CAChCvH,SAAUuH,EAAM8E,uBAAuBrM,SACvCuJ,YAAahC,EAAM8E,uBAAuB9C,YAC1CH,YAAa7B,EAAM8E,uBAAuBjD,YAC1CC,kBAAmB9B,EAAM8E,uBAAuBhD,kBAChD5D,SAAU8B,EAAM0B,iBAAiBxD,SACjCwB,UAAWM,EAAMD,WAAWL,YAGfyR,CAAyB8sB,IChT3BZ,GAAc,kBAAM,SAACj3B,GAChC,IAAMC,EAAQjK,EAAU,gBACnBiK,IAILD,EAdwB,CACxBlG,KAAM,yBAeNuG,MAAK,GAAAxK,OAAI1D,EAAJ,mBAAmC,CACtCmO,OAAQ,MACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAEjBnQ,KAAK,SAACyO,GACP,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAEtB9O,KAAK,SAAC2O,GACPX,EAAS,CACPlG,KAAM,iCACNE,QAAShF,EAAsBuO,KAAKuO,MAAMnR,MAE5CX,EArCqB,CACvBlG,KAAM,2BAqCH5H,MAAM,SAACmK,GACR2D,EAAS,CACPlG,KAAM,sCACNE,QAASqC,EAAM0E,UAEjBf,EA3CqB,CACvBlG,KAAM,8BA8CKu9B,GAAgB,SAACj5B,EAAIS,GAChC,MAAkB,SAAdA,EACK,CACL/E,KAAM,qCACNE,QAASoE,GAIK,OAAdS,EACK,CACL/E,KAAM,mCACNE,QAASoE,GAIN,IAGIi7B,GAAoB,SAAAtiC,GAAG,MAAK,CACvC+C,KAAM,qCACNE,QAASjD,IAGEwgC,GAAqB,kBAAM,SAACv3B,EAAUgD,GAAa,IAAAy0B,EAK1Dz0B,IAAWxE,sBAHb5C,EAF4D67B,EAE5D77B,YACAC,EAH4D47B,EAG5D57B,UACAJ,EAJ4Dg8B,EAI5Dh8B,YAEIwE,EAAQjK,EAAU,gBAExB,GAAKiK,EAAL,CAIA,IAAMzD,EAAc,CAClB88B,SAAU19B,EACV29B,OAAQ19B,EACR67B,IAAKj8B,GAGPuE,EA5FwB,CACxBlG,KAAM,yBA4FNuG,MAAK,GAAAxK,OAAI1D,EAAJ,mBAAmC,CACtCmO,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,oBAElBmB,KAAMC,KAAKC,UAAUhH,KACpBxK,KAAK,SAACyO,GASP,OARIA,EAASC,KACXV,EAlGmB,CACvBlG,KAAM,yBAkGFkG,EAASo2B,MACTp2B,EAASjM,YAAK,qBAAsB,CAClCuiC,aAAc,YAIM,MAApB71B,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAEtB5O,MAAM,SAACmK,GACRuG,QAAQ0O,KAAKjV,GACb2D,EApHqB,CACvBlG,KAAM,8BCOF0/B,eAqBJ,SAAAA,EAAYhyB,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAA6oC,IACjB9oC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAA4oC,GAAA5vB,KAAAjZ,KAAM6W,KAgCRiyB,gBAAkB,kBAAMnjC,EAAe5F,EAAKkJ,MAAMm+B,aAAcrnC,EAAKkJ,MAAMpD,WAjCxD9F,EAmCnBgpC,sBAAwB,WACtB,IAAMC,EAAoBjpC,EAAK8W,MAAMnV,SAASwW,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAO1N,EAAK8W,MAAM5L,cAElF,OAAI+9B,EACKA,EAAkBC,kBAAkB9kC,IAAI,SAAAC,GAAI,MAAK,CACtDG,MAAOH,EAAKqJ,GACZ8Y,MAAK,IAAArhB,OAAMd,EAAK+B,YAAX,OAAAjB,OAA4Bd,EAAKiC,cACtCJ,QAAS7B,KAGN,MA7CUrE,EAgDnBonC,UAAY,WACVpnC,EAAK8W,MAAMxH,SAASq5B,GAAkB3oC,EAAKkJ,MAAMm+B,gBAjDhCrnC,EAoDnBmpC,kBAAoB,SAAAh6B,GAAmB,IAATzB,EAASyB,EAAhB3K,MACrBxE,EAAKunC,YAAY,WACfvnC,EAAK8W,MAAMxH,SAASq3B,GAAcj5B,EAAI,YAtDvB1N,EA0DnBopC,gBAAkB,SAAA70B,GAAmB,IAAT7G,EAAS6G,EAAhB/P,MACnBxE,EAAKunC,YAAY,WACfvnC,EAAK8W,MAAMxH,SAASq3B,GAAcj5B,EAAI,UA5DvB1N,EAgEnBqpC,wBAA0B,SAAC7kC,GACzBxE,EAAK8W,MAAMxH,SAASq5B,GAAkBnkC,KAjErBxE,EAoEnBunC,YAAc,SAAClkB,GACbrjB,EAAKuZ,SACH,CACEmuB,SAAU,KACVC,iBAAkB,KAClB2B,eAAgB,MAElB,WAC0B,oBAAbjmB,GACTA,OA7EWrjB,EAmFnB4nC,mBAAqB,WAGnB,OAFgB5nC,EAAK8W,MAAM5L,YAMpB,KAHE,8HAvFQlL,EA6FnBupC,iBAAmB,WAGjB,OAFgBvpC,EAAK8W,MAAM3L,UAMpB,KAHE,0IAjGQnL,EAuGnB6nC,aAAe,WACb,IAAMxhC,EAAM0f,WAAW/lB,EAAK8W,MAAM/L,aAElC,OAAI1E,GAAO,EACF,6HAGLA,EAAMrG,EAAKkJ,MAAMm+B,aACZ,sHAGF,MAlHUrnC,EAqHnBm2B,WAAa,WACPn2B,EAAK8W,MAAM1P,UAIfpH,EAAKuZ,SACH,CACEmuB,SAAU1nC,EAAK6nC,eACfF,iBAAkB3nC,EAAK4nC,qBACvB0B,eAAgBtpC,EAAKupC,oBAEvB,WACMvpC,EAAKkJ,MAAMw+B,UAAY1nC,EAAKkJ,MAAMy+B,kBAAoB3nC,EAAKkJ,MAAMogC,gBAIrEtpC,EAAK8W,MAAMxH,SAASu3B,SArIP7mC,EA0InBwpC,iBAAmB,WAAM,IAAApjB,EACsBpmB,EAAK8W,MAA1C1P,EADegf,EACfhf,SAAU8D,EADKkb,EACLlb,YAAaC,EADRib,EACQjb,UACvBu8B,EAAa1nC,EAAKkJ,MAAlBw+B,SACR,SAAUtgC,GAAa8D,GAAgBC,IAAau8B,IA1IpD1nC,EAAKkJ,MAAQ,CACXw+B,SAAU,KACVC,iBAAkB,KAClB2B,eAAgB,KAChBxjC,SAAU7C,EACVokC,aAAc,GARCrnC,qFAajBC,KAAK6W,MAAMxH,SAASi3B,wDAGIrgB,GACxB,IAAMujB,EAAsBvjB,EAAUvkB,SAASwW,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAOwY,EAAUhb,cAE9Eu+B,GACFxpC,KAAKsZ,SAAS,CACZzT,SAAU2jC,EAAoBnjC,aAC9B+gC,aAAcoC,EAAoB5jC,qDAKrBob,IACZhhB,KAAK6W,MAAMnV,SAASlB,QAAUwgB,EAAUtf,SAASlB,QACpDR,KAAK6W,MAAMxH,SAASi3B,uCAoHtB,OACExvB,EAAAtG,EAAAuG,cAAA,OAAKC,UAAWC,KAAG,gBAADhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAqBD,KAAK6W,MAAMG,UAAYhX,KAAK6W,MAAMG,aACvEF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAb,iEACAF,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAASxE,KAAK6W,MAAMnV,SAASyC,IAAI,SAAAC,GAAI,MAAK,CACxCG,MAAOH,EAAKqJ,GACZ8Y,MAAOrgB,EAAwB9B,MAEjCxC,KAAK,cACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU9iB,KAAKkpC,kBACf3kC,MAAOvE,KAAK6W,MAAM5L,YAClB+X,YAAY,4EACZtX,QAAS1L,KAAKiJ,MAAMy+B,mBAEtB5wB,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,KAAwB3kB,KAAKiJ,MAAMy+B,oBAGvC5wB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,gBACbF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAb,yFACAF,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAASxE,KAAK+oC,wBACdnnC,KAAK,cACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU9iB,KAAKmpC,gBACf5kC,MAAOvE,KAAK6W,MAAM3L,UAClB8X,YAAY,4EACZpE,UAAW5e,KAAK6W,MAAM5L,YACtBS,QAAS1L,KAAK6W,MAAM5L,eAAiBjL,KAAKiJ,MAAMogC,iBAElDvyB,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,OACK3kB,KAAK6W,MAAM5L,aAAejL,KAAKiJ,MAAMogC,mBAKhDvyB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,iHACAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KAA6BhlC,KAAK8oC,qBAGtChyB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,6CACAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KACGhlC,KAAKiJ,MAAMpD,UAAY,UAKhCiR,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACEze,KAAK,QACLvH,KAAK,cACL6L,GAAG,cACH8Y,MAAM,kFACNhiB,MAAOvE,KAAK6W,MAAM/L,YAClBgY,SAAU9iB,KAAKopC,wBACf19B,MAAO1L,KAAK6W,MAAM5L,aAAejL,KAAKiJ,MAAMw+B,SAC5C7oB,UAAW5e,KAAK6W,MAAM5L,YACtBqa,QAAStlB,KAAKsnC,eAGjBtnC,KAAKiJ,MAAMm+B,aAAe,GACzBtwB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACwxB,GAAD,CACE7uB,QAAS1Z,KAAKmnC,UACd5gB,MACEzP,EAAAtG,EAAAuG,cAAA,wFACgB,IACdD,EAAAtG,EAAAuG,cAACyxB,GAAWlD,KAAZ,KACG3/B,EAAe3F,KAAKiJ,MAAMm+B,aAAcpnC,KAAKiJ,MAAMpD,gBAQlEiR,EAAAtG,EAAAuG,cAAC6f,GAAD,KACG52B,KAAK6W,MAAM4yB,eACV3yB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAuBhX,KAAK6W,MAAM4yB,gBAGnD3yB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,UACL4V,aAAc/e,KAAKupC,mBACnB7vB,QAAS1Z,KAAKk2B,WACdlX,OAAK,GAEJhf,KAAK6W,MAAM1P,SAAW,4DAAiB,iIA7QtBwR,IAAMC,WAAhCiwB,GAcG1xB,aAAe,CACpBH,UAAW,KACX/L,YAAa,KACbC,UAAW,KACXu+B,cAAe,MAoQnB,IAServB,eATS,SAAAnR,GAAK,MAAK,CAChCvH,SAAUuH,EAAM4E,sBAAsBnM,SACtCuJ,YAAahC,EAAM4E,sBAAsB5C,YACzCC,UAAWjC,EAAM4E,sBAAsB3C,UACvCJ,YAAa7B,EAAM4E,sBAAsB/C,YACzC2+B,cAAexgC,EAAM0B,iBAAiB8+B,cACtCtiC,SAAU8B,EAAMD,WAAW7B,WAGdiT,CAAyByuB,IC9S3BvC,GAAc,kBAAM,SAACj3B,GAChC,IAAMC,EAAQjK,EAAU,gBACnBiK,IAILD,ENP+B,CAC/BlG,KAAM,yBMQNuG,MAAK,GAAAxK,OAAI1D,EAAJ,kBAAkC,CACrCmO,OAAQ,MACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAGjBnQ,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,OAGnB3O,KAAK,SAAC2O,GACLX,EN5B0B,CAC9BlG,KAAM,wBM4BFkG,EAAS,CACPlG,KAAM,+BACNE,QAAShF,EAAsB2L,OAGlCzO,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,qCACNE,QAASqC,EAAM0E,UAEjBf,ENvC0B,CAC9BlG,KAAM,6BM0CKu9B,GAAgB,SAACj5B,EAAIS,GAChC,MAAkB,SAAdA,EACK,CACL/E,KAAM,mCACNE,QAASoE,GAIK,UAAdS,EACK,CACL/E,KAAM,oCACNE,QAASoE,GAIN,MAGIk5B,GAAiB,SAAAvgC,GAAG,MAAK,CACpC+C,KAAM,gCACNE,QAASjD,IAOE8vB,GAAa,SAAA2Q,GAAa,OAAI,SAACx3B,EAAUgD,GAAa,IAAAy0B,EAG7Dz0B,IAAWzE,qBADbhD,EAF+Dk8B,EAE/Dl8B,YAAaC,EAFkDi8B,EAElDj8B,aAAcC,EAFoCg8B,EAEpCh8B,YAEvBwE,EAAQjK,EAAU,gBAExB,GAAKiK,GAAUrM,EAAc4jC,GAA7B,CAIA,IAAMh7B,EAAc,CAClBw6B,SAAUpjC,EAAc4jC,GACxB8B,SAAU99B,EACV+9B,OAAQh+B,EACRm8B,IAAKj8B,GAEPuE,EN1F+B,CAC/BlG,KAAM,yBM0FNuG,MAAK,GAAAxK,OAAI1D,EAAJ,+BAA+C,CAClDmO,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,oBAElBmB,KAAMC,KAAKC,UAAUhH,KAEpBxK,KAAK,SAACyO,GASL,OARIA,EAASC,KACXV,ENjGwB,CAC9BlG,KAAM,wBMiGAkG,EAASjM,YAAK,qBAAsB,CAClCuiC,aAAc,OACdC,aAAc/5B,MAIM,MAApBiE,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB5O,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,gCACNE,QAASqC,EAAM0E,UAEjBf,ENvH0B,CAC9BlG,KAAM,6BOJaugC,wNAkBnBzgC,MAAQ,CACN0gC,QAAQ,EACRC,gBAAiB,QAGnBC,UAAY,SAACD,GACX7pC,EAAKuZ,SAAS,CACZqwB,QAAQ,EACRC,oBAEFzkC,SAASwN,KAAKwF,UAAU2xB,IAAI,YAG9BC,WAAa,WACXhqC,EAAKuZ,SAAS,CACZqwB,QAAQ,GACP,WACiC,oBAAvB5pC,EAAK8W,MAAMmzB,SACpBjqC,EAAK8W,MAAMmzB,UAGb7kC,SAASwN,KAAKwF,UAAU8xB,OAAO,cAInCC,eAAiB,SAAChwB,GACE,WAAdA,EAAM7Z,KACRN,EAAKgqC,wFAKP,OAAI/pC,KAAKiJ,MAAM0gC,OAEX7yB,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,QAAQmzB,SAAU,SAAAjwB,GAAK,OAAIA,EAAMyE,oBAC9C7H,EAAAtG,EAAAuG,cAAA,OACEC,UAAU,iBACV0C,QAAS1Z,KAAK+pC,WACdpwB,WAAY3Z,KAAKkqC,eACjBtwB,KAAK,SACLC,SAAS,MAEX/C,EAAAtG,EAAAuG,cAAA,UACEC,UAAS,qDAAA9R,OAAuDlF,KAAK6W,MAAMiI,MAC3EpF,QAAS1Z,KAAK+pC,YAFhB,KAMAjzB,EAAAtG,EAAAuG,cAAA,OACEC,UAAS,gCAAA9R,OAAkClF,KAAK6W,MAAMiI,MACtDqrB,SAAU,SAAAjwB,GAAK,OAAIA,EAAMyE,oBAEzB7H,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,kBACZ2B,IAAMiU,aACL5sB,KAAK6W,MAAMK,SACX,CAAEkzB,eAAgBpqC,KAAKiJ,MAAM2gC,qBAQlC,YAjFwBjxB,IAAMC,YAApB8wB,GAaZvyB,aAAe,CACpB6yB,QAAS,KACTlrB,KAAM,cCMJurB,eAmCJ,SAAAA,EAAYxzB,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAqqC,IACjBtqC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAoqC,GAAApxB,KAAAjZ,KAAM6W,KAmDRyzB,uBAAyB,kBACvBvqC,EAAK8W,MAAMnV,SAASwW,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAO1N,EAAK8W,MAAMjM,eArDvC7K,EAuDnBwqC,oBAAsB,SAAAtkC,GAAO,UAAAf,OACvBe,EAAQE,YADe,uFAAAjB,OACiBS,EAC1CM,EAAQG,IACRH,EAAQI,cAHiB,MAvDVtG,EA6DnByqC,YAAc,WACZ,IAAMvkC,EAAUlG,EAAKuqC,yBAErB,OAAIrkC,GACKA,EAAQI,cAEVrD,GAnEUjD,EAoFnB4mC,eAAiB,SAAAvgC,GAAG,OAAIrG,EAAK8W,MAAMxH,SAASs3B,GAAevgC,KApFxCrG,EAsFnB2mC,cAAgB,SAACj5B,EAAIS,GACnBnO,EAAKunC,YAAY,WACfvnC,EAAK8W,MAAMxH,SAASq3B,GAAcj5B,EAAIS,OAxFvBnO,EA4FnBqpC,wBAA0B,SAAC7kC,GACzBxE,EAAK4mC,eAAepiC,IA7FHxE,EAgGnBynC,0BAA4B,SAACttB,GAC3Bna,EAAKuZ,SAAS,CACZutB,cAAe3sB,EAAMyH,OAAOpd,SAlGbxE,EAsGnBunC,YAAc,SAAClkB,GACbrjB,EAAKuZ,SACH,CACEmuB,SAAU,KACVC,iBAAkB,KAClB2B,eAAgB,MAElB,WAC0B,oBAAbjmB,GACTA,OA/GWrjB,EAqHnB4nC,mBAAqB,WAGnB,OAFgB5nC,EAAK8W,MAAMjM,YAMpB,KAHE,uJAzHQ7K,EA+HnBupC,iBAAmB,WAGjB,OAFgBvpC,EAAK8W,MAAMhM,aAMpB,KAHE,qIAnIQ9K,EAyInB6nC,aAAe,WACb,IAAMxhC,EAAM0f,WAAW/lB,EAAK8W,MAAM/L,aAElC,OAAI1E,GAAO,EACF,mIAGLA,EAAMrG,EAAKkJ,MAAMm+B,aACZ,sHAGF,MApJUrnC,EAuJnBm2B,WAAa,WACPn2B,EAAK8W,MAAM1P,UAIfpH,EAAKuZ,SACH,CACEmuB,SAAU1nC,EAAK6nC,eACfF,iBAAkB3nC,EAAK4nC,qBACvB0B,eAAgBtpC,EAAKupC,oBAEvB,WACMvpC,EAAKkJ,MAAMw+B,UAAY1nC,EAAKkJ,MAAMy+B,kBAAoB3nC,EAAKkJ,MAAMogC,gBAIrEtpC,EAAK8W,MAAMxH,SAAS6mB,GAAWn2B,EAAKkJ,MAAM49B,mBAvK7B9mC,EA4KnB8nC,kBAAoB,WAAM,IAAA1hB,EAGpBpmB,EAAK8W,MADP1P,EAFsBgf,EAEtBhf,SAAUyD,EAFYub,EAEZvb,YAAaC,EAFDsb,EAECtb,aAAcC,EAFfqb,EAEerb,YAE/B28B,EAAa1nC,EAAKkJ,MAAlBw+B,SACR,SAAUtgC,GAAayD,GAAgBC,GAAiBC,IAAe28B,IAjLtD1nC,EAoLnB0qC,sBAAwB,WAAM,IAAArU,EACMr2B,EAAKkJ,MAA/ByhC,EADoBtU,EACpBsU,YAAa7kC,EADOuwB,EACPvwB,SAErB,OAAI6kC,GAAeA,EAAc,EAE7B5zB,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,4BACXF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,oCAAhB,qDACAF,EAAAtG,EAAAuG,cAAA,2SACAD,EAAAtG,EAAAuG,cAAA,cAASpR,EAAe+kC,EAAa7kC,IACrCiR,EAAAtG,EAAAuG,cAAA,uSAIC,MAjMUhX,EAoMnB4qC,+BAAiC,WAC/B,IAAMC,EAAc7qC,EAAK8W,MAAMg0B,qBAC/B,GAAID,EAAa,KACPpkC,EAAcokC,EAAdpkC,KAAMJ,EAAQwkC,EAARxkC,IAEd,OACE0Q,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,6PAGAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,0DACav+B,IAAOD,GAAMG,OAAO,cADjC,KAE8B,IAC9BmQ,EAAAtG,EAAAuG,cAACuxB,GAAepD,SAAhB,KACGv/B,EAAeS,EAAKrG,EAAKkJ,MAAMpD,aAItCiR,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACwxB,GAAD,CACE7uB,QAAS,WACH3Z,EAAK+qC,OACP/qC,EAAK+qC,MAAMjB,aAGftjB,MAAM,8LAOhB,OAAO,MAtOUxmB,EAyOnBgrC,oBAAsB,kBACpBj0B,EAAAtG,EAAAuG,cAAA,WACED,EAAAtG,EAAAuG,cAACqX,GAAD,CACEjlB,KAAK,UACLmB,KAAM,CACJ7H,QAAS1C,EAAK8W,MAAMpU,QACjB0B,IAAI,SAACC,EAAM0uB,GAAP,OAAA7yB,OAAAmJ,EAAA,EAAAnJ,CAAA,GACAmE,EADA,CAEHqJ,GAAIqlB,EACJjtB,SAAU9F,EAAKkJ,MAAMpD,aAEtB9B,MAA8B,IAAvBhE,EAAKkJ,MAAMmG,KAAO,GAAS,GAAKrP,EAAKkJ,MAAMmG,SAGzD0H,EAAAtG,EAAAuG,cAAC2d,GAAD,CACEr0B,IAAI,aACJs0B,MAAO50B,EAAK8W,MAAMpU,QAClBP,QAASnC,EAAKkJ,MAAMmG,KACpBD,MAAO,GACP+jB,WAAYnzB,EAAK8W,MAAMpU,QAAQjC,OAC/B4yB,aAAc,SAAAhkB,GAAI,OAChBrP,EAAKuZ,SAAS,CACZlK,cA/PSrP,EAsQnBirC,kBAAoB,kBAClBl0B,EAAAtG,EAAAuG,cAAA,YACGhX,EAAKkJ,MAAMgiC,uBACR,qJACA,0OAA6C,IACjDn0B,EAAAtG,EAAAuG,cAACyxB,GAAWlD,KAAZ,KACG3/B,EAAe5F,EAAKkJ,MAAMm+B,aAAcrnC,EAAKkJ,MAAMpD,aAzQxD9F,EAAKkJ,MAAQ,CACXm+B,aAAc,EACdvhC,SAAU7C,EACVoM,KAAM,EACNs7B,YAAa,EACbjD,SAAU,KACVwD,wBAAwB,EACxBpE,cAAe,MACfa,iBAAkB,KAClB2B,eAAgB,MAGlBtpC,EAAKmrC,gBAAkB,KAfNnrC,qFAmBjBC,KAAK6W,MAAMxH,SAASi3B,MAEhBtmC,KAAK6W,MAAMuxB,gBACbpoC,KAAK6W,MAAMxH,SAASq3B,GAAc1mC,KAAK6W,MAAMuxB,eAAgB,2DAIvCniB,GACxB,IAAMklB,EAAellB,EAAUvkB,SAASwW,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAOwY,EAAUrb,cAEvEugC,GACFnrC,KAAKsZ,SAAS,CACZ8tB,aAAc+D,EAAaC,gBAAkBD,EAAaE,OAC1DxlC,SAAUslC,EAAa9kC,aACvBqkC,YAAaS,EAAaT,YAC1BO,yBAA0BE,EAAaC,4DAK1BpqB,GAAW,IAAAxH,EAAAxZ,KACxBghB,EAAUlW,cAAgB9K,KAAK6W,MAAM/L,aAAe9K,KAAK6W,MAAM/L,YAAc,IAC/EwgC,aAAatrC,KAAKkrC,iBAClBlrC,KAAKkrC,gBAAkBnrB,WAAW,WAChCvG,EAAK3C,MAAMxH,SF2Ba,SAACA,EAAUgD,GACzC,IAAMpJ,EAAQoJ,IAAWzE,qBACnBH,EAAKxE,EAAM2B,YACXxE,EAAM6C,EAAM6B,YACZwE,EAAQjK,EAAU,gBAEnBe,GAAQqH,GAAO6B,IAIpBD,ENzI+B,CAC/BlG,KAAM,yBMyINkG,EAAS,CACPlG,KAAM,gCAERuG,MAAK,GAAAxK,OAAI1D,EAAJ,8BAAA0D,OAA6CuI,EAA7C,SAAAvI,OAAuDkB,GAAO,CACjEwJ,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,MAG1BjO,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,SAAC2O,GACL,IAAM1O,EAAS+C,EAAsB2L,GACrCX,EN/J0B,CAC9BlG,KAAM,wBM+JFkG,EAAS,CACPlG,KAAM,gCACNE,QAAS/H,EAAOiqC,UAAY,OAG/BhqC,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,6BACNE,QAASqC,EAAM0E,UAEjBf,EN1K0B,CAC9BlG,KAAM,8BQgGC,OAGAnJ,KAAK6W,MAAMnV,SAASlB,QAAUwgB,EAAUtf,SAASlB,QACpDR,KAAK6W,MAAMxH,SAASi3B,iDAsBL,IAAAtkB,EAAAhiB,KACXwrC,EAAsBxrC,KAAK6W,MAAMnV,SAASwW,KAAK,SAAC9T,GACpD,OAAOA,EAAKqJ,KAAOuU,EAAKnL,MAAMjM,cAGhC,OAAI4gC,EACKA,EAAoBC,kBAAkBtnC,IAAI,SAAAC,GAAI,MAAK,CACxDG,MAAOH,EAAKqJ,GACZ8Y,MAAK,IAAArhB,OAAMd,EAAK+B,YAAX,OAAAjB,OAA4BS,EAAevB,EAAKgC,IAAKhC,EAAKiC,kBAG5D,sCAgMA,IAAAuuB,EAAA50B,KACP,OACE8W,EAAAtG,EAAAuG,cAAA,OAAKC,UAAWC,KAAG,gBAADhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAqBD,KAAK6W,MAAMG,UAAYhX,KAAK6W,MAAMG,aACvEF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,4JACAzN,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAASxE,KAAK6W,MAAMnV,SAASyC,IAAI,SAAAC,GAAI,MAAK,CACxCG,MAAOH,EAAKqJ,GACZ8Y,MAAOqO,EAAK2V,oBAAoBnmC,GAChC6B,QAAS7B,KAEXxC,KAAK,cACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAA5T,GAAA,IAAG3K,EAAH2K,EAAG3K,MAAH,OAAeqwB,EAAK8R,cAAcniC,EAAO,SACnDA,MAAOvE,KAAK6W,MAAMjM,YAClBoY,YAAY,4EACZtX,QAAS1L,KAAKiJ,MAAMy+B,mBAEtB5wB,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,KAAwB3kB,KAAKiJ,MAAMy+B,oBAGvC5wB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,0IACAzN,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAASxE,KAAK0rC,mBACd9pC,KAAK,cACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAAxO,GAAA,IAAG/P,EAAH+P,EAAG/P,MAAH,OAAeqwB,EAAK8R,cAAcniC,EAAO,UACnDA,MAAOvE,KAAK6W,MAAMhM,aAClBmY,YAAY,4EACZtX,QAAS1L,KAAK6W,MAAMjM,eAAiB5K,KAAKiJ,MAAMogC,iBAElDvyB,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,OACK3kB,KAAK6W,MAAMjM,aAAe5K,KAAKiJ,MAAMogC,kBAI9CvyB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACEze,KAAK,QACLvH,KAAK,cACL6L,GAAG,cACH8Y,MAAM,wFACNhiB,MAAOvE,KAAK6W,MAAM/L,YAClBgY,SAAU9iB,KAAKopC,wBACfxqB,UAAW5e,KAAK6W,MAAMjM,cAAgB5K,KAAK6W,MAAMhM,aACjDa,OAAQ1L,KAAK6W,MAAMjM,aAAe5K,KAAK6W,MAAMhM,eAAiB7K,KAAKiJ,MAAMw+B,SACzEniB,QAAStlB,KAAKsnC,eAGlBxwB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,6CACAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KAA6BhlC,KAAKiJ,MAAMpD,YAG3C7F,KAAKiJ,MAAMm+B,aAAe,GACzBpnC,KAAK6W,MAAMhM,cACTiM,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACwxB,GAAD,CACE7uB,QAAS,kBAAMkb,EAAK+R,eAAe/R,EAAK3rB,MAAMm+B,eAC9C7gB,MAAOvmB,KAAKgrC,wBAKrBhrC,KAAKyqC,wBACLzqC,KAAK2qC,iCACN7zB,EAAAtG,EAAAuG,cAAC0xB,GAAD,CACEvoB,cAAelgB,KAAKwnC,0BACpBP,eAAgBjnC,KAAKiJ,MAAM49B,iBAE3B7mC,KAAK6W,MAAM9L,mBAAqB/K,KAAK6W,MAAM7L,eAC3C8L,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBACVhX,KAAK6W,MAAM9L,mBAAqB/K,KAAK6W,MAAM7L,cAGhD8L,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,4DACbF,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,UACLuQ,QAAS1Z,KAAKk2B,WACdnX,aAAc/e,KAAK6nC,oBACnB7oB,OAAK,GAEJhf,KAAK6W,MAAM1P,SAAW,4DAAiB,wHAG5C2P,EAAAtG,EAAAuG,cAAC40B,GAAD,CACEjzB,IAAK,SAACH,GACJqc,EAAKkW,MAAQvyB,IAGdvY,KAAK+qC,+BAvZepyB,IAAMC,WAA/ByxB,GAyBGlzB,aAAe,CACpBH,UAAW,KACXpM,YAAa,KACbC,aAAc,KACdE,kBAAmB,KACnBC,aAAc,KACd6/B,qBAAsB,KACtBzC,eAAgB,MA8XpB,IAYehuB,eAZS,SAAAnR,GAAK,MAAK,CAChC9B,SAAU8B,EAAM0B,iBAAiBxD,SACjCzF,SAAUuH,EAAM2E,qBAAqBlM,SACrCkJ,YAAa3B,EAAM2E,qBAAqBhD,YACxCC,aAAc5B,EAAM2E,qBAAqB/C,aACzCC,YAAa7B,EAAM2E,qBAAqB9C,YACxC+/B,qBAAsB5hC,EAAM2E,qBAAqBnL,QAAQ,IAAM,KAC/DA,QAASwG,EAAM2E,qBAAqBnL,QACpCuI,aAAc/B,EAAM2E,qBAAqB5C,aACzCD,kBAAmB9B,EAAM2E,qBAAqB7C,oBAGjCqP,CAAyBiwB,IC9b3BuB,GAAa,SAACn+B,EAAIsZ,GAAL,MAAgB,CACxC5d,KAAM,8BACNE,QAAQpJ,OAAAmK,EAAA,EAAAnK,CAAA,MAAAiF,OACF6hB,EADC,aACkBtZ,KAId64B,GAAc,SAAAuF,GAAgB,OAAI,SAACx8B,GAC9C,IAAMC,EAAQjK,EAAU,gBACnBiK,IAILD,ETf+B,CAC/BlG,KAAM,yBSgBNuG,MAAK,GAAAxK,OAAI1D,EAAJ,qBAAqC,CACxCmO,OAAQ,MACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAGjBnQ,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,SAAC2O,GACLX,ETpC0B,CAC9BlG,KAAM,wBSoCFkG,EAAS,CACPlG,KAAM,kCACNE,QAAShF,EAAsB2L,KAE7B67B,GACFx8B,EAASu8B,GAAWC,EAAkB,cAGzCtqC,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,wCACNE,QAASqC,EAAM0E,UAEjBf,ETlD0B,CAC9BlG,KAAM,6BSqDKw9B,GAAiB,SAAAvgC,GAAG,MAAK,CACpC+C,KAAM,mCACNE,QAASjD,IAGEwgC,GAAqB,SAAAC,GAAa,OAAI,SAACx3B,EAAUgD,GAAa,IAAAy0B,EAGrEz0B,IAAWrE,wBADb5C,EAFuE07B,EAEvE17B,iBAAkBC,EAFqDy7B,EAErDz7B,eAAgBP,EAFqCg8B,EAErCh8B,YAE9BwE,EAAQjK,EAAU,gBAExB,GAAKiK,GAAUrM,EAAc4jC,GAA7B,CAIA,IAAMh7B,EAAc,CAClBw6B,SAAUpjC,EAAc4jC,GACxB8B,SAAUt9B,EACVu9B,OAAQx9B,EACR27B,IAAKj8B,GAEPuE,ET/E+B,CAC/BlG,KAAM,yBS+ENuG,MAAK,GAAAxK,OAAI1D,EAAJ,kCAAkD,CACrDmO,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,oBAElBmB,KAAMC,KAAKC,UAAUhH,KAEpBxK,KAAK,SAACyO,GASL,OARIA,EAASC,KACXV,ETtFwB,CAC9BlG,KAAM,wBSsFAkG,EAASjM,YAAK,qBAAsB,CAClCuiC,aAAc,UACdC,aAAc/5B,MAIM,MAApBiE,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB5O,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,mCACNE,QAASqC,EAAM0E,UAEjBf,ET5G0B,CAC9BlG,KAAM,6BUWF2iC,gNAwBJ7iC,MAAQ,CACN8iC,KAAM,KACNC,UAAW,KACXC,WAAY,KACZC,OAAQ,KACRrmC,SAAU,GACVghC,cAAe,MACfY,SAAU,KACVC,iBAAkB,KAClB2B,eAAgB,QAoClB8C,gBAAkB,SAAAvZ,GAAW,SAAA1tB,OACxB0tB,EAAYzsB,YADY,2CAAAjB,OACWS,EACpCitB,EAAYxsB,IACZwsB,EAAYvsB,cAHa,QAM7BqlC,iBAAmB,WACjB,IAAMU,EAAiBrsC,EAAK8W,MAAMnV,SAASwW,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAO1N,EAAK8W,MAAMzL,mBAE/E,OAAIghC,EACKA,EAAeX,kBAAkBtnC,IAAI,SAAAC,GAAI,MAAK,CACnDG,MAAOH,EAAKqJ,GACZ8Y,MAAK,IAAArhB,OAAMd,EAAK+B,YAAX,OAAAjB,OAA4BS,EAAevB,EAAKgC,IAAKhC,EAAKiC,kBAG5D,QAGTgmC,oBAAsB,WAAM,IAClBN,EAAShsC,EAAKkJ,MAAd8iC,KACR,GAAoB,kBAATA,EAAmB,CAC5B,IAAM3b,EAAOxpB,EAAUmlC,EAAM,CAAC,2BAAQ,qBAAO,6BAE7C,SAAA7mC,OAAU6mC,EAAV,KAAA7mC,OAAkBkrB,GAGpB,OAAOrtB,KAGTmoC,gBAAkB,OAElBxE,cAAgB,SAACj5B,EAAIsZ,GACnBhnB,EAAKunC,YAAY,WACfvnC,EAAK8W,MAAMxH,SAASu8B,GAAWn+B,EAAIsZ,SAIvCulB,wBAA0B,SAAA/nC,GAAK,OAAIxE,EAAK8W,MAAMxH,SAASs3B,GAAepiC,OAEtEijC,0BAA4B,SAACttB,GAC3Bna,EAAKuZ,SAAS,CACZutB,cAAe3sB,EAAMyH,OAAOpd,WAIhCqjC,aAAe,WACb,IAAMxhC,EAAM0f,WAAW/lB,EAAK8W,MAAM/L,aAClC,OAAI1E,GAAO,IAAMA,EACR,yIAGF,QAGTkhC,YAAc,SAAClkB,GACbrjB,EAAKuZ,SACH,CACEmuB,SAAU,KACVC,iBAAkB,KAClB2B,eAAgB,MAElB,WAC0B,oBAAbjmB,GACTA,SAMRukB,mBAAqB,WAGnB,OAFgB5nC,EAAK8W,MAAMxL,eAMpB,KAHE,oOAMXi+B,iBAAmB,WAGjB,OAFgBvpC,EAAK8W,MAAMzL,iBAMpB,KAHE,6NAMX8qB,WAAa,WACPn2B,EAAK8W,MAAM1P,UAIfpH,EAAKuZ,SACH,CACEmuB,SAAU1nC,EAAK6nC,eACfF,iBAAkB3nC,EAAK4nC,qBACvB0B,eAAgBtpC,EAAKupC,oBAEvB,WACMvpC,EAAKkJ,MAAMw+B,UAAY1nC,EAAKkJ,MAAMy+B,kBAAoB3nC,EAAKkJ,MAAMogC,gBAIrEtpC,EAAK8W,MAAMxH,SAASu3B,GAAmB7mC,EAAKkJ,MAAM49B,qBAKxDgB,kBAAoB,WAAM,IAAA1hB,EAOpBpmB,EAAK8W,MALP1P,EAFsBgf,EAEtBhf,SACAiE,EAHsB+a,EAGtB/a,iBACAC,EAJsB8a,EAItB9a,eACAP,EALsBqb,EAKtBrb,YACAC,EANsBob,EAMtBpb,kBAGF,SACE5D,GACCiE,GACAC,GACAP,IACDC,yFA5JF/K,KAAK6W,MAAMxH,SAASi3B,GAAYtmC,KAAK6W,MAAMuxB,mEAGnBniB,GACxB,GAAIjmB,KAAK6W,MAAMzL,mBAAqB6a,EAAU7a,iBAAkB,CAC9D,IAAMghC,EAAiBnmB,EAAUvkB,SAASwW,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAOwY,EAAU7a,mBAEzEghC,GACFpsC,KAAKsZ,SAAS,CACZyyB,KAAMK,EAAeG,QACrBP,UAAWI,EAAeJ,UAC1BC,WAAYG,EAAeH,WAC3BC,OAAQE,EAAeF,OACvBrmC,SAAUumC,EAAe/lC,2DAMd2a,GAAW,IAAAxH,EAAAxZ,KACxBghB,EAAUlW,cAAgB9K,KAAK6W,MAAM/L,aAAe9K,KAAK6W,MAAM/L,YAAc,IAC/EwgC,aAAatrC,KAAKkrC,iBAClBlrC,KAAKkrC,gBAAkBnrB,WAAW,WAChCvG,EAAK3C,MAAMxH,SDwCY,SAACA,EAAUgD,GAAa,IAAAm6B,EAGjDn6B,IAAWrE,wBADb5C,EAFmDohC,EAEnDphC,iBAAkBN,EAFiC0hC,EAEjC1hC,YAEdwE,EAAQjK,EAAU,gBAEnBiK,IAILD,EAAS,CACPlG,KAAM,sCAERuG,MAAK,GAAAxK,OAAI1D,EAAJ,gCAAA0D,OAA+CkG,EAA/C,SAAAlG,OAAuE4F,GAAe,CACzF8E,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAGjBnQ,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,SAAA2O,GAAI,OAAIX,EAAS,CACrBlG,KAAM,sCACNE,QAAShF,EAAsB2L,GAAM5J,QAEtC7E,MAAM,SAAAmK,GAAK,OAAI2D,EAAS,CACvBlG,KAAM,mCACNE,QAASqC,EAAM0E,gBC/EZ,OAGApQ,KAAK6W,MAAMnV,SAASlB,QAAUwgB,EAAUtf,SAASlB,QACpDR,KAAK6W,MAAMxH,SAASi3B,uCAoIf,IAAAtkB,EAAAhiB,KACP,OACE8W,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,iBACbF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,gBACbF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAb,2NACAF,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAASxE,KAAK6W,MAAMnV,SAASyC,IAAI,SAAAC,GAAI,MAAK,CACxCG,MAAOH,EAAKqJ,GACZ8Y,MAAOvE,EAAKmqB,gBAAgB/nC,GAC5B6B,QAAS7B,KAEXxC,KAAK,cACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAA5T,GAAA,IAAG3K,EAAH2K,EAAG3K,MAAH,OAAeyd,EAAK0kB,cAAcniC,EAAO,YACnDA,MAAOvE,KAAK6W,MAAMzL,iBAClB4X,YAAY,4EACZtX,QAAS1L,KAAKiJ,MAAMogC,iBAEtBvyB,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,KAAwB3kB,KAAKiJ,MAAMogC,mBAIzCvyB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,kCAA+D,IAC/DluB,EAAAtG,EAAAuG,cAACuxB,GAAepD,SAAhB,KAA0BllC,KAAKqsC,yBAGnCv1B,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,yFAAyE,IACzEluB,EAAAtG,EAAAuG,cAACuxB,GAAepD,SAAhB,KACG3+B,EAAcvG,KAAKiJ,MAAM+iC,eAKlCl1B,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,kKAAsF,IACtFluB,EAAAtG,EAAAuG,cAACuxB,GAAepD,SAAhB,KACGv/B,EAAe3F,KAAKiJ,MAAMgjC,WAAYjsC,KAAKiJ,MAAMpD,cAK1DiR,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,+MAE8B,IAC9BluB,EAAAtG,EAAAuG,cAACuxB,GAAepD,SAAhB,KACGv/B,EAAe3F,KAAKiJ,MAAMijC,OAAQlsC,KAAKiJ,MAAMpD,cAKtDiR,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,gBACbF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAb,kOACAF,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAASxE,KAAK0rC,mBACd9pC,KAAK,cACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAAxO,GAAA,IAAG/P,EAAH+P,EAAG/P,MAAH,OAAeyd,EAAK0kB,cAAcniC,EAAO,UACnDA,MAAOvE,KAAK6W,MAAMxL,eAClB2X,YAAY,4EACZpE,UAAW5e,KAAK6W,MAAMzL,iBACtBM,MAAO1L,KAAK6W,MAAMzL,oBAAsBpL,KAAKiJ,MAAMy+B,mBAErD5wB,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,KACG3kB,KAAK6W,MAAMzL,kBAAoBpL,KAAKiJ,MAAMy+B,qBAKnD5wB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACEze,KAAK,QACLvH,KAAK,cACL6L,GAAG,cACH8Y,MAAM,8FACNhiB,MAAOvE,KAAK6W,MAAM/L,YAClBgY,SAAU9iB,KAAKssC,wBACf1tB,UAAW5e,KAAK6W,MAAMzL,mBAAqBpL,KAAK6W,MAAMxL,eACtDK,OACG1L,KAAK6W,MAAMzL,kBAAoBpL,KAAK6W,MAAMxL,iBAAmBrL,KAAKiJ,MAAMw+B,SAE3EniB,QAAStlB,KAAKsnC,eAGlBxwB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,6CACAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KACGhlC,KAAKiJ,MAAMpD,UAAY9C,MAK/B/C,KAAK6W,MAAMvL,mBACVwL,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,yKAE8B,IAC7BhlC,KAAK6W,MAAMtL,eACVuL,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUX,QAAM,IAEhBxE,EAAAtG,EAAAuG,cAAA,YACED,EAAAtG,EAAAuG,cAACuxB,GAAepD,SAAhB,KACGv/B,EAAe3F,KAAK6W,MAAMvL,kBAAmBtL,KAAKiJ,MAAMpD,WAChC,IAC3BiR,EAAAtG,EAAAuG,cAACuxB,GAAepD,SAAhB,CAAyBluB,UAAU,iBAAnC,OACOhX,KAAK6W,MAAMvL,kBAAoBtL,KAAKiJ,MAAMijC,QAAQpmC,iBADzD,QAORgR,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAuBhX,KAAK6W,MAAMrL,eAIrDsL,EAAAtG,EAAAuG,cAAC0xB,GAAD,CACEvoB,cAAelgB,KAAKwnC,0BACpBP,eAAgBjnC,KAAKiJ,MAAM49B,gBAE7B/vB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACG52B,KAAK6W,MAAM9L,mBACV+L,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAuBhX,KAAK6W,MAAM9L,oBAGnD+L,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,UACLuQ,QAAS1Z,KAAKk2B,WACdnX,aAAc/e,KAAK6nC,oBACnB7oB,OAAK,GAEJhf,KAAK6W,MAAM1P,SAAW,4DAAiB,iIA/VpBwR,IAAMC,WAAlCkzB,GAeG30B,aAAe,CACpB/L,iBAAkB,KAClBC,eAAgB,KAChBN,kBAAmB,KACnBO,kBAAmB,KACnBE,YAAa,KACb48B,eAAgB,MAmVpB,IAYehuB,eAZS,SAAAnR,GAAK,MAAK,CAChC9B,SAAU8B,EAAM0B,iBAAiBxD,SACjCzF,SAAUuH,EAAM+E,wBAAwBtM,SACxC0J,iBAAkBnC,EAAM+E,wBAAwB5C,iBAChDC,eAAgBpC,EAAM+E,wBAAwB3C,eAC9CP,YAAa7B,EAAM+E,wBAAwBlD,YAC3CC,kBAAmB9B,EAAM+E,wBAAwBjD,kBACjDO,kBAAmBrC,EAAM+E,wBAAwB1C,kBACjDC,eAAgBtC,EAAM+E,wBAAwBzC,eAC9CC,YAAavC,EAAM+E,wBAAwBxC,cAG9B4O,CAAyB0xB,ICxX3BxF,GAAc,kBAAM,SAACj3B,GAChC,IAAMC,EAAQjK,EAAU,gBACnBiK,IAILD,EXlB+B,CAC/BlG,KAAM,yBWmBNuG,MAAK,GAAAxK,OACA1D,EADA,sBAEH,CACEoO,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAInBnQ,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,SAAC2O,GACLX,EAAS,CACPlG,KAAM,2CACNE,QAAShF,EAAsB2L,KAEjCX,EX7C0B,CAC9BlG,KAAM,0BW8CH5H,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,wCACNE,QAASqC,EAAM0E,UAEjBf,EXpD0B,CAC9BlG,KAAM,6BWuDKu9B,GAAgB,SAACj5B,EAAIS,GAAL,MAAoB,CAC/C/E,KAAM,kCACNE,QAAS,CACPoE,KACAS,eAISy4B,GAAiB,SAAAvgC,GAAG,MAAK,CACpC+C,KAAM,oCACNE,QAASjD,IA2DEwgC,GAAqB,SAAAC,GAAa,OAAI,SAACx3B,EAAUgD,GAAa,IAAAm6B,EAKrEn6B,IAAWpE,yBAHbhD,EAFuEuhC,EAEvEvhC,YACAC,EAHuEshC,EAGvEthC,UACAJ,EAJuE0hC,EAIvE1hC,YAGIwE,EAAQjK,EAAU,gBAExB,GAAKiK,GAAUrM,EAAc4jC,GAA7B,CAIA,IAAMh7B,EAAc,CAClBw6B,SAAUpjC,EAAc4jC,GACxB8B,SAAU19B,EACV29B,OAAQ19B,EACR67B,IAAKj8B,GAEPuE,EXpJ+B,CAC/BlG,KAAM,yBWoJNuG,MAAK,GAAAxK,OAAI1D,EAAJ,oCAAA0D,OAAmDjC,EAAc4jC,IAAkB,CACtFl3B,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,oBAElBmB,KAAMC,KAAKC,UAAUhH,KAEpBxK,KAAK,SAACyO,GACL,GAAIA,EAASC,GAMX,OALAV,EX3JwB,CAC9BlG,KAAM,6BW2JAkG,EAASjM,YAAK,6BAA8B,CAC1CuiC,aAAc,WACdC,aAAc/5B,KAKM,MAApBiE,EAASG,QACXH,EAASI,OAAO7O,KAAK,SAAC6O,GACpB,MAAM,IAAIjP,MAAMiP,KAIpBJ,EAASE,OAAO3O,KAAK,SAAC2O,GACpB,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB5O,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,oCACNE,QAASqC,EAAM0E,UAEjBf,EXlL0B,CAC9BlG,KAAM,6BYLKkH,WAAgB,IAAIvQ,GAsClB2sC,GApCF,eAAAv9B,EAAAjP,OAAAkS,GAAA,EAAAlS,CAAAsQ,GAAAC,EAAA4B,KAAG,SAAA9B,IAAA,IAAAhB,EAAAnP,EAAA,OAAAoQ,GAAAC,EAAAC,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UACRtB,EAAQjK,EAAU,gBADV,CAAAqL,EAAAE,KAAA,eAAAF,EAAAM,OAAA,SAIL,MAJK,cAOdX,GAAcjP,OAAO,cAPPsP,EAAAE,KAAA,EASQlB,MAAK,GAAAxK,OAAI1D,EAAJ,qBAAqC,CAC9DoO,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAZN,cASRrR,EATQuQ,EAAAG,KAAAH,EAAAM,OAAA,SAgBPX,GACJlQ,QAAQA,EAAS,aAAc,KAC/BkB,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAKgD,IAjCM,wBAAAqM,EAAAQ,SAAAZ,EAAAtQ,SAAH,yBAAAkP,EAAAyC,MAAA3R,KAAAO,YAAA,GCwBE6Z,iBAxBK,SAAAlL,GAAkB,IAAfG,EAAeH,EAAfG,SAKrB,OACEyH,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,8BACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,sCACbF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,sCAAb,g1BAIAF,EAAAtG,EAAAuG,cAACsI,GAAD,CAAQ3F,QAXO,WACnBrK,EAASjM,YAAK,uBAUqB4T,UAAU,oCAAoC7N,KAAK,WAAlF,yICMFujC,GAAQ,GAERC,eAuBJ,SAAAA,EAAY91B,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAA2sC,IACjB5sC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAA0sC,GAAA1zB,KAAAjZ,KAAM6W,KAqDRswB,UAAY,SAAC/gC,GACXrG,EAAKuZ,SAAS,CACZmuB,SAAU,OAEZ1nC,EAAK8W,MAAMxH,SAASs3B,GAAevgC,KA1DlBrG,EA6DnB6sC,YAAc,WACZ,IAAMC,EAAqB9sC,EAAK8W,MAAMnV,SAASwW,KAAK,SAAAhJ,GAAA,OAAAA,EAAGzB,KAAgB1N,EAAK8W,MAAM5L,cAE9E4hC,GACF9sC,EAAKuZ,SAAS,CAAEzT,SAAUgnC,EAAmBxmC,gBAjE9BtG,EAqEnB0sC,QAAU,WACR,GAAI1sC,EAAKkJ,MAAM6jC,SAAStsC,OAAQ,CAC9B,IAAMusC,EAAOhtC,EAAKkJ,MAAM6jC,SAAS50B,KAAK,SAAA5D,GAAA,OAAAA,EAAGjO,eAA+B,GAAAnB,OAAQnF,EAAKkJ,MAAMpD,SAAnB,WACxE,OAAOknC,GAAOA,EAAKxoC,OAAa,EAGlC,OAAO,GA3EUxE,EA8EnBunC,YAAc,SAAClkB,GACbrjB,EAAKuZ,SAAS,CACZmuB,SAAU,KACVC,iBAAkB,KAClB2B,eAAgB,MACf,WACuB,oBAAbjmB,GACTA,OArFarjB,EA0FnBsnC,oBAAsB,SAAAtyB,EAAgB7G,GAAc,IAApBT,EAAoBsH,EAA3BxQ,MACvBxE,EAAKunC,YAAY,WACfvnC,EAAK8W,MAAMxH,SAASq3B,GAAcj5B,EAAIS,OA5FvBnO,EAgGnBwnC,gBAAkB,SAAChjC,GACjBxE,EAAKuZ,SAAS,CACZmuB,SAAU,MACT,WACD1nC,EAAK8W,MAAMxH,SAASs3B,GAAepiC,OApGpBxE,EAwGnB81B,aAAe,WAAM,IAAAO,EAKfr2B,EAAKkJ,MAHPw+B,EAFiBrR,EAEjBqR,SACAC,EAHiBtR,EAGjBsR,iBACA2B,EAJiBjT,EAIjBiT,eAGF,OAAO5B,GAAYC,GAAoB2B,GA/GtBtpC,EAkHnB6nC,aAAe,SAACyD,GACd,IAAMjlC,EAAM0f,WAAW/lB,EAAK8W,MAAM/L,aAClC,OAAI1E,GAAO,IAAMA,EACR,+IAGLA,EAAMilC,EACD,iMAGF,MA5HUtrC,EA+HnB4nC,mBAAqB,WAGnB,OAFgB5nC,EAAK8W,MAAM5L,YAMpB,KAHE,kHAnIQlL,EAyInBupC,iBAAmB,WAGjB,OAFgBvpC,EAAK8W,MAAM3L,UAMpB,KAHE,0IA7IQnL,EAmJnB6mC,mBAAqB,SAACyE,GAChBtrC,EAAKkJ,MAAM+jC,qBAIfjtC,EAAKuZ,SAAS,CACZmuB,SAAU1nC,EAAK6nC,aAAayD,GAC5B3D,iBAAkB3nC,EAAK4nC,qBACvB0B,eAAgBtpC,EAAKupC,oBACpB,WACGvpC,EAAK81B,gBAIT91B,EAAK8W,MAAMxH,SAASu3B,GAAmB7mC,EAAKkJ,MAAM49B,mBAjKnC9mC,EAqKnB8nC,kBAAoB,WAAM,IAAA1hB,EACwBpmB,EAAK8W,MAA7C5L,EADgBkb,EAChBlb,YAAaC,EADGib,EACHjb,UAAWJ,EADRqb,EACQrb,YAChC,QACGG,GACAH,GACAI,GACAnL,EAAKkJ,MAAM6jC,SAAStsC,SACrBT,EAAKkJ,MAAMgkC,cA5KIltC,EAgLnBynC,0BAA4B,SAACttB,GAC3Bna,EAAKuZ,SAAS,CACZutB,cAAe3sB,EAAMyH,OAAOpd,SAlLbxE,EAsLnBmtC,aAAe,WACbntC,EAAKotC,cACLptC,EAAKsjB,QAxLYtjB,EA2LnBotC,YAAc,WACZptC,EAAKuZ,SAAS,CAAE8zB,QAASV,IAAS,kBAAMpB,aAAavrC,EAAKstC,UA5LzCttC,EA+LnBsjB,KAAO,WACsB,IAAvBtjB,EAAKkJ,MAAMmkC,QAIfrtC,EAAKuZ,SACH,SAAArQ,GAAK,MAAK,CACRmkC,QAASnkC,EAAMmkC,QAAU,IAE3B,WACErtC,EAAKstC,MAAQttB,WAAWhgB,EAAKsjB,KAAM,OARrCtjB,EAAKuZ,SAAS,CAAEwzB,SAAU,IAAM/sC,EAAKotC,cAjMtBptC,EA8MnButC,UAAY,WACNvtC,EAAKkJ,MAAMgkC,cAIfltC,EAAKuZ,SAAS,CAAEwzB,SAAU,GAAIG,aAAa,GAAQltC,EAAKotC,aAExDV,KACGprC,KAAK,SAACC,GACLvB,EAAKuZ,SACH,CACEwzB,SAAUxrC,EAAOoT,eACjBu4B,aAAa,GAEf,WACEltC,EAAKmtC,eACLntC,EAAKwtC,iBAIVhsC,MAAM,WACLxB,EAAKuZ,SAAS,CAAE2zB,aAAa,GAAS,WACpCltC,EAAKotC,cACLptC,EAAKwtC,mBArOMxtC,EA0OnBwtC,WAAa,WACX,IAAMP,EAAsBjtC,EAAKkJ,MAAM6jC,SAAShI,MAAM,SAAA1gC,GAAI,OAAmB,IAAfA,EAAKG,QAEnExE,EAAKuZ,SAAS,CACZ0zB,yBA9OejtC,EAkPnBytC,WAAa,WACX,IAAMC,EAAc1tC,EAAK0sC,UAEzB,OAAIgB,GAAe1tC,EAAK8W,MAAM5L,YACE,kBAAhBwiC,EACVA,EAAY3nC,eAAe,QAAS,CACpC+X,sBAAuB,EACvBC,sBAAuB,IAEvB2vB,EAGC,MA3PP1tC,EAAKstC,MAAQ,KACbttC,EAAKsQ,cAAgBA,GAErBtQ,EAAKkJ,MAAQ,CACXw+B,SAAU,KACVC,iBAAkB,KAClB2B,eAAgB,KAChBxC,cAAe,MACfuG,QAASV,GACTI,SAAU,GACVjnC,SAAU,KACVmnC,qBAAqB,GAdNjtC,qFAmBjBC,KAAKstC,YAEDttC,KAAK6W,MAAM5L,aACbjL,KAAK4sC,cAGP5sC,KAAK6W,MAAMxH,SAASi3B,MAChBtmC,KAAK6W,MAAMuxB,gBACbpoC,KAAK6W,MAAMxH,SAASq3B,GAAc1mC,KAAK6W,MAAMuxB,eAAgB,oDAI9CpnB,IACZhhB,KAAK6W,MAAMnV,SAASlB,QAAUwgB,EAAUtf,SAASlB,QACpDR,KAAK6W,MAAMxH,SAASi3B,MAGlBtlB,EAAU/V,cAAgBjL,KAAK6W,MAAM5L,aAAejL,KAAK6W,MAAM5L,aACjEjL,KAAKstC,YAILtsB,EAAU/V,cAAgBjL,KAAK6W,MAAM5L,aACrC+V,EAAUtf,SAASlB,SAAWR,KAAK6W,MAAMnV,SAASlB,SAE9CR,KAAK6W,MAAM5L,aAAiBjL,KAAK6W,MAAMnV,SAASlB,OACpDR,KAAK4sC,8DAKPtB,aAAatrC,KAAKqtC,OAClBrtC,KAAKqQ,cAAcjP,OAAO,+CA8MnB,IAAAoY,EAAAxZ,KACDqoC,EACJroC,KAAK6W,MAAMnV,SAASwW,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAO+L,EAAK3C,MAAM5L,eAAgB,GACpEyiC,EAAiBrF,EAAgBY,mBAAqB,GACtD0E,EACJD,EAAex1B,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAO+L,EAAK3C,MAAM3L,aAAc,GAE7D0iC,GAAsBvF,EAAgBziC,UAAY5F,KAAKiJ,MAAM6jC,SAAStsC,OAE5E,OACEsW,EAAAtG,EAAAuG,cAAA,OAAKC,UAAWC,KAAG,gBAADhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAqBD,KAAK6W,MAAMG,UAAYhX,KAAK6W,MAAMG,aACtEhX,KAAKiJ,MAAM+jC,qBAAuBl2B,EAAAtG,EAAAuG,cAAC82B,GAAD,MACnC/2B,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,sEACAzN,EAAAtG,EAAAuG,cAAC8a,GAAD,CACErtB,QAASxE,KAAK6W,MAAMnV,SAASyC,IAAI,SAAAC,GAAI,MAAK,CACxCG,MAAOH,EAAKqJ,GACZ8Y,MAAOrgB,EAAwB9B,MAEjCxC,KAAK,cACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAA5I,GAAK,OAAIV,EAAK6tB,oBAAoBntB,EAAO,SACnD3V,MAAOvE,KAAK6W,MAAM5L,YAClB+X,YAAY,4EACZtX,QAAS1L,KAAKiJ,MAAMy+B,mBAEtB5wB,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,KACG3kB,KAAKiJ,MAAMy+B,oBAIlB5wB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,8FACAzN,EAAAtG,EAAAuG,cAAC8a,GAAD,CACErtB,QAASkpC,EAAevpC,IAAI,SAAAC,GAAI,MAAK,CACnCG,MAAOH,EAAKqJ,GACZ8Y,MAAK,GAAArhB,OAAKd,EAAK+B,YAAV,MAAAjB,OAA0Bd,EAAKiC,iBAEtCzE,KAAK,cACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAA5I,GAAK,OAAIV,EAAK6tB,oBAAoBntB,EAAO,OACnD3V,MAAOvE,KAAK6W,MAAM3L,UAClB8X,YAAY,4EACZpE,UAAW8uB,EAAeltC,OAC1BkL,QAASgiC,EAAeltC,UAAYR,KAAKiJ,MAAMogC,iBAEjDvyB,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,KACG+oB,EAAeltC,QAAUR,KAAKiJ,MAAMogC,kBAI3CvyB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACEze,KAAK,QACLvH,KAAK,eACL6L,GAAG,eACH8Y,MAAM,4EACNhiB,MAAOvE,KAAK6W,MAAM/L,YAClBgY,SAAU9iB,KAAKunC,gBACf77B,MAAOkiC,EAAqB,GAAK5tC,KAAKiJ,MAAMw+B,SAC5C7oB,SAAUgvB,EACVtoB,QAAStlB,KAAKsnC,eAGjBe,EAAgBziC,QAAU,GACzBkR,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACwxB,GAAD,CACE7uB,QAAS,kBAAMF,EAAK2tB,UAAUkB,EAAgBziC,UAC9C2gB,MACEzP,EAAAtG,EAAAuG,cAAA,sHACqB,IACnBD,EAAAtG,EAAAuG,cAACyxB,GAAWlD,KAAZ,KACG3/B,EAAe0iC,EAAgBziC,QAASyiC,EAAgBhiC,oBAQvEyQ,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,sEACAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,CAAgBtxB,UAAU,iCACxBF,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KAA6BhlC,KAAKwtC,gBAC/BxtC,KAAK6W,MAAM5L,aACZ6L,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KACEluB,EAAAtG,EAAAuG,cAACsI,GAAD,CAAQlW,KAAK,SAASuQ,QAAS1Z,KAAKstC,WAClCx2B,EAAAtG,EAAAuG,cAAC4E,GAAD,CAAM/Z,KAAK,SADb,mFAOJ5B,KAAKiJ,MAAM6jC,SAAStsC,UAAYR,KAAK6W,MAAM5L,aAC7C6L,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,wCACZhX,KAAKiJ,MAAMgkC,YACVn2B,EAAAtG,EAAAuG,cAAA,+GAEAD,EAAAtG,EAAAuG,cAAA,iHACoB,IAClBD,EAAAtG,EAAAuG,cAAA,cACG/W,KAAKiJ,MAAMmkC,QAAS,IACpBxmC,EAAU5G,KAAKiJ,MAAMmkC,QAAS,CAAC,6CAAW,6CAAW,8CAQpEt2B,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACEze,KAAK,QACLvH,KAAK,eACL6L,GAAG,eACH8Y,MAAM,0IACNhiB,OAAQvE,KAAK6W,MAAM/L,YAAc9K,KAAKysC,WAAW7mB,QAAQ,GACzD9C,SAAU,SAACve,GACT,IAAMuG,EAAcvG,GAASopC,EAAsBZ,MAAQ,GAE3DvzB,EAAK+tB,gBAAgBzhB,WAAWhb,EAAY8a,QAAQ,MAEtDla,MAAOkiC,EAAqB,GAAK5tC,KAAKiJ,MAAMw+B,SAC5C7oB,SAAUgvB,EACVtoB,QAAStlB,KAAKsnC,gBAIpBxwB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC0xB,GAAD,CACEvoB,cAAelgB,KAAKwnC,0BACpBP,eAAgBjnC,KAAKiJ,MAAM49B,kBAIhC7mC,KAAK6W,MAAM9L,mBACV+L,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAuBhX,KAAK6W,MAAM9L,mBAEjD+L,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,UACLuQ,QAAS,kBAAMF,EAAKotB,mBAAmByB,EAAgBziC,UACvDmZ,aAAc/e,KAAK6nC,oBACnB7oB,OAAK,GAEJhf,KAAK6W,MAAM1P,SAAW,4DAAiB,iIAnbnBwR,IAAMC,WAAnC+zB,GAeGx1B,aAAe,CACpBH,UAAW,KACX/L,YAAa,KACbC,UAAW,KACXH,kBAAmB,KACnBq9B,eAAgB,MAwapB,IASehuB,eATS,SAAAnR,GAAK,MAAK,CAChC9B,SAAU8B,EAAM0B,iBAAiBxD,SACjCzF,SAAUuH,EAAMgF,yBAAyBvM,SACzCuJ,YAAahC,EAAMgF,yBAAyBhD,YAC5CC,UAAWjC,EAAMgF,yBAAyB/C,UAC1CJ,YAAa7B,EAAMgF,yBAAyBnD,YAC5CC,kBAAmB9B,EAAMgF,yBAAyBlD,oBAGrCqP,CAAyBuyB,6FC7djC,IAAMmB,GAAwB3Y,KAAO4Y,IAAVC,MCG5B39B,GAAgB,IAAIvQ,WAiBXmuC,qFAAf,SAAA39B,EAAuCR,GAAvC,IAAAxO,EAAA4sC,EAAA,OAAA39B,GAAAC,EAAAC,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,WACMd,EAASC,GADf,CAAAW,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EAEyBd,EAASE,OAFlC,cAEU1O,EAFVoP,EAAAG,KAAAH,EAAAM,OAAA,SAGW3M,EAAwC,kBAAX/C,EAAsBsR,KAAKuO,MAAM7f,GAAUA,IAHnF,UAM0B,MAApBwO,EAASG,OANf,CAAAS,EAAAE,KAAA,gBAAAF,EAAAI,GAOU7P,MAPVyP,EAAAE,KAAA,EAOsBd,EAASI,OAP/B,aAAAQ,EAAAK,GAAAL,EAAAG,MAAA,EAAAH,EAAAI,IAAAJ,EAAAK,IAAA,eAAAL,EAAAE,KAAA,GAUsDd,EAASE,OAV/D,cAUQk+B,EAVRx9B,EAAAG,KAWQ5P,MAAMitC,EAAY/9B,SAX1B,yBAAAO,EAAAQ,SAAAZ,EAAAtQ,gCAcO,SAAesmC,KAAtB,OAAA6H,GAAAx8B,MAAA3R,KAAAO,0DAAO,SAAAgU,IAAA,IAAAjF,EAAAnP,EAAA2P,EAAA,OAAAS,GAAAC,EAAAC,KAAA,SAAAgE,GAAA,cAAAA,EAAA9D,KAAA8D,EAAA7D,MAAA,UACCtB,EAAQjK,EAAU,gBADnB,CAAAoP,EAAA7D,KAAA,cAGG3P,MAAM,4BAHT,cAMCd,EAAU,kBACduP,MAAK,GAAAxK,OAAI1D,EAAJ,mBAAmC,CACtCoO,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,uBAVjBiD,EAAA7D,KAAA,EAckBP,GAAclQ,QAAQA,IAAW,cAAe,KAdlE,cAcC2P,EAdD2E,EAAA5D,KAAA4D,EAAA7D,KAAA,EAgBQq9B,GAAmBn+B,GAhB3B,cAAA2E,EAAAzD,OAAA,SAAAyD,EAAA5D,MAAA,yBAAA4D,EAAAvD,SAAAqD,EAAAvU,gCAmBA,SAAeouC,GAAtB77B,GAAA,OAAA87B,GAAA18B,MAAA3R,KAAAO,0DAAO,SAAAyU,EAAkCs5B,GAAlC,IAAAh/B,EAAAnP,EAAA2P,EAAA,OAAAS,GAAAC,EAAAC,KAAA,SAAAwE,GAAA,cAAAA,EAAAtE,KAAAsE,EAAArE,MAAA,UACCtB,EAAQjK,EAAU,gBADnB,CAAA4P,EAAArE,KAAA,cAGG3P,MAAM,4BAHT,cAMCd,EAAU,kBACduP,MAAK,GAAAxK,OAAI1D,EAAJ,iDAAA0D,OAAgEopC,GAAuB,CAC1F1+B,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,uBAVjByD,EAAArE,KAAA,EAckBP,GAAclQ,QAAQA,IAAW,aAAc,KAdjE,cAcC2P,EAdDmF,EAAApE,KAAAoE,EAAArE,KAAA,EAgBQq9B,GAAmBn+B,GAhB3B,cAAAmF,EAAAjE,OAAA,SAAAiE,EAAApE,MAAA,yBAAAoE,EAAA/D,SAAA8D,EAAAhV,gCAmBA,SAAeuuC,GAAtB/7B,GAAA,OAAAg8B,GAAA78B,MAAA3R,KAAAO,0DAAO,SAAAgV,EAAuEqwB,GAAvE,IAAAt2B,EAAA62B,EAAAhmC,EAAA2P,EAAAo+B,EAAA,OAAA39B,GAAAC,EAAAC,KAAA,SAAA+E,GAAA,cAAAA,EAAA7E,KAAA6E,EAAA5E,MAAA,UACCtB,EAAQjK,EAAU,gBADnB,CAAAmQ,EAAA5E,KAAA,cAGG3P,MAAM,4BAHT,cAMCklC,EAAWljC,EAAc2iC,EAAaiB,eAEtC1mC,EAAU,kBACduP,MAAK,GAAAxK,OAAI1D,EAAJ,iCAAA0D,OAAgDihC,GAAY,CAC/Dx2B,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,uBAbjBgE,EAAA5E,KAAA,EAiBkBP,GAAclQ,QAAQA,IAAW,UAAW,KAjB9D,YAiBC2P,EAjBD0F,EAAA3E,MAmBQd,GAnBR,CAAAyF,EAAA5E,KAAA,gBAAA4E,EAAAxE,OAAA,SAoBIjQ,QAAQI,WApBZ,WAuBmB,MAApB2O,EAASG,OAvBR,CAAAuF,EAAA5E,KAAA,gBAAA4E,EAAA1E,GAwBG7P,MAxBHuU,EAAA5E,KAAA,GAwBed,EAASI,OAxBxB,cAAAsF,EAAAzE,GAAAyE,EAAA3E,MAAA,EAAA2E,EAAA1E,IAAA0E,EAAAzE,IAAA,eAAAyE,EAAA5E,KAAA,GA2B+Cd,EAASE,OA3BxD,cA2BCk+B,EA3BD14B,EAAA3E,KA4BC5P,MAAMitC,EAAY/9B,SA5BnB,yBAAAqF,EAAAtE,SAAAqE,EAAAvV,4LCxEA,IAAMyuC,GAAetZ,KAAO4Y,IAAVW,MCgBnBC,GAAqBroB,GACrBsoB,GAAwBvJ,GACxBwJ,GAAmB1f,GA2BnB2f,eAGJ,SAAAA,EAAYj4B,GAAiC,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAA8uC,IAC3C/uC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAA6uC,GAAA71B,KAAAjZ,KAAM6W,KA6IAyvB,YA9IqCrmC,OAAAkS,GAAA,EAAAlS,CAAAsQ,GAAAC,EAAA4B,KA8IvB,SAAA9B,IAAA,OAAAC,GAAAC,EAAAC,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACpB7Q,EAAKuZ,SAAS,CAAEy1B,iBAAiB,IADbr+B,EAAAC,KAAA,EAAAD,EAAAI,GAAA/Q,EAAA2Q,EAAAE,KAAA,EAGc01B,KAHd,OAAA51B,EAAAK,GAAAL,EAAAG,KAAAH,EAAAO,GAAA,CAGFvP,SAHEgP,EAAAK,IAAAL,EAAAI,GAGbwI,SAHaL,KAAAvI,EAAAI,GAAAJ,EAAAO,IAAAP,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAs+B,GAAAt+B,EAAA,SAMlBuB,QAAQsZ,IAAR7a,EAAAs+B,IANkB,eAAAt+B,EAAAC,KAAA,GAQlB5Q,EAAKuZ,SAAS,CAAEy1B,iBAAiB,IARfr+B,EAAAu+B,OAAA,6BAAAv+B,EAAAQ,SAAAZ,EAAAtQ,KAAA,mBA9IuBD,EA0JrCquC,WA1JqCnuC,OAAAkS,GAAA,EAAAlS,CAAAsQ,GAAAC,EAAA4B,KA0JxB,SAAAmC,IAAA,IAAA+5B,EAAA,OAAA/9B,GAAAC,EAAAC,KAAA,SAAAgE,GAAA,cAAAA,EAAA9D,KAAA8D,EAAA7D,MAAA,cACX09B,EAAwBvuC,EAAKkJ,MAA7BqlC,oBAERvuC,EAAKuZ,SAAS,CAAE41B,gBAAgB,IAHbz6B,EAAA9D,KAAA,EAAA8D,EAAA3D,GAAA/Q,EAAA0U,EAAA7D,KAAA,EAOAw9B,GAAoBE,GAPpB,OAAA75B,EAAA1D,GAAA0D,EAAA5D,KAAA4D,EAAAxD,GAAA,CAOfk+B,QAPe16B,EAAA1D,GAQfq+B,aAAc,MARC36B,EAAA3D,GAMZwI,SANYL,KAAAxE,EAAA3D,GAAA2D,EAAAxD,IAAAwD,EAAA7D,KAAA,iBAAA6D,EAAA9D,KAAA,GAAA8D,EAAAu6B,GAAAv6B,EAAA,SAWjB1U,EAAKuZ,SAAS,CACZ61B,QAAS,KACTC,aAAc36B,EAAAu6B,GAAM5+B,UAbL,eAAAqE,EAAA9D,KAAA,GAgBjB5Q,EAAKuZ,SAAS,CACZ41B,gBAAgB,IAjBDz6B,EAAAw6B,OAAA,6BAAAx6B,EAAAvD,SAAAqD,EAAAvU,KAAA,mBA1JwBD,EAgLrC+oC,gBAAkB,WACxB,OAAI/oC,EAAKkJ,MAAMhD,QACNN,EAAe5F,EAAKkJ,MAAMhD,QAAQL,QAAS7F,EAAKkJ,MAAMhD,QAAQI,cAGhEV,EAAe,EAAG,KArLkB5F,EAwLrConC,UAAY,WAAM,IACjBlhC,EAAWlG,EAAKkJ,MAAhBhD,QACHA,GACFlG,EAAKuZ,SAAS,CACZlT,IAAKH,EAAQL,WA5L0B7F,EAiMrCsnC,oBAAsB,SAAAtyB,GAAgC,IAA7BxQ,EAA6BwQ,EAA7BxQ,MACzB8jC,EAAkBtoC,EAAKkJ,MAAMvH,SAASwW,KAAK,SAAA9T,GAAI,OAAIA,EAAKqJ,KAAOlJ,IACjE8jC,IACFtoC,EAAKunC,cACLvnC,EAAKuZ,SAAS,CAAErT,QAASoiC,MArMgBtoC,EAyMrCsvC,oBAAsB,SAACn1B,GAA+C,IACpE3V,EAAU2V,EAAMyH,OAAhBpd,MACRxE,EAAKunC,cACLvnC,EAAKuZ,SAAS,SAAArQ,GAAK,MAAK,CACtBqlC,oBAAqB/pC,EACrB2qC,eAAgB3qC,EAAM/D,OAAS,EAC/B2uC,QAAS5qC,EAAM/D,OAAS,EAAI,KAAOyI,EAAMkmC,QACzCC,aAAc,OACZ,WACFrvC,EAAKuvC,uBAAuBluC,SAExBrB,EAAKkJ,MAAMqlC,oBAAoB9tC,OAAS,GAC1CT,EAAKuvC,uBAAuBvvC,EAAKkJ,MAAMqlC,wBArNAvuC,EA0NrCqpC,wBAA0B,SAAC7kC,GACjCxE,EAAKuZ,SAAS,CACZlT,IAAK7B,KA5NoCxE,EAgOrCunC,YAAc,SAAClkB,GACrBrjB,EAAKuZ,SACH,CACEmuB,SAAU,KACV8H,aAAc,MAEhB,WAC0B,oBAAbnsB,GACTA,OAxOqCrjB,EA8OrCyvC,gBAAkB,WACxB,OAAKzvC,EAAKkJ,MAAMhD,QAIT,KAHE,8HAhPkClG,EAsPrC6nC,aAAe,WAAM,IAAAxR,EACJr2B,EAAKkJ,MAArB7C,EADoBgwB,EACpBhwB,IAAKH,EADemwB,EACfnwB,QACNmhC,EAAenhC,EAAUA,EAAQL,QAAU,EAEjD,OAAIQ,GAAO,EACF,6HAGLA,EAAMghC,EACD,sHAGF,MAlQoCrnC,EAqQrCm2B,WAAa,WACfn2B,EAAKkJ,MAAM2D,SAIf7M,EAAKuZ,SAAS,SAAArQ,GAAK,MAChB,CACCw+B,SAAU1nC,EAAK6nC,eACf2H,aAAcxvC,EAAKyvC,kBACnBJ,aAAcnmC,EAAMkmC,QAAU,KAAOlmC,EAAMmmC,cAAgB,6JAE7D,WACMrvC,EAAKkJ,MAAMw+B,UAAY1nC,EAAKkJ,MAAMsmC,cAItCxvC,EAAK0vC,iBArRkC1vC,EA0RrC0vC,YA1RqCxvC,OAAAkS,GAAA,EAAAlS,CAAAsQ,GAAAC,EAAA4B,KA0RvB,SAAA4C,IAAA,IAAAwpB,EAAAp4B,EAAAH,EAAAkpC,EAAAtI,EAAAh7B,EAAA,OAAA0E,GAAAC,EAAAC,KAAA,SAAAwE,GAAA,cAAAA,EAAAtE,KAAAsE,EAAArE,MAAA,UAAA4tB,EAMhBz+B,EAAKkJ,MAJP7C,EAFkBo4B,EAElBp4B,IACAH,EAHkBu4B,EAGlBv4B,QACAkpC,EAJkB3Q,EAIlB2Q,QACAtI,EALkBrI,EAKlBqI,cAGGzgC,GAAQH,GAAYkpC,EARL,CAAAl6B,EAAArE,KAAA,eAAAqE,EAAAjE,OAAA,wBAYpBjR,EAAKuZ,SAAS,CAAE1M,SAAS,IAEnBf,EAAc,CAClBzF,MACAH,QAASA,EAAQwH,GACjB0hC,QAASA,EAAQ1hC,GACjBo5B,iBAlBkB5xB,EAAAtE,KAAA,EAAAsE,EAAArE,KAAA,EAsBZ29B,GAAQ1iC,GAtBI,OAuBlB9L,EAAKuZ,SAAS,CAAC1M,SAAS,GAAQ,WAC9B7M,EAAK8W,MAAMpI,QAAQrL,KAAK,qBAAsB,CAC5CyjC,gBACAlB,aAAc,aACdC,aAAc,CACZmB,IAAK3gC,EACLuiC,SAAU1iC,EAAQwH,GAClBiiC,YAAcP,EAAQ1hC,GACtB44B,SAAUpjC,EAAc4jC,QA/BZ5xB,EAAArE,KAAA,iBAAAqE,EAAAtE,KAAA,GAAAsE,EAAAnE,GAAAmE,EAAA,SAoClBlV,EAAKuZ,SAAS,CAAC1M,SAAS,EAAO68B,cAAax0B,EAAAnE,KApC1B,yBAAAmE,EAAA/D,SAAA8D,EAAAhV,KAAA,aA1RuBD,EAkUrCwpC,iBAAmB,WAAM,IAAA5K,EAG3B5+B,EAAKkJ,MADPhD,EAF6B04B,EAE7B14B,QAASwhC,EAFoB9I,EAEpB8I,SAAU76B,EAFU+xB,EAEV/xB,QAASsiC,EAFCvQ,EAEDuQ,eAAgBC,EAFfxQ,EAEewQ,QAE9C,SAAUviC,GAAY3G,IAAWwhC,IAAYyH,GAAmBC,IAtUrBpvC,EAyUrCynC,0BAA4B,SAACttB,GACnC,IAAM3V,EAAQ2V,EAAMyH,OAAOpd,MAC3BxE,EAAKuZ,SAAS,CACZutB,cAAetiC,KAzUjBxE,EAAKkJ,MAAQ,CACXvH,SAAU,GACVuE,QAAS,KACTG,IAAK,EACLqhC,SAAU,KACV8H,aAAc,KACdjB,oBAAqB,GACrBY,gBAAgB,EAChBtiC,SAAS,EACTuiC,QAAS,KACTC,aAAc,KACdvI,cAAe,MACf4C,cAAe,KACfsF,iBAAiB,GAGnBhvC,EAAKuvC,uBAAyBvO,oBAAgDhhC,EAAKquC,WAAY,MAnBpDruC,qFAuB3CC,KAAKsmC,+CAIL,OACExvB,EAAAtG,EAAAuG,cAAC+2B,GAAD,KACEh3B,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,CAAuB9W,GAAG,cAAcuJ,eAAWvW,GAAnD,iEACAqW,EAAAtG,EAAAuG,cAAC83B,GAAD,CACE73B,UAAU,iCACVxS,QACEP,MAAMC,QAAQlE,KAAKiJ,MAAMvH,UACrB1B,KAAKiJ,MAAMvH,SAASyC,IAAI,SAAAC,GAAI,MAAK,CAC/BG,MAAOH,EAAKqJ,GACZ8Y,MAAOrgB,EAAwB9B,MAEjC,GAENxC,KAAK,cACL6L,GAAG,cACHqkB,WAAW,EACXC,YAAY,EACZjP,SAAU9iB,KAAKqnC,oBACf9iC,MAAOvE,KAAKiJ,MAAMhD,QAAUjG,KAAKiJ,MAAMhD,QAAQwH,GAAK,KACpDuV,YAAY,4EACZtX,QAAS1L,KAAKiJ,MAAMsmC,aACpB3iC,QAAS5M,KAAKiJ,MAAM8lC,kBAEtBj4B,EAAAtG,EAAAuG,cAAC6Q,GAAYjD,UAAb,KAAwB3kB,KAAKiJ,MAAMsmC,gBAGvCz4B,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC43B,GAAcpqB,UAAf,sHACAzN,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACErjB,MAAOvE,KAAKiJ,MAAMqlC,oBAClBxrB,SAAU9iB,KAAKqvC,oBACf5hC,GAAG,sBACH7L,KAAK,sBACLgL,QAAS5M,KAAKiJ,MAAMimC,eACpBlsB,YAAY,qLACZtX,MAAO1L,KAAKiJ,MAAMmmC,eAGlBpvC,KAAKiJ,MAAMkmC,SACTr4B,EAAAtG,EAAAuG,cAAC03B,GAAD,uEAA4BzuC,KAAKiJ,MAAMkmC,QAAQQ,mBAKvD74B,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC43B,GAAcpqB,UAAf,iHACAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAAC63B,GAAiB5J,YAAlB,KAA+BhlC,KAAK8oC,qBAGxChyB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC43B,GAAcpqB,UAAf,6CACAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAAC63B,GAAiB5J,YAAlB,KACGhlC,KAAKiJ,MAAMhD,QAAUjG,KAAKiJ,MAAMhD,QAAQI,aAAerD,MAKhE8T,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC43B,GAAD,CACExlC,KAAK,QACLvH,KAAK,cACL6L,GAAG,cACH8Y,MAAM,kFACNhiB,MAAOvE,KAAKiJ,MAAM7C,IAClB0c,SAAU9iB,KAAKopC,wBACf19B,MAAO1L,KAAKiJ,MAAMhD,SAAWjG,KAAKiJ,MAAMw+B,SACxC7oB,UAAW5e,KAAKiJ,MAAMhD,QACtBqf,QAAStlB,KAAKsnC,eAGjBtnC,KAAKiJ,MAAMhD,SAAWjG,KAAKiJ,MAAMhD,QAAQL,QAAU,GAClDkR,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACwxB,GAAD,CACE7uB,QAAS1Z,KAAKmnC,UACd5gB,MACEzP,EAAAtG,EAAAuG,cAAA,yFACgBD,EAAAtG,EAAAuG,cAACyxB,GAAWlD,KAAZ,KAAkBtlC,KAAK8oC,wBAOjDhyB,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAAC0xB,GAAD,CACEvoB,cAAelgB,KAAKwnC,0BACpBP,eAAgBjnC,KAAKiJ,MAAM49B,gBAE5B7mC,KAAKiJ,MAAMwgC,eACV3yB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC43B,GAAchqB,UAAf,KAA0B3kB,KAAKiJ,MAAMwgC,gBAGzC3yB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,UACL4V,aAAc/e,KAAKupC,mBACnB7vB,QAAS1Z,KAAKk2B,WACdlX,OAAK,GAEJhf,KAAKiJ,MAAM2D,QAAU,4DAAiB,iIAzInB+L,IAAMC,WAoVzBC,gBAAWi2B,ICzVLc,uBAuBnB,SAAAA,EAAY/4B,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAA4vC,IACjB7vC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAA2vC,GAAA32B,KAAAjZ,KAAM6W,KAEDg5B,WAAa9vC,EAAK8vC,WAAW12B,KAAhBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KAClBA,EAAK+vC,gBAAkB/vC,EAAK+vC,gBAAgB32B,KAArBlZ,OAAAmZ,GAAA,EAAAnZ,QAAAmZ,GAAA,EAAAnZ,CAAAF,KAEvBA,EAAKqoC,eAAiBroC,EAAK8W,MAAMiN,SAAS7a,MAAQlJ,EAAK8W,MAAMiN,SAAS7a,MAAMY,UAAY,KANvE9J,qFAUjBoF,SAASxD,MAAQ,0IAKjB,OADqB3B,KAAK8vC,mBAExB,IAAK,YACH,MAAO,iMAET,IAAK,aACH,MAAO,4JAET,IAAK,OACH,MAAO,+IAET,IAAK,UACH,MAAO,oGAET,IAAK,WACH,MAAO,0GAET,IAAK,aACH,MAAO,sMAET,QACE,MAAO,iDAIK,IAAAC,EACsB/vC,KAAK6W,MAAMtR,MAAM0oB,OAA/C0X,aAER,YAHgB,IAAAoK,EACO,WADPA,mCAOhB,IAAMpK,EAAe3lC,KAAK8vC,kBAC1B,OACEh5B,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,kBACbF,EAAAtG,EAAAuG,cAAA,MAAI1W,IAAI,UAAU2W,UAAU,2BACzBhX,KAAK6vC,cAER/4B,EAAAtG,EAAAuG,cAAA,OAAK1W,IAAI,UAAU2W,UAAU,2BA3GlB,SAAC2uB,EAAcyC,GAChC,OAAQzC,GACN,IAAK,YACH,OACE7uB,EAAAtG,EAAAuG,cAACi5B,GAAD,CAAoBh5B,UAAU,uBAAuBoxB,eAAgBA,IAGzE,IAAK,aACH,OAAOtxB,EAAAtG,EAAAuG,cAACk5B,GAAD,CAAmBj5B,UAAU,uBAAuBoxB,eAAgBA,IAE7E,IAAK,OACH,OACEtxB,EAAAtG,EAAAuG,cAACm5B,GAAD,CACEl5B,UAAU,kDACVoxB,eAAgBA,IAItB,IAAK,UACH,OAAOtxB,EAAAtG,EAAAuG,cAACo5B,GAAD,CAAqB/H,eAAgBA,IAE9C,IAAK,WACH,OAAOtxB,EAAAtG,EAAAuG,cAACq5B,GAAD,CAAsBhI,eAAgBA,IAE/C,IAAK,aACH,OAAOtxB,EAAAtG,EAAAuG,cAACs5B,GAAD,CAAqBjI,eAAgBA,IAE9C,QACE,OAAO,MAgFFkI,CAAW3K,EAAc3lC,KAAKooC,yBA5EFzvB,IAAMC,YAAxBg3B,GAqBZz4B,aAAe,cClDlBo5B,GAAc,SAAArgC,GAAI,MAAI,UAAUuV,KAAKvV,IAErCsgC,eAmBJ,SAAAA,EAAY35B,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAwwC,IACjBzwC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAuwC,GAAAv3B,KAAAjZ,KAAM6W,KAgBR45B,SAAW,WACL1wC,EAAK2wC,UAA2C,WAA/B3wC,EAAK2wC,SAAS/K,aACjC5lC,EAAK8W,MAAMxH,SAASjM,YAAK,yBAEzBrD,EAAK8W,MAAMxH,SAASshC,gBArBL5wC,EAyBnB6wC,iBAAmB,SAAC12B,GAAU,IACpB3V,EAAU2V,EAAMyH,OAAhBpd,MAERxE,EAAKuZ,SAAS,CACZ6P,UAAW,KACXrV,KAAMvP,KA9BSxE,EAkCnB8wC,WAAa,WACX,IAAI9wC,EAAK8W,MAAM1P,SAAf,CADiB,IAKT2M,EAAS/T,EAAKkJ,MAAd6K,KACY,IAAhBA,EAAKtT,OAOJ+vC,GAAYz8B,GAOjB/T,EAAK8W,MAAMxH,SAASq2B,GAAkB5xB,EAAM/T,EAAK2wC,WAN/C3wC,EAAKuZ,SAAS,CACZ6P,UAAW,4JARbppB,EAAKuZ,SAAS,CACZ6P,UAAW,yIA1CEppB,EAyDnB8oB,WAAa,WACX9oB,EAAK8W,MAAMxH,SAAS62B,GAAmBnmC,EAAK2wC,YA1D3B3wC,EA6DnB+wC,iBAAmB,oBAAS/wC,EAAK8W,MAAM1P,UAAapH,EAAKkJ,MAAM6K,OAAQ/T,EAAKkJ,MAAMkgB,YA7D/DppB,EA+DnB0lC,eAAiB,WACf1lC,EAAK8W,MAAMxH,SAASo2B,MACpB1lC,EAAK0wC,YA9DL1wC,EAAK2wC,SAAW3wC,EAAK8W,MAAMiN,SAAS7a,MAEpClJ,EAAKkJ,MAAQ,CACX6K,KAAM,GACNqV,UAAW,MAPIppB,2FAWOkmB,GACxBjmB,KAAKsZ,SAAS,CACZ6P,UAAWlD,EAAUxb,qDAwDvB,OACEqM,EAAAtG,EAAAuG,cAAA,OAAKC,UAAWC,KAAG,mBAADhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAwBD,KAAK6W,MAAMG,UAAYhX,KAAK6W,MAAMG,aAC1EF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACEze,KAAK,OACLvH,KAAK,eACL6L,GAAG,eACH8Y,MAAM,+IACNhiB,MAAOvE,KAAKiJ,MAAM6K,KAClBgP,SAAU9iB,KAAK4wC,iBACfllC,MAAO1L,KAAKiJ,MAAMkgB,cAIxBrS,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,iCACbF,EAAAtG,EAAAuG,cAACsI,GAAD,CAAQlW,KAAK,SAASuQ,QAAS1Z,KAAK6oB,YAApC,mHAIF/R,EAAAtG,EAAAuG,cAACsI,GAAD,CACE3F,QAAS1Z,KAAK6wC,WACd1nC,KAAK,UACL6N,UAAU,+BACV4H,SAAU5e,KAAK8wC,mBACf9xB,OAAK,GAEJhf,KAAK6W,MAAM1P,SAAW,4DAAiB,mHAI9C2P,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,8BACbF,EAAAtG,EAAAuG,cAACsI,GAAD,CAAQ3F,QAAS1Z,KAAKywC,SAAUtnC,KAAK,UACnC2N,EAAAtG,EAAAuG,cAAC4E,GAAD,CAAM/Z,KAAK,iBACV,IAFH,kCAKAkV,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,SACLuQ,QAAS1Z,KAAKylC,gBAFhB,0GAjIgB9sB,IAAMC,WAA9B43B,GAcGr5B,aAAe,CACpBH,UAAW,KACXvM,kBAAmB,MA+HvB,IAKeoO,gBAAWuB,YALF,SAAAnR,GAAK,MAAK,CAChC9B,SAAU8B,EAAM0B,iBAAiBxD,SACjCsD,kBAAmBxB,EAAM0B,iBAAiBF,oBAGlB2P,CAAyBo2B,KC9J9BO,gNAanBlB,WAAa,WAEX,OADyB9vC,EAAK8W,MAAMiN,SAAS7a,MAArC08B,cAEN,IAAK,SACH,MAAO,iMAET,IAAK,QACH,MAAO,4JAET,IAAK,OACH,MAAO,+IAET,IAAK,UACH,MAAO,oGAET,IAAK,WACH,MAAO,0GAET,IAAK,aACH,MAAO,sMAET,QACE,MAAO,6FAzBXxgC,SAASxD,MAAQ,sIA8BjB,OAAK3B,KAAK6W,MAAMiN,SAAS7a,MAKvB6N,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,kBACbF,EAAAtG,EAAAuG,cAAA,MAAI1W,IAAI,UAAU2W,UAAU,2BACzBhX,KAAK6vC,cAER/4B,EAAAtG,EAAAuG,cAAA,OAAK1W,IAAI,UAAU2W,UAAU,2BAC3BF,EAAAtG,EAAAuG,cAACi6B,GAAD,CAAiBh6B,UAAU,2BATxBF,EAAAtG,EAAAuG,cAACuN,GAAA,EAAD,CAAU7L,GAAG,sBAzCeE,IAAMC,qBCEzC0sB,WAAO,SAAAp2B,GAAA,IACXgI,EADWhI,EACXgI,SAAUF,EADC9H,EACD8H,UAAWwB,EADVtJ,EACUsJ,gBAAiBC,EAD3BvJ,EAC2BuJ,GAD3B,OAGX3B,EAAAtG,EAAAuG,cAACsB,GAAA,EAAD,CACErB,UAAWC,KACT,OADWhX,OAAAmK,EAAA,EAAAnK,CAAA,GAER+W,EAAYA,IAEjBwB,gBAAiBA,EACjBC,GAAIA,GAEHvB,KAWLouB,GAAKnuB,aAAe,CAClBH,UAAW,KACXwB,gBAAiB,MAGJ8sB,UC5BT2L,WAAiB,SAAA/hC,GAAA,IAAG8H,EAAH9H,EAAG8H,UAAW2uB,EAAdz2B,EAAcy2B,aAAd,OACrB7uB,EAAAtG,EAAAuG,cAAA,OAAKC,UAAWC,KAAG,kBAADhX,OAAAmK,EAAA,EAAAnK,CAAA,GAAuB+W,EAAYA,KACnDF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,0BAChBF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,yBACO,aAAjB2uB,GACC7uB,EAAAtG,EAAAuG,cAAA,YACED,EAAAtG,EAAAuG,cAAA,iYAEED,EAAAtG,EAAAuG,cAAA,WAFF,4WAOe,UAAjB4uB,GACiB,SAAjBA,GACiB,YAAjBA,GACiB,eAAjBA,IAAkC7uB,EAAAtG,EAAAuG,cAAA,yKAClB,WAAjB4uB,GACC7uB,EAAAtG,EAAAuG,cAAA,YACED,EAAAtG,EAAAuG,cAAA,gXACAD,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,iOAE0CD,EAAAtG,EAAAuG,cAACm6B,GAAD,CAAMz4B,GAAG,iBAAT,qGAQrCw4B,MAOfA,GAAe95B,aAAe,CAC5BH,UAAW,KACX2uB,aAAc,iBCvCKwL,gNAmBnBtB,WAAa,WAEX,OADqB9vC,EAAK8W,MAAMiN,SAAS7a,MAAQlJ,EAAK8W,MAAMiN,SAAS7a,MAAM08B,aAAe,MAExF,IAAK,SACH,MAAO,iMAET,IAAK,QACH,MAAO,4JAET,IAAK,OACH,MAAO,+IAET,IAAK,UACH,MAAO,oGAET,IAAK,WACH,MAAO,0GAET,IAAK,aACH,MAAO,sMAET,QACE,MAAO,6FAzBXxgC,SAASxD,MAAQ,sIA8BjB,IAAM0yB,EAAgBr0B,KAAK6W,MAAMiN,SAAS7a,OAAS,KACnD,IAAKorB,EACH,OAAOvd,EAAAtG,EAAAuG,cAACuN,GAAA,EAAD,CAAU7L,GAAG,eAEtB,IAAMktB,EAAetR,EAAgBA,EAAcsR,aAAe,KAElE,OAAKA,EAKH7uB,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,kBACbF,EAAAtG,EAAAuG,cAAA,MAAI1W,IAAI,UAAU2W,UAAU,2BACzBhX,KAAK6vC,cAER/4B,EAAAtG,EAAAuG,cAAA,OAAK1W,IAAI,UAAU2W,UAAU,2BAC3BF,EAAAtG,EAAAuG,cAACq6B,GAAD,CACEp6B,UAAU,kCACV2uB,aAAcA,EACd97B,UAAWwqB,EAAcxqB,aAG7BiN,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,0BAEbF,EAAAtG,EAAAuG,cAACs6B,GAAA,EAAD,CAAM54B,GAAG,qBACP3B,EAAAtG,EAAAuG,cAACyxB,GAAWlD,KAAZ,mEAlBCxuB,EAAAtG,EAAAuG,cAACuN,GAAA,EAAD,CAAU7L,GAAG,sBArDmBE,IAAMC,WAA9Bu4B,GASZh6B,aAAe,CACpB2M,SAAU,CACR7a,MAAO,KCfb,IA8BaqoC,GAAc,eAAAh9B,EAAA/T,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAEvB,GAFuBgxC,EAAAj9B,EACzBlF,YADyB,IAAAmiC,EAClB,EADkBA,EAAAC,EAAAl9B,EACfrE,cADe,IAAAuhC,GACL,EADKA,EACF5hB,EADEtb,EACFsb,MADE6hB,EAAAn9B,EACKrO,eADL,IAAAwrC,GACgB,EADhBA,EAAA,OAEhB,SAACpiC,GACVA,EAAS,CACPlG,KAAM,yBAGR,IAAMmG,EAAQjK,EAAU,gBAClBqsC,EAtCe,SAAAxiC,GAEjB,IADJE,EACIF,EADJE,KAAMa,EACFf,EADEe,OAAQ2f,EACV1gB,EADU0gB,MAAO3pB,EACjBiJ,EADiBjJ,QAEfsxB,EAAc,IAAIoa,gBAoBxB,OAnBApa,EAAYqa,OAAO,WAAYhiB,EAAMthB,UAAU3H,OAAO,eACtD4wB,EAAYqa,OAAO,SAAUhiB,EAAMoB,QAAQrqB,OAAO,eAE9CyI,GACFmoB,EAAYqa,OAAO,StGTS,IsGSExiC,EAAO,IAIrCmoB,EAAYqa,OAAO,QtGbS,IsGgB1B3hC,GAAU,GACZsnB,EAAYqa,OAAO,SAAU3hC,GAG3BhK,GAAW,GACbsxB,EAAYqa,OAAO,SAAU3rC,GAGxBsxB,EAeasa,CAAe,CACjCziC,OACAa,SACA2f,QACA3pB,YAGFyJ,MAAK,GAAAxK,OAAI1D,EAAJ,cAAA0D,OAA6BwsC,GAAe,CAC/C9hC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAGjBnQ,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAMoD,EAAsB2L,GAAMI,aAG/C/O,KAAK,SAAC2O,GACL,IAAM1O,EAAS+C,EAAsB2L,GAErCX,EAAS,CACPlG,KAAM,+BACNE,QAAS,CACP1G,aAAcrB,EAAOilC,SACrB/7B,MAAOlJ,EAAOkJ,MACdmB,YAAayD,KAGjBC,EAnDmB,CACvBlG,KAAM,0BAoDH5H,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,sBACNE,QAASqC,EAAM0E,UAEjBf,EA1DmB,CACvBlG,KAAM,4BA0JK2oC,GAAgB,SAAArkC,GAAE,OAAI,SAAC4B,GAClC,IAAMC,EAAQjK,EAAU,gBAEnBiK,GAAU7B,IAIf4B,EAAS,CACPlG,KAAM,yBAGRuG,MAAK,GAAAxK,OAAI1D,EAAJ,qBAAA0D,OAAoCuI,GAAM,CAC7CkC,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAGjBnQ,KAAK,kBAAMgO,EAAS,CAAElG,KAAM,6BAC5B5H,MAAM,kBAAM8N,EAAS,CAAElG,KAAM,6BClM5B4oC,2MA6BF,GAAI/xC,KAAK6W,MAAMuzB,gBAAkBpqC,KAAK6W,MAAMuzB,eAAe4H,UAAW,CACpE,IAAMvkC,EAAKzN,KAAK6W,MAAMuzB,eAAe4H,UAErChyC,KAAK6W,MAAMxH,SDkDS,SAAA5B,GAAE,OAAI,SAAC4B,GAC/B,IAAMC,EAAQjK,EAAU,gBAEnBiK,GAAU7B,IAIf4B,EAAS,CACPlG,KAAM,wBAGRuG,MAAK,GAAAxK,OAAI1D,EAAJ,cAAA0D,OAA6BuI,GAAM,CACtCmC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAGjBnQ,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,SAAA2O,GAAI,OACRX,EAAS,CACPlG,KAAM,wBACNE,QAAShF,EAAsB2L,OAElCzO,MAAM,SAAAmK,GAAK,OACV2D,EAAS,CACPlG,KAAM,qBACNE,QAASqC,EAAM0E,cC1FG6hC,CAAWxkC,oDAKjCzN,KAAK6W,MAAMxH,SDyFwB,CACrClG,KAAM,mDCvFG,IACCmB,EAAStK,KAAK6W,MAAdvM,KACR,OAAItK,KAAK6W,MAAM1P,SACN2P,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAGrBrb,KAAK6W,MAAMvM,KAKdwM,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,kBACbF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,6CACAzN,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,cAASzM,EAAK4nC,aACdp7B,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,aAAQzM,EAAKhD,UAEfwP,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,4EACAzN,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,cAASzM,EAAK6nC,YAGlBr7B,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,qEACAzN,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,cAASzM,EAAK8nC,QAEhBt7B,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,oGACAzN,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,cAASzM,EAAK+nC,WACdv7B,EAAAtG,EAAAuG,cAAA,YAEFD,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,oGACAzN,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,cAASzM,EAAKgoC,YAEfhoC,EAAKZ,SACJoN,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,gHACAzN,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,cAASzM,EAAKZ,WAIpBoN,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,qEACAzN,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,cAASzM,EAAKioC,WAEhBz7B,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,8FACAzN,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,cAASzM,EAAKkoC,cACd17B,EAAAtG,EAAAuG,cAAA,YAEFD,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,8FACAzN,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,cAASzM,EAAKmoC,iBA3Db37B,EAAAtG,EAAAuG,cAAA,6BA/Ce4B,IAAMC,YAA5Bm5B,GAuBG56B,aAAe,CACpBizB,eAAgB,KAChB9/B,KAAM,MAyFV,IAKe8P,eALS,SAAAnR,GAAK,MAAK,CAChC9B,SAAU8B,EAAM+C,oBAAoBJ,gBACpCtB,KAAMrB,EAAM+C,oBAAoBH,cAGnBuO,CAAyB23B,ICvGlCW,uBAqCJ,SAAAA,EAAY77B,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAA0yC,IACjB3yC,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAyyC,GAAAz5B,KAAAjZ,KAAM6W,KA6CR87B,kBAAoB,WAClB,IAAMC,EAAiB,CACrB,CACEruC,OAAQ,EACRgiB,MAAO,sDASX,OALAxmB,EAAK8W,MAAM/K,iBAAiBpI,QAAQ,SAAAU,GAAI,OAAIwuC,EAAexvC,KAAK,CAC9DmB,MAAOH,EAAKqJ,GACZ8Y,MAAOvgB,EAAgB5B,OAGlBwuC,GA3DU7yC,EA8DnB8yC,iBAAmB,SAAAC,GAAU,OAC3B/yC,EAAK8W,MAAMxH,SAASiiC,GAAY,CAC9BliC,KAAM0jC,EACN7iC,OAAQlQ,EAAKkJ,MAAM8pC,eACnBnjB,MAAO7vB,EAAKkJ,MAAM2mB,MAClB3pB,QAASlG,EAAKkJ,MAAMo/B,oBAnELtoC,EAsEnBizC,mBAAqB,SAAChB,GAChBjyC,EAAK+qC,OACP/qC,EAAK+qC,MAAMjB,UAAU,CAAEmI,eAxERjyC,EA4EnBkzC,mBAAqB,SAAA/jC,GAAA,IAAG3K,EAAH2K,EAAG3K,MAAH,OAAexE,EAAKuZ,SAAS,CAAEy5B,eAAgBxuC,KA5EjDxE,EA8EnBsnC,oBAAsB,SAAA/yB,GAAA,IAAG/P,EAAH+P,EAAG/P,MAAH,OAAexE,EAAKuZ,SAAS,CAAE+uB,gBAAiB9jC,KA9EnDxE,EAgFnB6xB,kBAAoB,SAAAhC,GAAK,OAAI7vB,EAAKuZ,SAAS,CAAEsW,WAhF1B7vB,EAkFnB+xC,cAAgB,SAAArkC,GAAE,OAAI1N,EAAK8W,MAAMxH,SAASyiC,GAAcrkC,KA/EtD1N,EAAKkK,QAAUxD,MACf1G,EAAKiK,QAAUvD,MAASysC,SAAS,EAAG,SAEpCnzC,EAAKkJ,MAAQ,CACX8pC,gBAAiB,EACjB1K,iBAAkB,EAClBzY,MAAO,CACLthB,UAAWvO,EAAKiK,QAChBgnB,QAASjxB,EAAKkK,UAXDlK,qFAiBboF,WACFA,SAASxD,MAAQ,+FAGnB3B,KAAK6W,MAAMxH,SAASiiC,GAAY,CAC9BrhC,OAAQjQ,KAAKiJ,MAAM8pC,eACnBnjB,MAAO5vB,KAAKiJ,MAAM2mB,SAEpB5vB,KAAK6W,MAAMxH,SFoDkB,SAACA,GAChC,IAAMC,EAAQjK,EAAU,gBACxB,GAAKiK,EAAL,CAIAD,EAAS,CACPlG,KAAM,uCAGR,IAAMo9B,EAAWljC,EAA2Bc,IAAI,SAAAC,GAAI,OAClDsL,MAAK,GAAAxK,OAAI1D,EAAJ,cAAA0D,OAA6Bd,GAAQ,CACxCwL,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAEjBnQ,KAAK,SAACyO,GACP,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,eAI3BpP,QAAQylC,IAAID,GACTllC,KAAK,SAAA2O,GAAI,OACRX,EAAS,CACPlG,KAAM,uCACNE,QAAShF,EAAsB2L,EAAK8nB,OAAO,SAACtnB,EAAGi2B,GAAJ,OAAUj2B,EAAEtL,OAAOuhC,UAEjEllC,MAAM,SAAAmK,GAAK,OACV2D,EAAS,CACPlG,KAAM,oCACNE,QAASqC,EAAM0E,0DE1FF4Q,EAAWzH,GACxB3G,KAAKC,UAAU0G,KAAe3G,KAAKC,UAAU7S,KAAKiJ,QACpDjJ,KAAK6W,MAAMxH,SAASiiC,GAAY,CAC9BrhC,OAAQjQ,KAAKiJ,MAAM8pC,eACnBnjB,MAAO5vB,KAAKiJ,MAAM2mB,MAClB3pB,QAASjG,KAAKiJ,MAAMo/B,mBAIpBrnB,EAAUjV,mBAAqB/L,KAAK6W,MAAM9K,kBAC5C/L,KAAK6W,MAAMxH,SAASiiC,GAAY,CAC9BrhC,OAAQjQ,KAAKiJ,MAAM8pC,eACnBnjB,MAAO5vB,KAAKiJ,MAAM2mB,MAClB3pB,QAASjG,KAAKiJ,MAAMo/B,oDA2CjB,IAAA7uB,EAAAxZ,KAAAmmB,EAC6CnmB,KAAK6W,MAAjDjK,EADDuZ,EACCvZ,QAASjK,EADVwjB,EACUxjB,aAAcoJ,EADxBoa,EACwBpa,iBAE/B,OACE+K,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,qBACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,6BACbF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,kFACAzN,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7O,YAAY,4EACZxe,QAASxE,KAAK2yC,oBACd7gB,WAAW,EACXC,YAAY,EACZC,UAAWhyB,KAAK6W,MAAMrN,iBACtBsZ,SAAU9iB,KAAKqnC,oBACf9iC,MAAOvE,KAAKiJ,MAAMo/B,mBAGtBvxB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,8FACAzN,EAAAtG,EAAAuG,cAACkb,GAAD,CACEnoB,UAAW9J,KAAKiJ,MAAM2mB,MAAMthB,UAC5BvE,QAAS/J,KAAKiJ,MAAM2mB,MAAMoB,QAC1BhnB,QAAShK,KAAKgK,QACdC,QAASjK,KAAKiK,QACd6Y,SAAU9iB,KAAK4xB,qBAGnB9a,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,8FACAzN,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7O,YAAY,wFACZxe,QAASkuC,EAAiBS,kBAC1BrhB,WAAW,EACXC,YAAY,EACZjP,SAAU9iB,KAAKizC,mBACf1uC,MAAOvE,KAAKiJ,MAAM8pC,oBAKxBnmC,GAAWb,EACX+K,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAEjBvE,EAAAtG,EAAAuG,cAAA,WACED,EAAAtG,EAAAuG,cAAC2W,GAAD,KACE5W,EAAAtG,EAAAuG,cAAC2W,GAAUb,KAAX,KACE/V,EAAAtG,EAAAuG,cAAC2W,GAAUjB,IAAX,KACE3V,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KACEzV,EAAAtG,EAAAuG,cAAA,4EACAD,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,uGAEFD,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KACEzV,EAAAtG,EAAAuG,cAAA,8CACAD,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,sDAEFD,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KACEzV,EAAAtG,EAAAuG,cAAA,iHACAD,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,yHAEFD,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,wFACAzV,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,+CAGJzV,EAAAtG,EAAAuG,cAAC2W,GAAUZ,KAAX,CAAgBE,aAAc,EAAGD,gBAAgB,oIAC9CpqB,EAAawB,IAAI,SAAAC,GAAI,OACpB0S,EAAAtG,EAAAuG,cAAC2W,GAAUjB,IAAX,CAAepsB,IAAK+D,EAAKqJ,IACvBqJ,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KACEzV,EAAAtG,EAAAuG,cAAA,UAAQC,UAAU,+BAA+B5S,EAAKmuC,UACtDz7B,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,aAAQ3S,EAAKquC,cACb37B,EAAAtG,EAAAuG,cAAA,WACiB,IAAhB3S,EAAK6L,QACJ6G,EAAAtG,EAAAuG,cAAA,aACED,EAAAtG,EAAAuG,cAACsI,GAAD,CAAQlW,KAAK,SAASuQ,QAAS,kBAAMF,EAAKw5B,mBAAmB5uC,EAAKqJ,MAAlE,4DAMNqJ,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KACEzV,EAAAtG,EAAAuG,cAAA,cAASpR,EAAevB,EAAKgC,IAAKhC,EAAKiC,eACvCyQ,EAAAtG,EAAAuG,cAAA,WACC3S,EAAKsF,SACJoN,EAAAtG,EAAAuG,cAAA,aAAQ3S,EAAKsF,UAGjBoN,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KACEzV,EAAAtG,EAAAuG,cAAA,evGxGYvQ,EuGwGepC,EAAKgvC,gBvGvGhD3sC,IAAOD,GAAME,UACRD,IAAOD,GAAMG,OD0MQ,qBCvMvB,QuGoGamQ,EAAAtG,EAAAuG,cAAA,WACAD,EAAAtG,EAAAuG,cAAA,gGAAuB3S,EAAKqJ,KAE9BqJ,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KACEzV,EAAAtG,EAAAuG,cAAA,cAASxQ,EAAcnC,EAAKivC,iBAE9Bv8B,EAAAtG,EAAAuG,cAAC2W,GAAUnB,KAAX,KACEzV,EAAAtG,EAAAuG,cAACiV,GAAD,CAAmB/b,OAAQ7L,EAAK6L,SACf,IAAhB7L,EAAK6L,QACJ6G,EAAAtG,EAAAuG,cAAA,aACED,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,SACLuQ,QAAS,kBAAMF,EAAKs4B,cAAc1tC,EAAKqJ,KACvCuJ,UAAU,oCAHZ,uDvGnHO,IAACxQ,MuGiItBsQ,EAAAtG,EAAAuG,cAAC2d,GAAD,CACEr0B,IAAI,aACJs0B,MAAOhyB,EACPT,QAASlC,KAAK6W,MAAMlL,YACpBwD,MxGzQkB,GwG0QlBikB,aAAcpzB,KAAK6yC,iBACnB3f,WAAYlzB,KAAK6W,MAAMpL,oBAEzBqL,EAAAtG,EAAAuG,cAAC40B,GAAD,CACEjzB,IAAK,SAACH,GACJiB,EAAKsxB,MAAQvyB,GAEfuG,KAAK,SAELhI,EAAAtG,EAAAuG,cAACu8B,GAAD,gBA5PiB36B,IAAMC,YAA/B85B,GAcGS,kBAAoB,CACzB,CACE5uC,OAAQ,EACRgiB,MAAO,sBAET,CACEhiB,MAAO,EACPgiB,MAAO,kCAET,CACEhiB,MAAO,EACPgiB,MAAO,sEAET,CACEhiB,MAAO,EACPgiB,MAAO,sEAET,CACEhiB,MAAO,EACPgiB,MAAO,iEAoOb,IAUenM,eAVS,SAAAnR,GAAK,MAAK,CAChCtG,aAAcsG,EAAM+C,oBAAoBrJ,aACxC8I,kBAAmBxC,EAAM+C,oBAAoBP,kBAC7CmB,QAAS3D,EAAM+C,oBAAoB7E,SACnCwE,YAAa1C,EAAM+C,oBAAoBL,YACvCG,iBAAkB7C,EAAM+C,oBAAoBF,iBAC5CtC,iBAAkBP,EAAM+C,oBAAoBxC,iBAC5CuC,iBAAkB9C,EAAM+C,oBAAoBD,mBAG/BqO,CAAyBs4B,ICtRlCv7B,WAAe,CACnBH,UAAW,KACXE,SAAU,OAGNq8B,GAAU,SAAArkC,GAAA,IAAG8H,EAAH9H,EAAG8H,UAAWE,EAAdhI,EAAcgI,SAAd,OACdJ,EAAAtG,EAAAuG,cAAA,MACEC,UAAWC,KACT,gBACA,yBAFWhX,OAAAmK,EAAA,EAAAnK,CAAA,GAGR+W,EAAYA,KAGhBE,IAKLq8B,GAAQp8B,aAAeA,GAEvB,IAAMq8B,GAAa,SAAAl/B,GAAA,IAAG0C,EAAH1C,EAAG0C,UAAWE,EAAd5C,EAAc4C,SAAd,OACjBJ,EAAAtG,EAAAuG,cAAA,OACEC,UAAWC,KACT,gBACA,qBAFWhX,OAAAmK,EAAA,EAAAnK,CAAA,GAGR+W,EAAYA,KAGhBE,IAKLs8B,GAAWr8B,aAAeA,GAE1B,IAAMs8B,GAAU,SAAA1+B,GAAA,IAAGiC,EAAHjC,EAAGiC,UAAWE,EAAdnC,EAAcmC,SAAd,OACdJ,EAAAtG,EAAAuG,cAAA,OACEC,UAAWC,KACT,gBADWhX,OAAAmK,EAAA,EAAAnK,CAAA,GAER+W,EAAYA,KAGhBE,IAKLu8B,GAAQt8B,aAAeA,OAEFu8B,wLAQV,IAAAvtB,EACyBnmB,KAAK6W,MAA7BG,EADDmP,EACCnP,UAAWE,EADZiP,EACYjP,SACnB,OACEJ,EAAAtG,EAAAuG,cAAA,OACEC,UAAWC,KACT,OADWhX,OAAAmK,EAAA,EAAAnK,CAAA,GAER+W,EAAYA,KAGhBE,UAjByByB,IAAMC,WAAnB86B,GAEZv8B,aAAeA,GAFHu8B,GAIZH,QAAUA,GAJEG,GAKZD,QAAUA,GALEC,GAMZF,WAAaA,GCrEtB,IAQatd,GAAa,SAAAhnB,GAAA,IACxBykC,EADwBzkC,EACxBykC,SAAUvtC,EADc8I,EACd9I,IAAKP,EADSqJ,EACTrJ,SAAU+tC,EADD1kC,EACC0kC,KADD,OAEpB,SAACvkC,GACL,IAAMC,EAAQjK,EAAU,gBAExB,GAAKiK,GAAUlJ,GAAQP,GAAa+tC,GAASD,EAA7C,CAIA,IAAM9nC,EAAc,CAClBk7B,IAAK3gC,EACLytC,SAAUhuC,EACViuC,OAAqB,YAAbH,EAAgC,GAAPC,EAAYA,GAEzCG,EAAU,GAAA7uC,OAAM1D,EAAN,cAAA0D,OAA+ByuC,GAE/CtkC,EAxBwB,CACxBlG,KAAM,6BAwBNuG,MAAMqkC,EAAY,CAChBpkC,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,oBAElBmB,KAAMC,KAAKC,UAAUhH,KAEpBxK,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,SAAC2O,GACY,YAAb2jC,GACFtkC,EAAS,CACPlG,KAAM,2CACNE,QAAS2G,IAII,SAAb2jC,GACFtkC,EAAS,CACPlG,KAAM,qCACNE,QAAShF,EAAsB2L,KAGnCX,EA1DmB,CACvBlG,KAAM,8BA2DH5H,MAAM,SAACmK,GACW,YAAbioC,GACFtkC,EAAS,CACPlG,KAAM,wCACNE,QAASqC,EAAM0E,UAIF,SAAbujC,GACFtkC,EAAS,CACPlG,KAAM,kCACNE,QAASqC,EAAM0E,UAGnBf,EA1EmB,CACvBlG,KAAM,iCA6EK6qC,GAAc,SAAA1/B,GAAA,IACzBq/B,EADyBr/B,EACzBq/B,SAAUvtC,EADekO,EACflO,IAAKP,EADUyO,EACVzO,SAAU+tC,EADAt/B,EACAs/B,KADA,OAErB,SAACvkC,GACL,IAAMC,EAAQjK,EAAU,gBAExB,GAAKiK,GAAUlJ,GAAQP,GAAa+tC,GAASD,EAA7C,CAIA,IAAM9nC,EAAc,CAClBk7B,IAAK3gC,EACLytC,SAAUhuC,EACViuC,OAAqB,YAAbH,EAAgC,GAAPC,EAAYA,EAC7CK,SAAuB,YAAbN,EAAyB,UAAY,QAE3CI,EAAU,GAAA7uC,OAAM1D,EAAN,yBAEhB6N,EAnGwB,CACxBlG,KAAM,6BAmGNuG,MAAMqkC,EAAY,CAChBpkC,OAAQ,OACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,oBAElBmB,KAAMC,KAAKC,UAAUhH,KAEpBxK,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJhP,QAAQI,UAGO,MAApB2O,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,WACJgO,EAASjM,YAAK,0BACdiM,EAzHmB,CACvBlG,KAAM,8BA0HH5H,MAAM,SAACmK,GACN2D,EAAS,CACPlG,KAAM,4BACNE,QAASqC,EAAM0E,UAEjBf,EAhImB,CACvBlG,KAAM,iCAmIK+qC,GAAgB,iBAAO,CAClC/qC,KAAM,iCChIFgrC,GAAa,CACjB,MACA,MACA,OAGIC,GAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAIjwC,IAAI,SAAAC,GAAI,MAAK,CACnEG,MAAOH,EACPmiB,MAAK,GAAArhB,OAAKd,EAAL,KAAAc,OAAa0B,EAAUxC,EAAM,CAAC,iCAAS,uCAAU,mDAGlDiwC,eAYJ,SAAAA,EAAYx9B,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAq0C,IACjBt0C,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAo0C,GAAAp7B,KAAAjZ,KAAM6W,KASRy9B,qBAAuB,SAAC/vC,GACtBxE,EAAKuZ,SAAS,CAAEzT,SAAUtB,IAC1BxE,EAAK8W,MAAMxH,SAAS6kC,OAZHn0C,EAcnBwnC,gBAAkB,SAAChjC,GACjBxE,EAAKuZ,SAAS,CAAElT,IAAK7B,IACrBxE,EAAK8W,MAAMxH,SAAS6kC,OAhBHn0C,EAkBnBw0C,iBAAmB,SAAChwC,GAClBxE,EAAKuZ,SAAS,CAAEs6B,KAAMrvC,IACtBxE,EAAK8W,MAAMxH,SAAS6kC,OApBHn0C,EAsBnBwpC,iBAAmB,kBAAOxpC,EAAKkJ,MAAM7C,KAAOrG,EAAK8W,MAAM1P,UAtBpCpH,EAwBnBm2B,WAAa,WACX,IAAMrqB,EAAc,CAClB8nC,SAAU,UACV9tC,SAAU9F,EAAKkJ,MAAMpD,SACrB+tC,KAAM7zC,EAAKkJ,MAAM2qC,KACjBxtC,IAAKrG,EAAKkJ,MAAM7C,KAGlB,OAAKrG,EAAK8W,MAAMq1B,OAITnsC,EAAK8W,MAAMxH,SAAS2kC,GAAYnoC,IAH9B9L,EAAK8W,MAAMxH,SAAS6mB,GAAWrqB,KA9BxC9L,EAAKkJ,MAAQ,CACXpD,SAAU,MACV+tC,KAAM,EACNxtC,IAAK,GANUrG,0EAuCV,IAAAyZ,EAAAxZ,KACP,OACE8W,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,oBACbF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACEze,KAAK,QACLvH,KAAK,MACL6L,GAAG,MACH8Y,MAAM,8FACNhiB,MAAOvE,KAAKiJ,MAAM7C,IAClB0c,SAAU9iB,KAAKunC,mBAGnBzwB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,gBACbF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAb,wCACAF,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAAS2vC,GAAWhwC,IAAI,SAAAC,GAAI,MAAK,CAC/BG,MAAOH,EACPmiB,MAAOxf,EAAiB3C,MAE1BxC,KAAK,WACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAA5T,GAAA,IAAG3K,EAAH2K,EAAG3K,MAAH,OAAeiV,EAAK86B,qBAAqB/vC,IACnDA,MAAOvE,KAAKiJ,MAAMpD,SAClBmd,YAAY,6FAKpBlM,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,gBACbF,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,8FAGAzN,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAAS4vC,GACTxyC,KAAK,OACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAAxO,GAAA,IAAG/P,EAAH+P,EAAG/P,MAAH,OAAeiV,EAAK+6B,iBAAiBhwC,IAC/CA,MAAOvE,KAAKiJ,MAAM2qC,KAClB5wB,YAAY,iFAKpBlM,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,yFAGAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KACExxB,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KAEIhlC,KAAK6W,MAAM1P,SACT2P,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUX,QAAM,IAChBtb,KAAK6W,MAAMq1B,WAMvBp1B,EAAAtG,EAAAuG,cAAC6f,GAAD,KACG52B,KAAK6W,MAAMnL,OACVoL,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAuBhX,KAAK6W,MAAMnL,QAGnDoL,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,UACLuQ,QAAS1Z,KAAKk2B,WACdtX,SAAU5e,KAAKupC,mBACfvqB,OAAK,GAEJhf,KAAK6W,MAAMq1B,OAAS,8FAAqB,0EApI9BvzB,IAAMC,WAA1By7B,GAQGl9B,aAAe,CACpBzL,MAAO,MAoIX,IAOe0O,eAPS,SAAAnR,GAAK,MAAK,CAChCijC,OAAQjjC,EAAMkF,yBAAyBlC,cACvCP,MAAOzC,EAAMkF,yBAAyBjC,oBACpCjD,EAAMkF,yBAAyB7B,aACjCnF,SAAU8B,EAAMkF,yBAAyBhH,WAG5BiT,CAAyBi6B,IC5JlCF,GAAa,CACjB,MACA,MACA,OAGIC,GAAgB,CACpB,CACE7vC,MAAO,EACPgiB,MAAO,0CAET,CACEhiB,MAAO,EACPgiB,MAAO,gDAET,CACEhiB,MAAO,GACPgiB,MAAO,iDAET,CACEhiB,MAAO,GACPgiB,MAAO,4CAILiuB,eAgBJ,SAAAA,EAAY39B,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAw0C,IACjBz0C,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAu0C,GAAAv7B,KAAAjZ,KAAM6W,KAURy9B,qBAAuB,SAAC/vC,GACtBxE,EAAKuZ,SAAS,CAAEzT,SAAUtB,IAC1BxE,EAAK8W,MAAMxH,SAAS6kC,OAbHn0C,EAenBwnC,gBAAkB,SAAChjC,GACjBxE,EAAKuZ,SAAS,CAAElT,IAAK7B,IACrBxE,EAAK8W,MAAMxH,SAAS6kC,OAjBHn0C,EAmBnBw0C,iBAAmB,SAAChwC,GAClBxE,EAAKuZ,SAAS,CAAEs6B,KAAMrvC,IACtBxE,EAAK8W,MAAMxH,SAAS6kC,OArBHn0C,EAuBnBwpC,iBAAmB,kBAAOxpC,EAAKkJ,MAAM7C,KAAOrG,EAAK8W,MAAM1P,UAvBpCpH,EAyBnBm2B,WAAa,WACX,IAAMrqB,EAAc,CAClB8nC,SAAU,OACV9tC,SAAU9F,EAAKkJ,MAAMpD,SACrB+tC,KAAM7zC,EAAKkJ,MAAM2qC,KACjBxtC,IAAKrG,EAAKkJ,MAAM7C,KAGlB,OAAKrG,EAAK8W,MAAMxI,eAITtO,EAAK8W,MAAMxH,SAAS2kC,GAAYnoC,IAH9B9L,EAAK8W,MAAMxH,SAAS6mB,GAAWrqB,KAlCvB9L,EAwCnB00C,kBAAoB,WAClB,OAAK10C,EAAK8W,MAAMnU,SAASlC,QAAWT,EAAK8W,MAAMxI,eAI7CyI,EAAAtG,EAAAuG,cAAA,WACED,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,0DACaz+B,EAAcxG,EAAK8W,MAAMnU,SAAS,GAAG4L,WADlD,KAGC,IACDwI,EAAAtG,EAAAuG,cAACuxB,GAAepD,SAAhB,KACGv/B,EAAe5F,EAAK8W,MAAMxI,eAAgBtO,EAAKkJ,MAAMpD,YATnD,MA1CQ9F,EAyDnBgrC,oBAAsB,kBACpBj0B,EAAAtG,EAAAuG,cAAA,WACED,EAAAtG,EAAAuG,cAACqX,GAAD,CACEjlB,KAAK,WACLmB,KAAM,CACJ5H,SAAU3C,EAAK8W,MAAMnU,SAASyB,IAAI,SAAAC,GAAI,OAAAnE,OAAAmJ,EAAA,EAAAnJ,CAAA,GACjCmE,EADiC,CAEpCyB,SAAU9F,EAAKkJ,MAAMpD,aACnB9B,MAA8B,IAAvBhE,EAAKkJ,MAAMmG,KAAO,GAAS,GAAKrP,EAAKkJ,MAAMmG,SAG1D0H,EAAAtG,EAAAuG,cAAC2d,GAAD,CACEr0B,IAAI,aACJs0B,MAAO50B,EAAK8W,MAAMnU,SAClBR,QAASnC,EAAKkJ,MAAMmG,KACpBD,MAAO,GACPgkB,WAAY,SAAA/jB,GAAI,OAAIrP,EAAKuZ,SAAS,CAChClK,cAvENrP,EAAKkJ,MAAQ,CACXpD,SAAU,MACV+tC,KAAM,GACNxtC,IAAK,EACLgJ,KAAM,GAPSrP,0EAgFV,IAAAyZ,EAAAxZ,KACP,OACE8W,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,oBACbF,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAD,CACEze,KAAK,QACLvH,KAAK,MACL6L,GAAG,MACH8Y,MAAM,gEACNhiB,MAAOvE,KAAKiJ,MAAM7C,IAClB0c,SAAU9iB,KAAKunC,mBAGnBzwB,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,KACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,gBACbF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAb,wCACAF,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAAS2vC,GAAWhwC,IAAI,SAAAC,GAAI,MAAK,CAC/BG,MAAOH,EACPmiB,MAAOxf,EAAiB3C,MAE1BxC,KAAK,WACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAA5T,GAAA,IAAG3K,EAAH2K,EAAG3K,MAAH,OAAeiV,EAAK86B,qBAAqB/vC,IACnDA,MAAOvE,KAAKiJ,MAAMpD,SAClBmd,YAAY,6FAKpBlM,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,gBACbF,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,gEAGAzN,EAAAtG,EAAAuG,cAAC8a,GAAD,CACE7a,UAAU,iCACVxS,QAAS4vC,GACTxyC,KAAK,OACLkwB,WAAW,EACXC,YAAY,EACZjP,SAAU,SAAAxO,GAAA,IAAG/P,EAAH+P,EAAG/P,MAAH,OAAeiV,EAAK+6B,iBAAiBhwC,IAC/CA,MAAOvE,KAAKiJ,MAAM2qC,KAClB5wB,YAAY,iFAKpBlM,EAAAtG,EAAAuG,cAAC6f,GAAD,KACE9f,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAC6Q,GAAYrD,UAAb,uKAGAzN,EAAAtG,EAAAuG,cAACuxB,GAAD,KAEItoC,KAAK6W,MAAM1P,SACT2P,EAAAtG,EAAAuG,cAACuxB,GAAetD,YAAhB,KACEluB,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUX,QAAM,KAElBtb,KAAKy0C,wBAIVz0C,KAAK6W,MAAMnU,SAASlC,QACrBsW,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,+BACbF,EAAAtG,EAAAuG,cAACsI,GAAD,CACE3F,QAAS,WACHF,EAAKsxB,OACPtxB,EAAKsxB,MAAMjB,aAGf1gC,KAAK,UANP,6LAaN2N,EAAAtG,EAAAuG,cAAC6f,GAAD,KACG52B,KAAK6W,MAAMnL,OACVoL,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,uBAAuBhX,KAAK6W,MAAMnL,QAGnDoL,EAAAtG,EAAAuG,cAACme,GAAD,CAAgBpW,KAAK,MACnBhI,EAAAtG,EAAAuG,cAACsI,GAAD,CACElW,KAAK,UACLuQ,QAAS1Z,KAAKk2B,WACdtX,SAAU5e,KAAKupC,mBACfvqB,OAAK,GAEJhf,KAAK6W,MAAMxI,eAAiB,8FAAqB,kEAIxDyI,EAAAtG,EAAAuG,cAAC40B,GAAD,CAAOjzB,IAAK,SAACH,GAAciB,EAAKsxB,MAAQvyB,IACrCvY,KAAK+qC,+BApMOpyB,IAAMC,WAAvB47B,GAWGr9B,aAAe,CACpBzL,MAAO,KACP2C,eAAgB,MA8LpB,IAQe+L,eARS,SAAAnR,GAAK,MAAK,CAChCvG,SAAUuG,EAAMkF,yBAAyBhC,YACzCkC,eAAgBpF,EAAMkF,yBAAyB9B,mBAC/CX,MAAOzC,EAAMkF,yBAAyB/B,kBACpCnD,EAAMkF,yBAAyB7B,aACjCnF,SAAU8B,EAAMkF,yBAAyBhH,WAG5BiT,CAAyBo6B,ICrPnBE,gNASnB7E,WAAa,WACX,OAAQ9vC,EAAK8W,MAAMiN,SAAS7a,MAAME,MAChC,IAAK,UAEH,OADAhE,SAASxD,MAAQ,uCACV,sJAET,IAAK,OACH,MAAO,0IAET,QACE,OAAO,SAIb+iC,QAAU,WACR,OAAQ3kC,EAAK8W,MAAMiN,SAAS7a,MAAME,MAChC,IAAK,UACH,OAAO2N,EAAAtG,EAAAuG,cAAC49B,GAAD,MAET,IAAK,OACH,OAAO79B,EAAAtG,EAAAuG,cAAC69B,GAAD,MAET,QACE,OAAO,iFAKX,OACE99B,EAAAtG,EAAAuG,cAAC89B,GAAD,KACE/9B,EAAAtG,EAAAuG,cAAC89B,GAAKtB,QAAN,KACGvzC,KAAK6vC,cAER/4B,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,KACGzzC,KAAK0kC,mBA3C+B/rB,IAAMC,WCYtCk8B,GAjBQ,kBACrBh+B,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,kBACbF,EAAAtG,EAAAuG,cAAA,MAAI1W,IAAI,UAAU2W,UAAU,2BAA5B,iJAGAF,EAAAtG,EAAAuG,cAAA,OAAK1W,IAAI,UAAU2W,UAAU,2BAC3BF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,mBACbF,EAAAtG,EAAAuG,cAAA,QAAMC,UAAU,0BAChBF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,yBAAb,gfC2CO+9B,kBA5CK,SAAAl+B,GAAK,OACvBC,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,gBACU,IAAtBH,EAAMvM,KAAK9J,QACVsW,EAAAtG,EAAAuG,cAAC89B,GAAD,KACE/9B,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,KACE38B,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,6BAAb,qHAILH,EAAMvM,KAAKnG,IAAI,SAAAC,GAAI,OAClB0S,EAAAtG,EAAAuG,cAAC89B,GAAD,CACEx0C,IAAK+D,EAAKqJ,GACVuJ,UAAWC,KAAG,qBAAsB,iBAAkB,CACpD+9B,yBAA0B5wC,EAAK6wC,YAGjCn+B,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,0BACbF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,yBACXF,EAAAtG,EAAAuG,cAACsB,GAAA,EAAD,CAASI,GAAE,YAAAvT,OAAcd,EAAKqJ,IAAMuJ,UAAU,wBAC3C5S,EAAKzC,QAGVmV,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,wBACVzQ,EAAcnC,EAAKoC,QAGxBsQ,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,CAAcz8B,UAAU,wBACtBF,EAAAtG,EAAAuG,cAAA,KAAGC,UAAU,2BAA2B5S,EAAKgZ,gBCvBjD83B,eA0BJ,SAAAA,EAAYr+B,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAk1C,IACjBn1C,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAi1C,GAAAj8B,KAAAjZ,KAAM6W,KAEDs+B,aAAe,CAClB,CACExzC,MAAO,+DACPyzC,KAAM,gBAER,CACEzzC,MAAO,qBACPyzC,KAAM,qBAIVr1C,EAAKkJ,MAAQ,CACXmG,KAAM,GAGRrP,EAAKkP,QAAU4H,EAAMtR,MAAM0oB,OAAOhf,QAlBjBlP,qFAsBboF,WACFA,SAASxD,MAAQ,sEAGnB3B,KAAK6W,MAAMxH,SAASL,GAClBhP,KAAK6W,MAAM5J,QACXjN,KAAKiP,QACL,CACEG,KAAMpP,KAAKiJ,MAAMmG,KACjBD,MA3DiB,kDAgEH8W,EAAWovB,GACzBr1C,KAAK6W,MAAM5J,UAAYgZ,EAAUhZ,SACnCgZ,EAAU5W,SAASL,GACjBiX,EAAUhZ,QACVjN,KAAKiP,QACL,CACEG,KAAMimC,EAAUjmC,KAChBD,MAvEe,MA4EjBnP,KAAK6W,MAAMtR,MAAM0oB,OAAOhf,UAAYgX,EAAU1gB,MAAM0oB,OAAOhf,SAC7DgX,EAAU5W,SAASL,GACjBiX,EAAUhZ,QACVjN,KAAKiP,QACL,CACEG,KAAMimC,EAAUjmC,KAChBD,MAlFe,MAuFjBkmC,EAAUjmC,MAAQpP,KAAKiJ,MAAMmG,OAASimC,EAAUjmC,MAClD6W,EAAU5W,SAASL,GACjBiX,EAAUhZ,QACVjN,KAAKiP,QACL,CACEG,KAAMimC,EAAUjmC,KAChBD,MA7Fe,oDAmGD,IAAAqK,EAAAxZ,KAKpB,OACE8W,EAAAtG,EAAAuG,cAAA,UACEC,UAAWC,KACT,0BADW,4BAAA/R,OAEiBlF,KAAK6W,MAAM5J,UAEzCyM,QAAS,kBAAMF,EAAK3C,MAAMxH,S7FpDE,CAClClG,KAAM,qB6FyCiB,CACnBmsC,KAAM,0FACNC,IAAK,2FAUWv1C,KAAK6W,MAAM5J,2CAKtB,IAAA+U,EAAAhiB,KACP,OACE8W,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,WACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,mBACbF,EAAAtG,EAAAuG,cAAA,MAAIC,UAAU,oBAAd,sEACAF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,uBACZhX,KAAKm1C,aAAahxC,IAAI,SAAAC,GAAI,OACzB0S,EAAAtG,EAAAuG,cAACsB,GAAA,EAAD,CACEhY,IAAK+D,EAAKgxC,KACV38B,GAAIrU,EAAKgxC,KACTp+B,UAAU,8BACVwB,gBAAgB,yBAEfpU,EAAKzC,UAIZmV,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,qBACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,oBAAf,uGACuBhX,KAAKw1C,yBAK7Bx1C,KAAK6W,MAAM1P,WAAanH,KAAK6W,MAAM9J,QAAQvM,OAC1CsW,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IACjB,CACEvE,EAAAtG,EAAAuG,cAAC0+B,GAAD,CAAap1C,IAAI,OAAOiK,KAAMtK,KAAK6W,MAAM9J,UACzC+J,EAAAtG,EAAAuG,cAAC2d,GAAD,CACEr0B,IAAI,aACJ6yB,WAAYlzB,KAAK6W,MAAM6+B,aACvBxzC,QAASlC,KAAKiJ,MAAMmG,KACpBD,MArJS,GAsJTgkB,WAAY,SAAA/jB,GAAI,OAAI4S,EAAK1I,SAAS,CAChClK,qBArJIuJ,IAAMC,WAsKbwB,eAPS,SAACnR,EAAO0sC,GAAR,MAAsB,CAC5C5oC,QAA2C,QAAlC4oC,EAASpwC,MAAM0oB,OAAOhf,QAAoBhG,EAAMsE,eAAeP,WAAa/D,EAAMsE,eAAeR,QAC1G2oC,aAAgD,QAAlCC,EAASpwC,MAAM0oB,OAAOhf,QAAoBhG,EAAMsE,eAAeJ,SAAWlE,EAAMsE,eAAe/C,MAC7GyC,QAAShE,EAAMsE,eAAeN,QAC9B9F,SAAU8B,EAAMsE,eAAeD,kBAGlB8M,CAAyB86B,wBCvKlCU,gNA+BJC,cAAgB,kBACd/+B,EAAAtG,EAAAuG,cAAA,SACED,EAAAtG,EAAAuG,cAACsI,GAAD,CAAQ3F,QAAS,kBAAM3Z,EAAK8W,MAAMxH,SAASshC,gBAAWxnC,KAAK,UACzD2N,EAAAtG,EAAAuG,cAAC4E,GAAD,CAAM/Z,KAAK,iBACV,IAFH,yHAVEuD,WACFA,SAASxD,MAAQ,sEAFD,I9FuCG8L,E8FlCbqoC,EAAa91C,KAAK6W,MAAMtR,MAAM0oB,OAA9B6nB,SACR91C,KAAK6W,MAAMxH,U9FiCU5B,E8FjCSqoC,E9FiCH,SAACzmC,GAC9B,IAAMC,EAAQjK,EAAU,gBAEnBiK,GAAU7B,IAIf4B,EAAS,CAAElG,KAAM,qBACjBuG,MAAK,GAAAxK,OAAI1D,EAAJ,aAAA0D,OAA4BuI,GAAM,CACrCkC,OAAQ,MACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,MAG1BjO,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OAAO7O,KAAK,SAAC6O,GAC3B,MAAM,IAAIjP,MAAMiP,KAIbJ,EAASE,OAAO3O,KAAK,SAAC2O,GAC3B,MAAM,IAAI/O,MAAM+O,EAAKG,aAGxB9O,KAAK,SAAA2O,GAAI,OAAIX,EAAS,CACrBlG,KAAM,qBACNE,QAAShF,EAAsB2L,OAEhCzO,MAAM,SAAAmK,GAAK,OAAI2D,EAAS,CACvBlG,KAAM,kBACNE,QAASqC,EAAM0E,iD8FtDjB,OAAIpQ,KAAK6W,MAAM1P,SACN2P,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAIxBvE,EAAAtG,EAAAuG,cAAA,WACG/W,KAAK61C,gBACL71C,KAAK6W,MAAMnL,OACVoL,EAAAtG,EAAAuG,cAAC89B,GAAD,KACE/9B,EAAAtG,EAAAuG,cAAC89B,GAAKtB,QAAN,oGACAz8B,EAAAtG,EAAAuG,cAAC89B,GAAKrB,WAAN,uKACA18B,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,KAAezzC,KAAK6W,MAAMnL,QAG7B1L,KAAK6W,MAAM3J,QACV4J,EAAAtG,EAAAuG,cAAC89B,GAAD,KACE/9B,EAAAtG,EAAAuG,cAAC89B,GAAKrB,WAAN,KAAkBjtC,EAAcvG,KAAK6W,MAAM3J,OAAO1G,OAClDsQ,EAAAtG,EAAAuG,cAAC89B,GAAKtB,QAAN,KAAevzC,KAAK6W,MAAM3J,OAAOvL,OACjCmV,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,KACGsC,KAAW/1C,KAAK6W,MAAM3J,OAAO8oC,mBA7DjBr9B,IAAMC,WAA3Bg9B,GAiBGz+B,aAAe,CACpBjK,OAAQ,KACRxB,MAAO,MAmDX,IAMe0O,eANS,SAAAnR,GAAK,MAAK,CAChCiE,OAAQjE,EAAMsE,eAAeL,OAC7B/F,SAAU8B,EAAMsE,eAAeF,eAC/B3B,MAAOzC,EAAMsE,eAAeH,oBAGfgN,CAAyBw7B,IC1EnBK,uBASnB,SAAAA,EAAYp/B,GAAO,IAAA9W,EAAA,OAAAE,OAAAC,EAAA,EAAAD,CAAAD,KAAAi2C,IACjBl2C,EAAAE,OAAA8Y,GAAA,EAAA9Y,CAAAD,KAAAC,OAAA+Y,GAAA,EAAA/Y,CAAAg2C,GAAAh9B,KAAAjZ,KAAM6W,KAmBRq/B,QAAU,WACRn2C,EAAKuZ,SAAS,CACZ9M,cAAc,IAEhB6N,GAActa,EAAKua,QAChBjZ,KAAK,SAAAkL,GAAI,OAAIxM,EAAKuZ,SAAS,CAAE/M,OAAMC,cAAc,MACjDjL,MAAM,SAAAmK,GAAK,OAAI3L,EAAKuZ,SAAS,CAAE5N,QAAOc,cAAc,OA1BtCzM,EA6BnB81C,cAAgB,WACd,MAAuB,SAAnBpnC,GAAQvF,OAER4N,EAAAtG,EAAAuG,cAAA,SACED,EAAAtG,EAAAuG,cAACsI,GAAD,CAAQ3F,QAASjL,GAAQkiC,OAAQxnC,KAAK,UACpC2N,EAAAtG,EAAAuG,cAAC4E,GAAD,CAAM/Z,KAAK,iBACV,IAFH,mCASC,MAvCP7B,EAAKua,OAASzD,EAAMtR,MAAM0oB,OAAO3T,OAEjCva,EAAKkJ,MAAQ,CACXuD,cAAc,EACdD,KAAM,KACNb,MAAO,MARQ3L,qFAaboF,WACFA,SAASxD,MAAQ,8CAGnB3B,KAAKk2C,2CA6BL,OAAKl2C,KAAKsa,QAAUta,KAAKiJ,MAAMyC,MACtBoL,EAAAtG,EAAAuG,cAACuN,GAAA,EAAD,CAAU7L,GAAG,MAGlBzY,KAAKiJ,MAAMuD,aACNsK,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAGrBrb,KAAKiJ,MAAMsD,KAKduK,EAAAtG,EAAAuG,cAAA,WACG/W,KAAK61C,gBACN/+B,EAAAtG,EAAAuG,cAAC89B,GAAD,KACE/9B,EAAAtG,EAAAuG,cAAC89B,GAAKrB,WAAN,KAAkBjtC,EAAcvG,KAAKiJ,MAAMsD,KAAK+B,YAChDwI,EAAAtG,EAAAuG,cAAC89B,GAAKtB,QAAN,KAAevzC,KAAKiJ,MAAMsD,KAAK5K,OAC/BmV,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,KACGsC,KAAW/1C,KAAKiJ,MAAMsD,KAAKypC,YAV3B,YAhE2Br9B,IAAMC,YC0BxC6T,uMAIK,IAAAtG,EACmCnmB,KAAK6W,MAAvCxW,EADD8lB,EACC9lB,IAAK6W,EADNiP,EACMjP,SAAUi/B,EADhBhwB,EACgBgwB,QAASC,EADzBjwB,EACyBiwB,MAChC,OACEt/B,EAAAtG,EAAAuG,cAAA,MAAI1W,IAAKA,EAAK2W,UAAWq/B,KAAG,uBAAwB,CAAEC,8BAA+BH,IAAYC,GAAS,CAAEG,qCAAsCJ,IAAYC,KAC3Jl/B,UARS0B,cAAZ6T,GAEGtV,aAVe,CACtB9W,IAAK,KACL6W,SAAU,KACVi/B,SAAS,EACTC,OAAO,GAwBT,IAOMI,wLAIK,IAAApX,EAC8Bp/B,KAAK6W,MAAlCxW,EADD++B,EACC/+B,IAAK6W,EADNkoB,EACMloB,SAAUF,EADhBooB,EACgBpoB,UACvB,OACEF,EAAAtG,EAAAuG,cAAA,MACE1W,IAAKA,EACL2W,UAAWq/B,KACT,wBACA,8BACAr/B,IAGDE,UAfS0B,aAAZ49B,GAEGr/B,aATe,CACtB9W,IAAK,KACL6W,SAAU,KACVF,UAAW,MA+Bb,IAOMy/B,wLAIK,IAAAjV,EAC8BxhC,KAAK6W,MAAlCxW,EADDmhC,EACCnhC,IAAK6W,EADNsqB,EACMtqB,SAAUF,EADhBwqB,EACgBxqB,UACvB,OACEF,EAAAtG,EAAAuG,cAAA,OACE1W,IAAKA,EACL2W,UAAWq/B,KAAG,2BAA4Br/B,IAEzCE,UAXY0B,aAAf69B,GAEGt/B,aATkB,CACzB9W,IAAK,KACL6W,SAAU,KACVF,UAAW,UAsBQsU,wLAQV,IAAAorB,EAC4C12C,KAAK6W,MAAhDK,EADDw/B,EACCx/B,SAAUF,EADX0/B,EACW1/B,UAAW2/B,EADtBD,EACsBC,kBAC7B,OACE7/B,EAAAtG,EAAAuG,cAACqe,EAAA,SAAD,KACEte,EAAAtG,EAAAuG,cAAA,SAAO1W,IAAI,QAAQ2W,UAAWq/B,KAAG,kBAAmBr/B,IAClDF,EAAAtG,EAAAuG,cAAA,SAAOC,UAAU,yBACdE,IAGJy/B,GAAqB7/B,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,QAAOF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,sCAjBhC4B,aAAd0S,GAEZnU,aAtGY,CACnBH,UAAW,KACXE,SAAU,KACVy/B,mBAAmB,GAiGArrB,GAIZmB,IAAMA,GAJMnB,GAKZkrB,IAAMA,GALMlrB,GAMZmrB,OAASA,GCxGlB,IAIMG,wLAIK,IAAAzwB,EACmBnmB,KAAK6W,MAAvBvM,EADD6b,EACC7b,KACR,GAFO6b,EACOvZ,QAEZ,OAAOkK,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAE1B,IAAMw7B,EAAU7Q,eAAI17B,EAAM,UAAW,IAC/BwsC,EAAQ9Q,eAAI17B,EAAM,QAAS,IAC3BysC,EAAS/Q,eAAI17B,EAAM,SAAU,IAC7BhJ,EAAS01C,gBAAKC,mBAAQ/xC,kBAAO2xC,EAASC,EAAOC,GAAS,CAAC,WAAY,CAAC,SAAU,GACpF,OACEjgC,EAAAtG,EAAAuG,cAAC89B,GAAD,CAAM79B,UAAU,SACdF,EAAAtG,EAAAuG,cAAC89B,GAAKtB,QAAN,iHACAz8B,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,CAAcz8B,UAAU,qBACpBkgC,mBAAQ51C,IAAWwV,EAAAtG,EAAAuG,cAACqe,EAAA,SAAD,KACnBte,EAAAtG,EAAAuG,cAACogC,GAAD,CAAOR,mBAAiB,GACrBr1C,EAAO6C,IAAI,SAAAC,GAAI,OACd0S,EAAAtG,EAAAuG,cAACogC,GAAM1qB,IAAP,CAAWpsB,IAAK+D,EAAKyd,IACnB/K,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACGpyC,EAAKgzC,MACNtgC,EAAAtG,EAAAuG,cAACogC,GAAMV,OAAP,8CAAuB1vC,EAAiB3C,EAAKyvC,YAG/C/8B,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACGpyC,EAAKizC,QAAQvxC,eAAe,QAAS,CACpCC,MAAO,WACPF,SAAUzB,EAAKyvC,gBAMzB/8B,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OACbF,EAAAtG,EAAAuG,cAACs6B,GAAA,EAAD,CAAM54B,GAAG,oBAAoBzB,UAAU,QAAvC,6GAGHkgC,mBAAQ51C,IAAWwV,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OAAOnU,EAAiBC,yBAvCxCulB,iBAAvBuuB,GAEGz/B,aANY,CACnB7M,KAAM,IAiDR,IAKe8P,eALS,SAAAnR,GAAK,MAAK,CAChCqB,KAAMrB,EAAM6D,iBAAiBpL,SAAS4I,KACtCsC,QAAS3D,EAAM6D,iBAAiBpL,SAASkL,UAG5BwN,CAAyBw8B,IC/ClCU,wLAIK,IAAAnxB,EACmBnmB,KAAK6W,MAAvBvM,EADD6b,EACC7b,KACR,GAFO6b,EACOvZ,QAEZ,OAAOkK,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAE1B,IAAMk8B,EAAUP,gBAAKC,mBAAQjR,eAAI17B,EAAM,UAAW,IAAK,CAAC,WAAY,CAAC,SAAU,GAC/E,OACEwM,EAAAtG,EAAAuG,cAAC89B,GAAD,CAAM79B,UAAU,SACdF,EAAAtG,EAAAuG,cAAC89B,GAAKtB,QAAN,6HACAz8B,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,CAAcz8B,UAAU,qBACpBkgC,mBAAQK,IAAYzgC,EAAAtG,EAAAuG,cAACqe,EAAA,SAAD,KACpBte,EAAAtG,EAAAuG,cAACogC,GAAD,CAAOR,mBAAiB,GACrBY,EAAQpzC,IAAI,SAAAC,GAAI,OACf0S,EAAAtG,EAAAuG,cAACogC,GAAM1qB,IAAP,CAAWpsB,IAAK+D,EAAKyd,IACnB/K,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACGpyC,EAAKgzC,MACNtgC,EAAAtG,EAAAuG,cAACogC,GAAMV,OAAP,8CAAuB1vC,EAAiB3C,EAAKyvC,YAG/C/8B,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACGpyC,EAAKizC,QAAQvxC,eAAe,QAAS,CACpCC,MAAO,WACPF,SAAUzB,EAAKyvC,gBAMzB/8B,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OACbF,EAAAtG,EAAAuG,cAACs6B,GAAA,EAAD,CAAM54B,GAAG,oBAAoBzB,UAAU,QAAvC,6GAGHkgC,mBAAQK,IAAYzgC,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OAAOnU,EAAiBR,kBApCzCgmB,iBAAvBivB,GAEGngC,aANY,CACnB7M,KAAM,IA8CR,IAKe8P,eALS,SAAAnR,GAAK,MAAK,CAChCqB,KAAMrB,EAAM6D,iBAAiBpL,SAAS4I,KACtCsC,QAAS3D,EAAM6D,iBAAiBpL,SAASkL,UAG5BwN,CAAyBk9B,iGC7DlChtC,GAAO,CACX,CACEmD,GAAI,EACJ+pC,MAAOC,KACPvnC,KAAM,sJACNklC,KAAM,wBAER,CACE3nC,GAAI,EACJ+pC,MAAOE,KACPxnC,KAAM,uHACNklC,KAAM,yBAQR,CACE3nC,GAAI,EACJ+pC,MAAOG,KACPznC,KAAM,wFACNklC,KAAM,mBAER,CACE3nC,GAAI,EACJ+pC,MAAOI,KACP1nC,KAAM,oGACNklC,KAAM,uBAeJyC,gNAIJC,cAAgB,SAAC5nC,GAAS,IAChB6nC,EAAah4C,EAAK8W,MAAlBkhC,SAER,OAAQ7nC,GACN,IAAK,wFACH,OAAOgnC,mBAAQlR,eAAI+R,EAAU,OAAQ,KACvC,IAAK,oGACH,OAAOb,mBAAQlR,eAAI+R,EAAU,UAAW,KAC1C,QACE,OAAO,MAIbC,aAAe,SAACt3B,GACdA,EAAEvG,4FAGK,IAAAX,EAAAxZ,KACP,OACE8W,EAAAtG,EAAAuG,cAAC89B,GAAD,CAAM79B,UAAU,SACdF,EAAAtG,EAAAuG,cAAC89B,GAAKtB,QAAN,qGACAz8B,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,CAAcz8B,UAAU,oBACtBF,EAAAtG,EAAAuG,cAACogC,GAAD,KACG7sC,GAAKnG,IAAI,SAAAC,GAAI,OACZ0S,EAAAtG,EAAAuG,cAACogC,GAAM1qB,IAAP,CAAWpsB,IAAK+D,EAAKqJ,GAAI2oC,OAAK,GAC5Bt/B,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACE1/B,EAAAtG,EAAAuG,cAAA,OAAKM,IAAKjT,EAAKozC,MAAOjgC,IAAKnT,EAAK8L,QAElC4G,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACGh9B,EAAKs+B,cAAc1zC,EAAK8L,MACvB4G,EAAAtG,EAAAuG,cAACs6B,GAAA,EAAD,CAAMr6B,UAAU,sBAAsByB,GAAIrU,EAAKgxC,KAAM17B,QAASF,EAAKw+B,cAChE5zC,EAAK8L,MAGR4G,EAAAtG,EAAAuG,cAACs6B,GAAA,EAAD,CAAMr6B,UAAU,OAAOyB,GAAIrU,EAAKgxC,MAC7BhxC,EAAK8L,oBAvCCmY,iBAAvBwvB,GAEG1gC,aANY,CACnB7M,KAAM,IAwDR,IAKe8P,eALS,SAAAnR,GAAK,MAAK,CAChC8uC,SAAU9uC,EAAM6D,iBAAiBpL,SAAS4I,KAC1CsC,QAAS3D,EAAM6D,iBAAiBpL,SAASkL,UAG5BwN,CAAyBy9B,ICrFlCI,gNAIJC,QAAU,SAAAzqC,GAAE,OAAI,WACM1N,EAAK8W,MAAjBpI,QACArL,KAAK,kBAAmB,CAAEyG,UAAW4D,gFAGtC,IAAA+L,EAAAxZ,KAAAmmB,EACmBnmB,KAAK6W,MAAvBvM,EADD6b,EACC7b,KACR,GAFO6b,EACOvZ,QAEZ,OAAOkK,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAE1B,IAAM88B,EAAOnB,gBAAKC,mBAAQjR,eAAI17B,EAAM,OAAQ,IAAK,CAAC,WAAY,CAAC,SAAU,GACzE,OACEwM,EAAAtG,EAAAuG,cAAC89B,GAAD,CAAM79B,UAAU,SACdF,EAAAtG,EAAAuG,cAAC89B,GAAKtB,QAAN,qIACAz8B,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,CAAcz8B,UAAU,qBACpBkgC,mBAAQiB,IAASrhC,EAAAtG,EAAAuG,cAACqe,EAAA,SAAD,KACjBte,EAAAtG,EAAAuG,cAACogC,GAAD,CAAOR,mBAAiB,GACrBwB,EAAKh0C,IAAI,SAAAC,GAAI,OACZ0S,EAAAtG,EAAAuG,cAACogC,GAAM1qB,IAAP,CAAWpsB,IAAK+D,EAAKyd,IACnB/K,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACGpyC,EAAKg0C,QAAQtyC,eAAe,QAAS,CACpCC,MAAO,WACPF,SAAUzB,EAAKyvC,WAEjB/8B,EAAAtG,EAAAuG,cAACogC,GAAMV,OAAP,mFAA8BhwC,IAAOrC,EAAKi0C,cACvC1xC,OAAO,gBAGZmQ,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACGpyC,EAAKk0C,eAAexyC,eAAe,QAAS,CAC3CC,MAAO,WACPF,SAAUzB,EAAKyvC,WAEjB/8B,EAAAtG,EAAAuG,cAACogC,GAAMV,OAAP,qGAAiChwC,IAAOrC,EAAKm0C,iBAC1C5xC,OAAO,gBAGZmQ,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACE1/B,EAAAtG,EAAAuG,cAAA,QACEC,UAAU,6BAET5S,EAAKizC,QAAQvxC,eAAe,QAAS,CACpCC,MAAO,WACPF,SAAUzB,EAAKyvC,YAGnB/8B,EAAAtG,EAAAuG,cAACogC,GAAMV,OAAP,mFAA8BhwC,IAAOrC,EAAKo0C,WACvC7xC,OAAO,gBAGZmQ,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACE1/B,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OAAO4C,KAAK,OAAOF,QAASF,EAAK0+B,QAAQ9zC,EAAKyd,KAA7D,yDAKR/K,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OACbF,EAAAtG,EAAAuG,cAACs6B,GAAA,EAAD,CAAM54B,GAAG,iBAAiBzB,UAAU,QAApC,6GAGHkgC,mBAAQiB,IAASrhC,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OAAOnU,EAAiBP,eAhEzC+lB,iBAApB4vB,GAEG9gC,aANY,CACnB7M,KAAM,IA0ER,IAKe8P,eALS,SAAAnR,GAAK,MAAK,CAChCqB,KAAMrB,EAAM6D,iBAAiBpL,SAAS4I,KACtCsC,QAAS3D,EAAM6D,iBAAiBpL,SAASkL,UAG5BwN,CAAyB69B,IChFlCQ,wLAIK,IAAAtyB,EACmBnmB,KAAK6W,MAAvBvM,EADD6b,EACC7b,KACR,GAFO6b,EACOvZ,QAEZ,OAAOkK,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUZ,SAAO,IAE1B,IAAM6O,EAAa8b,eAAI17B,EAAM,aAAc,IAC3C,OACEwM,EAAAtG,EAAAuG,cAAC89B,GAAD,CAAM79B,UAAU,SACdF,EAAAtG,EAAAuG,cAAC89B,GAAKtB,QAAN,iHACAz8B,EAAAtG,EAAAuG,cAAC89B,GAAKpB,QAAN,CAAcz8B,UAAU,qBACpBkgC,mBAAQhtB,IAAepT,EAAAtG,EAAAuG,cAACqe,EAAA,SAAD,KACvBte,EAAAtG,EAAAuG,cAACogC,GAAD,CAAOR,mBAAiB,GACrBzsB,EAAW/lB,IAAI,SAAAC,GAAI,OAClB0S,EAAAtG,EAAAuG,cAACogC,GAAM1qB,IAAP,CAAWpsB,IAAK+D,EAAKyd,GAAIs0B,SAAO,GAC9Br/B,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,KACGpyC,EAAKgzC,MACNtgC,EAAAtG,EAAAuG,cAACogC,GAAMV,OAAP,KACGhwC,IAAOrC,EAAKzD,MAAMgG,OAAO,gBAG9BmQ,EAAAtG,EAAAuG,cAACogC,GAAMX,IAAP,CAAWx/B,UAAS,yBAAA9R,OAA2Bd,EAAK2iC,IAAM,EAAI,QAAU,QACrE3iC,EAAK2iC,IAAIjhC,eAAe,QAAS,CAChCC,MAAO,WACPF,SAAUzB,EAAKyvC,gBAMzB/8B,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OACbF,EAAAtG,EAAAuG,cAACs6B,GAAA,EAAD,CAAM54B,GAAG,gBAAgBzB,UAAU,QAAnC,gGAGHkgC,mBAAQhtB,IAAepT,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OAAOnU,EAAiBL,qBArC5C6lB,iBAAvBowB,GAEGthC,aANY,CACnB7M,KAAM,IA+CR,IAKe8P,eALS,SAAAnR,GAAK,MAAK,CAChCqB,KAAMrB,EAAM6D,iBAAiBD,eAAevC,KAC5CsC,QAAS3D,EAAM6D,iBAAiBD,eAAeD,UAGlCwN,CAAyBq+B,ICjEnBC,mMAWjB14C,KAAK24C,gBACL34C,KAAK44C,4DAGO,IACIh3C,EAAW5B,KAAK6W,MAAxBxP,KAAQzF,KAChB,sGAAAsD,OAA4BtD,EAA5B,6CAIA5B,KAAK6W,MAAMxH,SCvBkB,SAACA,GAChC,IAAMC,EAAQjK,EAAU,gBAEnBiK,IAILD,EAAS,CACPlG,K3GnB4C,uC2GsB9CuG,MAAK,GAAAxK,OAAI1D,EAAJ,aAA6B,CAChCmO,OAAQ,MACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAGjBnQ,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OACb7O,KAAK,SAAC6O,GACL,MAAM,IAAIjP,MAAMiP,KAIfJ,EAASE,OACb3O,KAAK,SAAC2O,GACL,MAAM,IAAI/O,MAAM+O,EAAKG,aAG1B9O,KAAK,SAAA2O,GAAI,OAAIX,EAAS,CACrBlG,K3G9C0C,qC2G+C1CE,QAAS2G,MAEVzO,MAAM,SAAAmK,GAAK,OAAI2D,EAAS,CACvBlG,K3GjD0C,qC2GkD1CE,QAASqC,EAAM0E,6DAKY,IAAAjB,EDnB7BnP,KAAK6W,MAAMxH,UCmBkBF,EDnBS,ECmBA,SAACE,GACzC,IAAMC,EAAQjK,EAAU,gBAEnBiK,IAILD,EAAS,CACPlG,K3G7DmD,8C2GgErDuG,MAAK,GAAAxK,OAAI1D,EAAJ,oCAAA0D,OAAmDiK,GAAS,CAC/DQ,OAAQ,MACRC,QAAS,CACPC,cAAa,UAAA3K,OAAYoK,GACzBkC,eAAgB,sBAGjBnQ,KAAK,SAACyO,GACL,OAAIA,EAASC,GACJD,EAASE,OAGM,MAApBF,EAASG,OACJH,EAASI,OACb7O,KAAK,SAAC6O,GACL,MAAM,IAAIjP,MAAMiP,KAIfJ,EAASE,OACb3O,KAAK,SAAC2O,GACL,MAAM,IAAI/O,MAAM+O,EAAKG,aAG1B9O,KAAK,SAAA2O,GAAI,OAAIX,EAAS,CACrBlG,K3GxFiD,4C2GyFjDE,QAAS2G,MAEVzO,MAAM,SAAAmK,GAAK,OAAI2D,EAAS,CACvBlG,K3G3FiD,4C2G4FjDE,QAASqC,EAAM0E,iDDzDV,IAAA+V,EACsBnmB,KAAK6W,MAA1BjK,EADDuZ,EACCvZ,QAAS6B,EADV0X,EACU1X,QACjB,OAAI7B,EACKkK,EAAAtG,EAAAuG,cAACkF,GAAD,CAAUX,QAAM,IAGvBxE,EAAAtG,EAAAuG,cAAA,WACED,EAAAtG,EAAAuG,cAAA,MAAIC,UAAU,WAAWhX,KAAK64C,eAC9B/hC,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,SACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,YACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,SACbF,EAAAtG,EAAAuG,cAAC+hC,GAAD,OAEFhiC,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,SACbF,EAAAtG,EAAAuG,cAACgiC,GAAD,QAGJjiC,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,OACbF,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,SACbF,EAAAtG,EAAAuG,cAACiiC,GAAD,OAEFliC,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,SACbF,EAAAtG,EAAAuG,cAACkiC,GAAD,CAAaxqC,QAASA,OAI5BqI,EAAAtG,EAAAuG,cAAA,OAAKC,UAAU,SACbF,EAAAtG,EAAAuG,cAACmiC,GAAD,gBAxD2BvgC,IAAMC,WEJ9BwB,eALS,SAAAnR,GAAK,MAAK,CAChC5B,KAAM4B,EAAMD,WAAW3B,KACvBuF,QAAS3D,EAAMD,WAAW5B,eAGbgT,CAAyBs+B,ICqBxC,I1GF8BS,G0G+CfC,GA7CA,kBACbtiC,EAAAtG,EAAAuG,cAACsiC,GAAA,EAAD,KAPF,WACE,IACW7oC,EADP8oC,GAAQ,EAEZ,OADW9oC,EAA+7D+X,UAAUD,WAAaC,UAAUC,QAAU3H,OAAO4H,OAAx+D,2TAA2ThD,KAAKjV,IAAM,0kDAA0kDiV,KAAKjV,EAAE+oC,OAAO,EAAG,OAAKD,GAAQ,GAC37DA,GAAUz4B,OAAO24B,YAAc,KAAO34B,OAAO44B,aAAe,IAKhEC,KAAgBr0C,EAAU,iBAAmByR,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAO93C,KAAK,IAAI+3C,UAAW5xB,KACzElR,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CACEE,OAAK,EACLh4C,KAAK,IACLi4C,OACE,SAACC,GACC,OAAIA,EAAWj2B,SAASva,OACfuN,EAAAtG,EAAAuG,cAACuN,GAAA,EAAD,CAAU7L,GAAG,uBAEf3B,EAAAtG,EAAAuG,cAACuN,GAAA,EAAD,CAAU7L,GAAG,kBAI1B3B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,YAAYi4C,OAAQ,kBAAMhjC,EAAAtG,EAAAuG,cAACuN,GAAA,EAAD,CAAU7L,GAAG,yBACzD3B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,yBAAyB+3C,UAAW51B,GAAiB+J,MACvEjX,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,aAAa+3C,UAAW51B,GAAiB00B,MAC3D5hC,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,WAAW+3C,UAAW51B,GAAiBwP,MACzD1c,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,4BAA4B+3C,UAAW51B,GAAiBwP,MAC1E1c,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,YAAY+3C,UAAW51B,GAAiBogB,MAC1DttB,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,aAAai4C,OAAQ,kBAAMhjC,EAAAtG,EAAAuG,cAACuN,GAAA,EAAD,CAAU7L,GAAG,4BAC1D3B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CACEE,OAAK,EACLh4C,KAAK,8DACL+3C,UAAW51B,GAAiB4rB,MAG9B94B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,qBAAqB+3C,UAAW51B,GAAiB+sB,MACnEj6B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,qBAAqB+3C,UAAW51B,GAAiBmtB,MAGnEr6B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,SAAS+3C,UAAW9mC,KACtCgE,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,qBAAqB+3C,UAAWpwB,KAClD1S,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,mBAAmB+3C,UAAW51B,GAAiB2gB,MACjE7tB,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,gBAAgB+3C,UAAW51B,GAAiB0uB,MAC9D57B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,oBAAoB+3C,UAAW51B,GAAiB0wB,MAClE59B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,wBAAwB+3C,UAAW51B,GAAiB8wB,MACtEh+B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,iCAAiC+3C,UAAW51B,GAAiBkxB,MAC/Ep+B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,2BAA0B+3C,UAAW51B,GAAiB4xB,MACxE9+B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAOE,OAAK,EAACh4C,KAAK,sBAAqB+3C,UAAW51B,GAAiBiyB,MACnEn/B,EAAAtG,EAAAuG,cAAC4iC,GAAA,EAAD,CAAO93C,KAAK,IAAIi4C,OAAQ,kBAAMhjC,EAAAtG,EAAAuG,cAAA,sBC5D5BijC,G3GkBJC,YAAYvsC,GAAayrC,GAAgBe,IAAevoC,WAAf,EAAmB/C,K2GjB9DurC,IAAQC,WAAW,gBAAiB,CAAEC,OAAOC,IAE7C7rC,GAAQ8rC,OAAO,SAACz2B,GACdq2B,IAAQK,SAAS12B,EAASxa,YAG5BmxC,IAASX,OACPhjC,EAAAtG,EAAAuG,cAAC2jC,EAAA,EAAD,CAAUV,MAAOA,IACfljC,EAAAtG,EAAAuG,cAAC4jC,EAAA,EAAD,CAAQlsC,QAASA,IACfqI,EAAAtG,EAAAuG,cAAC6jC,GAAD,QAGJz1C,SAAS2b,eAAe,6BCxB1BlhB,EAAAC,QAAiBg7C,EAAAC,EAAuB","file":"static/js/main.f17baa13.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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Q29sb3JNb2RlADNWArNAAAAAHHRFWHRwaG90b3Nob3A6SUNDUHJvZmlsZQBEaXNwbGF5Q+ePOwAAADB6VFh0cmRmOkJhZwAAWEftxyEBAAAMAjBPCvqnRL/BxeaWXnF3d3d3d3d3d3f3/x+cEJ2r2ZjCYQAAABR0RVh0dGlmZjpYUmVzb2x1dGlvbgAzMDBcODKhAAAAFHRFWHR0aWZmOllSZXNvbHV0aW9uADMwMOXD6UkAAAAodEVYdHhtcDpDcmVhdGVEYXRlADIwMTktMDQtMjNUMTg6NDM6MjYrMDM6MDCmFZm+AAAAM3RFWHR4bXA6Q3JlYXRvclRvb2wAQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCm9KYY8AAAAKnRFWHR4bXA6TWV0YWRhdGFEYXRlADIwMTktMDQtMjNUMTg6NDc6MDYrMDM6MDBlgVE+AAAAKHRFWHR4bXA6TW9kaWZ5RGF0ZQAyMDE5LTA0LTIzVDE4OjQ3OjA2KzAzOjAwWSUCgAAAAD10RVh0eG1wTU06RG9jdW1lbnRJRAB4bXAuZGlkOmQ3YTk5MjJhLTViY2MtNGUzZS1hNmM0LTRlZWI2MWIwNGJhOZsicOAAAAA9dEVYdHhtcE1NOkluc3RhbmNlSUQAeG1wLmlpZDo2ZmVhNTE3Mi1lMTg1LTQ4NWMtOTdhOS02YWQzMWQzZjQzODHwGGOhAAAARXRFWHR4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQAeG1wLmRpZDpkN2E5OTIyYS01YmNjLTRlM2UtYTZjNC00ZWViNjFiMDRiYTmX/x4TAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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NTA6MzQrMDI6MDDbM0W9AAAAKXRFWHRkYzpmb3JtYXQAYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcOStn1QAAAAcdEVYdGxhYmVsAILl6vLu8O376SDx7ODw8i3u4frl6vL/tT4SAAAAFXRFWHRwaG90b3Nob3A6Q29sb3JNb2RlADNWArNAAAAAHHRFWHRwaG90b3Nob3A6SUNDUHJvZmlsZQBEaXNwbGF5Q+ePOwAAADB6VFh0cmRmOkJhZwAAWMPtxyEBAAAMAjBPCvqnRL/BxeaWXnF3d3d3d3d3d3f3/x+cEJ2rL+i3hQAAABR0RVh0dGlmZjpYUmVzb2x1dGlvbgAzMDBcODKhAAAAFHRFWHR0aWZmOllSZXNvbHV0aW9uADMwMOXD6UkAAAAodEVYdHhtcDpDcmVhdGVEYXRlADIwMTktMDQtMjNUMTg6NDM6MjYrMDM6MDCmFZm+AAAAM3RFWHR4bXA6Q3JlYXRvclRvb2wAQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCm9KYY8AAAAKnRFWHR4bXA6TWV0YWRhdGFEYXRlADIwMTktMDQtMjNUMTg6NDc6MDYrMDM6MDBlgVE+AAAAKHRFWHR4bXA6TW9kaWZ5RGF0ZQAyMDE5LTA0LTIzVDE4OjQ3OjA2KzAzOjAwWSUCgAAAAD10RVh0eG1wTU06RG9jdW1lbnRJRAB4bXAuZGlkOmQ3YTk5MjJhLTViY2MtNGUzZS1hNmM0LTRlZWI2MWIwNGJhOZsicOAAAAA9dEVYdHhtcE1NOkluc3RhbmNlSUQAeG1wLmlpZDo2ZmVhNTE3Mi1lMTg1LTQ4NWMtOTdhOS02YWQzMWQzZjQzODHwGGOhAAAARXRFWHR4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQAeG1wLmRpZDpkN2E5OTIyYS01YmNjLTRlM2UtYTZjNC00ZWViNjFiMDRiYTmX/x4TAAAAAElFTkSuQmCC\"","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAeAB4DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD7Vg0L4S+N/FvjTxT8SfCn7LOu6vcfEjxNFNefF34iSpriRQazeQQxSwvbSCCNIoo0ijRtvlKhwCxq1/wrj9mr/okX7Bn/AIcQ/wDyFXqHiHxDq/wt+Gltr/w5/Yv0L4l3+tfEfxuNXuLnSrl5bbyvEV6IyzWum3hbcGYfPswI/l3c7eu/ZP13U/jh4n1XRvjF+wB4Z8C2llYLNaXsmh3TfaZC4Ux4vNKtV4BJ+VmPH3ccgA8B/wCFcfs1f9Ei/YM/8OIf/kKu1/Y+Hg7wL+19Z6Z8MdK+C2lWeqfDfWpdT034JeNJdQtZ5YNQ0hYZb2AxRxxyKLiZYpACzB5gTgCvTP25p/BPwD8KeE73wh8Pfh14btNe8VjTde8aeIvAK6jZaDbfZLmZZZIIWiJMksMUIZnCgy85JFY37KOuRfEHxD8Kfitqfw38P6Bq+t/Dvxkl6/h/QP7Phv4oNa0eG3ulibLrHNEiTorM2BPwSOSAdFp3grQdH+PmsfAj4O/tcfFXR7u+ur/xJrGh+H7LQb7TdBlu5zcSI819plxLAZpppJUh8xsbicIrJnvf+GePi9/0ff8AFb/wT+Ev/lFXhA/Zh07wR+2SPhNrvjjXn0Tx3o91quhXOh6ktldWstoV89bwrF/pjN5wK3DMZWIbzNzEufqX4S/CjQvg74al8L6BretahFNevdST65qr3cu9lVSFLcImEHyKAuSzYyzEgHI/8M8fF7/o+/4rf+Cfwl/8oq5f9mzSfBHi/wCM2v8AjDVvjz8QPFvjHwdb3fhu50Xx5Bplm+lW8txDK80Vtp9nbI6XBtbd1nYOWRFAK/Mtd98Xf2dPCfxl1m013XfFvijTZrS1MCJomuyW8TruLZaPBTdk/eADEYBJCjHzX+zX+yho3x68ReN/iPr3jnxFZaBB4kuNB0OG01grq/8AxL55oXkmv0RZPKd2dhbKTH/qyctGGIB//9k=\"","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAWAB8DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U/2UP2wdA8FeB/hL8EvjD4fuvDdvrXw60CHwl4t1Rp/set3h0qyka385oRBHKxldY0853cwSblQmMSfVNeKfs+/C34efGj9gD4bfDT4qeEbLXNC1T4W6FFfadfRbkcf2fAQQeqMDgq6kMpAIIIBrgn1L9rv9iNv+FeeHPCuofGjwXeo0PgW6u72RNZ0e5/5ZadfTrDIs1sf4Lt9hjCssp+4T6FWlSxFWSp6STejej13Tez8n8n0PPpVatClF1NYtLVLVeTS39V811Ppq/wDFHhrStZsfDmqeIrG21DVPM/sywuLtEmu/LXdJ5SE7pNqkFtoOByavV8zaf+wb4y+LVhffEf8Aam+O3iOT4i6mIZNNvPAeuXGm6f4S8pzJFDYQhts+xzlpblZDLjlVp+j/ALS3x9/Zm1uP4V/td+C5vFkMlvJJ4a+I/gi0iH9sxxlA0dzpxkEkV4A6sUtxKrL5kihEhlK5vCxnpSlzSW62+7v+fW1jRYqUNasHGL2e9v8AFbb8ul7nn+pf8FJPhP8A8E9dN0j9kv47+DPEWpan4N0W102w1TwlBBcQXtjDEsdtNILiaBopmiVC8YDqr7grsMGqf/D/AK/Y6/6Jr8TP/BNp/wD8nUUV6v1PDT96UdXruzyvrmJh7sZaLTZB/wAP+v2Ov+ia/Ez/AME2n/8AydXsH7Hf/BSH4Hftt+K9X8H/AAp8K+K9PudF09by6fxDY20UbxtIEAQw3EpLZPcAY70UVhicJh6dCUox1XmzfDYvEVK8Yylo/JH/2Q==\"","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAXACcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD92fiv8VPCHwX8DXfxE8dXFxFptkUE7Wlo88nzMF4RAWOM5OOgBPauikcRxtIRwoJNfJX7WN3+0tc/CPVbH9oa28MWvhVvPNxceD7GWS7G23naPY1xdAEZUZJjGfRc5Hsvw01P9rG78UNF8XdF8JxaEdPlMkmmWksNwk/y7ApN3OrqfnyCqY4IJ6EA8S8V/tY/8FC18K2Xib4a/sx6Xr0uq2lnd2VpaaVcPbRRXESS/NeNdRlxGr4ZlgyWU4THS6kHiP4rINR/a5+C3xM8abxlfBtj4WhtPDlqfQ2pu2e9Yf37p5FyNyRxHivoH9nj/kgHgb/sTtM/9JI6sfG7x1rXww+Dfiv4keG/Db6xqGgeHb3ULHSow2buWGB5Ei+UFvmKgfKC3PAJwKAPnr9mb47ftGeAviZ4d/Z1+Kvwf1mLwhfareaL4L8U69bmG/e3gsZb21+1N50izSCC3mgY4RmaASkt5hAK8X/aU/a4+Lenfs+6n+1DYftHeC7vX/hd4z83wnoi6HZCDxAJk/s1r63EOpTytaNb6lcPGHxJmEFwMHJQB94/Ff4U+EfjP4Mn8B+N4rlrC4dWk+yXTQycZBAZeQGUsh/2WOMHBHRToZIXRerKQPyoooA+QPhR/wAFcP8Agn78Pvhb4b8A+Ofju+ma1oegWen6vp0nhXVJWtbqGBI5Yi8Ns8blXVhuRmU4yCRg1v8A/D5//gmp/wBHJf8Alnaz/wDIdFFAGF4Z/aP/AGJv20v2hfh34a/Zsn0fxNeeH/EN/rvisnwnNZiKx/si/tA7m7gi84tc3dvhV3HqxAC5ooooA//Z\"","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAaACEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KxPiJ8QvCvwr8HXnjrxpfvb2FkEDeTA8ss0juscUMUaAvLLJI6RpGoLO7qoBJArbr5W/au8S/Fr4d/E29h+LlndeLPhF4vntbe107TrZIbjRJ0WHy/s00KrMl8tzGbiFmkbzmZYoTDcRQx3QBxV18SP+F6ftLL4g/ab8Uy+CdE8Ba1bXWj+FJUlM6XcTRzxqDGrK0mdnn3IJBBNtbnyjPPdfSTftifs6BSw+ILsAMsU0W9O0epxDwPevlvQNL8P+C/jbpOofGNZ/id4P+J2oWsXhzxxDfTsZ5pTHBE4WJwivnYLi1wAMNcwAILi3tvqRv2OP2ZJFKz/AAg02YEYKzvLICPTDOePagA/4bP/AGRv+jmfAv8A4VFr/wDF0Vof8Msfsx/9G6+Bf/CTs/8A43RQB5I//BMP4VLI8lv8R9Zcs7MZNR8MeHbud8kn95PNpjTTtz/rJXd26szEknxX49/BH4e/Cn4haP8ACv4T6pJ4z8XHVrSS50KbwbobQxAFZ1tmEVnHmeSNdwTciwxZuJnSNU8z9Aa8f+GfhXwvb/tgfEvxLb+G7CPUm0rRw2oJZoJz5kJEn7wDd8wt4A3PIhjznYuADov2e/hTrfww8Paxf+LbyybW/FWvza5rdno8ZTT7G5mjjRoLVSASgEQZ5GAaaV5ZmCmTYvfUUUAFFFFAH//Z\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMYAAAAuCAYAAABzjGayAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABCNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjE5ODwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NDY8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg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\"","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAbAB8DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/K4X9qDx7rXwr/Zr+IPxL8M3McOqaB4K1TUNLklUMouobSR4Rg8NmRVGO5OO9eM/tLftLfE+8+FWtppfwg+Jnga60v8A0228TwWUTRWzW7eYPPwzI8DbcOoLKyk8sOD2nhLUfEn7Z37HN7aeIYE0XUfEeiyW1vqlnDILWabYrRXsCToJPJ8zadrr/A4UyJtlcAuaP+wp+yn/AGFAniX4KaLrusNbr9r8Wa9Zi61u4m2/NO1++blZSSTuV12k/LtGBWp+yPrms6t8Gf7M8QeIbnVbrw/4q8QaAL6/nMtzLBp+sXllbNO5+Z5TbwQszty5bcc7slvhn9o/Tm/Zbk/aK8aaHc2r6Ro13L4i0m2QPJDf2TyQXdrHzh8XMMsatna2A2cHNX/2a/hz4o+HXwyRfiBcxSeJtf1C41zxQtrjyINQu382WCHHWKIkRKx5YR7jyxoA3vib8K/APxj8Mf8ACF/Evw8mq6UbyC6ksJZ5EjlkhkEke8Iy+YoZQSjZRsYYEcV5/rt58TfjV8SvEXwk8AeNW8F+FPBstrp+varpFqjarf3ctrFdfZbV5A0dnClvcW+6XY8jGUhPJMe9vYa+Xf8AgoXp5+DXg6++P/wp1fVfD/iq9kRNQvtK1m5hhvfLiCI89ssn2eeRUVUEkkbOFVVzgAUAe76f8EPhhp3wil+BMfhhZfC9xp09ldadc3UsrXEU+8zGSV2MjySM7u0hYuzuWLbjmvJPi78QPHX7BPgyT4q+L/iJfeM/hlYTRw6pba+ok1rRhKfLgeK7Xb9tiMzRRlJ1MwEm8zvt2H8pNQ/4LJ/8FJLLUptOt/2kXEUcxRA3hPSGIXOPvG0JP1JzX33/AME945/23/BNz4i/av1O/wDG5tkR00zV9RmGmsx43PYRstrIw6qXiJU8rg80Af/Z\"","/**\r\n * Хэлпер для выполнения запросов\r\n * {cancellationsStore}\r\n */\r\nexport default class PromiseHelper {\r\n /**\r\n * Создается хранилище промисов\r\n */\r\n constructor() {\r\n this.cancellationsStore = {};\r\n }\r\n\r\n /**\r\n * По переданному ключу в cancellationsStore записывается время запуска промиса\r\n * и reject для его отмены\r\n * @param {Promise} Promise, который нужно добавить в стор\r\n * @param {string} Ключ, по которому будет храниться промис\r\n * @param {number} Интервал в ms для дебаунса выполнения промисов,\r\n * если передан, промис с таким же ключом не запустится\r\n * до выполнения предыдущего\r\n * @return {Promise}\r\n */\r\n request = (promise, key, minInterval = 0) => {\r\n const now = Date.now();\r\n const cancellation = this.cancellationsStore[key];\r\n if (cancellation && minInterval && now - cancellation.timestamp < minInterval) {\r\n return Promise.reject(new Error('Слишком быстро'));\r\n }\r\n\r\n return Promise.race([\r\n new Promise((resolve, reject) => {\r\n this.cancellationsStore[key] = {\r\n cancel: reject,\r\n timestamp: now,\r\n };\r\n }),\r\n promise,\r\n ])\r\n .then((result) => {\r\n delete this.cancellationsStore[key];\r\n return result;\r\n })\r\n .catch(() => {\r\n delete this.cancellationsStore[key];\r\n });\r\n };\r\n\r\n /**\r\n * Отмена промиса по переданному ключу\r\n * @param {string} key\r\n */\r\n cancel = (key) => {\r\n if (this.cancellationsStore[key]) {\r\n this.cancellationsStore[key].cancel();\r\n }\r\n }\r\n}\r\n","export const BASE_API_URL = '/api';\r\nexport const TOKEN_LIFETIME = 1000 * 60 * 20;\r\nexport const PAGINATION_LIMIT = 10;\r\nexport const CLIENT_DATE_FORMAT = 'DD.MM.YYYY';\r\nexport const CLIENT_DATETIME_FORMAT = 'DD.MM.YYYY, HH:mm:ss';\r\n\r\nexport const MENU = {\r\n accounts: {\r\n title: 'Счета',\r\n name: 'accounts',\r\n path: '/accounts',\r\n childrens: [\r\n {\r\n title: 'Текущие счета',\r\n name: 'current',\r\n path: '/accounts/current',\r\n },\r\n {\r\n title: 'Паенакопление',\r\n name: 'shares',\r\n path: '/accounts/shares',\r\n },\r\n {\r\n title: 'Зарплатные счета',\r\n name: 'salary',\r\n path: '/accounts/salary',\r\n },\r\n {\r\n title: 'Сберегательные программы',\r\n name: 'deposit',\r\n path: '/accounts/deposit',\r\n },\r\n {\r\n title: 'Займы',\r\n name: 'loan',\r\n path: '/accounts/loan',\r\n },\r\n {\r\n title: 'Другие доходы',\r\n name: 'raising',\r\n path: '/accounts/raising',\r\n },\r\n ],\r\n },\r\n transfers: {\r\n title: 'Счета',\r\n name: 'accounts',\r\n path: '/accounts',\r\n childrens: [\r\n {\r\n title: 'Перевод на ЗП карту',\r\n name: 'toSalary',\r\n path: '/transfers/to-salary',\r\n },\r\n {\r\n title: 'Перевод между своими счетами',\r\n name: 'toAccount',\r\n path: '/transfers/to-account',\r\n },\r\n // {\r\n // title: 'Перевод другому пайщику',\r\n // name: 'toPartner',\r\n // path: '/transfers/to-partner',\r\n // },\r\n {\r\n title: 'Досрочное погашение займа',\r\n name: 'loan',\r\n path: '/transfers/loan',\r\n },\r\n {\r\n title: 'Пополнение вклада',\r\n name: 'deposit',\r\n path: '/transfers/deposit',\r\n },\r\n ],\r\n },\r\n};\r\n\r\n/**\r\n * Колонки для табличного представления заявок\r\n */\r\nconst applicationColumns = [\r\n {\r\n name: 'id',\r\n title: '№ заявки',\r\n },\r\n {\r\n name: 'date',\r\n title: 'Дата и время',\r\n },\r\n {\r\n name: 'accountType',\r\n title: 'Тип',\r\n },\r\n {\r\n name: 'accountCode',\r\n title: 'Номер счета',\r\n },\r\n {\r\n name: 'sum',\r\n title: 'Сумма',\r\n },\r\n {\r\n name: 'currencyName',\r\n title: 'Валюта',\r\n },\r\n {\r\n name: 'status',\r\n title: 'Статус',\r\n },\r\n];\r\n\r\n/**\r\n * Колонки для табличного представления оперций по счету\r\n */\r\nconst operationsColumns = [\r\n {\r\n name: 'date',\r\n title: 'Дата транзакции',\r\n },\r\n {\r\n name: 'title',\r\n title: 'Операция',\r\n },\r\n {\r\n name: 'sum',\r\n title: 'Сумма операции',\r\n },\r\n {\r\n name: 'balance',\r\n title: 'Баланс',\r\n },\r\n];\r\n\r\n/**\r\n * Колонки для табличного представления графика платежей\r\n */\r\nconst sheduleColumns = [\r\n {\r\n name: 'date',\r\n title: 'Дата платежа',\r\n },\r\n {\r\n name: 'sum',\r\n title: 'Сумма платежа',\r\n },\r\n {\r\n name: 'balance',\r\n title: 'Остаток основного долга',\r\n },\r\n];\r\n\r\n/**\r\n * Колонки таблицы счетов, разделенные по типу счета\r\n */\r\nexport const COLUMNS = {\r\n current: [\r\n {\r\n name: 'title',\r\n title: 'Наименовая счета',\r\n },\r\n {\r\n name: 'balance',\r\n title: 'Баланс счета',\r\n },\r\n {\r\n name: 'actions',\r\n title: 'Действия',\r\n },\r\n ],\r\n shares: [\r\n {\r\n name: 'title',\r\n title: 'Наименовая счета',\r\n },\r\n {\r\n name: 'dateOfCreate',\r\n title: 'Дата открытия',\r\n },\r\n {\r\n name: 'balance',\r\n title: 'Баланс счета',\r\n },\r\n {\r\n name: 'actions',\r\n title: 'Действия',\r\n },\r\n ],\r\n salary: [\r\n {\r\n name: 'title',\r\n title: 'Наименовая счета',\r\n },\r\n {\r\n name: 'dateOfCreate',\r\n title: 'Дата открытия',\r\n },\r\n {\r\n name: 'accruedIncome',\r\n title: 'Начисленный доход',\r\n },\r\n {\r\n name: 'incomeToday',\r\n title: 'Доход на сегодня',\r\n },\r\n {\r\n name: 'balance',\r\n title: 'Баланс счета',\r\n },\r\n {\r\n name: 'actions',\r\n title: 'Действия',\r\n },\r\n ],\r\n deposit: [\r\n {\r\n name: 'title',\r\n title: 'Наименовая счета',\r\n },\r\n {\r\n name: 'dateOfEnd',\r\n title: 'Плановая дата закрыти',\r\n },\r\n {\r\n name: 'paidIncome',\r\n title: 'Выплаченный доход',\r\n },\r\n {\r\n name: 'nextPayment',\r\n title: 'Очередная выплата',\r\n },\r\n {\r\n name: 'balance',\r\n title: 'Баланс счета',\r\n },\r\n {\r\n name: 'percent',\r\n title: 'Проценная ставка, %',\r\n },\r\n {\r\n name: 'funcPay',\r\n title: 'Функция начисления',\r\n },\r\n {\r\n name: 'actions',\r\n title: 'Действия',\r\n },\r\n ],\r\n loan: [\r\n {\r\n name: 'loanSum',\r\n title: 'Сумма займа',\r\n },\r\n {\r\n name: 'dateOfCreate',\r\n title: 'Дата открытия',\r\n },\r\n {\r\n name: 'dateOfEnd',\r\n title: 'Плановая дата закрытия',\r\n },\r\n {\r\n name: 'nextPaymentSum',\r\n title: 'Очередной платеж *',\r\n },\r\n {\r\n name: 'overduePayment',\r\n title: 'Просрочка',\r\n },\r\n {\r\n name: 'balance',\r\n title: 'Остаток долга',\r\n },\r\n {\r\n name: 'actions',\r\n title: 'Действия',\r\n },\r\n ],\r\n raising: [\r\n {\r\n name: 'title',\r\n title: 'Наименовая счета',\r\n },\r\n {\r\n name: 'dateOfEnd',\r\n title: 'Плановая дата закрыти',\r\n },\r\n {\r\n name: 'paidIncome',\r\n title: 'Выплаченный доход',\r\n },\r\n {\r\n name: 'nextPayment',\r\n title: 'Очередная выплата',\r\n },\r\n {\r\n name: 'balance',\r\n title: 'Баланс счета',\r\n },\r\n {\r\n name: 'actions',\r\n title: 'Действия',\r\n },\r\n ],\r\n operations: operationsColumns,\r\n shedule: sheduleColumns,\r\n schedule: sheduleColumns,\r\n applications: applicationColumns,\r\n};\r\n\r\nexport const ACCOUNT_TYPES_FOR_TRANSFER = ['current', 'salary'];\r\n\r\nexport const EMPTY_TABLE_TEXT = {\r\n current: 'В данный момент у вас нет текущих счетов',\r\n shares: 'В данный момент у вас нет счетов паенакопления',\r\n salary: 'В данный момент у вас нет зарплатных счетов',\r\n deposit: 'В данный момент у вас нет сберегательных счетов',\r\n loan: 'В данный момент у вас нет займов',\r\n raising: 'В данный момент у вас нет счетов привлечения средств',\r\n operations: 'Операций не найдено',\r\n availableFunds: 'В данный момент у вас нет доступных средств',\r\n};\r\n\r\n/**\r\n * GET-параметр, проверяя который мы узнаем что юзер пришел по ссылке из письма\r\n */\r\nexport const SUCCESS_RESET_PARAM = '?email_reset_success';\r\n\r\nexport const DEFAULT_STRING_VALUE = '---';\r\nexport const DEFAULT_CURRENCY_LABEL = DEFAULT_STRING_VALUE;\r\n\r\nexport const CONFIRM_TYPES = {\r\n sms: 2,\r\n email: 3,\r\n push: 4,\r\n};\r\n\r\nexport const DATE_FORMAT = 'DD.MM.YYYY';\r\nexport const DATE_TIME_FORMAT = 'DD.MM.YYYY, hh.mm';\r\n\r\nexport const ACCOUNT_TYPES_FOR_REQUESTS = ['current', 'salary'];\r\n","import moment from 'moment';\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from '../constants';\r\n\r\nconst pascalToCamelCase = string => string.charAt(0).toLowerCase() + string.slice(1);\r\nconst objectToCamelCase = (obj) => {\r\n const dataItem = {};\r\n Object.keys(obj).forEach((key) => {\r\n const property = pascalToCamelCase(key);\r\n const propertyValue = obj[key];\r\n\r\n if (Array.isArray(propertyValue)) {\r\n dataItem[property] = propertyValue.map(item => objectToCamelCase(item));\r\n return;\r\n }\r\n\r\n if (propertyValue && typeof propertyValue === 'object') {\r\n dataItem[property] = objectToCamelCase(propertyValue);\r\n return;\r\n }\r\n\r\n dataItem[property] = propertyValue;\r\n });\r\n return dataItem;\r\n};\r\nexport const resultDataToCamelCase = (result) => {\r\n if (Array.isArray(result)) {\r\n return result.map(item => objectToCamelCase(item));\r\n }\r\n return objectToCamelCase(result);\r\n};\r\n\r\nexport const setCookie = (name, value, options) => {\r\n const opts = options || {};\r\n const val = encodeURIComponent(value);\r\n let { expires } = opts;\r\n\r\n if (typeof expires === 'number' && expires) {\r\n const d = new Date();\r\n d.setTime(d.getTime() + expires);\r\n expires = d;\r\n }\r\n if (expires && expires.toUTCString) {\r\n opts.expires = expires.toUTCString();\r\n }\r\n\r\n let updatedCookie = `${name}=${val}`;\r\n\r\n Object.keys(opts).forEach((item) => {\r\n updatedCookie += `; ${item}=${opts[item] !== true ? opts[item] : ''}`;\r\n });\r\n\r\n document.cookie = updatedCookie;\r\n};\r\n\r\nexport const getCookie = (name) => {\r\n const matches = document.cookie.match(new RegExp(`(?:^|; )${name.replace(/([.$?*|{}()[\\]\\\\/+^])/g, '\\\\$1')}=([^;]*)`));\r\n return matches ? decodeURIComponent(matches[1]) : undefined;\r\n};\r\n\r\n/**\r\n * Формирование строки баланса\r\n * @param {number} balance - баланс счета\r\n * @param {string} currency - идентификатор валюты счета\r\n */\r\nexport const getMoneyString = (balance, currency = '') => {\r\n if (balance === undefined || balance === null) {\r\n return '---';\r\n }\r\n const clearCurrency = currency.replace(/\"/g, '');\r\n switch (clearCurrency) {\r\n case '₽':\r\n case 'RUB':\r\n case 'Рубли РФ':\r\n return `${balance.toLocaleString('ru-RU', { style: 'currency', currency: 'RUB' })}`;\r\n\r\n case '€':\r\n case 'EUR':\r\n case 'Евро':\r\n return `${balance.toLocaleString('ru-RU', { style: 'currency', currency: 'EUR' })}`;\r\n\r\n case '$':\r\n case 'USD':\r\n case 'Доллары США':\r\n return `${balance.toLocaleString('ru-RU', { style: 'currency', currency: 'USD' })}`;\r\n\r\n default:\r\n return `${balance.toLocaleString('ru-RU', { style: 'currency', currency: 'RUB' })}`;\r\n }\r\n};\r\n\r\nexport const getAccountLabel = account =>\r\n `\"${account.title}\", ${getMoneyString(account.balance, account.currency)}`;\r\nexport const getAccountLabelTransfer = account =>\r\n `\"${account.accountName}\", ${getMoneyString(\r\n account.sum || account.balance,\r\n account.currencyName,\r\n )}`;\r\n\r\nexport const checkAuth = (callback) => {\r\n let timer = null;\r\n const intreval = 1000 * 5;\r\n const tick = () => {\r\n if (callback()) {\r\n timer = setTimeout(tick, intreval);\r\n }\r\n timer = null;\r\n };\r\n timer = setTimeout(tick, intreval);\r\n return timer;\r\n};\r\n\r\nexport const EMAIL_REGEX = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\nexport const PHONE_REGEX = /^((8|\\+7)[- ]?)?(\\(?\\d{3}\\)?[- ]?)?[\\d\\- ]{7,10}$/;\r\n\r\nexport const setDocumentTitle = (path) => {\r\n switch (path) {\r\n case '/login':\r\n document.title = 'Личный кабинет пайщика';\r\n break;\r\n\r\n default:\r\n document.title = 'Etest';\r\n break;\r\n }\r\n};\r\n\r\nexport const getDateString = (date) => {\r\n if (moment(date).isValid()) {\r\n return moment(date).format(DATE_FORMAT);\r\n }\r\n\r\n return '---';\r\n};\r\n\r\nexport const getDateTimeString = (date) => {\r\n if (moment(date).isValid()) {\r\n return moment(date).format(DATE_TIME_FORMAT);\r\n }\r\n\r\n return '---';\r\n};\r\n\r\n/**\r\n * @param {number} number количество\r\n * @param {Array} titles массив\r\n * существительных по склонениям\r\n * @example declOfNum(1, ['яблоко, яблока, яблок']) -> 'яблоко'\r\n * @example declOfNum(2, ['яблоко, яблока, яблок']) -> 'яблока'\r\n * @example declOfNum(5, ['яблоко, яблока, яблок']) -> 'яблок'\r\n */\r\nexport const declOfNum = (number, titles) => {\r\n const cases = [2, 0, 1, 1, 1, 2];\r\n return titles[\r\n number % 100 > 4 && number % 100 < 20 ? 2 : cases[number % 10 < 5 ? number % 10 : 5]\r\n ];\r\n};\r\n\r\nexport const getCurrencyTitle = (currency) => {\r\n switch (currency) {\r\n case 'RUB':\r\n case 'RUR':\r\n return 'Рубль РФ';\r\n\r\n case 'EUR':\r\n return 'Евро';\r\n\r\n case 'USD':\r\n return 'Доллар США';\r\n\r\n default:\r\n return currency;\r\n }\r\n};\r\n","import { getCookie } from '../../../utils';\r\nimport { SUCCESS_RESET_PARAM } from '../../../constants';\r\n\r\nconst initialState = {\r\n title: 'MFond',\r\n isAuthenticated: !!getCookie('access_token') || false,\r\n authError: null,\r\n fetching: false,\r\n userFetching: false,\r\n user: {\r\n address: null,\r\n birthday: null,\r\n email: null,\r\n number: null,\r\n phone: null,\r\n name: null,\r\n login: null,\r\n phoneCountryId: null,\r\n phoneNumber: null,\r\n },\r\n userError: null,\r\n sessionExpired: false,\r\n settingsError: null,\r\n settingsChanged: false,\r\n showRecoveryForm: false,\r\n recoveryBySms: false,\r\n recoverySuccess: false,\r\n recoveryError: null,\r\n recoveryCodeError: null,\r\n isTempPassword: false,\r\n tempPasswordError: null,\r\n userSettingsSaved: false,\r\n globalExchangeRates: [],\r\n globalExchangeRatesFetching: false,\r\n globalExchangeRatesError: null,\r\n limitInfo: {\r\n IsActivated: false,\r\n IsAccepted: false,\r\n Description: '',\r\n },\r\n countries: [],\r\n};\r\n\r\nconst appReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'AUTH_SUCCESS':\r\n return {\r\n ...state,\r\n isTempPassword: action.payload || true,\r\n isAuthenticated: true,\r\n fetching: false,\r\n sessionExpired: false,\r\n settingsChanged: false,\r\n userError: null,\r\n settingsError: null,\r\n };\r\n\r\n case 'AUTH_FAIL':\r\n return {\r\n ...state,\r\n authError: action.payload,\r\n isAuthenticated: false,\r\n fetching: false,\r\n };\r\n\r\n case 'FETCH_START':\r\n return {\r\n ...state,\r\n fetching: true,\r\n };\r\n\r\n case 'FETCH_STOP':\r\n return {\r\n ...state,\r\n fetching: false,\r\n };\r\n\r\n case 'USER_FETCH_START':\r\n return {\r\n ...state,\r\n userFetching: true,\r\n };\r\n\r\n case 'USER_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n user: action.payload,\r\n userFetching: false,\r\n userError: null,\r\n settingsChanged: false,\r\n };\r\n\r\n case 'USER_FETCH_ERROR':\r\n return {\r\n ...state,\r\n userError: action.payload,\r\n };\r\n\r\n case 'SESSION_WAS_EXPIRED':\r\n return {\r\n ...state,\r\n sessionExpired: true,\r\n };\r\n\r\n case 'USER_SETTINGS_FAIL':\r\n return {\r\n ...state,\r\n settingsError: action.payload,\r\n settingsChanged: false,\r\n };\r\n\r\n case 'CHANGED_USER_ACCOUNT_SETTINGS':\r\n return {\r\n ...state,\r\n settingsChanged: true,\r\n settingsError: null,\r\n };\r\n\r\n case 'SHOW_RECOVERY_FORM':\r\n return {\r\n ...state,\r\n showRecoveryForm: true,\r\n };\r\n\r\n case 'RECOVERY_PASSWORD_BY_SMS':\r\n return {\r\n ...state,\r\n recoveryBySms: true,\r\n recoveryError: null,\r\n };\r\n\r\n case 'RECOVERY_SUCCESS':\r\n return {\r\n ...state,\r\n recoverySuccess: true,\r\n recoveryError: null,\r\n recoveryCodeError: null,\r\n };\r\n\r\n case 'RECOVERY_DONE':\r\n return {\r\n ...state,\r\n recoverySuccess: false,\r\n showRecoveryForm: false,\r\n recoveryBySms: false,\r\n recoveryError: null,\r\n recoveryCodeError: null,\r\n };\r\n\r\n case 'RECOVERY_BACK_TO_STEP_1':\r\n return {\r\n ...state,\r\n recoverySuccess: false,\r\n recoveryBySms: false,\r\n };\r\n\r\n case 'RECOVERY_PASSWORD_ERROR':\r\n return {\r\n ...state,\r\n recoveryError: action.payload,\r\n };\r\n\r\n case 'RECOVERY_CODE_ERROR':\r\n return {\r\n ...state,\r\n recoveryCodeError: action.payload,\r\n };\r\n\r\n case 'CHANGE_TEMP_PASSWORD':\r\n return {\r\n ...state,\r\n isTempPassword: false,\r\n tempPasswordError: null,\r\n };\r\n\r\n case 'CHANGE_TEMP_PASSWORD_ERROR':\r\n return {\r\n ...state,\r\n tempPasswordError: action.payload,\r\n };\r\n\r\n case 'USER_SETTINGS_SAVED':\r\n return {\r\n ...state,\r\n userSettingsSaved: true,\r\n };\r\n\r\n case 'USER_SETTINGS_NOT_SAVED':\r\n return {\r\n ...state,\r\n userSettingsSaved: false,\r\n };\r\n\r\n case 'SESSION_WAS_EXTENDED':\r\n return {\r\n ...state,\r\n sessionExpired: false,\r\n };\r\n\r\n case 'RESET_ERRORS':\r\n return {\r\n ...state,\r\n recoveryError: null,\r\n recoveryCodeError: null,\r\n };\r\n\r\n case 'LOGOUT':\r\n return {\r\n ...initialState,\r\n isAuthenticated: false,\r\n };\r\n\r\n case '@@router/LOCATION_CHANGE':\r\n if (action.payload.pathname === '/' && action.payload.search === SUCCESS_RESET_PARAM) {\r\n return {\r\n ...state,\r\n recoverySuccess: true,\r\n showRecoveryForm: true,\r\n recoveryBySms: true,\r\n recoveryError: null,\r\n recoveryCodeError: null,\r\n };\r\n }\r\n\r\n return state;\r\n\r\n case 'GLOBAL_EXCHANGE_RATE_FETCH_START':\r\n return {\r\n ...state,\r\n globalExchangeRatesFetching: true,\r\n globalExchangeRatesError: initialState.globalExchangeRatesError,\r\n };\r\n\r\n case 'GLOBAL_EXCHANGE_RATE_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n globalExchangeRates: action.payload,\r\n globalExchangeRatesError: initialState.globalExchangeRatesError,\r\n globalExchangeRatesFetching: false,\r\n };\r\n\r\n case 'GLOBAL_EXCHANGE_RATE_FETCH_FAIL':\r\n return {\r\n ...state,\r\n globalExchangeRatesError: action.payload,\r\n globalExchangeRatesFetching: false,\r\n };\r\n\r\n case 'CHECK_LIMIT_INFO_SUCCESS':\r\n return {\r\n ...state,\r\n limitInfo: {\r\n ...state.limitInfo,\r\n ...action.payload,\r\n },\r\n };\r\n\r\n case 'GET_COUNTRIES_SUCCESS':\r\n return {\r\n ...state,\r\n countries: action.payload,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default appReducer;\r\n","const initialState = {\r\n accountsFetching: false,\r\n detailsFetching: false,\r\n accounts: {\r\n current: [],\r\n shares: [],\r\n salary: [],\r\n deposit: [],\r\n loan: [],\r\n raising: [],\r\n details: null,\r\n },\r\n accountsError: null,\r\n accountsFilters: {\r\n type: 'current',\r\n accountId: null,\r\n dateStart: null,\r\n dateEnd: null,\r\n minDate: null,\r\n maxDate: null,\r\n },\r\n details: {\r\n account: null,\r\n balance: null,\r\n operations: [],\r\n shedule: [],\r\n sheduleCount: 0,\r\n },\r\n};\r\n\r\nconst accountsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'ACCOUNTS_FETCH_START':\r\n return {\r\n ...state,\r\n accountsFetching: true,\r\n accountsError: initialState.accountsError,\r\n };\r\n\r\n case 'ACCOUNT_DETAILS_FETCH_START':\r\n return {\r\n ...state,\r\n detailsFetching: true,\r\n };\r\n\r\n case 'ACCOUNTS_FETCH_FAIL':\r\n return {\r\n ...state,\r\n accountsFetching: false,\r\n accountsError: action.payload,\r\n };\r\n\r\n case 'ACCOUNT_DETAILS_FETCH_FAIL':\r\n return {\r\n ...state,\r\n detailsFetching: false,\r\n };\r\n\r\n case 'ACCOUNTS_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n accounts: {\r\n ...state.accounts,\r\n [action.payload.accountType]: action.payload.data,\r\n },\r\n accountsFetching: false,\r\n accountsError: initialState.accountsError,\r\n };\r\n\r\n case 'FETCH_FAIL':\r\n return {\r\n ...state,\r\n accountsError: action.payload,\r\n accountsFetching: false,\r\n };\r\n\r\n case 'ACCOUNT_DETAILS_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n details: {\r\n ...state.details,\r\n account: action.payload,\r\n },\r\n detailsFetching: false,\r\n };\r\n\r\n case 'BALANCE_DETAILS_SUCCESS':\r\n return {\r\n ...state,\r\n details: {\r\n ...state.details,\r\n balance: action.payload,\r\n },\r\n };\r\n\r\n case 'SET_ACCOUNT_FILTERS':\r\n return {\r\n ...state,\r\n accountsFilters: {\r\n ...state.accountsFilters,\r\n ...action.payload,\r\n },\r\n };\r\n\r\n case 'OPERATIONS_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n details: {\r\n ...state.details,\r\n operations: action.payload.operations,\r\n operationsCount: action.payload.count,\r\n },\r\n };\r\n\r\n case 'CLEAR_ACCOUNT_DETAILS':\r\n return {\r\n ...state,\r\n details: initialState.details,\r\n };\r\n\r\n case 'SHEDULE_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n details: {\r\n ...state.details,\r\n shedule: action.payload.shedule,\r\n sheduleCount: action.payload.sheduleCount,\r\n },\r\n };\r\n\r\n case 'RESET_DETAILS_AND_FILTERS':\r\n return {\r\n ...state,\r\n details: initialState.details,\r\n accountsFilters: initialState.accountsFilters,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default accountsReducer;\r\n","const initialState = {\r\n fetching: false,\r\n transferCodeError: null,\r\n fetchError: null,\r\n};\r\n\r\nconst transfersReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'transfer/FETCH_START':\r\n return {\r\n ...state,\r\n fetching: true,\r\n fetchError: null,\r\n };\r\n\r\n case 'transfer/FETCH_STOP':\r\n return {\r\n ...state,\r\n fetching: false,\r\n };\r\n\r\n case 'transfer/FETCH_FAIL':\r\n return {\r\n ...state,\r\n fetchError: action.payload,\r\n };\r\n\r\n case 'RE_FETCH_CODE_FAIL':\r\n case 'TRANSFER_CONFIRM_CODE_FAIL':\r\n return {\r\n ...state,\r\n transferCodeError: action.payload,\r\n };\r\n\r\n case 'CONFIRM_CODE_SUCCESS':\r\n case 'RE_FETCH_CODE_SUCCESS':\r\n case 'CANCEL_TRANSFER':\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default transfersReducer;\r\n","const initialState = {\r\n accounts: [],\r\n loanAccount: null,\r\n debitAccount: null,\r\n transferSum: 0,\r\n shedule: [],\r\n transferFormError: null,\r\n sheduleError: null,\r\n};\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'loanTransfer/ACCOUNTS_LOADED':\r\n return {\r\n ...state,\r\n accounts: action.payload,\r\n transferFormError: null,\r\n };\r\n\r\n\r\n case 'loanTransfer/ACCOUNTS_LOADING_FAIL':\r\n return {\r\n ...state,\r\n transferFormError: action.payload,\r\n };\r\n\r\n case 'loanTransfer/CHANGE_ACCOUNT_LOAN':\r\n return {\r\n ...state,\r\n loanAccount: action.payload,\r\n debitAccount: initialState.debitAccount,\r\n transferSum: initialState.transferSum,\r\n transferFormError: initialState.transferFormError,\r\n shedule: initialState.shedule,\r\n };\r\n\r\n case 'loanTransfer/CHANGE_ACCOUNT_DEBIT':\r\n return {\r\n ...state,\r\n debitAccount: action.payload,\r\n transferSum: initialState.transferSum,\r\n transferFormError: initialState.transferFormError,\r\n shedule: initialState.shedule,\r\n };\r\n\r\n case 'loanTransfer/SET_TRANSFER_SUM':\r\n return {\r\n ...state,\r\n transferSum: action.payload,\r\n transferFormError: initialState.transferFormError,\r\n };\r\n\r\n case 'loanTransfer/SCHEDULE_SUCCESS':\r\n return {\r\n ...state,\r\n shedule: action.payload,\r\n transferFormError: initialState.transferFormError,\r\n sheduleError: initialState.sheduleError,\r\n };\r\n\r\n case 'loanTransfer/SCHEDULE_FAIL':\r\n return {\r\n ...state,\r\n shedule: initialState.shedule,\r\n sheduleError: action.payload,\r\n };\r\n\r\n case 'loanTransfer/SUBMIT_FORM_FAIL':\r\n return {\r\n ...state,\r\n transferFormError: action.payload,\r\n };\r\n\r\n case 'loanTransfer/CLEAR_SCHEDULE':\r\n return {\r\n ...state,\r\n shedule: initialState.shedule,\r\n transferFormError: initialState.transferFormError,\r\n sheduleError: initialState.sheduleError,\r\n };\r\n\r\n case 'CANCEL_TRANSFER':\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","const initialState = {\r\n accounts: [],\r\n accountFrom: null,\r\n accountTo: null,\r\n transferSum: 0,\r\n};\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'innertTransfer/ACCOUNTS_LOADED':\r\n return {\r\n ...state,\r\n accounts: action.payload,\r\n };\r\n\r\n case 'innertTransfer/CHANGE_FROM_ACCOUNT':\r\n return {\r\n ...state,\r\n accountFrom: action.payload,\r\n transferSum: 0,\r\n };\r\n\r\n case 'innertTransfer/CHANGE_TO_ACCOUNT':\r\n return {\r\n ...state,\r\n accountTo: action.payload,\r\n };\r\n\r\n case 'innertTransfer/CHANGE_TRANSFER_SUM':\r\n return {\r\n ...state,\r\n transferSum: action.payload,\r\n };\r\n\r\n case 'CANCEL_TRANSFER':\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","const initialState = {\r\n accounts: [],\r\n accountFrom: null,\r\n accountTo: null,\r\n transferSum: 0,\r\n};\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'partnerTransfer/ACCOUNTS_LOADED':\r\n return {\r\n ...state,\r\n accounts: action.payload,\r\n };\r\n\r\n case 'partnerTransfer/CHANGE_FROM_ACCOUNT':\r\n return {\r\n ...state,\r\n accountFrom: action.payload,\r\n transferSum: 0,\r\n };\r\n\r\n case 'partnerTransfer/CHANGE_TO_ACCOUNT':\r\n return {\r\n ...state,\r\n accountTo: action.payload,\r\n };\r\n\r\n case 'partnerTransfer/CHANGE_TRANSFER_SUM':\r\n return {\r\n ...state,\r\n transferSum: action.payload,\r\n };\r\n\r\n case 'CANCEL_TRANSFER':\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","const initialState = {\r\n accounts: [],\r\n accountFrom: null,\r\n transferSum: 0,\r\n accountsLoadingError: null,\r\n transferFormError: null,\r\n};\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'salaryTransfer/ACCOUNTS_LOADED_SUCCESS':\r\n return {\r\n ...state,\r\n accounts: action.payload,\r\n };\r\n\r\n case 'salaryTransfer/ACCOUNTS_LOADED_FAIL':\r\n return {\r\n ...state,\r\n accountsLoadingError: action.payload,\r\n };\r\n\r\n case 'salaryTransfer/CHANGE_ACCOUNT':\r\n return {\r\n ...state,\r\n accountFrom: action.payload,\r\n transferSum: 0,\r\n };\r\n\r\n case 'salaryTransfer/SET_TRANSFER_SUM':\r\n return {\r\n ...state,\r\n transferSum: action.payload,\r\n };\r\n\r\n case 'salaryTransfer/SUBMIT_FORM_FAIL':\r\n return {\r\n ...state,\r\n transferFormError: action.payload,\r\n };\r\n\r\n case 'CANCEL_TRANSFER':\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","const initialState = {\r\n accounts: [],\r\n depositAccountId: null,\r\n debitAccountId: null,\r\n accountsLoadingError: null,\r\n transferFormError: null,\r\n transferSum: 0,\r\n incomeAfterRefill: null,\r\n incomeFetching: false,\r\n incomeError: null,\r\n};\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'depositTransfer/ACCOUNTS_LOADED':\r\n return {\r\n ...initialState,\r\n accounts: action.payload,\r\n transferFormError: initialState.transferFormError,\r\n };\r\n\r\n case 'depositTransfer/ACCOUNTS_LOADING_FAIL':\r\n return {\r\n ...initialState,\r\n transferFormError: action.payload,\r\n };\r\n\r\n case 'depositTransfer/SET_ACCOUNT':\r\n return {\r\n ...state,\r\n transferFormError: initialState.transferFormError,\r\n transferSum: initialState.transferSum,\r\n incomeFetching: initialState.incomeFetching,\r\n incomeAfterRefill: initialState.incomeAfterRefill,\r\n incomeError: initialState.incomeError,\r\n ...action.payload,\r\n };\r\n\r\n case 'depositTransfer/SET_TRANSFER_SUM':\r\n return {\r\n ...state,\r\n transferFormError: initialState.transferFormError,\r\n transferSum: action.payload,\r\n };\r\n\r\n case 'depositTransfer/SUBMIT_FORM_FAIL':\r\n return {\r\n ...state,\r\n transferFormError: action.payload,\r\n };\r\n\r\n case 'depositTransfer/INCOME_LOAD_START':\r\n return {\r\n ...state,\r\n incomeFetching: true,\r\n incomeError: initialState.incomeError,\r\n };\r\n\r\n case 'depositTransfer/INCOME_LOAD_SUCCESS':\r\n return {\r\n ...state,\r\n incomeFetching: false,\r\n incomeAfterRefill: action.payload,\r\n incomeError: initialState.incomeError,\r\n };\r\n\r\n case 'depositTransfer/INCOME_LOAD_FAIL':\r\n return {\r\n ...state,\r\n incomeFetching: false,\r\n incomeAfterRefill: initialState.incomeAfterRefill,\r\n incomeError: action.payload,\r\n };\r\n\r\n case 'CANCEL_TRANSFER':\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","const initialState = {\r\n accounts: [],\r\n accountFrom: null,\r\n accountTo: null,\r\n transferSum: 0,\r\n accountsLoadingError: null,\r\n transferFormError: null,\r\n};\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'currencyTransfer/ACCOUNTS_LOADED_SUCCESS':\r\n return {\r\n ...state,\r\n accounts: action.payload,\r\n };\r\n\r\n case 'currencyTransfer/ACCOUNTS_LOADED_FAIL':\r\n return {\r\n ...state,\r\n accountsLoadingError: action.payload,\r\n };\r\n\r\n case 'currencyTransfer/CHANGE_ACCOUNT': {\r\n if (action.payload.direction === 'from') {\r\n return {\r\n ...state,\r\n accountFrom: action.payload.id,\r\n accountTo: initialState.accountTo,\r\n transferSum: 0,\r\n };\r\n }\r\n\r\n return {\r\n ...state,\r\n accountTo: action.payload.id,\r\n transferSum: 0,\r\n };\r\n }\r\n\r\n case 'currencyTransfer/SET_TRANSFER_SUM':\r\n return {\r\n ...state,\r\n transferSum: action.payload,\r\n };\r\n\r\n case 'currencyTransfer/SUBMIT_FORM_FAIL':\r\n return {\r\n ...state,\r\n transferFormError: action.payload,\r\n };\r\n\r\n case 'CANCEL_TRANSFER':\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","const initialState = {\r\n applications: [],\r\n applicationsCount: 0,\r\n error: null,\r\n fetching: false,\r\n currentPage: 1,\r\n requestFetching: false,\r\n requestData: null,\r\n accountForFilter: [],\r\n accountsFetching: false,\r\n cancelInProgress: false,\r\n};\r\n\r\nconst applicationsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'REQUESTS_FETCH_START':\r\n return {\r\n ...state,\r\n fetching: true,\r\n };\r\n\r\n case 'REQUESTS_FETCH_STOP':\r\n return {\r\n ...state,\r\n fetching: false,\r\n };\r\n\r\n case 'REQUESTS_FETCH_START_SUCCESS':\r\n return {\r\n ...state,\r\n applications: action.payload.applications,\r\n applicationsCount: action.payload.count,\r\n currentPage: action.payload.currentPage,\r\n error: initialState.error,\r\n };\r\n\r\n case 'REQUESTS_FETCH_START_FAIL':\r\n return {\r\n ...state,\r\n error: action.payload,\r\n };\r\n\r\n case 'REQUEST_FETCH_START':\r\n return {\r\n ...state,\r\n requestFetching: true,\r\n };\r\n\r\n case 'REQUEST_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n requestFetching: false,\r\n requestData: action.payload,\r\n };\r\n\r\n case 'REQUEST_FETCH_FAIL':\r\n return {\r\n ...state,\r\n requestFetching: false,\r\n requestData: initialState.requestData,\r\n };\r\n\r\n case 'CLEAR_REQUEST':\r\n return {\r\n ...state,\r\n requestData: initialState.requestData,\r\n };\r\n\r\n case 'requestFilter/ACCOUNTS_FETCH_START':\r\n return {\r\n ...state,\r\n accountsFetching: true,\r\n };\r\n\r\n case 'requestFilter/ACCOUNTS_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n accountForFilter: action.payload,\r\n accountsFetching: false,\r\n };\r\n\r\n case 'requestFilter/ACCOUNTS_FETCH_FAIL':\r\n return {\r\n ...state,\r\n accountsFetching: false,\r\n };\r\n\r\n case 'REQUEST_CANCEL_START':\r\n return {\r\n ...state,\r\n cancelInProgress: true,\r\n };\r\n\r\n case 'REQUEST_CANCEL_SUCCESS':\r\n return {\r\n ...state,\r\n cancelInProgress: false,\r\n };\r\n\r\n case 'REQUEST_CANCEL_FAIL':\r\n return {\r\n ...state,\r\n cancelInProgress: false,\r\n };\r\n\r\n default:\r\n return {\r\n ...state,\r\n };\r\n }\r\n};\r\n\r\nexport default applicationsReducer;\r\n","const initialState = {\r\n depositIncome: 0,\r\n depositIncomeError: null,\r\n loanShedule: [],\r\n loanSheduleError: null,\r\n loanMonthlyPayment: 0,\r\n fetching: false,\r\n requestError: null,\r\n};\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'applications/FETCH_START':\r\n return {\r\n ...state,\r\n fetching: true,\r\n depositIncomeError: initialState.depositIncomeError,\r\n loanSheduleError: initialState.loanSheduleError,\r\n };\r\n\r\n case 'applications/FETCH_STOP':\r\n return {\r\n ...state,\r\n fetching: false,\r\n };\r\n\r\n case 'applications/DEPOSIT_INCOME_LOAD_SUCCESS':\r\n return {\r\n ...state,\r\n depositIncome: action.payload,\r\n depositIncomeError: initialState.depositIncomeError,\r\n requestError: initialState.requestError,\r\n };\r\n\r\n case 'applications/DEPOSIT_INCOME_LOAD_FAIL':\r\n return {\r\n ...state,\r\n depositIncomeError: action.payload,\r\n depositIncome: 0,\r\n };\r\n\r\n case 'applications/SCHEDULE_LOAD_SUCCESS': {\r\n let loanMonthlyPayment;\r\n if (action.payload.billLoanPlanCalendarPeriods[1]) {\r\n loanMonthlyPayment = action.payload.billLoanPlanCalendarPeriods[1].monthlyPayment || 0;\r\n } else {\r\n loanMonthlyPayment = 0;\r\n }\r\n\r\n\r\n return {\r\n ...state,\r\n loanShedule: action.payload.billLoanPlanCalendarPeriods.map(item => ({\r\n ...item,\r\n sum: item.monthlyPayment,\r\n date: item.startDate,\r\n })),\r\n loanMonthlyPayment,\r\n loanSheduleError: initialState.loanSheduleError,\r\n requestError: initialState.requestError,\r\n };\r\n }\r\n\r\n case 'applications/SCHEDULE_LOAD_FAIL':\r\n return {\r\n ...state,\r\n loanShedule: initialState.loanShedule,\r\n loanMonthlyPayment: initialState.loanMonthlyPayment,\r\n loanSheduleError: action.payload,\r\n };\r\n\r\n case 'applications/REQUEST_FAIL':\r\n return {\r\n ...state,\r\n requestError: action.payload,\r\n };\r\n\r\n case 'applications/RESET_FORM_DATA':\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","const initialState = {\r\n news: [],\r\n newsFetching: false,\r\n newsFetchError: null,\r\n};\r\n\r\n\r\nconst newsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'NEWS_FETCH_START':\r\n return {\r\n ...state,\r\n newsFetching: true,\r\n newsFetchError: null,\r\n };\r\n\r\n case 'NEWS_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n news: action.payload.publications || [],\r\n newsFetching: false,\r\n newsFetchError: null,\r\n };\r\n\r\n case 'NEWS_FETCH_FAIL':\r\n return {\r\n ...state,\r\n newsFetching: false,\r\n newsFetchError: action.payload,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default newsReducer;\r\n","import {\r\n DASHBOARD_FETCH_ACCOUNTS_SUCCESS,\r\n DASHBOARD_FETCH_ACCOUNTS_REQUEST,\r\n DASHBOARD_FETCH_ACCOUNTS_FAILURE,\r\n DASHBOARD_FETCH_LAST_OPERATIONS_REQUEST,\r\n DASHBOARD_FETCH_LAST_OPERATIONS_SUCCESS,\r\n DASHBOARD_FETCH_LAST_OPERATIONS_FAILURE,\r\n} from '../constants';\r\n\r\nconst initialState = {\r\n accounts: {\r\n data: {},\r\n loading: false,\r\n error: null,\r\n },\r\n lastOperations: {\r\n data: {},\r\n loading: false,\r\n error: null,\r\n },\r\n};\r\n\r\n\r\nconst dashboardReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case DASHBOARD_FETCH_ACCOUNTS_REQUEST:\r\n return {\r\n ...state,\r\n accounts: {\r\n data: {},\r\n loading: true,\r\n error: null,\r\n },\r\n };\r\n case DASHBOARD_FETCH_ACCOUNTS_SUCCESS:\r\n return {\r\n ...state,\r\n accounts: {\r\n data: action.payload,\r\n loading: false,\r\n error: null,\r\n },\r\n };\r\n case DASHBOARD_FETCH_ACCOUNTS_FAILURE:\r\n return {\r\n ...state,\r\n accounts: {\r\n data: {},\r\n loading: true,\r\n error: action.payload,\r\n },\r\n };\r\n case DASHBOARD_FETCH_LAST_OPERATIONS_REQUEST:\r\n return {\r\n ...state,\r\n lastOperations: {\r\n data: {},\r\n loading: true,\r\n error: null,\r\n },\r\n };\r\n case DASHBOARD_FETCH_LAST_OPERATIONS_SUCCESS:\r\n return {\r\n ...state,\r\n lastOperations: {\r\n data: action.payload,\r\n loading: false,\r\n error: null,\r\n },\r\n };\r\n case DASHBOARD_FETCH_LAST_OPERATIONS_FAILURE:\r\n return {\r\n ...state,\r\n lastOperations: {\r\n data: {},\r\n loading: true,\r\n error: action.payload,\r\n },\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default dashboardReducer;\r\n","export const DASHBOARD_FETCH_ACCOUNTS_REQUEST = '@@DASHBOARD/FETCH_ACCOUNTS_REQUEST';\r\nexport const DASHBOARD_FETCH_ACCOUNTS_SUCCESS = '@@DASHBOARD/FETCH_ACCOUNTS_SUCCESS';\r\nexport const DASHBOARD_FETCH_ACCOUNTS_FAILURE = '@@DASHBOARD/FETCH_ACCOUNTS_FAILURE';\r\n\r\nexport const DASHBOARD_FETCH_LAST_OPERATIONS_REQUEST = '@@DASHBOARD/FETCH_LAST_OPERATIONS_REQUEST';\r\nexport const DASHBOARD_FETCH_LAST_OPERATIONS_SUCCESS = '@@DASHBOARD/FETCH_LAST_OPERATIONS_SUCCESS';\r\nexport const DASHBOARD_FETCH_LAST_OPERATIONS_FAILURE = '@@DASHBOARD/FETCH_LAST_OPERATIONS_FAILURE';\r\n","const initialState = {\r\n notices: [],\r\n noticesNew: [],\r\n sorting: 'desc',\r\n notice: null,\r\n count: 0,\r\n countNew: 0,\r\n singleNoticeError: null,\r\n noticeFetching: false,\r\n noticesFetching: false,\r\n};\r\n\r\nconst noticesReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'NOTICES_FETCH_START':\r\n return {\r\n ...state,\r\n noticesFetching: true,\r\n };\r\n\r\n case 'NOTICES_FETCH_FAIL':\r\n return {\r\n ...state,\r\n noticesFetching: false,\r\n };\r\n\r\n case 'NOTICES_FETCH_SUCCESS':\r\n return {\r\n ...state,\r\n ...action.payload,\r\n noticesFetching: false,\r\n };\r\n\r\n case 'CHANGE_SORTING':\r\n return {\r\n ...state,\r\n sorting: state.sorting === 'asc' ? 'desc' : 'asc',\r\n };\r\n\r\n case 'GET_NOTICE_START':\r\n return {\r\n ...state,\r\n noticeFetching: true,\r\n };\r\n\r\n case 'GET_NOTICE_SUCCESS':\r\n return {\r\n ...state,\r\n notice: action.payload,\r\n singleNoticeError: initialState.singleNoticeError,\r\n noticeFetching: false,\r\n };\r\n\r\n case 'GET_NOTICE_FAIL':\r\n return {\r\n ...state,\r\n singleNoticeError: action.payload,\r\n noticeFetching: false,\r\n };\r\n\r\n case 'HIDE_NOTICE':\r\n return {\r\n ...state,\r\n noticesNew: state.noticesNew.filter(item => item.id !== action.payload),\r\n };\r\n\r\n default:\r\n return {\r\n ...state,\r\n };\r\n }\r\n};\r\n\r\nexport default noticesReducer;\r\n","import { combineReducers } from 'redux';\r\nimport { routerReducer } from 'react-router-redux';\r\nimport appReducer from '../modules/App/reducers';\r\nimport accountsReducer from '../modules/Accounts/reducers';\r\nimport transfersReducer from '../modules/Transfers/reducers';\r\nimport transfersReducerLoan from '../modules/Transfers/reducers/loanTransfes';\r\nimport transfersReducerInner from '../modules/Transfers/reducers/innerTransfer';\r\nimport transfersReducerPartner from '../modules/Transfers/reducers/partnerTransfer';\r\nimport transfersReducerSalary from '../modules/Transfers/reducers/salaryTransfer';\r\nimport transfersReducerDeposit from '../modules/Transfers/reducers/depositTransfer';\r\nimport transfersReducerCurrency from '../modules/Transfers/reducers/currencyTransfer';\r\nimport applicationsReducer from '../modules/Applications/reducers';\r\nimport applicationsFormsReducer from '../modules/Applications/reducers/forms';\r\nimport newsReducer from '../modules/News/reducers';\r\nimport dashboardReducer from '../modules/Dashboard/reducers';\r\nimport noticesReducer from '../modules/Notices/reducers';\r\n\r\nconst rootReducer = combineReducers({\r\n appReducer,\r\n accountsReducer,\r\n transfersReducer,\r\n transfersReducerLoan,\r\n transfersReducerInner,\r\n transfersReducerPartner,\r\n transfersReducerSalary,\r\n transfersReducerDeposit,\r\n transfersReducerCurrency,\r\n applicationsReducer,\r\n applicationsFormsReducer,\r\n noticesReducer,\r\n newsReducer,\r\n dashboardReducer,\r\n router: routerReducer,\r\n});\r\n\r\nexport default rootReducer;\r\n","import { createStore, applyMiddleware, compose } from 'redux';\r\nimport { routerMiddleware } from 'react-router-redux';\r\nimport createHistory from 'history/createBrowserHistory';\r\nimport thunkMiddleware from 'redux-thunk';\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { createLogger } from 'redux-logger';\r\nimport PromiseHelper from '../utils/PromiseHelper';\r\n\r\nimport rootReducer from '../rootReducer';\r\n\r\nconst loggerMiddleware = createLogger();\r\n\r\nexport const history = createHistory();\r\n\r\nconst middlewares = [\r\n routerMiddleware(history),\r\n thunkMiddleware.withExtraArgument(new PromiseHelper()),\r\n];\r\n\r\nif (process.env.NODE_ENV === 'development') {\r\n middlewares.push(loggerMiddleware);\r\n}\r\n// eslint-disable-next-line no-underscore-dangle\r\n// const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n// // eslint-disable-next-line no-undef,function-paren-newline,max-len\r\n// export const configureStore = preloadedState => createStore(rootReducer, preloadedState, composeEnhancers(\r\n// // eslint-disable-next-line no-undef\r\n// applyMiddleware(...middlewares)));\r\nexport const configureStore = preloadedState =>\r\n createStore(rootReducer, preloadedState, applyMiddleware(...middlewares));\r\n","import {\r\n resultDataToCamelCase,\r\n getCookie,\r\n} from '../../../utils';\r\nimport { BASE_API_URL } from '../../../constants';\r\n\r\n\r\nexport const getNotices = (sorting, section, { limit, page }) => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token) {\r\n return;\r\n }\r\n\r\n const urlBase = `${BASE_API_URL}/notices${section === 'new' ? '/new' : ''}`;\r\n const offset = ((page - 1) * limit) + 1;\r\n const url = `${urlBase}?ordering=${sorting}&limit=${limit}&offset=${offset}`;\r\n\r\n dispatch({\r\n type: 'NOTICES_FETCH_START',\r\n });\r\n\r\n fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then((json) => {\r\n const result = resultDataToCamelCase(json);\r\n if (section === 'new') {\r\n dispatch({\r\n type: 'NOTICES_FETCH_SUCCESS',\r\n payload: {\r\n countNew: result.count,\r\n noticesNew: resultDataToCamelCase(result.notices),\r\n },\r\n });\r\n } else {\r\n dispatch({\r\n type: 'NOTICES_FETCH_SUCCESS',\r\n payload: {\r\n count: result.count,\r\n notices: resultDataToCamelCase(result.notices),\r\n },\r\n });\r\n }\r\n })\r\n .catch(error => dispatch({\r\n type: 'NOTICES_FETCH_FAIL',\r\n payload: error.message,\r\n }));\r\n};\r\n\r\nexport const changeSorting = () => ({\r\n type: 'CHANGE_SORTING',\r\n});\r\n\r\nexport const getNotice = id => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !id) {\r\n return;\r\n }\r\n\r\n dispatch({ type: 'GET_NOTICE_START' });\r\n fetch(`${BASE_API_URL}/notices/${id}`, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(json => dispatch({\r\n type: 'GET_NOTICE_SUCCESS',\r\n payload: resultDataToCamelCase(json),\r\n }))\r\n .catch(error => dispatch({\r\n type: 'GET_NOTICE_FAIL',\r\n payload: error.message,\r\n }));\r\n};\r\n\r\nexport const noticeHide = id => (dispatch) => {\r\n const token = getCookie('access_token');\r\n fetch(`${BASE_API_URL}/notices/hide/${id}`, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n }).then((response) => {\r\n if (response.ok) {\r\n return dispatch({\r\n type: 'HIDE_NOTICE',\r\n payload: id,\r\n });\r\n }\r\n /** Если не ОК, рэйзим ошибку из ответа с сервака */\r\n return response.json().then((json) => {\r\n throw new Error(resultDataToCamelCase(json).message);\r\n });\r\n }).catch(error => console.warn(error));\r\n};\r\n\r\n","import { getCookie, resultDataToCamelCase } from '../../../utils';\r\nimport PromiseHelper from '../../../utils/PromiseHelper';\r\nimport { BASE_API_URL } from '../../../constants';\r\n\r\nconst promiseHelper = new PromiseHelper();\r\n\r\nexport interface TokenSet {\r\n access_token: string;\r\n expires_in: string;\r\n refresh_token: string;\r\n}\r\n\r\nexport interface DefaultResponseWithError {\r\n message?: string;\r\n}\r\n\r\nexport async function refreshToken() {\r\n const token = getCookie('refresh_token');\r\n\r\n if (!token) {\r\n throw Error('refreshToken is required');\r\n }\r\n\r\n const request = () => fetch(`${BASE_API_URL}/user/token?refreshToken=${token}`);\r\n\r\n try {\r\n const response = await promiseHelper.request(request(), 'refreshToken', 1000);\r\n const json: TokenSet | DefaultResponseWithError = resultDataToCamelCase(await response.json());\r\n if (response.ok) {\r\n return Promise.resolve(json as TokenSet);\r\n }\r\n\r\n return Promise.reject(json.message);\r\n } catch (error) {\r\n Promise.reject(error);\r\n }\r\n}\r\n","import { push } from 'react-router-redux';\r\nimport { BASE_API_URL } from '../../../constants';\r\nimport {\r\n resultDataToCamelCase,\r\n setCookie,\r\n getCookie,\r\n} from '../../../utils';\r\nimport { getNotices } from '../../Notices/actions';\r\nimport * as UserApi from '../api/UserApi.ts';\r\n\r\nconst modulueBaseApi = `${BASE_API_URL}/user`;\r\n\r\nconst authSuccess = isTempPassword => ({\r\n type: 'AUTH_SUCCESS',\r\n payload: isTempPassword,\r\n});\r\n\r\nexport const authFail = error => (dispatch) => {\r\n dispatch({\r\n type: 'AUTH_FAIL',\r\n payload: error,\r\n });\r\n};\r\n\r\nexport const fetchStart = () => ({\r\n type: 'FETCH_START',\r\n});\r\n\r\nexport const fetchStop = () => ({\r\n type: 'FETCH_STOP',\r\n});\r\n\r\nexport const logout = () => (dispatch) => {\r\n const token = getCookie('access_token');\r\n fetch(`${modulueBaseApi}/logout`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n setCookie('access_token', '', {\r\n expires: -1,\r\n path: '/',\r\n });\r\n setCookie('refresh_token', '', {\r\n expires: -1,\r\n path: '/',\r\n });\r\n dispatch({\r\n type: 'LOGOUT',\r\n });\r\n dispatch(push('/'));\r\n};\r\n\r\nexport const extendSession = () => (dispatch) => {\r\n UserApi.refreshToken()\r\n .then((tokenSet) => {\r\n setCookie('access_token', tokenSet.access_token, {\r\n expires: tokenSet.expires_in,\r\n path: '/',\r\n });\r\n setCookie('refresh_token', tokenSet.refresh_token, {\r\n path: '/',\r\n });\r\n dispatch({\r\n type: 'SESSION_WAS_EXTENDED',\r\n });\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n dispatch(logout());\r\n });\r\n};\r\n\r\nexport const getUser = () => async (dispatch, getState, promiseHelper) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || getState().userFetching) {\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: 'USER_FETCH_START',\r\n });\r\n const request = fetch(modulueBaseApi, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n\r\n if (!promiseHelper) {\r\n return;\r\n }\r\n\r\n promiseHelper.request(request, 'getUser', 3000).then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n }).then((json) => {\r\n dispatch({\r\n type: 'USER_FETCH_SUCCESS',\r\n payload: resultDataToCamelCase(json),\r\n });\r\n dispatch(extendSession());\r\n dispatch(getNotices(\r\n 'desc',\r\n 'new',\r\n {\r\n page: 1,\r\n limit: 10,\r\n },\r\n ));\r\n }).catch(() => {});\r\n};\r\n\r\nexport const login = loginData => (dispatch) => {\r\n if (loginData.login.length === 0 || loginData.password.length === 0) {\r\n return;\r\n }\r\n dispatch(fetchStart());\r\n fetch(`${modulueBaseApi}/authorize`, {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n Login: loginData.login,\r\n Password: loginData.password,\r\n }),\r\n headers: {\r\n 'content-type': 'application/json',\r\n },\r\n }).then((response) => {\r\n dispatch(fetchStop());\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n /** Если не ОК, рэйзим ошибку из ответа с сервака */\r\n return response.json().then((json) => {\r\n throw new Error(resultDataToCamelCase(json).message);\r\n });\r\n }).then((json) => {\r\n setCookie('access_token', json.access_token, {\r\n expires: json.expires_in,\r\n path: '/',\r\n });\r\n setCookie('refresh_token', json.refresh_token, {\r\n path: '/',\r\n });\r\n const { isTempPassword } = json;\r\n dispatch(authSuccess(isTempPassword));\r\n if (isTempPassword) {\r\n dispatch(push('/change-password'));\r\n }\r\n }).catch(error => dispatch(authFail(error)));\r\n};\r\n\r\nexport const sessionWasExpired = () => ({\r\n type: 'SESSION_WAS_EXPIRED',\r\n});\r\n\r\nexport const userSettingsFail = data => ({\r\n type: 'USER_SETTINGS_FAIL',\r\n payload: data,\r\n});\r\n\r\nexport const changeUserSettings = data => (dispatch) => {\r\n const userData = data;\r\n const token = getCookie('access_token');\r\n dispatch({\r\n type: 'USER_SETTINGS_NOT_SAVED',\r\n });\r\n\r\n fetch(`${modulueBaseApi}`, {\r\n method: 'POST',\r\n body: JSON.stringify(userData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${token}`,\r\n },\r\n }).then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n /** Если не ОК, рэйзим ошибку из ответа с сервака */\r\n return response.json().then((json) => {\r\n throw new Error(resultDataToCamelCase(json).message);\r\n });\r\n }).then((json) => {\r\n dispatch({\r\n type: 'USER_FETCH_SUCCESS',\r\n payload: resultDataToCamelCase(json),\r\n });\r\n dispatch({\r\n type: 'USER_SETTINGS_SAVED',\r\n });\r\n }).catch(error => dispatch(userSettingsFail(error.message)));\r\n};\r\n\r\nexport const changeUserAccountSettings = data => (dispatch) => {\r\n const userData = data;\r\n const token = getCookie('access_token');\r\n\r\n fetch(`${modulueBaseApi}/auth`, {\r\n method: 'POST',\r\n body: JSON.stringify(userData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${token}`,\r\n },\r\n }).then((response) => {\r\n if (response.ok) {\r\n return dispatch({\r\n type: 'CHANGED_USER_ACCOUNT_SETTINGS',\r\n });\r\n }\r\n\r\n return response.json().then(json => dispatch(userSettingsFail(json)));\r\n }).catch(error => dispatch(userSettingsFail(error.message)));\r\n};\r\n\r\nexport const showRecoveryForm = () => (dispatch) => {\r\n dispatch({\r\n type: 'SHOW_RECOVERY_FORM',\r\n });\r\n dispatch(push('/password-recovery'));\r\n};\r\n\r\nconst recoveryPasswordErrorHandler = error => ({\r\n type: 'RECOVERY_PASSWORD_ERROR',\r\n payload: error,\r\n});\r\n\r\nconst recoveryCodeErrorHandler = error => ({\r\n type: 'RECOVERY_CODE_ERROR',\r\n payload: error,\r\n});\r\n\r\nexport const recoveryPasswordStep1 = data => (dispatch) => {\r\n const recoveryData = {\r\n recoveryInfo: data.user,\r\n type: data.recoveryMethod,\r\n };\r\n dispatch({\r\n type: 'RESET_ERRORS',\r\n });\r\n dispatch(fetchStart());\r\n fetch(`${modulueBaseApi}/recoveryrequest`, {\r\n method: 'POST',\r\n body: JSON.stringify(recoveryData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n }).then((response) => {\r\n dispatch(fetchStop());\r\n if (response.ok) {\r\n if (data.recoveryMethod === '2') {\r\n return dispatch({\r\n type: 'RECOVERY_PASSWORD_BY_SMS',\r\n });\r\n }\r\n return dispatch({\r\n type: 'RECOVERY_SUCCESS',\r\n });\r\n }\r\n return response.json().then((json) => {\r\n throw new Error(resultDataToCamelCase(json).message);\r\n });\r\n }).catch(error => dispatch(recoveryPasswordErrorHandler(error.message)));\r\n};\r\n\r\nexport const recoveryBackToStep1 = () => ({\r\n type: 'RECOVERY_BACK_TO_STEP_1',\r\n});\r\n\r\nexport const confirmRecoveryCode = (code, user) => (dispatch) => {\r\n dispatch(fetchStart());\r\n dispatch({\r\n type: 'RESET_ERRORS',\r\n });\r\n fetch(`${modulueBaseApi}/recover`, {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n recoveryInfo: user,\r\n code,\r\n }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n }).then((response) => {\r\n dispatch(fetchStop());\r\n if (response.ok) {\r\n return dispatch({\r\n type: 'RECOVERY_SUCCESS',\r\n });\r\n }\r\n return response.json().then((json) => {\r\n throw new Error(resultDataToCamelCase(json).message);\r\n });\r\n }).catch(error => dispatch(recoveryCodeErrorHandler(error.message)));\r\n};\r\n\r\nexport const recoveryDone = () => (dispatch) => {\r\n dispatch(push('/'));\r\n dispatch({\r\n type: 'RECOVERY_DONE',\r\n });\r\n};\r\n\r\nconst changeTempPasswordErrorHandler = error => ({\r\n type: 'CHANGE_TEMP_PASSWORD_ERROR',\r\n payload: error,\r\n});\r\n\r\nexport const changeTempPassword = data => (dispatch) => {\r\n const requestData = {\r\n login: data.login,\r\n new: data.password,\r\n confirm: data.passwordConfirm,\r\n };\r\n const token = getCookie('access_token');\r\n\r\n dispatch(fetchStart());\r\n fetch(`${modulueBaseApi}/first-change`, {\r\n method: 'POST',\r\n body: JSON.stringify(requestData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${token}`,\r\n },\r\n }).then((response) => {\r\n dispatch(fetchStop());\r\n if (response.ok) {\r\n return dispatch({\r\n type: 'CHANGE_TEMP_PASSWORD',\r\n });\r\n }\r\n return response.json().then((json) => {\r\n dispatch(changeTempPasswordErrorHandler(json));\r\n });\r\n });\r\n};\r\n\r\nexport const getGlobalExchangeRates = () => async (dispatch, getState, promiseHelper) => {\r\n const token = getCookie('access_token');\r\n const rates = getState().appReducer.globalExchangeRates;\r\n\r\n if (!token || rates.length) {\r\n return;\r\n }\r\n\r\n const request = await fetch(`${BASE_API_URL}/currency`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n promiseHelper.cancel('changeRate');\r\n dispatch({\r\n type: 'GLOBAL_EXCHANGE_RATE_FETCH_START',\r\n });\r\n\r\n promiseHelper\r\n .request(request, 'GlobalExchangeRates', 300)\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(json => dispatch({\r\n type: 'GLOBAL_EXCHANGE_RATE_FETCH_SUCCESS',\r\n payload: resultDataToCamelCase(json).currenciesList,\r\n }))\r\n .catch(error => dispatch({\r\n type: 'GLOBAL_EXCHANGE_RATE_FETCH_FAIL',\r\n payload: error.message,\r\n }));\r\n};\r\n\r\nexport const checkLimitInfo = () => async (dispatch, getState, promiseHelper) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || getState().userFetching) {\r\n return;\r\n }\r\n\r\n const request = fetch(`${modulueBaseApi}/check-limit-info`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n\r\n if (!promiseHelper) {\r\n return;\r\n }\r\n\r\n promiseHelper.request(request, 'checkLimitInfo', 3000).then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n }).then((json) => {\r\n dispatch({\r\n type: 'CHECK_LIMIT_INFO_SUCCESS',\r\n payload: json,\r\n });\r\n }).catch(() => {});\r\n};\r\n\r\nexport const acceptLimitInfo = () => async (dispatch, getState, promiseHelper) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || getState().userFetching) {\r\n return;\r\n }\r\n\r\n const request = fetch(`${modulueBaseApi}/accept-limit-info`, {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n IsAccepted: true,\r\n AcceptedFrom: 1,\r\n }),\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n if (!promiseHelper) {\r\n return;\r\n }\r\n\r\n promiseHelper.request(request, 'acceptLimitInfo', 3000).then((response) => {\r\n if (response.ok) {\r\n dispatch({\r\n type: 'CHECK_LIMIT_INFO_SUCCESS',\r\n payload: {\r\n IsAccepted: true,\r\n },\r\n });\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n }).then((json) => {\r\n dispatch({\r\n type: 'CHECK_LIMIT_INFO_SUCCESS',\r\n payload: {\r\n IsAccepted: true,\r\n },\r\n });\r\n }).catch(() => {});\r\n};\r\n\r\nexport const getCounties = () => async (dispatch, getState, promiseHelper) => {\r\n const request = fetch(`${BASE_API_URL}/region/countries`, {\r\n method: 'GET',\r\n });\r\n\r\n if (!promiseHelper) {\r\n return;\r\n }\r\n\r\n promiseHelper.request(request, 'getCounties', 3000).then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n }).then((json) => {\r\n dispatch({\r\n type: 'GET_COUNTRIES_SUCCESS',\r\n payload: json.map((country) => ({\r\n id: country.Value,\r\n name: country.Text,\r\n regions: [],\r\n iso2: country.CountryCode ? country.CountryCode.toLowerCase() : '',\r\n dialCode: country.PhoneCode,\r\n })),\r\n });\r\n }).catch(() => {});\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst Wrapper = props => (\r\n
\r\n {props.children}\r\n
\r\n);\r\n\r\nWrapper.propTypes = {\r\n className: PropTypes.string,\r\n children: PropTypes.node.isRequired,\r\n};\r\n\r\nWrapper.defaultProps = {\r\n className: null,\r\n};\r\n\r\nexport default Wrapper;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport './assets/styles/styles.scss';\r\nimport logo from '../../static/img/logo.png';\r\n\r\nconst SiteLogo = props => (\r\n \r\n);\r\n\r\nexport default SiteLogo;\r\n\r\nSiteLogo.propTypes = {\r\n className: PropTypes.objectOf(PropTypes.string),\r\n};\r\n\r\nSiteLogo.defaultProps = {\r\n className: {},\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport { NavLink, withRouter } from 'react-router-dom';\r\nimport './assets/styles/styles.scss';\r\n\r\nclass MainMenu extends React.Component {\r\n componentDidMount() {\r\n const activeLink = this.getActiveLinkNode();\r\n if (activeLink) {\r\n this.roller.style.setProperty(\r\n 'left',\r\n `${activeLink.offsetLeft + activeLink.offsetWidth / 2}px`,\r\n );\r\n } else {\r\n this.roller.style.setProperty('display', 'none');\r\n }\r\n }\r\n\r\n getActiveLinkNode() {\r\n const links = [this.link1, this.link3, this.link4];\r\n return links.find(item => item.classList.contains('main-menu__item--active'));\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(MainMenu);\r\n\r\nMainMenu.propTypes = {\r\n className: PropTypes.string,\r\n};\r\n\r\nMainMenu.defaultProps = {\r\n className: '',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport { connect } from 'react-redux';\r\nimport { NavLink } from 'react-router-dom';\r\nimport './assets/styles/styles.scss';\r\nimport { logout } from '../../actions';\r\n\r\n\r\nclass UserData extends React.Component {\r\n static propTypes = {\r\n className: PropTypes.string,\r\n number: PropTypes.string,\r\n name: PropTypes.string,\r\n dispatch: PropTypes.func.isRequired,\r\n hasNewNotice: PropTypes.bool.isRequired,\r\n }\r\n\r\n static defaultProps = {\r\n className: null,\r\n number: null,\r\n name: null,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.toggleDropdown = this.toggleDropdown.bind(this);\r\n\r\n this.state = {\r\n open: false,\r\n };\r\n }\r\n\r\n toggleDropdown() {\r\n this.setState(prevState => ({\r\n open: !prevState.open,\r\n }));\r\n }\r\n\r\n render() {\r\n if (!this.props.number) {\r\n return null;\r\n }\r\n return (\r\n
\r\n
\r\n
{this.props.name}
\r\n
Номер пайщика: {this.props.number}
\r\n
\r\n {}}\r\n role=\"presentation\"\r\n tabIndex=\"-1\"\r\n />\r\n \r\n
\r\n Настройки\r\n \r\n Уведомления\r\n \r\n {\r\n event.preventDefault();\r\n this.props.dispatch(logout());\r\n }}\r\n >\r\n Выход\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n number: state.appReducer.user.number,\r\n name: state.appReducer.user.name,\r\n hasNewNotice: !!state.noticesReducer.noticesNew.length,\r\n});\r\n\r\nexport default connect(mapStateToProps)(UserData);\r\n","import { BASE_API_URL } from '../../../constants';\r\nimport { resultDataToCamelCase, getCookie } from '../../../utils';\r\n\r\nexport const getNews = () => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: 'NEWS_FETCH_START',\r\n });\r\n\r\n fetch(`${BASE_API_URL}/news?ordering=desc&offset=0&limit=3`, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(json => dispatch({\r\n type: 'NEWS_FETCH_SUCCESS',\r\n payload: resultDataToCamelCase(json),\r\n }))\r\n .catch(error => dispatch({\r\n type: 'NEWS_FETCH_FAIL',\r\n payload: error.message,\r\n }));\r\n};\r\n\r\nexport const getSingleNews = newsId => new Promise((resolve, reject) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !newsId) {\r\n return;\r\n }\r\n\r\n fetch(`${BASE_API_URL}/news/${newsId}`, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(json => resolve(resultDataToCamelCase(json)))\r\n .catch(error => reject(error.message));\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport FontAwesomeIcon from '@fortawesome/react-fontawesome';\r\nimport {\r\n faChevronLeft,\r\n faChevronRight,\r\n faSyncAlt,\r\n faTimesCircle,\r\n faCheckCircle,\r\n faRss,\r\n faRedo,\r\n faSpinner,\r\n faExchangeAlt,\r\n} from '@fortawesome/fontawesome-free-solid';\r\n\r\n/**\r\n * Чтобы не тащить в бандл сотни неиспользуемых\r\n * иконок, подключаем только необходимые\r\n */\r\nconst getIcon = (name) => {\r\n switch (name) {\r\n case 'chevron-left':\r\n return faChevronLeft;\r\n\r\n case 'chevron-right':\r\n return faChevronRight;\r\n\r\n case 'sync-alt':\r\n return faSyncAlt;\r\n\r\n case 'times-circle':\r\n return faTimesCircle;\r\n\r\n case 'check-circle':\r\n return faCheckCircle;\r\n\r\n case 'rss':\r\n return faRss;\r\n\r\n case 'redo':\r\n return faRedo;\r\n\r\n case 'spinner':\r\n return faSpinner;\r\n\r\n case 'exchange-alt':\r\n return faExchangeAlt;\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * @param {String} Название иконки как в каталоге\r\n * FontAwesome (https://fontawesome.com/icons)\r\n */\r\nconst Icon = ({ name }) => {\r\n const icon = getIcon(name);\r\n\r\n if (!icon) {\r\n return null;\r\n }\r\n\r\n return ;\r\n};\r\n\r\nIcon.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default Icon;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst Throbber = ({ className, inPanel, inline }) => (\r\n \r\n
\r\n
\r\n);\r\n\r\nexport default Throbber;\r\n\r\nThrobber.propTypes = {\r\n className: PropTypes.string,\r\n inPanel: PropTypes.bool,\r\n inline: PropTypes.bool,\r\n};\r\n\r\nThrobber.defaultProps = {\r\n className: '',\r\n inPanel: false,\r\n inline: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Slider from 'react-slick';\r\nimport { connect } from 'react-redux';\r\nimport LinesEllipsis from 'react-lines-ellipsis';\r\n\r\nimport 'slick-carousel/slick/slick.scss';\r\nimport 'slick-carousel/slick/slick-theme.scss';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { getNews } from '../../actions';\r\nimport './assets/styles/styles.scss';\r\nimport Icon from '../../../../commonComponents/Icon';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\n\r\nconst ArrowPrev = props => (\r\n
\r\n \r\n
\r\n);\r\n\r\nconst ArrowNext = props => (\r\n
\r\n \r\n
\r\n);\r\n\r\nclass NewsContainer extends React.Component {\r\n static propTypes = {\r\n news: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number,\r\n preview: PropTypes.string,\r\n })).isRequired,\r\n newsFetching: PropTypes.bool.isRequired,\r\n newsFetchingError: PropTypes.string,\r\n dispatch: PropTypes.func.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n newsFetchingError: null,\r\n };\r\n\r\n componentDidMount() {\r\n this.props.dispatch(getNews());\r\n }\r\n\r\n sliderRef = (element) => {\r\n this.slider = element;\r\n this.forceUpdate();\r\n }\r\n\r\n render() {\r\n if (this.props.newsFetching && !this.props.news.length) {\r\n return ;\r\n }\r\n\r\n if (this.props.newsFetchingError || !this.props.news.length) {\r\n return
;\r\n }\r\n\r\n return (\r\n
\r\n \r\n Новости\r\n \r\n \r\n {this.slider && (\r\n
{dots}
}\r\n customPaging={i => }\r\n nextArrow={}\r\n prevArrow={}\r\n >\r\n {this.props.news.map(item =>
)}\r\n \r\n )}\r\n \r\n \r\n {this.props.news.map(item => (\r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n news: state.newsReducer.news,\r\n newsFetching: state.newsReducer.newsFetching,\r\n newsFetchingError: state.newsReducer.newsFetchingError,\r\n});\r\n\r\nexport default connect(mapStateToProps)(NewsContainer);\r\n","import React from 'react';\r\nimport NewsContainer from '../../../News/components/NewsContainer';\r\n\r\nconst HeaderNews = () => (\r\n \r\n);\r\n\r\nexport default HeaderNews;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { getGlobalExchangeRates } from '../../actions';\r\nimport './assets/styles/styles.scss';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\n\r\nconst groupRates = (ratesList) => {\r\n const rates = {\r\n USD: null,\r\n EUR: null,\r\n };\r\n\r\n ratesList.forEach((item) => {\r\n if (item.currencyName === 'cbUSD') {\r\n rates.USD = item;\r\n }\r\n\r\n if (item.currencyName === 'cbEUR') {\r\n rates.EUR = item;\r\n }\r\n });\r\n\r\n return rates;\r\n};\r\n\r\nclass ExchangeRates extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n ratesList: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n };\r\n\r\n componentDidMount() {\r\n this.props.dispatch(getGlobalExchangeRates());\r\n }\r\n\r\n render() {\r\n if (this.props.loading && !this.props.ratesList.length) {\r\n return ;\r\n }\r\n\r\n const rates = groupRates(this.props.ratesList);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {/*\r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n {rates.USD && (\r\n \r\n )}\r\n {/*\r\n \r\n */}\r\n \r\n \r\n \r\n {rates.EUR && (\r\n \r\n )}\r\n {/*\r\n \r\n */}\r\n \r\n \r\n
\r\n ЦБ РФ\r\n М-Фонд - Покупка\r\n
$\r\n {typeof rates.USD.value === 'number' &&\r\n rates.USD.value.toLocaleString('ru-RU', {\r\n minimumFractionDigits: 4,\r\n maximumFractionDigits: 4,\r\n })}{' '}\r\n руб.\r\n \r\n курс ММВБ\r\n
\r\n {typeof rates.EUR.value === 'number' &&\r\n rates.EUR.value.toLocaleString('ru-RU', {\r\n minimumFractionDigits: 4,\r\n maximumFractionDigits: 4,\r\n })}{' '}\r\n руб.\r\n \r\n курс ММВБ\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n ratesList: state.appReducer.globalExchangeRates,\r\n loading: state.appReducer.globalExchangeRatesFetching,\r\n});\r\n\r\nexport default connect(mapStateToProps)(ExchangeRates);\r\n","import React from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport './assets/styles/styles.scss';\r\nimport Wrapper from '../../../../commonComponents/Wrapper';\r\nimport SiteLogo from '../../../../commonComponents/SiteLogo';\r\nimport MainMenu from '..//MainMenu';\r\nimport UserData from '../UserData';\r\nimport HeaderNews from '../HeaderNews';\r\nimport ExchangeRates from '../ExchangeRates';\r\n\r\nconst Header = () => (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n);\r\n\r\nexport default Header;\r\n","import React from 'react';\r\nimport moment from 'moment';\r\nimport Wrapper from '../../../../commonComponents/Wrapper';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst Footer = () => (\r\n
\r\n \r\n
\r\n © 2010-{moment().year()} ГК "Морской фонд"\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default Footer;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { NavLink, withRouter } from 'react-router-dom';\r\nimport './assets/styles/styles.scss';\r\nimport { MENU } from '../../../../constants';\r\n\r\n/**\r\n * Получение массива элементов меню второго уровня из константной схемы меню\r\n * @param {string} path - текущий путь роутера\r\n */\r\nconst getSubmenus = (path) => {\r\n switch (path) {\r\n case '/accounts/:accountType':\r\n return MENU.accounts.childrens;\r\n\r\n case '/transfers/:transferType(to-salary|to-account|loan|deposit|to-partner)':\r\n return MENU.transfers.childrens;\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Компонент меню второго уровня\r\n */\r\nconst SubMenu = props => (\r\n
\r\n {getSubmenus(props.match.path) &&\r\n getSubmenus(props.match.path).map(item => (\r\n \r\n {item.title}\r\n \r\n ))}\r\n
\r\n);\r\n\r\nexport default withRouter(SubMenu);\r\n\r\nSubMenu.propTypes = {\r\n match: PropTypes.shape({\r\n isExact: PropTypes.bool.isRequired,\r\n params: PropTypes.objectOf(PropTypes.string.isRequired).isRequired,\r\n path: PropTypes.string.isRequired,\r\n url: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport './assets/styles/styles.scss';\r\n\r\nexport default class Button extends React.Component {\r\n static propTypes = {\r\n children: PropTypes.node.isRequired,\r\n onClick: PropTypes.func,\r\n className: PropTypes.string,\r\n size: PropTypes.oneOf(['xs', 's', 'm', 'l']),\r\n type: PropTypes.oneOf(['primary', 'action', 'danger', 'inline']),\r\n disabled: PropTypes.bool,\r\n fakeDisabled: PropTypes.bool,\r\n block: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n className: null,\r\n onClick: null,\r\n size: 'm',\r\n type: 'action',\r\n disabled: false,\r\n fakeDisabled: false,\r\n block: false,\r\n };\r\n\r\n handleClick = (event) => {\r\n event.stopPropagation();\r\n\r\n if (this.props.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (typeof this.props.onClick === 'function') {\r\n this.props.onClick();\r\n }\r\n };\r\n\r\n render() {\r\n const className = cx(\r\n 'button',\r\n `button--size-${this.props.size}`,\r\n `button--type-${this.props.type}`,\r\n {\r\n [this.props.className]: !!this.props.className,\r\n 'button--disabled': this.props.disabled || this.props.fakeDisabled,\r\n 'button--block': this.props.block,\r\n },\r\n );\r\n\r\n const Tag = this.props.type === 'inline' ? 'span' : 'button';\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport './assets/styles/styles.scss';\r\nimport { logout } from '../../actions';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport Button from '../../../../commonComponents/Button';\r\n\r\nclass SessionModal extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n show: PropTypes.bool.isRequired,\r\n fetching: PropTypes.bool.isRequired,\r\n }\r\n\r\n exitHandler = () => this.props.dispatch(logout());\r\n\r\n render() {\r\n if (!this.props.show) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n Ваша сессия истекла\r\n

\r\n

\r\n Для продолжения работы в личном кабинете\r\n
\r\n необходимо заново войти в систему\r\n

\r\n
\r\n \r\n Войти в личный кабинет\r\n \r\n
\r\n
\r\n {this.props.fetching &&\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n show: state.appReducer.sessionExpired,\r\n fetching: state.appReducer.fetching,\r\n});\r\n\r\nexport default connect(mapStateToProps)(SessionModal);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport cx from 'classnames';\r\nimport Draggable from 'react-draggable';\r\nimport './assets/styles/styles.scss';\r\nimport { getCookie } from '../../../../utils/index';\r\n\r\nconst getMessageKey = (messages) => {\r\n try {\r\n return `${Date.now() * Math.random()}_${messages.text.substring(0, 2)}`;\r\n } catch (e) {\r\n return `${Date.now() * Math.random()}_key`;\r\n }\r\n};\r\n\r\nconst subscribeToSocket = (callbacks, _attempt) => {\r\n let attempt = _attempt;\r\n\r\n try {\r\n if (attempt > 3) {\r\n throw new Error('Не удалось подключиться к сокет-серверу');\r\n }\r\n\r\n const socket = new WebSocket('wss://online.m-fond.com/api/messages/ws/');\r\n // const socket = new WebSocket('ws://new_online.m-fond.com/api/messages/ws/');\r\n\r\n socket.onopen = callbacks.onopen;\r\n socket.onmessage = callbacks.onmessage;\r\n socket.onclose = (event) => {\r\n setTimeout(() => {\r\n callbacks.onclose(event);\r\n attempt += 1;\r\n subscribeToSocket(callbacks, attempt);\r\n }, 2000);\r\n };\r\n socket.onerror = (event) => {\r\n setTimeout(() => {\r\n callbacks.onerror(event);\r\n attempt += 1;\r\n subscribeToSocket(callbacks, attempt);\r\n }, 2000);\r\n };\r\n return socket;\r\n } catch (error) {\r\n return null;\r\n }\r\n};\r\n\r\n\r\nclass Chat extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.changeHandler = this.changeHandler.bind(this);\r\n this.keypressHandler = this.keypressHandler.bind(this);\r\n this.collapsHandler = this.collapsHandler.bind(this);\r\n this.onmessageHandler = this.onmessageHandler.bind(this);\r\n\r\n this.state = {\r\n input: '',\r\n messages: [],\r\n collapsed: true,\r\n interlocutor: '',\r\n };\r\n\r\n this.socket = subscribeToSocket({\r\n onmessage: this.onmessageHandler,\r\n // onopen: (e) => { console.log(e); },\r\n onclose: (e) => { console.warn(e); },\r\n onerror: (e) => { console.warn(e); },\r\n }, 0);\r\n }\r\n\r\n componentDidMount() {\r\n this.token = getCookie('access_token');\r\n\r\n this.setChatOffset();\r\n if (window && document) {\r\n try {\r\n document.getElementById('root').addEventListener('resize', () => {\r\n this.setChatOffset();\r\n });\r\n window.addEventListener('resize', () => {\r\n this.setChatOffset();\r\n });\r\n window.addEventListener('scroll', () => {\r\n this.setChatOffset();\r\n });\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.messages.length !== this.state.messages.length) {\r\n this.messagesContainer.scrollTop = 100000;\r\n }\r\n }\r\n\r\n onmessageHandler(event) {\r\n const response = JSON.parse(event.data);\r\n\r\n this.setState(prevState => ({\r\n messages: [\r\n ...prevState.messages,\r\n {\r\n author: response.Name,\r\n text: response.Message,\r\n },\r\n ],\r\n interlocutor: response.Name ? response.Name : prevState.interlocutor,\r\n }));\r\n }\r\n\r\n getStatusText() {\r\n if (this.state.interlocutor) {\r\n return 'онлайн';\r\n }\r\n return 'задать вопрос';\r\n }\r\n\r\n setChatOffset() {\r\n try {\r\n const scrollHeight = document.getElementById('root').offsetHeight - document.body.offsetHeight - window.scrollY;\r\n this.containerElement.style.setProperty('bottom', `${scrollHeight <= 50 ? 50 - scrollHeight : 0}px`);\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n }\r\n\r\n changeHandler(event) {\r\n this.setState({\r\n input: event.target.value,\r\n });\r\n }\r\n\r\n keypressHandler(event) {\r\n if (event.keyCode === 13) {\r\n event.preventDefault();\r\n if (!this.state.input) {\r\n return;\r\n }\r\n try {\r\n const requestData = JSON.stringify({\r\n Id: 0,\r\n Token: this.token,\r\n Message: this.state.input,\r\n });\r\n this.socket.send(requestData);\r\n this.setState({\r\n input: '',\r\n });\r\n } catch (error) {\r\n console.warn('send error', error);\r\n }\r\n }\r\n }\r\n\r\n collapsHandler() {\r\n this.setState(prevState => ({\r\n collapsed: !prevState.collapsed,\r\n }));\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n { this.containerElement = element; }}\r\n >\r\n
\r\n {this.state.interlocutor}\r\n {this.getStatusText()}\r\n \r\n
\r\n
\r\n
{ this.messagesContainer = element; }} className=\"chat__messages\">\r\n {this.state.messages.map(item => (\r\n \r\n {item.author || 'Вы'}:\r\n {item.text}\r\n

\r\n ))}\r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect()(Chat);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { push } from 'react-router-redux';\r\nimport Wrapper from '../../../../commonComponents/Wrapper';\r\nimport { noticeHide } from '../../actions';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst NotifyString = (props) => {\r\n if (!props.notice) {\r\n return null;\r\n }\r\n\r\n const clickHandler = () => {\r\n props.dispatch(push(`/notices/${props.notice.id}`));\r\n };\r\n\r\n const closeHandler = () => {\r\n props.dispatch(noticeHide(props.notice.id));\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n notice: state.noticesReducer.noticesNew[0],\r\n});\r\n\r\nexport default connect(mapStateToProps)(NotifyString);\r\n\r\nNotifyString.propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n notice: PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n title: PropTypes.string.isRequired,\r\n }),\r\n};\r\n\r\nNotifyString.defaultProps = {\r\n notice: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { push } from 'react-router-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as appActions from '../../actions';\r\nimport Header from '../../components/Header';\r\nimport Footer from '../../components/Footer';\r\nimport Wrapper from '../../../../commonComponents/Wrapper';\r\nimport Submenu from '../../components/SubMenu';\r\nimport SessionModal from '../../components/SessionModal';\r\nimport Chat from '../../../Chat/containers/Chat';\r\nimport NotifyString from '../../../Notices/components/NotifyString';\r\nimport { checkAuth, getCookie } from '../../../../utils';\r\n\r\nclass Main extends React.Component {\r\n static propTypes = {\r\n appActions: PropTypes.objectOf(PropTypes.func).isRequired,\r\n children: PropTypes.element.isRequired,\r\n hasNewNotice: PropTypes.bool.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.isAliveToken = this.isAliveToken.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n checkAuth(this.isAliveToken);\r\n }\r\n\r\n isAliveToken() {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n this.props.appActions.sessionWasExpired();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n render() {\r\n return [\r\n this.props.hasNewNotice ? : null,\r\n
,\r\n \r\n \r\n {this.props.children}\r\n ,\r\n
,\r\n ,\r\n ,\r\n ];\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n userFetching: state.appReducer.userFetching,\r\n user: state.appReducer.user,\r\n userError: state.appReducer.userError,\r\n location: state.router.location,\r\n hasNewNotice: !!state.noticesReducer.noticesNew.length,\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n appActions: bindActionCreators({ ...appActions, push }, dispatch),\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(Main);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as appActions from '../../actions';\r\nimport Main from '../Main';\r\n\r\nexport default (Component) => {\r\n class Authentication extends React.Component {\r\n componentDidMount() {\r\n this.props.appActions.getUser();\r\n }\r\n\r\n render() {\r\n if (!this.props.isAuthenticated) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n }\r\n\r\n Authentication.propTypes = {\r\n isAuthenticated: PropTypes.bool.isRequired,\r\n appActions: PropTypes.objectOf(PropTypes.func).isRequired,\r\n };\r\n\r\n const mapStateToProps = state => ({\r\n isAuthenticated: state.appReducer.isAuthenticated,\r\n });\r\n const mapDispatchToProps = dispatch => ({\r\n appActions: bindActionCreators(appActions, dispatch),\r\n });\r\n\r\n return connect(mapStateToProps, mapDispatchToProps)(Authentication);\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nconst FormLabel = ({ id, children, className }) => {\r\n if (!children) {\r\n return null;\r\n }\r\n\r\n let Node = 'span';\r\n const formLabelProps = {\r\n className: cx(\r\n 'form-label',\r\n className && className,\r\n ),\r\n };\r\n\r\n if (id) {\r\n formLabelProps.htmlFor = id;\r\n Node = 'label';\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nFormLabel.propTypes = {\r\n id: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.number,\r\n ]),\r\n className: PropTypes.string,\r\n children: PropTypes.oneOfType([\r\n PropTypes.element,\r\n PropTypes.node,\r\n ]),\r\n};\r\n\r\nFormLabel.defaultProps = {\r\n id: null,\r\n className: null,\r\n children: null,\r\n};\r\n\r\nexport default FormLabel;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FormError = ({ children }) => {\r\n if (!children) {\r\n return null;\r\n }\r\n\r\n return

{children}

;\r\n};\r\n\r\nFormError.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nFormError.defaultProps = {\r\n children: null,\r\n};\r\n\r\nexport default FormError;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport default class CurrencyInput extends React.Component {\r\n static propTypes = {\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n onChangeEvent: PropTypes.func,\r\n onFocus: PropTypes.func,\r\n onBlur: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n value: '',\r\n onChangeEvent: null,\r\n onFocus: null,\r\n onBlur: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n value: this.clearValue(props.value),\r\n parsedValue: this.parseValue(props.value),\r\n focused: false,\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.value !== this.props.value) {\r\n this.setState({\r\n value: this.clearValue(nextProps.value),\r\n parsedValue: this.parseValue(nextProps.value),\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.focused && !this.state.focused && this.props.onChangeEvent) {\r\n this.props.onChangeEvent({}, this.state.value, parseFloat(this.state.parsedValue) || 0);\r\n }\r\n }\r\n\r\n handleChange = (event) => {\r\n const parsedValue = this.parseValue(event.target.value);\r\n const rawValue = this.clearValue(event.target.value);\r\n\r\n if (this.isValidValue(rawValue) || !rawValue) {\r\n this.setState({\r\n value: rawValue || 0,\r\n parsedValue,\r\n });\r\n } else {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n handleFocus = (event) => {\r\n event.persist();\r\n this.setState(\r\n {\r\n focused: true,\r\n },\r\n () => {\r\n if (this.props.onFocus) {\r\n this.props.onFocus(event);\r\n }\r\n },\r\n );\r\n };\r\n\r\n handleBlur = (event) => {\r\n event.persist();\r\n this.setState(\r\n {\r\n focused: false,\r\n },\r\n () => {\r\n if (this.props.onBlur) {\r\n this.props.onBlur(event);\r\n }\r\n },\r\n );\r\n };\r\n\r\n isValidValue = value => /^([0-9]+)(,|.{0,1}\\d{0,2})$/.test(value);\r\n\r\n clearValue = (value = '') =>\r\n value\r\n .toString()\r\n .replace(/[^\\d.,]/, '')\r\n .replace(/^0(?=[1-9]$)/, '')\r\n .replace('.', ',')\r\n .replace(/^,$/, '0,');\r\n\r\n parseValue = (value = '') =>\r\n Number(value\r\n .toString()\r\n .replace(/[^\\d.,]/, '')\r\n .replace(',', '.')).toFixed(2);\r\n\r\n formatValue = () =>\r\n parseFloat(this.state.parsedValue).toLocaleString(undefined, { minimumFractionDigits: 2 });\r\n\r\n isZeroValue = () =>\r\n this.state.value === '0' || this.state.value === '0,00' || !this.state.value;\r\n\r\n renderValue = () => {\r\n if (this.state.focused) {\r\n return this.isZeroValue() ? '' : this.state.value;\r\n }\r\n\r\n return this.formatValue();\r\n };\r\n\r\n render() {\r\n const { value, onChangeEvent, ...rest } = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport FormLabel from './label';\r\nimport FormError from './error';\r\nimport './assets/styles/styles.scss';\r\nimport CurrencyInput from './currencyInput';\r\nimport Throbber from '../Throbber';\r\n\r\nexport class FormControl extends React.Component {\r\n static propTypes = {\r\n className: PropTypes.string,\r\n type: PropTypes.string,\r\n name: PropTypes.string.isRequired,\r\n error: PropTypes.string,\r\n id: PropTypes.string.isRequired,\r\n label: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n loading: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n className: null,\r\n error: null,\r\n label: '',\r\n type: 'text',\r\n loading: false,\r\n };\r\n\r\n static FormLabel = FormLabel;\r\n static FormError = FormError;\r\n\r\n render() {\r\n const {\r\n className, type, name, error, id, label, onChange, loading, ...props\r\n } = this.props;\r\n return (\r\n \r\n {label && {label}}\r\n {type === 'money' ? (\r\n onChange(float)}\r\n {...props}\r\n />\r\n ) : (\r\n \r\n )}\r\n {loading && (\r\n \r\n \r\n \r\n )}\r\n {error && {error}}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const Radio = ({\r\n className, field, id, value, checked, children, onChange, ...props\r\n}) => (\r\n
\r\n \r\n
\r\n \r\n {children}\r\n
\r\n
\r\n onChange(event)}\r\n {...props}\r\n />\r\n
\r\n);\r\n\r\nRadio.propTypes = {\r\n className: PropTypes.string,\r\n field: PropTypes.string.isRequired,\r\n id: PropTypes.string.isRequired,\r\n value: PropTypes.string.isRequired,\r\n checked: PropTypes.bool.isRequired,\r\n children: PropTypes.node,\r\n onChange: PropTypes.func.isRequired,\r\n};\r\n\r\nRadio.defaultProps = {\r\n className: '',\r\n children: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport './assets/styles/styles.scss';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport { showRecoveryForm } from '../../actions';\r\n\r\nclass LoginForm extends React.Component {\r\n static propTypes = {\r\n loginAction: PropTypes.func.isRequired,\r\n authError: PropTypes.string,\r\n fetching: PropTypes.bool.isRequired,\r\n dispatch: PropTypes.func.isRequired,\r\n }\r\n\r\n static defaultProps = {\r\n authError: null,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.changeHandler = this.changeHandler.bind(this);\r\n this.submitHandler = this.submitHandler.bind(this);\r\n this.recoveryHandler = this.recoveryHandler.bind(this);\r\n\r\n this.state = {\r\n login: '',\r\n password: '',\r\n showPassword: false,\r\n loginError: '',\r\n passwordError: '',\r\n authError: '',\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (this.state.authError !== nextProps.authError) {\r\n this.setState({ authError: nextProps.authError });\r\n }\r\n }\r\n\r\n changeHandler(event) {\r\n const { name, value, checked } = event.target;\r\n\r\n if (name === 'showPassword') {\r\n this.setState({\r\n showPassword: checked,\r\n });\r\n } else {\r\n this.setState({\r\n [name]: value,\r\n [`${name}Error`]: '',\r\n authError: null,\r\n });\r\n }\r\n }\r\n\r\n submitHandler(event) {\r\n event.preventDefault();\r\n const loginData = {\r\n login: this.state.login,\r\n password: this.state.password,\r\n };\r\n if (loginData.login.length === 0) {\r\n this.setState({\r\n loginError: 'Введите логин или e-mail',\r\n });\r\n }\r\n if (loginData.password.length === 0) {\r\n this.setState({\r\n passwordError: 'Введите пароль',\r\n });\r\n }\r\n\r\n if (this.state.loginError === '' && this.state.passwordError === '') {\r\n this.props.loginAction(loginData);\r\n }\r\n }\r\n\r\n recoveryHandler() {\r\n this.props.dispatch(showRecoveryForm());\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n {}}\r\n />\r\n {}}\r\n />\r\n \r\n \r\n {this.state.authError &&\r\n

{this.state.authError}

\r\n }\r\n \r\n

\r\n \r\n

\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect()(LoginForm);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as appActions from '../../actions';\r\nimport './assets/styles/styles.scss';\r\nimport LoginForm from '../../components/LoginForm';\r\nimport logo from '../../../../static/img/logo.png';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\n\r\nconst LoginContainer = (props) => {\r\n if (props.isAuthenticated) {\r\n return ;\r\n }\r\n\r\n document.title = 'Личный кабинет пайщика';\r\n\r\n return (\r\n
\r\n \"Морской\r\n
\r\n

Вход в личный кабинет

\r\n \r\n {props.fetching &&\r\n \r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n isAuthenticated: state.appReducer.isAuthenticated,\r\n authError: state.appReducer.authError,\r\n fetching: state.appReducer.fetching,\r\n});\r\nconst mapDispatchToProps = dispatch => ({\r\n appActions: bindActionCreators(appActions, dispatch),\r\n});\r\n\r\nconst Login = connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(LoginContainer);\r\n\r\nexport default Login;\r\n\r\nLoginContainer.propTypes = {\r\n appActions: PropTypes.objectOf(PropTypes.func).isRequired,\r\n isAuthenticated: PropTypes.bool.isRequired,\r\n authError: PropTypes.shape({\r\n message: PropTypes.string.isRequired,\r\n }),\r\n fetching: PropTypes.bool.isRequired,\r\n};\r\n\r\nLoginContainer.defaultProps = {\r\n authError: null,\r\n};\r\n","import React, { PureComponent } from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport './assets/styles/styles.scss';\r\nimport logo from '../../../../static/img/logo.png';\r\nimport logoSm from '../../../../static/img/logo_sm.png';\r\nimport googlePlay from '../../../../static/img/googlePlay.png';\r\nimport appleStore from '../../../../static/img/appleStore.png';\r\nimport { setCookie, getCookie } from '../../../../utils';\r\n\r\nclass MobileDisclamer extends PureComponent {\r\n state = {\r\n continueSerfing: !!getCookie('allow_mobile'),\r\n };\r\n\r\n\r\n static getMobileOperatingSystemLogo = () => {\r\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\r\n\r\n if (/android/i.test(userAgent)) {\r\n return (\r\n \r\n \"Морской\r\n \r\n );\r\n }\r\n\r\n // iOS detection from: http://stackoverflow.com/a/9039885/177710\r\n if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\r\n return (\r\n \r\n \"Морской\r\n \r\n );\r\n }\r\n\r\n return \"Морской;\r\n };\r\n\r\n continueSerfing = () => {\r\n setCookie('allow_mobile', 'true', { expires: 3600000 * 2 });\r\n this.setState({ continueSerfing: true });\r\n };\r\n\r\n\r\n render() {\r\n const { continueSerfing } = this.state;\r\n if (continueSerfing) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n \"Морской\r\n
\r\n Скачайте мобильное приложение\r\n
\r\n { MobileDisclamer.getMobileOperatingSystemLogo() }\r\n
Продолжить в веб-версии
\r\n
\r\n \r\n \"Android\"\r\n \r\n
\r\n \r\n \"Iphone\"\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default MobileDisclamer;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { push } from 'react-router-redux';\r\nimport './assets/styles/styles.scss';\r\nimport { FormControl, Radio } from '../../../../commonComponents/FormControl';\r\nimport {\r\n recoveryPasswordStep1,\r\n confirmRecoveryCode,\r\n recoveryBackToStep1,\r\n} from '../../actions';\r\n\r\nconst isValidUserField = text => /^[a-z0-9]+$/i.test(text);\r\nconst isValidCode = text => /^\\d{6}$/.test(text);\r\n\r\n\r\nclass RecoveryForm extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n recoveryBySms: PropTypes.bool.isRequired,\r\n recoveryError: PropTypes.string,\r\n recoveryCodeError: PropTypes.string,\r\n }\r\n\r\n static defaultProps = {\r\n recoveryError: null,\r\n recoveryCodeError: null,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.changeUserHandler = this.changeUserHandler.bind(this);\r\n this.submitHandler = this.submitHandler.bind(this);\r\n this.backHandler = this.backHandler.bind(this);\r\n this.changeRecoveryMethod = this.changeRecoveryMethod.bind(this);\r\n this.changeCodeHandler = this.changeCodeHandler.bind(this);\r\n this.submitCodeHandler = this.submitCodeHandler.bind(this);\r\n\r\n this.state = {\r\n user: '',\r\n recoveryMethod: '1',\r\n userError: '',\r\n code: '',\r\n codeError: '',\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({\r\n userError: nextProps.recoveryError,\r\n codeError: nextProps.recoveryCodeError,\r\n });\r\n }\r\n\r\n submitHandler(event) {\r\n event.preventDefault();\r\n this.setState({\r\n code: '',\r\n codeError: '',\r\n });\r\n\r\n if (this.state.user.length === 0) {\r\n this.setState({\r\n userError: 'Поле не может быть пустым',\r\n });\r\n return;\r\n }\r\n if (!isValidUserField(this.state.user)) {\r\n this.setState({\r\n userError: 'Введите корректный логин или телефон',\r\n });\r\n return;\r\n }\r\n this.props.dispatch(recoveryPasswordStep1({\r\n user: this.state.user,\r\n recoveryMethod: this.state.recoveryMethod,\r\n }));\r\n }\r\n\r\n backHandler() {\r\n if (this.props.recoveryBySms) {\r\n this.props.dispatch(recoveryBackToStep1());\r\n return;\r\n }\r\n this.props.dispatch(push('/'));\r\n }\r\n\r\n changeCodeHandler(event) {\r\n const { value } = event.target;\r\n if (/\\D/.test(value)) {\r\n return;\r\n }\r\n this.setState({\r\n code: value,\r\n codeError: '',\r\n });\r\n }\r\n\r\n changeUserHandler(event) {\r\n this.setState({\r\n user: event.target.value,\r\n userError: '',\r\n });\r\n }\r\n\r\n changeRecoveryMethod(event) {\r\n this.setState({\r\n recoveryMethod: event.target.value.toString(),\r\n });\r\n }\r\n\r\n submitCodeHandler(event) {\r\n event.preventDefault();\r\n\r\n if (this.state.code.length === 0) {\r\n this.setState({\r\n codeError: 'Поле не может быть пустым',\r\n });\r\n return;\r\n }\r\n\r\n if (!isValidCode(this.state.code)) {\r\n this.setState({\r\n codeError: 'Код должен состоять из 6-и цифр',\r\n });\r\n return;\r\n }\r\n this.props.dispatch(confirmRecoveryCode(this.state.code, this.state.user));\r\n }\r\n\r\n repeatCode = () => {\r\n this.props.dispatch(recoveryPasswordStep1({\r\n user: this.state.user,\r\n recoveryMethod: '2',\r\n }));\r\n };\r\n\r\n render() {\r\n if (this.props.recoveryBySms) {\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Отправить код повторно\r\n \r\n
\r\n

\r\n \r\n

\r\n
\r\n );\r\n }\r\n return (\r\n
\r\n
\r\n \r\n \r\n Как вы хотите сбросить пароль?\r\n \r\n \r\n Сбросить пароль через SMS\r\n \r\n \r\n Сбросить пароль через e-mail\r\n \r\n \r\n \r\n

\r\n \r\n

\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n recoveryBySms: state.appReducer.recoveryBySms,\r\n recoveryError: state.appReducer.recoveryError,\r\n recoveryCodeError: state.appReducer.recoveryCodeError,\r\n});\r\n\r\nexport default connect(mapStateToProps)(RecoveryForm);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport './assets/styles/styles.scss';\r\nimport { recoveryDone } from '../../actions';\r\n\r\nconst getText = (typeSms) => {\r\n if (typeSms) {\r\n return (\r\n

\r\n Пароль успешно сброшен, новый пароль отправлен на e-mail и в sms\r\n

\r\n );\r\n }\r\n return (\r\n

\r\n Если вы ввели правильные данные,
\r\n на ваш e-mail отправлена ссылка
\r\n для сброса пароля\r\n

\r\n );\r\n};\r\n\r\nconst RecoverySuccess = ({ recoveryBySms, dispatch }) => (\r\n
\r\n \r\n {getText(recoveryBySms)}\r\n {recoveryBySms &&\r\n dispatch(recoveryDone())}\r\n >\r\n Войти с новым паролем\r\n \r\n }\r\n
\r\n);\r\n\r\nconst mapStateToProps = state => ({\r\n recoveryBySms: state.appReducer.recoveryBySms,\r\n});\r\n\r\nexport default connect(mapStateToProps)(RecoverySuccess);\r\n\r\nRecoverySuccess.propTypes = {\r\n recoveryBySms: PropTypes.bool.isRequired,\r\n dispatch: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { push } from 'react-router-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as appActions from '../../actions';\r\nimport './assets/styles/styles.scss';\r\nimport RecoveryForm from '../../components/RecoveryForm';\r\nimport logo from '../../../../static/img/logo.png';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport RecoverySuccess from '../../components/RecoverySuccess';\r\n\r\nconst RecoveryPasswordContainer = (props) => {\r\n if (props.isAuthenticated || !props.showRecoveryForm) {\r\n props.appActions.push('/');\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \"Морской\r\n
\r\n

Забыли пароль?

\r\n {props.recoverySuccess ?\r\n :\r\n \r\n }\r\n {props.fetching &&\r\n \r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n isAuthenticated: state.appReducer.isAuthenticated,\r\n authError: state.appReducer.authError,\r\n fetching: state.appReducer.fetching,\r\n showRecoveryForm: state.appReducer.showRecoveryForm,\r\n recoverySuccess: state.appReducer.recoverySuccess,\r\n recoveryBySms: state.appReducer.recoveryBySms,\r\n});\r\nconst mapDispatchToProps = dispatch => ({\r\n appActions: bindActionCreators({ ...appActions, push }, dispatch),\r\n});\r\n\r\nconst RecoveryPassword = connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(RecoveryPasswordContainer);\r\n\r\nexport default RecoveryPassword;\r\n\r\nRecoveryPasswordContainer.propTypes = {\r\n appActions: PropTypes.objectOf(PropTypes.func).isRequired,\r\n isAuthenticated: PropTypes.bool.isRequired,\r\n authError: PropTypes.shape({\r\n message: PropTypes.string.isRequired,\r\n }),\r\n fetching: PropTypes.bool.isRequired,\r\n showRecoveryForm: PropTypes.bool.isRequired,\r\n recoverySuccess: PropTypes.bool.isRequired,\r\n};\r\n\r\nRecoveryPasswordContainer.defaultProps = {\r\n authError: null,\r\n};\r\n","import { BASE_API_URL } from '../../../constants';\r\nimport { resultDataToCamelCase, getCookie } from '../../../utils';\r\n\r\nconst getFetchConfig = () => {\r\n const token = getCookie('access_token');\r\n return {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n };\r\n};\r\n\r\nexport const authSuccess = () => ({\r\n type: 'AUTH_SUCCESS',\r\n});\r\n\r\nexport const fetchFail = error => (dispatch) => {\r\n dispatch({\r\n type: 'FETCH_FAIL',\r\n payload: error,\r\n });\r\n};\r\n\r\nexport const getAccountsListing = accountType => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token) {\r\n return;\r\n }\r\n\r\n /** Формируем URL для запроса счетов в зависимости от типа */\r\n let accountsUrl = `${BASE_API_URL}/accounts/`;\r\n switch (accountType) {\r\n case 'current':\r\n accountsUrl += 'current';\r\n break;\r\n\r\n case 'shares':\r\n accountsUrl += 'share';\r\n break;\r\n\r\n case 'salary':\r\n accountsUrl += 'salary';\r\n break;\r\n\r\n case 'deposit':\r\n accountsUrl += 'deposit';\r\n break;\r\n\r\n case 'loan':\r\n accountsUrl += 'loan';\r\n break;\r\n\r\n case 'raising':\r\n accountsUrl += 'raising';\r\n break;\r\n\r\n default:\r\n /** На всякий случай по дефолту загрузим текущие счета */\r\n accountsUrl += 'current';\r\n break;\r\n }\r\n\r\n dispatch({\r\n type: 'ACCOUNTS_FETCH_START',\r\n });\r\n\r\n /** Получаем счета с сервера */\r\n fetch(accountsUrl, getFetchConfig())\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then((json) => {\r\n dispatch({\r\n type: 'ACCOUNTS_FETCH_SUCCESS',\r\n payload: {\r\n accountType,\r\n data: resultDataToCamelCase(json),\r\n },\r\n });\r\n })\r\n .catch(error =>\r\n dispatch({\r\n type: 'ACCOUNTS_FETCH_FAIL',\r\n payload: error.message,\r\n }));\r\n};\r\n\r\nexport const getDetails = (accountType, accountId) => (dispatch) => {\r\n if (!(accountType && accountId)) {\r\n return;\r\n }\r\n\r\n let accountsUrl = `${BASE_API_URL}/accounts/`;\r\n switch (accountType) {\r\n case 'current':\r\n accountsUrl += 'current';\r\n break;\r\n\r\n case 'share':\r\n accountsUrl += 'share';\r\n break;\r\n\r\n case 'salary':\r\n accountsUrl += 'salary';\r\n break;\r\n\r\n case 'deposit':\r\n accountsUrl += 'deposit';\r\n break;\r\n\r\n case 'loan':\r\n accountsUrl += 'loan';\r\n break;\r\n\r\n case 'raising':\r\n accountsUrl += 'raising';\r\n break;\r\n\r\n case 'pension':\r\n accountsUrl += 'pension';\r\n break;\r\n\r\n default:\r\n /** На всякий случай по дефолту загрузим текущие счета */\r\n accountsUrl += 'current';\r\n break;\r\n }\r\n\r\n accountsUrl += `/${accountId}/details`;\r\n\r\n dispatch({\r\n type: 'ACCOUNT_DETAILS_FETCH_START',\r\n });\r\n\r\n fetch(accountsUrl, getFetchConfig())\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then((json) => {\r\n dispatch({\r\n type: 'ACCOUNT_DETAILS_FETCH_SUCCESS',\r\n payload: resultDataToCamelCase(json),\r\n });\r\n })\r\n .catch(error =>\r\n dispatch({\r\n type: 'ACCOUNT_DETAILS_FETCH_FAIL',\r\n payload: error.message,\r\n }));\r\n};\r\n\r\nexport const setAccountFilters = data => ({\r\n type: 'SET_ACCOUNT_FILTERS',\r\n payload: data,\r\n});\r\n\r\nconst balanceDetailsSuccess = data => ({\r\n type: 'BALANCE_DETAILS_SUCCESS',\r\n payload: data,\r\n});\r\n\r\nconst operationsFetchSuccess = data => ({\r\n type: 'OPERATIONS_FETCH_SUCCESS',\r\n payload: data,\r\n});\r\n\r\nconst sheduleFetchSuccess = data => ({\r\n type: 'SHEDULE_FETCH_SUCCESS',\r\n payload: data,\r\n});\r\n\r\nexport const getBalanceDetails = id => (dispatch, getState) => {\r\n const state = getState();\r\n\r\n if (\r\n !state.accountsReducer.accountsFilters.dateStart ||\r\n !state.accountsReducer.accountsFilters.dateEnd\r\n ) {\r\n return;\r\n }\r\n\r\n const dateStart = state.accountsReducer.accountsFilters.dateStart.format('YYYY-MM-DD');\r\n const dateEnd = state.accountsReducer.accountsFilters.dateEnd.format('YYYY-MM-DD');\r\n\r\n fetch(\r\n `${BASE_API_URL}/accounts/${id}/details?dateFrom=${dateStart}&dateTo=${dateEnd}`,\r\n getFetchConfig(),\r\n )\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n /** Если не ОК, рэйзим ошибку из ответа с сервака */\r\n return response.json().then((json) => {\r\n throw new Error(resultDataToCamelCase(json).message);\r\n });\r\n })\r\n .then((json) => {\r\n const result = resultDataToCamelCase(json);\r\n dispatch(balanceDetailsSuccess(result));\r\n })\r\n .catch(error => dispatch(fetchFail(error)));\r\n};\r\n\r\nexport const getOperations = id => (dispatch, getState) => {\r\n const state = getState();\r\n const { dateStart, dateEnd } = state.accountsReducer.accountsFilters;\r\n\r\n if (!dateStart || !dateEnd) {\r\n return;\r\n }\r\n\r\n fetch(\r\n `${BASE_API_URL}/accounts/${id}/operations?dateFrom=${dateStart.format('YYYY-MM-DD')}&dateTo=${dateEnd.format('YYYY-MM-DD')}`,\r\n getFetchConfig(),\r\n )\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n /** Если не ОК, рэйзим ошибку из ответа с сервака */\r\n return response.json().then((json) => {\r\n throw new Error(resultDataToCamelCase(json).message);\r\n });\r\n })\r\n .then((json) => {\r\n const result = {\r\n operations: resultDataToCamelCase(json.Operations),\r\n count: resultDataToCamelCase(json.Count),\r\n };\r\n dispatch(operationsFetchSuccess(result));\r\n })\r\n .catch(error => dispatch(fetchFail(error)));\r\n};\r\n\r\nexport const getShedule = id => (dispatch, getState) => {\r\n const state = getState();\r\n const { dateStart, dateEnd } = state.accountsReducer.accountsFilters;\r\n\r\n if (!dateStart || !dateEnd) {\r\n return;\r\n }\r\n\r\n fetch(`${BASE_API_URL}/accounts/loan/${id}/shedule`, getFetchConfig())\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n /** Если не ОК, рэйзим ошибку из ответа с сервака */\r\n return response.json().then((json) => {\r\n throw new Error(resultDataToCamelCase(json).message);\r\n });\r\n })\r\n .then((json) => {\r\n const result = {\r\n shedule: resultDataToCamelCase(json.Payments),\r\n sheduleCount: resultDataToCamelCase(json.Count),\r\n };\r\n dispatch(sheduleFetchSuccess(result));\r\n })\r\n .catch(error => dispatch(fetchFail(error)));\r\n};\r\n\r\nexport const clearAccountDetails = () => ({\r\n type: 'CLEAR_ACCOUNT_DETAILS',\r\n});\r\n\r\nexport const resetDetailsAndFilters = () => ({\r\n type: 'RESET_DETAILS_AND_FILTERS',\r\n});\r\n","import React from 'react';\r\nimport Icon from '../../../../commonComponents/Icon';\r\nimport { DEFAULT_STRING_VALUE } from '../../../../constants';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst RejectedStatus = () => (\r\n
\r\n \r\n {' '}\r\n Отклонено\r\n
\r\n);\r\nconst CompletedStatus = () => (\r\n
\r\n \r\n {' '}\r\n Выполнено\r\n
\r\n);\r\nconst InProcessStatus = () => (\r\n
\r\n \r\n {' '}\r\n Новое\r\n
\r\n);\r\nconst Canceled = () => (\r\n
\r\n Отменено\r\n
\r\n);\r\n\r\nconst ApplicationStatus = ({ status }) => {\r\n const statuses = {\r\n 0: ,\r\n 1: ,\r\n 2: ,\r\n 3: ,\r\n };\r\n\r\n return statuses[status] || DEFAULT_STRING_VALUE;\r\n};\r\n\r\nexport default ApplicationStatus;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport { NavLink } from 'react-router-dom';\r\nimport moment from 'moment';\r\nimport './assets/styles/styles.scss';\r\nimport { COLUMNS, EMPTY_TABLE_TEXT } from '../../constants';\r\nimport { getMoneyString, getDateString } from '../../utils';\r\nimport ApplicationStatus from '../../modules/Applications/components/Status';\r\nimport Button from '../Button';\r\nimport { history } from '../../store';\r\n\r\n/**\r\n * Получение значения для текущей колонки в таблице\r\n * @param {Object} entity - объект данных счета\r\n * @param {String} columnName - идентификатор текущей колонки\r\n */\r\nconst getValue = (entity, columnName, dataType) => {\r\n switch (columnName) {\r\n case 'dateOfCreate':\r\n case 'dateOfEnd':\r\n return moment(entity[columnName]).format('DD.MM.YYYY');\r\n\r\n case 'date':\r\n if (dataType === 'schedule' || dataType === 'shedule') {\r\n return getDateString(entity[columnName]);\r\n }\r\n return moment(entity[columnName]).format('DD.MM.YYYY, HH:mm:ss');\r\n\r\n case 'sum':\r\n case 'balance':\r\n case 'accruedIncome':\r\n case 'incomeToday':\r\n case 'paidIncome':\r\n case 'nextPayment':\r\n case 'loanSum':\r\n case 'nextPaymentSum':\r\n case 'overduePayment':\r\n return (\r\n \r\n {getMoneyString(entity[columnName], entity.currency)}\r\n \r\n );\r\n\r\n case 'actions':\r\n return (\r\n
\r\n {(dataType === 'current' || dataType === 'salary') &&\r\n entity.balance > 0 && (\r\n \r\n \r\n Перевод на карту\r\n \r\n )}\r\n \r\n \r\n Выписки\r\n \r\n {dataType === 'loan' && (\r\n history.push('/transfers/loan', { accountId: entity.id })}\r\n >\r\n Погасить досрочно\r\n \r\n )}\r\n {dataType === 'deposit' && (\r\n history.push('/transfers/deposit', { accountId: entity.id })}\r\n >\r\n Пополнить вклад\r\n \r\n )}\r\n
\r\n );\r\n\r\n case 'status':\r\n return ;\r\n\r\n case 'title':\r\n // #TODO: исправить костыль\r\n // Этим костылем проверяется тип таблицы \"Операции\", будет работата, пока\r\n // поле комбинация полей Title и Details есть только у операций\r\n if (entity.details && typeof entity.details === 'string') {\r\n return (\r\n \r\n {entity.title}\r\n
\r\n {entity.details}\r\n
\r\n );\r\n }\r\n return entity[columnName];\r\n\r\n default:\r\n return entity[columnName];\r\n }\r\n};\r\n\r\nconst getTableDescription = (accountType) => {\r\n switch (accountType) {\r\n case 'salary':\r\n return [\r\n

\r\n \r\n Весь фактически начисленный доход (после удержания НДФЛ и членских взносов) на текущую\r\n дату.\r\n

,\r\n

\r\n \r\n Невыплаченный доход (после удержания НДФЛ и членских взносов), рассчитанный на текущую\r\n дату.\r\n

,\r\n

\r\n \r\n Начисленный доход перечисляется автоматически на текущий счет.\r\n

,\r\n ];\r\n\r\n case 'deposit':\r\n return [\r\n

\r\n \r\n Весь фактически выплаченный доход (после удержания НДФЛ и членских взносов) на текущую\r\n дату\r\n

,\r\n

\r\n \r\n Расчетная сумма ближайшей выплаты\r\n

,\r\n ];\r\n\r\n case 'loan':\r\n return [\r\n

\r\n * Сумма очередного платежа без учета возможной просрочки\r\n

,\r\n ];\r\n\r\n case 'raising':\r\n return [\r\n

\r\n \r\n Весь фактически выплаченный доход на текущую дату\r\n

,\r\n

\r\n \r\n Расчетная сумма ближайшей выплаты\r\n

,\r\n ];\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Компонент тыбличного представления данных, в зависимости от типа данных, выводящий разные колонки\r\n */\r\nexport default class Table extends React.Component {\r\n static propTypes = {\r\n data: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])))).isRequired,\r\n type: PropTypes.string.isRequired,\r\n };\r\n\r\n /**\r\n * Получение колонок для текущего типа данных\r\n */\r\n getColumns() {\r\n const { type } = this.props;\r\n\r\n return COLUMNS[type] || [];\r\n }\r\n\r\n getNotFoundText() {\r\n const { type } = this.props;\r\n try {\r\n return EMPTY_TABLE_TEXT[type];\r\n } catch (e) {\r\n return 'Нет данных';\r\n }\r\n }\r\n\r\n render() {\r\n const { data, type } = this.props;\r\n console.log('data', data);\r\n\r\n return [\r\n \r\n \r\n \r\n {this.getColumns().map(column => (\r\n \r\n {column.title}\r\n \r\n ))}\r\n \r\n \r\n \r\n {data[type].length > 0 ? (\r\n data[type].map(item => (\r\n \r\n {this.getColumns().map(column => (\r\n \r\n {getValue(item, column.name, type)}\r\n \r\n ))}\r\n \r\n ))\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n {this.getNotFoundText()}\r\n
,\r\n
\r\n {getTableDescription(type)}\r\n
,\r\n ];\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport { history } from '../../../../store';\r\nimport './assets/styles/styles.scss';\r\n\r\n\r\nconst AccountsBanner = ({ type }) => {\r\n const getTitle = () => {\r\n switch (type) {\r\n case 'deposit':\r\n return 'Персональный Вклад';\r\n\r\n case 'loan':\r\n return 'Персональный Заем';\r\n\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n const handleClick = () => {\r\n if (history) {\r\n history.push('/applications/new', { type });\r\n }\r\n };\r\n\r\n if (!type) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {getTitle()}\r\n {' '}\r\n для членов КПК Морской Фонд\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nAccountsBanner.propTypes = {\r\n type: PropTypes.string,\r\n};\r\n\r\nAccountsBanner.defaultProps = {\r\n type: null,\r\n};\r\n\r\nexport default AccountsBanner;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst Cell = ({\r\n children, className, parentType, colSpan,\r\n}) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nCell.propTypes = {\r\n children: PropTypes.node,\r\n className: PropTypes.string,\r\n parentType: PropTypes.oneOf(['head', 'body']),\r\n colSpan: PropTypes.number,\r\n};\r\n\r\nCell.defaultProps = {\r\n children: null,\r\n className: null,\r\n parentType: null,\r\n colSpan: 1,\r\n};\r\n\r\nconst Row = ({ children, parentType }) => (\r\n \r\n {React.Children.map(children, child => React.cloneElement(child, { parentType }))}\r\n \r\n);\r\n\r\nRow.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.arrayOf(PropTypes.element),\r\n ]),\r\n parentType: PropTypes.oneOf(['head', 'body']),\r\n};\r\n\r\nRow.defaultProps = {\r\n children: null,\r\n parentType: null,\r\n};\r\n\r\nconst Head = ({ children }) => (\r\n \r\n {React.Children.map(children, child =>\r\n React.cloneElement(child, {\r\n parentType: 'head',\r\n }))}\r\n \r\n);\r\n\r\nHead.propTypes = {\r\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\r\n};\r\n\r\nHead.defaultProps = {\r\n children: null,\r\n};\r\n\r\nconst Body = ({ children, notFoundMessage, columnsCount }) => (\r\n \r\n {React.Children.count(children) === 0 &&\r\n notFoundMessage && (\r\n \r\n \r\n {notFoundMessage}\r\n \r\n \r\n )}\r\n {React.Children.map(children, child => React.cloneElement(child, { parentType: 'body' }))}\r\n \r\n);\r\n\r\nBody.propTypes = {\r\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\r\n notFoundMessage: PropTypes.string,\r\n columnsCount: PropTypes.number,\r\n};\r\n\r\nBody.defaultProps = {\r\n children: null,\r\n notFoundMessage: null,\r\n columnsCount: 1,\r\n};\r\n\r\n/**\r\n * Компонент табличного представления данных, в зависимости от типа данных, выводящий разные колонки\r\n */\r\nexport default class DataTable extends React.Component {\r\n static Cell = Cell;\r\n static Row = Row;\r\n static Head = Head;\r\n static Body = Body;\r\n\r\n static propTypes = {\r\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\r\n className: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n children: null,\r\n className: null,\r\n };\r\n\r\n render() {\r\n const { children, className } = this.props;\r\n\r\n return {children}
;\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { BASE_API_URL } from '../../../../constants';\r\nimport { getCookie } from '../../../../utils';\r\nimport './assets/styles/styles.scss';\r\nimport Icon from '../../../../commonComponents/Icon';\r\n\r\nconst LinkToTransfer = ({\r\n accountType,\r\n accountId,\r\n collapsed,\r\n}) => (\r\n \r\n \r\n Перевод на карту\r\n \r\n);\r\n\r\nLinkToTransfer.propTypes = {\r\n accountType: PropTypes.string.isRequired,\r\n accountId: PropTypes.number.isRequired,\r\n collapsed: PropTypes.bool,\r\n};\r\n\r\nLinkToTransfer.defaultProps = {\r\n collapsed: false,\r\n};\r\n\r\nconst LinkToDetails = props => (\r\n \r\n \r\n Выписки\r\n \r\n);\r\n\r\nLinkToDetails.propTypes = {\r\n dataType: PropTypes.string.isRequired,\r\n accountId: PropTypes.number.isRequired,\r\n dateOfCreate: PropTypes.string.isRequired,\r\n collapsed: PropTypes.bool,\r\n};\r\n\r\nLinkToDetails.defaultProps = {\r\n collapsed: false,\r\n};\r\n\r\nconst Print = props => (\r\n \r\n \r\n Печать выписки\r\n \r\n);\r\n\r\nPrint.propTypes = {\r\n accountId: PropTypes.number.isRequired,\r\n collapsed: PropTypes.bool,\r\n};\r\n\r\nPrint.defaultProps = {\r\n collapsed: false,\r\n};\r\n\r\nconst CurrencyTransfer = ({ collapsed, ...rest }) => (\r\n \r\n \r\n \r\n \r\n {' '}\r\n Конвертация валюты\r\n \r\n);\r\n\r\nCurrencyTransfer.propTypes = {\r\n collapsed: PropTypes.bool,\r\n};\r\n\r\nCurrencyTransfer.defaultProps = {\r\n collapsed: false,\r\n};\r\n\r\nexport default class AccountActions extends React.Component {\r\n static LinkToTransfer = LinkToTransfer;\r\n static LinkToDetails = LinkToDetails;\r\n static Print = Print;\r\n static CurrencyTransfer = CurrencyTransfer;\r\n\r\n static propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.arrayOf(PropTypes.node),\r\n ]),\r\n };\r\n\r\n static defaultProps = {\r\n children: null,\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.children}\r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport DataTable from '../../../../commonComponents/DataTable';\r\nimport AccountActions from '../../components/Actions';\r\nimport { getMoneyString } from '../../../../utils';\r\n\r\nconst SalaryTable = props => (\r\n
\r\n \r\n \r\n \r\n Наименовая счета\r\n Доступный остаток\r\n Доходность\r\n Доход на сегодня\r\n Баланс на сегодня\r\n Операции\r\n \r\n \r\n \r\n {props.accounts.map(item => (\r\n \r\n {item.title}\r\n {getMoneyString(item.clearBalance, item.currency)}\r\n {item.percent.toLocaleString()}% годовых\r\n \r\n \r\n {getMoneyString(item.incomeToday, item.currency)}\r\n \r\n \r\n {getMoneyString(item.balance, item.currency)}\r\n \r\n \r\n {/* item.currency !== 'RUB' && (\r\n \r\n ) */}\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n
\r\n

\r\n \r\n Доход в текущем месяце к выплате (после удержания налогов и членских взносов)\r\n

\r\n

\r\n \r\n Начисленный доход перечисляется автоматически на текущий счет первого числа месяца,\r\n следующего за отчетным.\r\n

\r\n
\r\n
\r\n);\r\n\r\nSalaryTable.propTypes = {\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number,\r\n title: PropTypes.string,\r\n clearBalance: PropTypes.number,\r\n percent: PropTypes.number,\r\n incomeToday: PropTypes.number,\r\n balance: PropTypes.number,\r\n })).isRequired,\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n accounts: state.accountsReducer.accounts.salary,\r\n});\r\n\r\nexport default connect(mapStateToProps)(SalaryTable);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport DataTable from '../../../../commonComponents/DataTable';\r\nimport AccountActions from '../../components/Actions';\r\nimport { getMoneyString } from '../../../../utils';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst CurrentTable = props => (\r\n
\r\n \r\n \r\n \r\n \r\n Наименовая счета\r\n \r\n \r\n Баланс счета\r\n \r\n \r\n Операции\r\n \r\n \r\n \r\n \r\n {props.accounts.map(item => (\r\n \r\n \r\n {item.title}\r\n \r\n \r\n {getMoneyString(item.balance, item.currency)}\r\n \r\n \r\n \r\n {/* item.currency !== 'RUB' && */}\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n
\r\n);\r\n\r\nCurrentTable.propTypes = {\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number,\r\n title: PropTypes.string,\r\n balance: PropTypes.number,\r\n })).isRequired,\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n accounts: state.accountsReducer.accounts.current,\r\n});\r\n\r\nexport default connect(mapStateToProps)(CurrentTable);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as accountsActions from '../../actions';\r\nimport Table from '../../../../commonComponents/Table';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport AccountsBanner from '../../components/AccountsBanner';\r\nimport SalaryTable from '../../components/SalaryTable';\r\nimport CurrentTable from '../../components/CurrentTable';\r\n\r\n\r\nclass Listing extends React.Component {\r\n static propTypes = {\r\n accounts: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.objectOf(PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.string,\r\n ])))).isRequired,\r\n accountsActions: PropTypes.objectOf(PropTypes.func).isRequired,\r\n match: PropTypes.shape({\r\n isExact: PropTypes.bool.isRequired,\r\n params: PropTypes.objectOf(PropTypes.string.isRequired).isRequired,\r\n path: PropTypes.string.isRequired,\r\n url: PropTypes.string.isRequired,\r\n }).isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n error: PropTypes.objectOf(PropTypes.string),\r\n }\r\n\r\n static defaultProps = {\r\n error: null,\r\n };\r\n\r\n componentDidMount() {\r\n const { accountType } = this.props.match.params;\r\n switch (accountType) {\r\n case 'current':\r\n document.title = 'Текущие счета';\r\n break;\r\n case 'shares':\r\n document.title = 'Счета паенакоплений';\r\n break;\r\n case 'salary':\r\n document.title = 'Cчета зарплатных программ';\r\n break;\r\n case 'deposit':\r\n document.title = 'Счета сберегательных программ';\r\n break;\r\n case 'loan':\r\n document.title = 'Займы';\r\n break;\r\n case 'raising':\r\n document.title = 'Другие доходы';\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n this.props.accountsActions.getAccountsListing(accountType);\r\n }\r\n\r\n renderTable = () => {\r\n if (this.props.error) {\r\n return (\r\n
\r\n

Кажется имеет место быть досадная ошибка... Попробуйте обновить страницу

\r\n
{this.props.error.message}
\r\n
\r\n );\r\n }\r\n\r\n if (this.props.match.params.accountType === 'current') {\r\n return ;\r\n }\r\n\r\n if (this.props.match.params.accountType === 'salary') {\r\n return ;\r\n }\r\n\r\n return ;\r\n };\r\n\r\n render() {\r\n if (this.props.loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n {this.renderTable()}\r\n {this.props.match.params.accountType === 'deposit' &&\r\n \r\n }\r\n {this.props.match.params.accountType === 'loan' &&\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n loading: state.accountsReducer.accountsFetching,\r\n accounts: state.accountsReducer.accounts,\r\n error: state.accountsReducer.accountsError,\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n accountsActions: bindActionCreators(accountsActions, dispatch),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Listing);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport Select from 'react-select';\r\nimport 'react-select/dist/react-select.css';\r\nimport './assets/styles/styles.scss';\r\nimport Throbber from '../Throbber';\r\n\r\nclass SelectBoxOption extends React.Component {\r\n static propTypes = {\r\n onSelect: PropTypes.func.isRequired,\r\n onFocus: PropTypes.func.isRequired,\r\n option: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object])).isRequired,\r\n isFocused: PropTypes.bool.isRequired,\r\n children: PropTypes.node.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleMouseDown = this.handleMouseDown.bind(this);\r\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\r\n this.handleMouseMove = this.handleMouseMove.bind(this);\r\n }\r\n\r\n handleMouseDown(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.props.onSelect(this.props.option, event);\r\n }\r\n\r\n handleMouseEnter(event) {\r\n this.props.onFocus(this.props.option, event);\r\n }\r\n\r\n handleMouseMove(event) {\r\n if (this.props.isFocused) return;\r\n this.props.onFocus(this.props.option, event);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst SelectBox = ({\r\n noResultsText, className, error, loading, disabled, ...props\r\n}) => (\r\n
\r\n \r\n {loading && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n);\r\n\r\nexport default SelectBox;\r\n\r\nSelectBox.propTypes = {\r\n className: PropTypes.string,\r\n noResultsText: PropTypes.string,\r\n error: PropTypes.bool,\r\n};\r\n\r\nSelectBox.defaultProps = {\r\n className: '',\r\n noResultsText: 'нет доступных счетов...',\r\n error: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport { DateRange } from 'react-date-range';\r\nimport moment from 'moment';\r\nimport 'moment/locale/ru';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst getPeriodValueString = (dateStart, dateEnd) => {\r\n if (!dateStart || !dateEnd) {\r\n return '';\r\n }\r\n const format = 'DD.MM.YYYY';\r\n const start = moment(dateStart).format(format);\r\n const end = moment(dateEnd).format(format);\r\n return `${start} - ${end}`;\r\n};\r\n\r\nexport default class DatePicker extends React.PureComponent {\r\n static propTypes = {\r\n dateStart: PropTypes.instanceOf(moment),\r\n dateEnd: PropTypes.instanceOf(moment),\r\n minDate: PropTypes.instanceOf(moment),\r\n maxDate: PropTypes.instanceOf(moment),\r\n className: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n }\r\n\r\n static defaultProps = {\r\n dateStart: null,\r\n dateEnd: null,\r\n minDate: null,\r\n maxDate: null,\r\n className: null,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n focused: false,\r\n value: getPeriodValueString(props.dateStart, props.dateEnd),\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if ((JSON.stringify(this.props.dateStart) !== JSON.stringify(nextProps.dateStart)) ||\r\n (JSON.stringify(this.props.dateEnd) !== JSON.stringify(nextProps.dateEnd))) {\r\n this.setState({\r\n value: getPeriodValueString(nextProps.dateStart, nextProps.dateEnd),\r\n });\r\n }\r\n }\r\n\r\n isDisabled = () => !this.props.minDate;\r\n\r\n changeHandler = dates => this.props.onChange(dates);\r\n\r\n render() {\r\n return (\r\n
\r\n this.setState({ focused: true })}\r\n readOnly\r\n type=\"text\"\r\n value={this.state.value}\r\n placeholder=\"Выберите период\"\r\n disabled={this.isDisabled()}\r\n />\r\n
\r\n \r\n
\r\n {this.state.focused &&\r\n this.setState({ focused: false })}\r\n onKeyPress={() => {}}\r\n className=\"datepicker__overlay\"\r\n role=\"button\"\r\n tabIndex=\"-1\"\r\n />\r\n }\r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport cx from 'classnames';\r\nimport moment from 'moment';\r\nimport './assets/styles/styles.scss';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport DatePicker from '../../../../commonComponents/DatePicker';\r\nimport { setAccountFilters, getAccountsListing, clearAccountDetails } from '../../actions';\r\nimport { getMoneyString } from '../../../../utils';\r\nimport { MENU } from '../../../../constants';\r\n\r\nconst getAccountLabel = account =>\r\n `\"${account.title}\", ${getMoneyString(account.balance, account.currency)}`;\r\n\r\nclass AccountFilters extends React.Component {\r\n componentDidMount() {\r\n this.props.dispatch(getAccountsListing(this.props.currentType));\r\n this.getDefaultAccount();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.currentType !== this.props.currentType) {\r\n this.props.dispatch(getAccountsListing(this.props.currentType));\r\n }\r\n if (!this.props.currentAccountId && this.props.accounts[this.props.currentType].length) {\r\n this.getDefaultAccount();\r\n }\r\n }\r\n\r\n getDefaultAccount = () => {\r\n if (this.props.accountsFetching) {\r\n return;\r\n }\r\n\r\n if (this.props.accounts[this.props.currentType].length && !this.props.currentAccountId) {\r\n const defaultAccount = this.props.accounts[this.props.currentType][0];\r\n\r\n this.props.dispatch(setAccountFilters({\r\n accountId: defaultAccount.id,\r\n dateStart: moment(defaultAccount.dateOfCreate),\r\n dateEnd: moment(),\r\n minDate: moment(defaultAccount.dateOfCreate),\r\n maxDate: moment(),\r\n }));\r\n }\r\n };\r\n\r\n changeTypeHandler = (option) => {\r\n const type = option.value;\r\n\r\n if (type === this.props.currentType) {\r\n return;\r\n }\r\n\r\n this.props.dispatch(setAccountFilters({\r\n type,\r\n accountId: null,\r\n dateStart: null,\r\n dateEnd: null,\r\n minDate: null,\r\n maxDate: null,\r\n }));\r\n this.props.dispatch(clearAccountDetails());\r\n this.props.dispatch(getAccountsListing(type));\r\n };\r\n\r\n changeAccountHandler = (option) => {\r\n const { account } = option;\r\n if (account.id === this.props.currentAccountId) {\r\n return;\r\n }\r\n\r\n this.props.dispatch(setAccountFilters({\r\n accountId: account.id,\r\n dateStart: moment(account.dateOfCreate),\r\n dateEnd: moment(),\r\n minDate: moment(account.dateOfCreate),\r\n maxDate: moment(),\r\n }));\r\n this.props.dispatch(clearAccountDetails());\r\n };\r\n\r\n handleChangeDates = dates =>\r\n this.props.dispatch(setAccountFilters({\r\n dateStart: dates.startDate,\r\n dateEnd: dates.endDate,\r\n }));\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n

Тип счета

\r\n ({\r\n value: item.name,\r\n label: item.title,\r\n }))}\r\n name=\"accountType\"\r\n value={this.props.currentType}\r\n clearable={false}\r\n searchable={false}\r\n onChange={this.changeTypeHandler}\r\n placeholder=\"Выберите тип счета\"\r\n noResultsText=\"Нет доступных счетов...\"\r\n />\r\n
\r\n
\r\n

Наименование счета, баланс

\r\n ({\r\n value: item.id,\r\n label: getAccountLabel(item),\r\n account: item,\r\n }))\r\n }\r\n name=\"account\"\r\n value={this.props.currentAccountId}\r\n clearable={false}\r\n searchable={false}\r\n onChange={this.changeAccountHandler}\r\n placeholder=\"Выберите счет\"\r\n noResultsText=\"Не найдены счета указанного типа\"\r\n />\r\n
\r\n
\r\n

За выбранный период

\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n currentType: state.accountsReducer.accountsFilters.type,\r\n currentAccountId: state.accountsReducer.accountsFilters.accountId,\r\n dateStart: state.accountsReducer.accountsFilters.dateStart,\r\n dateEnd: state.accountsReducer.accountsFilters.dateEnd,\r\n accounts: state.accountsReducer.accounts,\r\n accountsFetching: state.accountsReducer.accountsFetching,\r\n minDate: state.accountsReducer.accountsFilters.minDate,\r\n maxDate: state.accountsReducer.accountsFilters.maxDate,\r\n});\r\n\r\nexport default connect(mapStateToProps)(AccountFilters);\r\n\r\nAccountFilters.propTypes = {\r\n className: PropTypes.string,\r\n currentAccountId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n currentType: PropTypes.string,\r\n dispatch: PropTypes.func.isRequired,\r\n accounts: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.object)).isRequired,\r\n accountsFetching: PropTypes.bool.isRequired,\r\n dateStart: PropTypes.instanceOf(moment),\r\n dateEnd: PropTypes.instanceOf(moment),\r\n minDate: PropTypes.instanceOf(moment),\r\n maxDate: PropTypes.instanceOf(moment),\r\n};\r\n\r\nAccountFilters.defaultProps = {\r\n className: '',\r\n currentAccountId: null,\r\n currentType: null,\r\n dateStart: null,\r\n dateEnd: null,\r\n minDate: null,\r\n maxDate: null,\r\n};\r\n","import moment from 'moment';\r\nimport { getMoneyString } from '../../../utils';\r\n\r\nexport const DEFAULT_STRING_VALUE = '---';\r\nexport const CLIENT_DATE_FORMAT = 'DD.MM.YYYY';\r\nexport const CLIENT_DATETIME_FORMAT = 'DD.MM.YYYY, HH:mm:ss';\r\n\r\nexport const getCurrencyTitle = (currency) => {\r\n switch (currency) {\r\n case 'RUB':\r\n return 'Рубль РФ';\r\n\r\n case 'EUR':\r\n return 'Евро';\r\n\r\n case 'USD':\r\n return 'Доллар США';\r\n\r\n default:\r\n return currency;\r\n }\r\n};\r\n\r\nexport const getValueString = (value, paramName, currency) => {\r\n switch (paramName) {\r\n case 'dateOfCreate':\r\n case 'dateOfEnd':\r\n case 'nextPaymentDate':\r\n return moment(value).format(CLIENT_DATE_FORMAT);\r\n\r\n case 'date':\r\n return moment(value).format(CLIENT_DATETIME_FORMAT);\r\n\r\n case 'sum':\r\n case 'balance':\r\n case 'clearBalance':\r\n case 'accruedIncome':\r\n case 'incomeToday':\r\n case 'paidIncome':\r\n case 'nextPayment':\r\n case 'nextPaymentSum':\r\n case 'openingSum':\r\n case 'penalty':\r\n case 'loanLateSum':\r\n case 'balanceIn':\r\n case 'balanceOut':\r\n case 'balanceDiff':\r\n case 'currentLoanBalance':\r\n return getMoneyString(value, currency);\r\n\r\n case 'percent':\r\n case 'memberFee':\r\n return `${value}%`;\r\n\r\n case 'currency':\r\n case 'currencySign':\r\n return getCurrencyTitle(value);\r\n\r\n default:\r\n return value;\r\n }\r\n};\r\n\r\nexport const ACCOUNT_SUMMARY_COLUMNS = {\r\n current: [\r\n [\r\n {\r\n name: 'balance',\r\n title: 'Баланс',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'number',\r\n title: 'Номер счета',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'balanceDiff',\r\n title: 'Изменение баланса за период',\r\n },\r\n ],\r\n ],\r\n shares: [\r\n [\r\n {\r\n name: 'balance',\r\n title: 'Баланс',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'number',\r\n title: 'Номер счета',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'balanceDiff',\r\n title: 'Изменение баланса за период',\r\n },\r\n ],\r\n ],\r\n loan: [\r\n [\r\n {\r\n name: 'balance',\r\n title: 'Остаток основного долга',\r\n },\r\n {\r\n name: 'currentLoanBalance',\r\n title: 'Баланс счета',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'number',\r\n title: 'Номер счета',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'nextPaymentDate',\r\n title: 'Дата следующего платежа',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'nextPaymentSum',\r\n title: 'Сумма следующего платежа',\r\n },\r\n ],\r\n ],\r\n deposit: [\r\n [\r\n {\r\n name: 'balance',\r\n title: 'Сумма размещения',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'number',\r\n title: 'Номер счета',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'nextPaymentDate',\r\n title: 'Дата следующего начисления',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'nextPaymentSum',\r\n title: 'Сумма следующего начисления',\r\n },\r\n ],\r\n ],\r\n salary: [\r\n [\r\n {\r\n name: 'clearBalance',\r\n title: 'Текущий баланс',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'number',\r\n title: 'Номер счета',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'nextPaymentDate',\r\n title: 'Дата следующего начисления',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'nextPaymentSum',\r\n title: 'Сумма следующего начисления',\r\n },\r\n ],\r\n ],\r\n raising: [\r\n [\r\n {\r\n name: 'balance',\r\n title: 'Сумма размещения',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'number',\r\n title: 'Номер счета',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'nextPaymentDate',\r\n title: 'Дата следующего начисления',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'nextPaymentSum',\r\n title: 'Сумма следующего начисления',\r\n },\r\n ],\r\n ],\r\n};\r\n\r\nexport const CONDITIONS_COLUMNS = {\r\n loan: [\r\n [\r\n {\r\n name: 'openingSum',\r\n title: 'Сумма открытия',\r\n },\r\n {\r\n name: 'penalty',\r\n title: 'Пеня',\r\n },\r\n {\r\n name: 'loanLateSum',\r\n title: 'Общая сумма просрочки',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'dateOfCreate',\r\n title: 'Дата открытия',\r\n },\r\n {\r\n name: 'dateOfEnd',\r\n title: 'Плановая дата закрытия',\r\n },\r\n {\r\n name: 'funcPay',\r\n title: 'Тип начисления',\r\n },\r\n {\r\n name: 'percent',\r\n title: 'Процентная ставка',\r\n },\r\n {\r\n name: 'memberFee',\r\n title: 'Ставка членских взносов',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'balanceIn',\r\n title: 'Входящий баланс на конец периода',\r\n },\r\n {\r\n name: 'balanceOut',\r\n title: 'Исходящий баланс на конец периода',\r\n },\r\n {\r\n name: 'balanceDiff',\r\n title: 'Изменение баланса за период',\r\n },\r\n ],\r\n ],\r\n deposit: [\r\n [\r\n {\r\n name: 'currency',\r\n title: 'Валюта',\r\n },\r\n {\r\n name: 'dateOfCreate',\r\n title: 'Дата открытия',\r\n },\r\n {\r\n name: 'dateOfEnd',\r\n title: 'Плановая дата закрытия',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'funcPay',\r\n title: 'Тип начисления',\r\n },\r\n {\r\n name: 'percent',\r\n title: 'Процентная ставка',\r\n },\r\n {\r\n name: 'memberFee',\r\n title: 'Ставка членских взносов',\r\n },\r\n ],\r\n ],\r\n raising: [\r\n [\r\n {\r\n name: 'currency',\r\n title: 'Валюта',\r\n },\r\n {\r\n name: 'dateOfCreate',\r\n title: 'Дата открытия',\r\n },\r\n {\r\n name: 'dateOfEnd',\r\n title: 'Плановая дата закрытия',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'funcPay',\r\n title: 'Тип начисления',\r\n },\r\n {\r\n name: 'percent',\r\n title: 'Процентная ставка',\r\n },\r\n ],\r\n ],\r\n salary: [\r\n [\r\n {\r\n name: 'currency',\r\n title: 'Валюта',\r\n },\r\n {\r\n name: 'dateOfCreate',\r\n title: 'Дата открытия',\r\n },\r\n {\r\n name: 'dateOfEnd',\r\n title: 'Плановая дата закрытия',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'funcPay',\r\n title: 'Тип начисления',\r\n },\r\n {\r\n name: 'percent',\r\n title: 'Процентная ставка',\r\n },\r\n {\r\n name: 'memberFee',\r\n title: 'Ставка членских взносов',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'balanceIn',\r\n title: 'Входящий баланс на конец периода',\r\n },\r\n {\r\n name: 'balanceOut',\r\n title: 'Исходящий баланс на конец периода',\r\n },\r\n {\r\n name: 'balanceDiff',\r\n title: 'Изменение баланса за период',\r\n },\r\n ],\r\n ],\r\n pension: [\r\n [\r\n {\r\n name: 'currency',\r\n title: 'Валюта',\r\n },\r\n {\r\n name: 'dateOfCreate',\r\n title: 'Дата открытия',\r\n },\r\n {\r\n name: 'dateOfEnd',\r\n title: 'Плановая дата закрытия',\r\n },\r\n ],\r\n [\r\n {\r\n name: 'funcPay',\r\n title: 'Тип начисления',\r\n },\r\n {\r\n name: 'percent',\r\n title: 'Процентная ставка',\r\n },\r\n ],\r\n ],\r\n};\r\n\r\nexport const DETAILS_TABS = {\r\n current: [\r\n {\r\n name: 'operations',\r\n title: 'История операций',\r\n },\r\n ],\r\n shares: [\r\n {\r\n name: 'operations',\r\n title: 'История операций',\r\n },\r\n ],\r\n loan: [\r\n {\r\n name: 'operations',\r\n title: 'История операций',\r\n },\r\n {\r\n name: 'conditions',\r\n title: 'Информация',\r\n },\r\n {\r\n name: 'schedule',\r\n title: 'График платежей',\r\n },\r\n ],\r\n deposit: [\r\n {\r\n name: 'operations',\r\n title: 'История операций',\r\n },\r\n {\r\n name: 'conditions',\r\n title: 'Информация',\r\n },\r\n ],\r\n salary: [\r\n {\r\n name: 'operations',\r\n title: 'История операций',\r\n },\r\n {\r\n name: 'conditions',\r\n title: 'Информация',\r\n },\r\n ],\r\n raising: [\r\n {\r\n name: 'operations',\r\n title: 'История операций',\r\n },\r\n {\r\n name: 'conditions',\r\n title: 'Информация',\r\n },\r\n ],\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport { getValueString, DEFAULT_STRING_VALUE } from '../../modules/Accounts/utils';\r\nimport { history } from '../../store';\r\nimport './assets/styles/styles.scss';\r\nimport Button from '../Button';\r\n\r\nconst SummaryBlock = (props) => {\r\n const { data, columns, className } = props;\r\n\r\n const getParamValue = (paramName) => {\r\n try {\r\n if (paramName === 'percent' && data.accountType === 'pension') {\r\n const value =\r\n getValueString(data[paramName], paramName, data.currency) || DEFAULT_STRING_VALUE;\r\n return `${data.currency === 'RUB' ? 'Ключевая ставка' : 'Ставка ФРС'} + ${value}`;\r\n }\r\n if (data[paramName] === undefined || data[paramName] === null) {\r\n return DEFAULT_STRING_VALUE;\r\n }\r\n return getValueString(data[paramName], paramName, data.currency);\r\n } catch (e) {\r\n return DEFAULT_STRING_VALUE;\r\n }\r\n };\r\n\r\n const getParam = (param, accountData) => (\r\n \r\n

{param.title}

\r\n
\r\n {getParamValue(param.name)}\r\n {accountData.type === 'loan' &&\r\n param.name === 'nextPaymentSum' && (\r\n
\r\n history.push('/transfers/loan', { accountId: accountData.id })}\r\n >\r\n Погасить досрочно\r\n \r\n
\r\n )}\r\n {accountData.type === 'deposit' &&\r\n param.name === 'balance' && (\r\n
\r\n history.push('/transfers/deposit', { accountId: accountData.id })}\r\n >\r\n Пополнить вклад\r\n \r\n
\r\n )}\r\n
\r\n \r\n );\r\n\r\n return (\r\n
\r\n {columns.map((column, index) => {\r\n const key = `column_${index}`;\r\n return (\r\n
\r\n {column.map(item =>\r\n getParam(item, {\r\n type: data.accountType,\r\n id: data.id,\r\n }))}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport default SummaryBlock;\r\n\r\nSummaryBlock.propTypes = {\r\n data: PropTypes.shape({\r\n id: PropTypes.number,\r\n balance: PropTypes.number,\r\n currency: PropTypes.string,\r\n balanceDiff: PropTypes.number,\r\n balanceIn: PropTypes.number,\r\n balanceOut: PropTypes.number,\r\n accountType: PropTypes.string,\r\n }),\r\n columns: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.objectOf(PropTypes.string))).isRequired,\r\n className: PropTypes.string,\r\n};\r\n\r\nSummaryBlock.defaultProps = {\r\n data: null,\r\n className: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst Pagination = (props) => {\r\n const pages = [];\r\n\r\n for (let i = 0; i < Math.ceil(props.totalCount / props.limit); i += 1) {\r\n pages.push(i + 1);\r\n }\r\n\r\n if (pages.length < 2) {\r\n return null;\r\n }\r\n return (\r\n
\r\n {pages.map(item => (\r\n {\r\n // TODO: changePage - deprecated;\r\n if (props.changePage) {\r\n console.warn('Prop changePage id deprecated');\r\n props.changePage(item);\r\n }\r\n props.onChangePage(item);\r\n }}\r\n className={cx(\r\n 'inline-button',\r\n 'pagination__link',\r\n {\r\n 'pagination__link--current': props.current && props.current === item,\r\n },\r\n )}\r\n key={item}\r\n >\r\n {item}\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nPagination.propTypes = {\r\n totalCount: PropTypes.number.isRequired,\r\n limit: PropTypes.number.isRequired,\r\n current: PropTypes.number.isRequired,\r\n className: PropTypes.string,\r\n};\r\n\r\nPagination.defaultProps = {\r\n className: null,\r\n};\r\n\r\nexport default Pagination;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport moment from 'moment';\r\nimport DataTable from '../../../../commonComponents/DataTable';\r\nimport { getMoneyString } from '../../../../utils';\r\n\r\nconst OperationsTable = ({ data, currency, isLoan }) => (\r\n \r\n \r\n \r\n Дата транзакции\r\n Операция\r\n Приход\r\n Расход\r\n {isLoan ? 'Остаток\\u00A0долга' : 'Баланс'}\r\n \r\n \r\n \r\n {data.map(item => (\r\n \r\n {moment(item.date).format('DD.MM.YYYY, HH:mm:ss')}\r\n \r\n \r\n {item.title}\r\n
\r\n {item.details}\r\n
\r\n
\r\n {item.sum >= 0 && getMoneyString(item.sum, currency)}\r\n {item.sum < 0 && getMoneyString(item.sum, currency)}\r\n {getMoneyString(item.balance, currency)}\r\n
\r\n ))}\r\n
\r\n
\r\n);\r\n\r\nOperationsTable.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number,\r\n date: PropTypes.string,\r\n title: PropTypes.string,\r\n details: PropTypes.string,\r\n sum: PropTypes.number,\r\n balance: PropTypes.number,\r\n })).isRequired,\r\n currency: PropTypes.string.isRequired,\r\n isLoan: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default OperationsTable;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport moment from 'moment';\r\nimport { withRouter } from 'react-router';\r\nimport * as accountsActions from '../../actions';\r\nimport './assets/styles/styles.scss';\r\nimport AccountFilters from '../../components/AccountFilters';\r\nimport Table from '../../../../commonComponents/Table';\r\nimport SummaryBlock from '../../../../commonComponents/SummaryBlock';\r\nimport Pagination from '../../../../commonComponents/Pagination';\r\nimport { ACCOUNT_SUMMARY_COLUMNS, CONDITIONS_COLUMNS, DETAILS_TABS } from '../../utils';\r\nimport { getCookie } from '../../../../utils';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport { PAGINATION_LIMIT, BASE_API_URL } from '../../../../constants';\r\nimport OperationsTable from './operationsTable';\r\n\r\n\r\nclass Details extends React.Component {\r\n static propTypes = {\r\n accountsActions: PropTypes.objectOf(PropTypes.func).isRequired,\r\n currentAccountType: PropTypes.string,\r\n currentAccountId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n account: PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n balance: PropTypes.number.isRequired,\r\n currency: PropTypes.string.isRequired,\r\n }),\r\n operations: PropTypes.arrayOf(PropTypes.shape({\r\n date: PropTypes.string.isRequired,\r\n title: PropTypes.string.isRequired,\r\n sum: PropTypes.number.isRequired,\r\n balance: PropTypes.number.isRequired,\r\n })).isRequired,\r\n balance: PropTypes.objectOf(PropTypes.number),\r\n shedule: PropTypes.arrayOf(PropTypes.shape({\r\n date: PropTypes.string.isRequired,\r\n sum: PropTypes.number.isRequired,\r\n balance: PropTypes.number.isRequired,\r\n })).isRequired,\r\n operationsDateStart: PropTypes.instanceOf(moment),\r\n operationsDateEnd: PropTypes.instanceOf(moment),\r\n loading: PropTypes.bool.isRequired,\r\n location: PropTypes.shape({\r\n state: PropTypes.shape({\r\n accountType: PropTypes.string,\r\n accountId: PropTypes.number,\r\n dateOfCreate: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n accounts: PropTypes.shape({\r\n deposit: PropTypes.arrayOf(PropTypes.shape({\r\n productTypeId: PropTypes.string,\r\n })),\r\n }),\r\n };\r\n\r\n static defaultProps = {\r\n currentAccountType: null,\r\n currentAccountId: null,\r\n account: null,\r\n balance: null,\r\n operationsDateStart: null,\r\n operationsDateEnd: null,\r\n accounts: {\r\n deposit: [],\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.tabChange = this.tabChange.bind(this);\r\n this.getDetailsTab = this.getDetailsTab.bind(this);\r\n this.getOperations = this.getOperations.bind(this);\r\n this.getSchedule = this.getSchedule.bind(this);\r\n this.getConditions = this.getConditions.bind(this);\r\n\r\n this.tabs = {\r\n operations: this.getOperations,\r\n schedule: this.getSchedule,\r\n conditions: this.getConditions,\r\n };\r\n\r\n this.state = {\r\n currentTab: 'operations',\r\n page: 1,\r\n shedulePage: 1,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = 'Детализация';\r\n const locationState = this.props.location.state;\r\n\r\n if (locationState && locationState.dataType && locationState.accountId) {\r\n this.props.accountsActions.setAccountFilters({\r\n type: locationState.dataType,\r\n accountId: locationState.accountId,\r\n dateStart: moment(locationState.dateOfCreate),\r\n dateEnd: moment(),\r\n minDate: moment(locationState.dateOfCreate),\r\n maxDate: moment(),\r\n });\r\n } else {\r\n this.props.accountsActions.setAccountFilters({\r\n type: 'current',\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.loading) {\r\n return;\r\n }\r\n\r\n if (\r\n this.props.currentAccountId !== prevProps.currentAccountId ||\r\n this.props.currentAccountType !== prevProps.currentAccountType\r\n ) {\r\n this.getData();\r\n }\r\n\r\n if (\r\n this.props.operationsDateStart !== prevProps.operationsDateStart ||\r\n this.props.operationsDateEnd !== prevProps.operationsDateEnd\r\n ) {\r\n this.props.accountsActions.getOperations(this.props.currentAccountId);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.accountsActions.resetDetailsAndFilters();\r\n }\r\n\r\n getDetailsTab() {\r\n return this.tabs[this.state.currentTab]();\r\n }\r\n\r\n getDetailsTabsControls() {\r\n const tabs = DETAILS_TABS[this.props.currentAccountType];\r\n try {\r\n if (tabs.length > 1) {\r\n return (\r\n
\r\n {tabs.map(tab => (\r\n \r\n \r\n {tab.title}\r\n \r\n ))}\r\n
\r\n );\r\n }\r\n return null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n getData = () => {\r\n if (this.props.loading) {\r\n return;\r\n }\r\n\r\n this.props.accountsActions.getDetails(\r\n this.isPensionAccount() ? 'pension' : this.props.currentAccountType,\r\n this.props.currentAccountId,\r\n );\r\n\r\n this.props.accountsActions.getBalanceDetails(this.props.currentAccountId);\r\n\r\n if (this.props.currentAccountType === 'loan') {\r\n this.props.accountsActions.getShedule(this.props.currentAccountId);\r\n }\r\n };\r\n\r\n getOperations() {\r\n const isLoan = this.props.currentAccountType === 'loan';\r\n return [\r\n ,\r\n \r\n this.setState({\r\n page,\r\n })\r\n }\r\n />,\r\n ];\r\n }\r\n\r\n getSchedule() {\r\n return [\r\n ({\r\n ...item,\r\n currency: this.props.account.currency,\r\n id: item.balance * item.sum * (moment(item.date).valueOf() / 100000),\r\n }))\r\n .slice((this.state.page - 1) * PAGINATION_LIMIT, PAGINATION_LIMIT * this.state.page),\r\n }}\r\n />,\r\n \r\n this.setState({\r\n shedulePage: page,\r\n })\r\n }\r\n />,\r\n ];\r\n }\r\n\r\n getConditions() {\r\n const type = this.isPensionAccount() ? 'pension' : this.props.currentAccountType;\r\n if (CONDITIONS_COLUMNS[type]) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n getAccountSummaryColumns() {\r\n const type = this.props.currentAccountType;\r\n const columns = ACCOUNT_SUMMARY_COLUMNS[type];\r\n return columns || [];\r\n }\r\n\r\n tabChange(event) {\r\n this.setState({\r\n currentTab: event.target.value,\r\n });\r\n }\r\n\r\n isPensionAccount = () => {\r\n let isPensionAccount = false;\r\n if (this.props.currentAccountType === 'deposit' && this.props.accounts.deposit.length > 0) {\r\n const account = this.props.accounts.deposit.find(({ id }) => id === this.props.currentAccountId);\r\n\r\n if (account) {\r\n isPensionAccount = account.productTypeId === '900' || account.productTypeId === '950';\r\n }\r\n }\r\n\r\n return isPensionAccount;\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n {this.props.loading ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {this.props.currentAccountType &&\r\n this.props.account && (\r\n

\r\n \r\n \r\n Печать выписки за выбранный период\r\n \r\n

\r\n )}\r\n {this.props.currentAccountType && this.props.account && this.getDetailsTabsControls()}\r\n
{this.props.operations && this.props.account && this.getDetailsTab()}
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n accounts: state.accountsReducer.accounts,\r\n account: state.accountsReducer.details.account,\r\n balance: state.accountsReducer.details.balance,\r\n currentAccountId: state.accountsReducer.accountsFilters.accountId,\r\n currentAccountType: state.accountsReducer.accountsFilters.type,\r\n operations: state.accountsReducer.details.operations,\r\n shedule: state.accountsReducer.details.shedule,\r\n operationsDateStart: state.accountsReducer.accountsFilters.dateStart,\r\n operationsDateEnd: state.accountsReducer.accountsFilters.dateEnd,\r\n loading: state.appReducer.fetching,\r\n location: state.router.location,\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n accountsActions: bindActionCreators(accountsActions, dispatch),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(Details));\r\n","import * as React from 'react';\r\nimport styled, { css } from 'styled-components';\r\n\r\nexport type ColumnSizeType =\r\n | '1'\r\n | '2'\r\n | '3'\r\n | '4'\r\n | '5'\r\n | '6'\r\n | '7'\r\n | '8'\r\n | '9'\r\n | '10'\r\n | '11'\r\n | '12';\r\n\r\nexport interface ColumnProps extends React.HTMLAttributes {\r\n size: ColumnSizeType;\r\n}\r\n\r\nconst ColumnView: React.SFC = ({ size = '12', ...props }) =>
;\r\n\r\nexport const FormLineColumn = styled(ColumnView)`\r\n padding: 0 5px;\r\n width: ${({ size }) => `${(parseInt(size, 10) / 12) * 100}%`};\r\n`;\r\n\r\nexport interface FromLineProps extends React.HTMLAttributes {\r\n className?: string;\r\n center?: boolean;\r\n}\r\n\r\nconst FormLineView: React.SFC = ({ center, ...props }) =>
;\r\n\r\nconst FormLine = styled(FormLineView)`\r\n position: relative;\r\n display: flex;\r\n align-items: flex-start;\r\n flex-wrap: wrap;\r\n margin: 0 -5px 20px;\r\n\r\n ${({ center }) =>\r\n center &&\r\n css`\r\n text-align: center;\r\n `}\r\n`;\r\n\r\nexport default FormLine;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport { changeUserAccountSettings } from '../../../App/actions';\r\nimport './assets/styles/styles.scss';\r\n\r\nclass AccountSettingsForm extends React.Component {\r\n static propTypes = {\r\n settingsChanged: PropTypes.bool.isRequired,\r\n dispatch: PropTypes.func.isRequired,\r\n user: PropTypes.shape({\r\n login: PropTypes.string.isRequired,\r\n }).isRequired,\r\n settingsError: PropTypes.shape({\r\n ModelState: PropTypes.shape({\r\n 'model.New': PropTypes.arrayOf(PropTypes.string),\r\n 'model.Confirm': PropTypes.arrayOf(PropTypes.string),\r\n 'model.Current': PropTypes.arrayOf(PropTypes.string),\r\n 'model.Login': PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n }),\r\n };\r\n\r\n static defaultProps = {\r\n settingsError: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.formChangeHandler = this.formChangeHandler.bind(this);\r\n\r\n this.state = {\r\n accountLogin: props.user.login,\r\n accountPasswordNew: '',\r\n accountPasswordNewConfirm: '',\r\n accountPasswordOld: '',\r\n accountPasswordNewError: null,\r\n accountPasswordNewConfirmError: null,\r\n accountPasswordOldError: null,\r\n accountLoginError: null,\r\n formWasChanged: false,\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (!this.state.accountLogin && this.state.accountLogin !== nextProps.user.login) {\r\n this.setState({\r\n accountLogin: nextProps.user.login,\r\n });\r\n }\r\n\r\n if (JSON.stringify(this.props.settingsError) !== JSON.stringify(nextProps.settingsError)) {\r\n if (nextProps.settingsError && nextProps.settingsError.ModelState) {\r\n this.setState({\r\n accountPasswordNewError: nextProps.settingsError.ModelState['model.New'],\r\n accountPasswordNewConfirmError: nextProps.settingsError.ModelState['model.Confirm'],\r\n accountPasswordOldError: nextProps.settingsError.ModelState['model.Current'],\r\n accountLoginError: nextProps.settingsError.ModelState['model.Login'],\r\n });\r\n }\r\n\r\n if (!nextProps.settingsError) {\r\n this.setState({\r\n accountPasswordNewError: null,\r\n accountPasswordNewConfirmError: null,\r\n accountPasswordOldError: null,\r\n accountLoginError: null,\r\n });\r\n }\r\n }\r\n }\r\n\r\n formChangeHandler(event) {\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n formWasChanged: true,\r\n accountPasswordNewError: null,\r\n accountPasswordNewConfirmError: null,\r\n accountPasswordOldError: null,\r\n accountLoginError: null,\r\n });\r\n }\r\n\r\n formHasError = () => !!(\r\n this.state.accountPasswordNewError ||\r\n this.state.accountPasswordNewConfirmError ||\r\n this.state.accountPasswordOldError ||\r\n this.state.accountLoginError\r\n );\r\n\r\n submitForm = (event) => {\r\n event.preventDefault();\r\n let hasError = false;\r\n\r\n const {\r\n accountPasswordNew,\r\n accountPasswordNewConfirm,\r\n accountPasswordOld,\r\n accountLogin,\r\n } = this.state;\r\n\r\n if (!accountPasswordOld) {\r\n this.setState({\r\n accountPasswordOldError: 'Поле не может быть пустым',\r\n });\r\n hasError = true;\r\n }\r\n\r\n if (!accountLogin) {\r\n this.setState({\r\n accountLoginError: 'Поле не может быть пустым',\r\n });\r\n hasError = true;\r\n }\r\n\r\n if (accountPasswordNew && !accountPasswordNewConfirm) {\r\n this.setState({\r\n accountPasswordNewConfirmError: 'Подтвердите новый пароль',\r\n });\r\n hasError = true;\r\n }\r\n\r\n if (accountPasswordNew && accountPasswordNew !== accountPasswordNewConfirm) {\r\n this.setState({\r\n accountPasswordNewConfirmError: 'Пароли не совпадают',\r\n });\r\n hasError = true;\r\n }\r\n\r\n if (accountPasswordOld && accountPasswordNew === accountPasswordOld) {\r\n this.setState({\r\n accountPasswordNewError: 'Пароль не должен совпадать с текущим',\r\n });\r\n hasError = true;\r\n }\r\n\r\n const requestData = {\r\n current: this.state.accountPasswordOld,\r\n };\r\n\r\n if (this.state.accountPasswordNew) {\r\n requestData.new = this.state.accountPasswordNew;\r\n requestData.confirm = this.state.accountPasswordNewConfirm;\r\n }\r\n\r\n if (this.state.accountLogin !== this.props.user.login) {\r\n requestData.login = this.state.accountLogin;\r\n }\r\n\r\n if (!hasError) {\r\n this.props.dispatch(changeUserAccountSettings(requestData));\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

\r\n Для изменения логина или пароля вам нужно ввести текущий пароль\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n {this.props.fetching ? 'Подождите...' : 'Сохранить изменения'}\r\n \r\n {this.props.settingsChanged && (\r\n
\r\n Настройки изменены\r\n
\r\n )}\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n settingsChanged: state.appReducer.settingsChanged,\r\n user: state.appReducer.user,\r\n settingsError: state.appReducer.settingsError,\r\n});\r\n\r\nexport default connect(mapStateToProps)(AccountSettingsForm);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport debounce from 'lodash.debounce';\r\nimport { memoize, reduce, startsWith, isEqual } from 'lodash';\r\nimport classNames from 'classnames';\r\n\r\nimport './style.css';\r\nimport { getCounties } from '../../modules/App/actions';\r\n\r\nclass PhoneInput extends React.Component {\r\n static propTypes = {\r\n country: PropTypes.string,\r\n value: PropTypes.string,\r\n\r\n onlyCountries: PropTypes.arrayOf(PropTypes.string),\r\n preferredCountries: PropTypes.arrayOf(PropTypes.string),\r\n excludeCountries: PropTypes.arrayOf(PropTypes.string),\r\n\r\n placeholder: PropTypes.string,\r\n searchPlaceholder: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n\r\n containerStyle: PropTypes.object,\r\n inputStyle: PropTypes.object,\r\n buttonStyle: PropTypes.object,\r\n dropdownStyle: PropTypes.object,\r\n searchStyle: PropTypes.object,\r\n\r\n containerClass: PropTypes.string,\r\n inputClass: PropTypes.string,\r\n buttonClass: PropTypes.string,\r\n dropdownClass: PropTypes.string,\r\n searchClass: PropTypes.string,\r\n\r\n autoFormat: PropTypes.bool,\r\n\r\n enableAreaCodes: PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.arrayOf(PropTypes.string)\r\n ]),\r\n enableTerritories: PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.arrayOf(PropTypes.string)\r\n ]),\r\n\r\n disableCountryCode: PropTypes.bool,\r\n disableDropdown: PropTypes.bool,\r\n enableLongNumbers: PropTypes.bool,\r\n countryCodeEditable: PropTypes.bool,\r\n enableSearch: PropTypes.bool,\r\n disableSearchIcon: PropTypes.bool,\r\n PhoneCountryId: PropTypes.number,\r\n\r\n regions: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.arrayOf(PropTypes.string)\r\n ]),\r\n\r\n inputProps: PropTypes.object,\r\n localization: PropTypes.object,\r\n masks: PropTypes.object,\r\n areaCodes: PropTypes.object,\r\n\r\n preserveOrder: PropTypes.arrayOf(PropTypes.string),\r\n\r\n defaultMask: PropTypes.string,\r\n alwaysDefaultMask: PropTypes.bool,\r\n prefix: PropTypes.string,\r\n copyNumbersOnly: PropTypes.bool,\r\n renderStringAsFlag: PropTypes.string,\r\n autocompleteSearch: PropTypes.bool,\r\n hasError: PropTypes.bool,\r\n jumpCursorToEnd: PropTypes.bool,\r\n tabIndex: PropTypes.string,\r\n priority: PropTypes.object,\r\n\r\n onChange: PropTypes.func,\r\n onFocus: PropTypes.func,\r\n onBlur: PropTypes.func,\r\n onClick: PropTypes.func,\r\n onKeyDown: PropTypes.func,\r\n isValid: PropTypes.func,\r\n }\r\n\r\n static defaultProps = {\r\n country: '',\r\n value: '',\r\n\r\n onlyCountries: [],\r\n preferredCountries: [],\r\n excludeCountries: [],\r\n\r\n placeholder: '',\r\n searchPlaceholder: 'Поиск',\r\n flagsImagePath: './flags.png',\r\n disabled: false,\r\n\r\n containerStyle: {},\r\n inputStyle: {},\r\n buttonStyle: {},\r\n dropdownStyle: {},\r\n searchStyle: {},\r\n\r\n containerClass: 'react-tel-input',\r\n inputClass: '',\r\n buttonClass: '',\r\n dropdownClass: '',\r\n searchClass: '',\r\n\r\n autoFormat: true,\r\n enableAreaCodes: false,\r\n enableTerritories: false,\r\n isValid: (inputNumber, onlyCountries) => true,\r\n disableCountryCode: false,\r\n disableDropdown: false,\r\n enableLongNumbers: false,\r\n countryCodeEditable: true,\r\n enableSearch: true,\r\n disableSearchIcon: true,\r\n PhoneCountryId: 1,\r\n\r\n regions: '',\r\n\r\n inputProps: {},\r\n localization: {},\r\n masks: {},\r\n areaCodes: {},\r\n\r\n preserveOrder: [],\r\n\r\n defaultMask: '... ... ... ... ..', // prefix+dialCode+' '+defaultMask\r\n alwaysDefaultMask: false,\r\n prefix: '+',\r\n copyNumbersOnly: true,\r\n renderStringAsFlag: '',\r\n autocompleteSearch: false,\r\n jumpCursorToEnd: true,\r\n tabIndex: '0',\r\n priority: null,\r\n\r\n onEnterKeyPress: () => {},\r\n\r\n keys: {\r\n UP: 38, DOWN: 40, RIGHT: 39, LEFT: 37, ENTER: 13,\r\n ESC: 27, PLUS: 43, A: 65, Z: 90, SPACE: 32\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n let onlyCountries = props.countries;\r\n let preferredCountries = [];\r\n\r\n const inputNumber = props.value.replace(/[^0-9\\.]+/g, '') || '';\r\n\r\n let countryGuess;\r\n if (inputNumber.length > 1) {\r\n // Country detect by value field\r\n countryGuess = this.guessSelectedCountry(inputNumber.substring(0, 6), onlyCountries, props.country) || 0;\r\n } else if (props.country) {\r\n // Default country\r\n countryGuess = onlyCountries.find(o => o.iso2 == props.country) || 0;\r\n } else {\r\n // Empty params\r\n countryGuess = 0;\r\n }\r\n\r\n const dialCode = (\r\n inputNumber.length < 2 &&\r\n countryGuess &&\r\n !startsWith(inputNumber.replace(/\\D/g, ''), countryGuess.dialCode)\r\n ) ? countryGuess.dialCode : '';\r\n\r\n let formattedNumber;\r\n formattedNumber = (inputNumber === '' && countryGuess === 0) ? '' :\r\n this.formatNumber(\r\n (props.disableCountryCode ? '' : dialCode) + inputNumber.replace(/\\D/g, ''),\r\n countryGuess.name ? countryGuess.format : undefined\r\n );\r\n\r\n const highlightCountryIndex = onlyCountries.findIndex(o => o == countryGuess);\r\n\r\n this.state = {\r\n formattedNumber,\r\n onlyCountries: props.countries,\r\n preferredCountries,\r\n country: props.country,\r\n selectedCountry: onlyCountries.find(o => Number(o.id) === Number(props.PhoneCountryId)) || 0,\r\n highlightCountryIndex,\r\n queryString: '',\r\n showDropdown: false,\r\n freezeSelection: false,\r\n debouncedQueryStingSearcher: debounce(this.searchCountry, 250),\r\n searchValue: '',\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.dispatch(getCounties());\r\n if (document.addEventListener) {\r\n document.addEventListener('mousedown', this.handleClickOutside);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (document.removeEventListener) {\r\n document.removeEventListener('mousedown', this.handleClickOutside);\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n\r\n if (!isEqual(this.state.onlyCountries, this.props.countries)) {\r\n this.setState({\r\n onlyCountries: this.props.countries,\r\n });\r\n }\r\n\r\n if (!isEqual(prevState.onlyCountries, this.state.onlyCountries)) {\r\n this.updateStateData();\r\n }\r\n\r\n if (prevProps.PhoneCountryId !== this.props.PhoneCountryId) {\r\n this.updateStateData();\r\n }\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n if (nextProps.country && nextProps.country !== this.state.country) {\r\n this.updateCountry(nextProps.country);\r\n }\r\n else if (nextProps.value !== this.state.formattedNumber) {\r\n this.updateFormattedNumber(nextProps.value);\r\n }\r\n }\r\n\r\n updateStateData = () => {\r\n const { PhoneCountryId } = this.props;\r\n const { onlyCountries } = this.state;\r\n\r\n this.setState({\r\n selectedCountry: onlyCountries.find(o => o.id == PhoneCountryId) || 0\r\n });\r\n };\r\n\r\n getProbableCandidate = memoize((queryString) => {\r\n if (!queryString || queryString.length === 0) {\r\n return null;\r\n }\r\n // don't include the preferred countries in search\r\n const probableCountries = this.state.onlyCountries.filter((country) => {\r\n return startsWith(country.name.toLowerCase(), queryString.toLowerCase());\r\n }, this);\r\n return probableCountries[0];\r\n });\r\n\r\n guessSelectedCountry = memoize((inputNumber, onlyCountries, country) => {\r\n const secondBestGuess = onlyCountries.find(o => o.iso2 == country);\r\n if (inputNumber.trim() === '') return secondBestGuess;\r\n\r\n const bestGuess = onlyCountries.reduce((selectedCountry, country) => {\r\n if (startsWith(inputNumber, country.dialCode)) {\r\n if (country.dialCode.length > selectedCountry.dialCode.length) {\r\n return country;\r\n }\r\n if (country.dialCode.length === selectedCountry.dialCode.length && country.priority < selectedCountry.priority) {\r\n return country;\r\n }\r\n }\r\n return selectedCountry;\r\n }, {dialCode: '', priority: 10001}, this);\r\n\r\n if (!bestGuess.name) return secondBestGuess;\r\n return bestGuess;\r\n });\r\n\r\n // Hooks for updated props\r\n updateCountry = (country) => {\r\n let newSelectedCountry;\r\n if (country.indexOf(0) >= '0' && country.indexOf(0) <= '9') {\r\n newSelectedCountry = this.state.onlyCountries.find(o => o.dialCode == +country);\r\n } else {\r\n newSelectedCountry = this.state.onlyCountries.find(o => o.iso2 == country);\r\n }\r\n if (newSelectedCountry && newSelectedCountry.dialCode) {\r\n this.setState({\r\n country: country,\r\n selectedCountry: newSelectedCountry,\r\n formattedNumber: this.props.disableCountryCode ? '' : this.props.prefix+newSelectedCountry.dialCode\r\n });\r\n }\r\n }\r\n\r\n updateFormattedNumber(value) {\r\n const { onlyCountries, country } = this.state;\r\n let newSelectedCountry;\r\n let inputNumber = value;\r\n let formattedNumber = value;\r\n\r\n // if inputNumber does not start with this.props.prefix, then use default country's dialing prefix,\r\n // otherwise use logic for finding country based on country prefix.\r\n if (!startsWith(inputNumber, this.props.prefix)) {\r\n newSelectedCountry = this.state.selectedCountry || onlyCountries.find(o => o.iso2 == country);\r\n const dialCode = newSelectedCountry && !startsWith(inputNumber.replace(/\\D/g, ''), newSelectedCountry.dialCode) ? newSelectedCountry.dialCode : '';\r\n formattedNumber = this.formatNumber(\r\n (this.props.disableCountryCode ? '' : dialCode) + inputNumber.replace(/\\D/g, ''),\r\n newSelectedCountry ? (newSelectedCountry.format) : undefined\r\n );\r\n }\r\n else {\r\n inputNumber = inputNumber.replace(/\\D/g, '');\r\n newSelectedCountry = this.guessSelectedCountry(inputNumber.substring(0, 6), onlyCountries, country) || this.state.selectedCountry;\r\n formattedNumber = newSelectedCountry ?\r\n this.formatNumber(inputNumber, newSelectedCountry.format) : inputNumber;\r\n }\r\n\r\n this.setState({ selectedCountry: newSelectedCountry, formattedNumber });\r\n }\r\n\r\n // View methods\r\n scrollTo = (country, middle) => {\r\n if (!country) return;\r\n const container = this.dropdownRef;\r\n if (!container || !document.body) return;\r\n\r\n const containerHeight = container.offsetHeight;\r\n const containerOffset = container.getBoundingClientRect();\r\n const containerTop = containerOffset.top + document.body.scrollTop;\r\n const containerBottom = containerTop + containerHeight;\r\n\r\n const element = country;\r\n const elementOffset = element.getBoundingClientRect();\r\n\r\n const elementHeight = element.offsetHeight;\r\n const elementTop = elementOffset.top + document.body.scrollTop;\r\n const elementBottom = elementTop + elementHeight;\r\n\r\n let newScrollTop = elementTop - containerTop + container.scrollTop;\r\n const middleOffset = (containerHeight / 2) - (elementHeight / 2);\r\n\r\n if (this.props.enableSearch ? elementTop < containerTop + 32 : elementTop < containerTop) {\r\n // scroll up\r\n if (middle) {\r\n newScrollTop -= middleOffset;\r\n }\r\n container.scrollTop = newScrollTop;\r\n }\r\n else if (elementBottom > containerBottom) {\r\n // scroll down\r\n if (middle) {\r\n newScrollTop += middleOffset;\r\n }\r\n const heightDifference = containerHeight - elementHeight;\r\n container.scrollTop = newScrollTop - heightDifference;\r\n }\r\n }\r\n\r\n scrollToTop = () => {\r\n const container = this.dropdownRef;\r\n if (!container || !document.body) return;\r\n container.scrollTop = 0;\r\n }\r\n\r\n formatNumber = (text, patternArg) => {\r\n const { disableCountryCode, enableLongNumbers, autoFormat } = this.props;\r\n\r\n let pattern;\r\n if (disableCountryCode && patternArg) {\r\n pattern = patternArg.split(' ');\r\n pattern.shift();\r\n pattern = pattern.join(' ');\r\n } else {\r\n pattern = patternArg;\r\n }\r\n\r\n if (!text || text.length === 0) {\r\n return disableCountryCode ? '' : this.props.prefix;\r\n }\r\n\r\n // for all strings with length less than 3, just return it (1, 2 etc.)\r\n // also return the same text if the selected country has no fixed format\r\n if ((text && text.length < 2) || !pattern || !autoFormat) {\r\n return disableCountryCode ? text : this.props.prefix+text;\r\n }\r\n\r\n const formattedObject = reduce(pattern, (acc, character) => {\r\n if (acc.remainingText.length === 0) {\r\n return acc;\r\n }\r\n\r\n if (character !== '.') {\r\n return {\r\n formattedText: acc.formattedText + character,\r\n remainingText: acc.remainingText\r\n };\r\n }\r\n\r\n const [ head, ...tail ] = acc.remainingText;\r\n\r\n return {\r\n formattedText: acc.formattedText + head,\r\n remainingText: tail\r\n };\r\n }, {\r\n formattedText: '',\r\n remainingText: text.split('')\r\n });\r\n\r\n let formattedNumber;\r\n if (enableLongNumbers) {\r\n formattedNumber = formattedObject.formattedText + formattedObject.remainingText.join('');\r\n } else {\r\n formattedNumber = formattedObject.formattedText;\r\n }\r\n\r\n // Always close brackets\r\n if (formattedNumber.includes('(') && !formattedNumber.includes(')')) formattedNumber += ')';\r\n return formattedNumber;\r\n }\r\n\r\n // Put the cursor to the end of the input (usually after a focus event)\r\n cursorToEnd = () => {\r\n const input = this.numberInputRef;\r\n input.focus();\r\n const len = input.value.length;\r\n input.setSelectionRange(len, len);\r\n }\r\n\r\n getElement = (index) => {\r\n return this[`flag_no_${index}`];\r\n }\r\n\r\n // return country data from state\r\n getCountryData = () => {\r\n if (!this.state.selectedCountry) return {}\r\n return {\r\n id: this.state.selectedCountry.id || '',\r\n name: this.state.selectedCountry.name || '',\r\n dialCode: this.state.selectedCountry.dialCode || '',\r\n countryCode: this.state.selectedCountry.iso2 || '',\r\n format: this.state.selectedCountry.format || ''\r\n }\r\n }\r\n\r\n handleFlagDropdownClick = () => {\r\n if (!this.state.showDropdown && this.props.disabled) return;\r\n const { preferredCountries, selectedCountry } = this.state\r\n const allCountries = preferredCountries.concat(this.state.onlyCountries)\r\n\r\n let highlightCountryIndex;\r\n if (preferredCountries.includes(selectedCountry)) {\r\n highlightCountryIndex = preferredCountries.findIndex(o => o == selectedCountry)\r\n } else {\r\n highlightCountryIndex = this.props.enableAreaCodes ? allCountries.findIndex(o => o == selectedCountry)\r\n : allCountries.findIndex(o => o.iso2 == selectedCountry.iso2)\r\n }\r\n\r\n this.setState({\r\n showDropdown: !this.state.showDropdown,\r\n highlightCountryIndex,\r\n }, () => {\r\n if (this.state.showDropdown) {\r\n this.scrollTo(this.getElement(this.state.highlightCountryIndex));\r\n }\r\n });\r\n }\r\n\r\n handleInput = (e) => {\r\n let formattedNumber = this.props.disableCountryCode ? '' : this.props.prefix;\r\n let newSelectedCountry = this.state.selectedCountry;\r\n let freezeSelection = this.state.freezeSelection;\r\n\r\n if (!this.props.countryCodeEditable) {\r\n const mainCode = newSelectedCountry.hasAreaCodes ?\r\n this.state.onlyCountries.find(o => o.iso2 === newSelectedCountry.iso2 && o.mainCode).dialCode :\r\n newSelectedCountry.dialCode;\r\n\r\n const updatedInput = this.props.prefix+mainCode;\r\n if (e.target.value.slice(0, updatedInput.length) !== updatedInput) return;\r\n }\r\n\r\n // Does not exceed 15 digit phone number limit\r\n if (e.target.value.replace(/\\D/g, '').length > 15) return;\r\n\r\n // if the input is the same as before, must be some special key like enter etc.\r\n if (e.target.value === this.state.formattedNumber) return;\r\n\r\n // ie hack\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n } else {\r\n e.returnValue = false;\r\n }\r\n\r\n if (this.props.onChange) e.persist();\r\n\r\n if (e.target.value.length > 0) {\r\n // before entering the number in new format, lets check if the dial code now matches some other country\r\n const inputNumber = e.target.value.replace(/\\D/g, '');\r\n\r\n // we don't need to send the whole number to guess the country... only the first 6 characters are enough\r\n // the guess country function can then use memoization much more effectively since the set of input it\r\n // gets has drastically reduced\r\n if (!this.state.freezeSelection || this.state.selectedCountry.dialCode.length > inputNumber.length) {\r\n newSelectedCountry = this.guessSelectedCountry(inputNumber.substring(0, 6), this.state.onlyCountries, this.state.country) || this.state.selectedCountry;\r\n freezeSelection = false;\r\n }\r\n formattedNumber = newSelectedCountry ?\r\n this.formatNumber(inputNumber, newSelectedCountry.format) : inputNumber;\r\n newSelectedCountry = newSelectedCountry.dialCode ? newSelectedCountry : this.state.selectedCountry;\r\n }\r\n\r\n let caretPosition = e.target.selectionStart;\r\n const oldFormattedText = this.state.formattedNumber;\r\n const diff = formattedNumber.length - oldFormattedText.length;\r\n\r\n this.setState({\r\n formattedNumber: formattedNumber,\r\n // freezeSelection: freezeSelection,\r\n // selectedCountry: newSelectedCountry,\r\n }, () => {\r\n if (diff > 0) {\r\n caretPosition = caretPosition - diff;\r\n }\r\n\r\n const lastChar = formattedNumber.charAt(formattedNumber.length - 1);\r\n\r\n if (lastChar == ')') {\r\n this.numberInputRef.setSelectionRange(formattedNumber.length - 1, formattedNumber.length - 1);\r\n }\r\n else if (caretPosition > 0 && oldFormattedText.length >= formattedNumber.length) {\r\n this.numberInputRef.setSelectionRange(caretPosition, caretPosition);\r\n }\r\n\r\n if (this.props.onChange) this.props.onChange(this.state.formattedNumber, this.getCountryData(), e);\r\n });\r\n }\r\n\r\n handleInputClick = (e) => {\r\n this.setState({ showDropdown: false });\r\n if (this.props.onClick) this.props.onClick(e, this.getCountryData());\r\n }\r\n\r\n handleDoubleClick = (e) => {\r\n const len = e.target.value.length;\r\n e.target.setSelectionRange(0, len);\r\n }\r\n\r\n handleFlagItemClick = (country) => {\r\n // const currentSelectedCountry = this.state.selectedCountry;\r\n const newSelectedCountry = this.state.onlyCountries.find(o => o.id === country.id);\r\n if (!newSelectedCountry) return;\r\n\r\n // const unformattedNumber = this.state.formattedNumber.replace(' ', '').replace('(', '').replace(')', '').replace('-', '');\r\n // const newNumber = unformattedNumber.length > 1 ? unformattedNumber.replace(currentSelectedCountry.dialCode, newSelectedCountry.dialCode) : newSelectedCountry.dialCode;\r\n // const formattedNumber = this.formatNumber(newNumber.replace(/\\D/g, ''), newSelectedCountry.format);\r\n\r\n this.setState({\r\n showDropdown: false,\r\n selectedCountry: newSelectedCountry,\r\n freezeSelection: true,\r\n // formattedNumber\r\n }, () => {\r\n this.cursorToEnd();\r\n if (this.props.onChange) this.props.onChange(this.state.formattedNumber.replace(/[^0-9]+/g,''), this.getCountryData());\r\n });\r\n }\r\n\r\n handleInputFocus = (e) => {\r\n // if the input is blank, insert dial code of the selected country\r\n if (this.numberInputRef) {\r\n if (this.numberInputRef.value === this.props.prefix && this.state.selectedCountry && !this.props.disableCountryCode) {\r\n this.setState({\r\n formattedNumber: this.props.prefix + this.state.selectedCountry.dialCode\r\n }, () => {this.props.jumpCursorToEnd && setTimeout(this.cursorToEnd, 0)});\r\n }\r\n }\r\n\r\n this.setState({ placeholder: '' });\r\n\r\n this.props.onFocus && this.props.onFocus(e, this.getCountryData());\r\n this.props.jumpCursorToEnd && setTimeout(this.cursorToEnd, 0);\r\n }\r\n\r\n handleInputBlur = (e) => {\r\n if (!e.target.value) this.setState({ placeholder: this.props.placeholder });\r\n this.props.onBlur && this.props.onBlur(e, this.getCountryData());\r\n }\r\n\r\n handleInputCopy = (e) => {\r\n if (!this.props.copyNumbersOnly) return;\r\n const text = window.getSelection().toString().replace(/[^0-9]+/g,'');\r\n e.clipboardData.setData('text/plain', text);\r\n e.preventDefault();\r\n }\r\n\r\n getHighlightCountryIndex = (direction) => {\r\n // had to write own function because underscore does not have findIndex. lodash has it\r\n const highlightCountryIndex = this.state.highlightCountryIndex + direction;\r\n\r\n if (highlightCountryIndex < 0 || highlightCountryIndex >= (this.state.onlyCountries.length + this.state.preferredCountries.length)) {\r\n return highlightCountryIndex - direction;\r\n }\r\n\r\n if (this.props.enableSearch && highlightCountryIndex > this.getSearchFilteredCountries().length) return 0; // select first country\r\n return highlightCountryIndex;\r\n }\r\n\r\n searchCountry = () => {\r\n const probableCandidate = this.getProbableCandidate(this.state.queryString) || this.state.onlyCountries[0];\r\n const probableCandidateIndex = this.state.onlyCountries.findIndex(o => o == probableCandidate) + this.state.preferredCountries.length;\r\n\r\n this.scrollTo(this.getElement(probableCandidateIndex), true);\r\n\r\n this.setState({queryString: '', highlightCountryIndex: probableCandidateIndex});\r\n }\r\n\r\n handleKeydown = (e) => {\r\n const { keys } = this.props;\r\n const { target: { className } } = e;\r\n\r\n if (className.includes('flag-dropdown') && e.which === keys.ENTER && !this.state.showDropdown) return this.handleFlagDropdownClick();\r\n if (className.includes('form-control') && (e.which === keys.ENTER || e.which === keys.ESC)) return e.target.blur();\r\n\r\n if (!this.state.showDropdown || this.props.disabled) return;\r\n if (className.includes('search-box')) {\r\n if (e.which !== keys.UP && e.which !== keys.DOWN && e.which !== keys.ENTER) {\r\n if (e.which === keys.ESC && e.target.value === '') {\r\n // do nothing // if search field is empty, pass event (close dropdown)\r\n } else {\r\n return; // don't process other events coming from the search field\r\n }\r\n }\r\n }\r\n\r\n // ie hack\r\n if (e.preventDefault) { e.preventDefault(); }\r\n else { e.returnValue = false; }\r\n\r\n const moveHighlight = (direction) => {\r\n this.setState({\r\n highlightCountryIndex: this.getHighlightCountryIndex(direction)\r\n }, () => {\r\n this.scrollTo(this.getElement(this.state.highlightCountryIndex), true);\r\n });\r\n }\r\n\r\n switch (e.which) {\r\n case keys.DOWN:\r\n moveHighlight(1);\r\n break;\r\n case keys.UP:\r\n moveHighlight(-1);\r\n break;\r\n case keys.ENTER:\r\n if (this.props.enableSearch) {\r\n this.handleFlagItemClick(this.getSearchFilteredCountries()[this.state.highlightCountryIndex] || this.getSearchFilteredCountries()[0], e);\r\n } else {\r\n this.handleFlagItemClick([...this.state.preferredCountries, ...this.state.onlyCountries][this.state.highlightCountryIndex], e);\r\n }\r\n break;\r\n case keys.ESC:\r\n this.setState({\r\n showDropdown: false\r\n }, this.cursorToEnd);\r\n break;\r\n default:\r\n if ((e.which >= keys.A && e.which <= keys.Z) || e.which === keys.SPACE) {\r\n this.setState({\r\n queryString: this.state.queryString + String.fromCharCode(e.which)\r\n }, this.state.debouncedQueryStingSearcher);\r\n }\r\n }\r\n }\r\n\r\n handleInputKeyDown = (e) => {\r\n const { keys } = this.props;\r\n if (e.which === keys.ENTER) {\r\n this.props.onEnterKeyPress(e);\r\n }\r\n\r\n if (this.props.onKeyDown) this.props.onKeyDown(e);\r\n }\r\n\r\n handleClickOutside = (e) => {\r\n if (this.dropdownRef && !this.dropdownContainerRef.contains(e.target)) {\r\n this.state.showDropdown && this.setState({ showDropdown: false });\r\n }\r\n }\r\n\r\n handleSearchChange = (e) => {\r\n const { currentTarget: { value: searchValue } } = e;\r\n const { preferredCountries, selectedCountry } = this.state\r\n let highlightCountryIndex = 0;\r\n\r\n if (searchValue === '' && selectedCountry) {\r\n const { onlyCountries } = this.state\r\n highlightCountryIndex = preferredCountries.concat(onlyCountries).findIndex(o => o == selectedCountry);\r\n // wait asynchronous search results re-render, then scroll\r\n setTimeout(() => this.scrollTo(this.getElement(highlightCountryIndex)), 100)\r\n }\r\n this.setState({ searchValue, highlightCountryIndex });\r\n }\r\n\r\n getDropdownCountryName = (country) => {\r\n return country.localName || country.name;\r\n }\r\n\r\n getSearchFilteredCountries = () => {\r\n const { preferredCountries, onlyCountries, searchValue } = this.state\r\n const { enableSearch } = this.props\r\n const allCountries = preferredCountries.concat(onlyCountries);\r\n const sanitizedSearchValue = searchValue.trim().toLowerCase();\r\n if (enableSearch && sanitizedSearchValue) {\r\n // [...new Set()] to get rid of duplicates\r\n // firstly search by iso2 code\r\n const iso2countries = allCountries.filter(({ name, localName, iso2, dialCode }) =>\r\n [`${iso2}`].some(field => field.toLowerCase().includes(sanitizedSearchValue)))\r\n const searchedCountries = allCountries.filter(({ name, localName, iso2, dialCode }) =>\r\n [`${name}`, `${localName}`, this.props.prefix+dialCode].some(field => field.toLowerCase().includes(sanitizedSearchValue)))\r\n this.scrollToTop()\r\n return [...new Set([].concat(iso2countries, searchedCountries))]\r\n } else {\r\n return allCountries\r\n }\r\n }\r\n\r\n getCountryDropdownList = () => {\r\n const { preferredCountries, highlightCountryIndex, showDropdown, searchValue } = this.state;\r\n const { enableSearch, disableSearchIcon, searchClass, searchStyle, searchPlaceholder, autocompleteSearch } = this.props;\r\n\r\n const searchedCountries = this.getSearchFilteredCountries()\r\n\r\n let countryDropdownList = searchedCountries.map((country, index) => {\r\n const itemClasses = classNames({\r\n country: true,\r\n preferred: country.iso2 === 'us' || country.iso2 === 'gb',\r\n active: country.iso2 === 'us',\r\n highlight: highlightCountryIndex === index\r\n });\r\n\r\n const inputFlagClasses = `flag ${country.iso2}`;\r\n\r\n return (\r\n this[`flag_no_${index}`] = el}\r\n key={`flag_no_${index}`}\r\n data-flag-key={`flag_no_${index}`}\r\n className={itemClasses}\r\n data-dial-code='1'\r\n tabIndex={this.props.tabIndex}\r\n data-country-code={country.iso2}\r\n onClick={() => this.handleFlagItemClick(country)}\r\n >\r\n
\r\n {this.getDropdownCountryName(country)}\r\n {country.format ? this.formatNumber(country.dialCode, country.format) : (this.props.prefix+country.dialCode)}\r\n \r\n );\r\n });\r\n\r\n const dashedLi = (
  • );\r\n // let's insert a dashed line in between preffered countries and the rest\r\n (preferredCountries.length > 0) && (!enableSearch || enableSearch && !searchValue.trim()) &&\r\n countryDropdownList.splice(preferredCountries.length, 0, dashedLi);\r\n\r\n const dropDownClasses = classNames({\r\n [this.props.dropdownClass]: true,\r\n 'country-list': true,\r\n 'hide': !showDropdown\r\n });\r\n\r\n return (\r\n this.dropdownRef = el}\r\n className={dropDownClasses}\r\n style={this.props.dropdownStyle}\r\n >\r\n {enableSearch && (\r\n \r\n {!disableSearchIcon &&\r\n \r\n 🔎\r\n }\r\n \r\n
  • \r\n )}\r\n {countryDropdownList.length > 0\r\n ? countryDropdownList\r\n : (\r\n
  • \r\n No entries to show.\r\n
  • \r\n )}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { onlyCountries, selectedCountry, showDropdown, formattedNumber } = this.state;\r\n const { disableDropdown, renderStringAsFlag } = this.props;\r\n\r\n const arrowClasses = classNames({'arrow': true, 'up': showDropdown});\r\n const inputClasses = classNames({\r\n [this.props.inputClass]: true,\r\n 'form-control': true,\r\n 'invalid-number': !this.props.isValid(formattedNumber.replace(/\\D/g, ''), onlyCountries) || this.props.hasError,\r\n 'open': showDropdown,\r\n 'disabled-input-tel': this.props.disabled,\r\n });\r\n const selectedFlagClasses = classNames({\r\n 'selected-flag': true,\r\n 'open': showDropdown,\r\n });\r\n const flagViewClasses = classNames({\r\n [this.props.buttonClass]: true,\r\n 'flag-dropdown': true,\r\n 'open': showDropdown,\r\n });\r\n const inputFlagClasses = `flag ${selectedCountry && selectedCountry.iso2}`;\r\n\r\n return (\r\n \r\n this.numberInputRef = el}\r\n onKeyDown={this.handleInputKeyDown}\r\n placeholder={this.props.placeholder}\r\n disabled={this.props.disabled}\r\n type='tel'\r\n {...this.props.inputProps}\r\n />\r\n\r\n this.dropdownContainerRef = el}\r\n tabIndex={this.props.tabIndex}\r\n role='button'\r\n >\r\n {renderStringAsFlag ?\r\n
    {renderStringAsFlag}
    \r\n :\r\n \r\n
    \r\n
    {selectedCountry.dialCode ? ` +${selectedCountry.dialCode}` : ''}
    \r\n
    \r\n
    }\r\n\r\n {this.getCountryDropdownList()}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n countries: state.appReducer.countries,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PhoneInput);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport moment from 'moment';\r\nimport 'moment/locale/ru';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport './assets/styles/styles.scss';\r\nimport { changeUserSettings } from '../../../App/actions';\r\nimport {\r\n EMAIL_REGEX,\r\n PHONE_REGEX,\r\n} from '../../../../utils';\r\nimport PhoneInput from '../../../../commonComponents/PhoneInput';\r\n\r\nclass UserSettingsForm extends React.Component {\r\n static propTypes = {\r\n address: PropTypes.string,\r\n birthday: PropTypes.string,\r\n email: PropTypes.string,\r\n phoneNumber: PropTypes.string,\r\n phoneCountryId: PropTypes.number,\r\n name: PropTypes.string,\r\n dispatch: PropTypes.func.isRequired,\r\n settingsError: PropTypes.string,\r\n saved: PropTypes.bool.isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n }\r\n\r\n static defaultProps = {\r\n settingsError: null,\r\n address: '',\r\n birthday: '',\r\n email: '',\r\n phone: '',\r\n name: '',\r\n phoneNumber: '',\r\n phoneCountryId: 0,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.formChangeHandler = this.formChangeHandler.bind(this);\r\n this.formSubmitHandler = this.formSubmitHandler.bind(this);\r\n\r\n this.state = {\r\n userName: props.name || '',\r\n userBirthday: props.birthday || '',\r\n userEmail: props.email || '',\r\n userAddress: props.address || '',\r\n password: '',\r\n emailError: '',\r\n phoneError: '',\r\n passwordError: '',\r\n phoneNumber: props.phoneNumber || '',\r\n phoneCountryId: props.phoneCountryId || 0,\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState(state => ({\r\n userName: !state.userName ? (nextProps.name || '') : state.userName,\r\n userBirthday: !state.userBirthday ? (nextProps.birthday || '') : state.userBirthday,\r\n userEmail: !state.userEmail ? (nextProps.email || '') : state.userEmail,\r\n userAddress: !state.userAddress ? (nextProps.address || '') : state.userAddress,\r\n phoneCountryId: !state.phoneCountryId ? (nextProps.phoneCountryId || '') : state.phoneCountryId,\r\n phoneNumber: !state.phoneNumber ? (nextProps.phoneNumber || '') : state.phoneNumber,\r\n }));\r\n }\r\n\r\n formChangeHandler(event) {\r\n this.setState({\r\n [event.target.name]: event.target.value,\r\n emailError: '',\r\n phoneError: '',\r\n passwordError: '',\r\n });\r\n }\r\n\r\n formSubmitHandler(event) {\r\n event.preventDefault();\r\n let hasError = false;\r\n\r\n if (!EMAIL_REGEX.test(this.state.userEmail)) {\r\n this.setState({\r\n emailError: 'Некорректный адрес электронной почты',\r\n });\r\n hasError = true;\r\n }\r\n\r\n if (!this.state.phoneNumber) {\r\n this.setState({\r\n phoneError: 'Некорректный номер телефона',\r\n });\r\n hasError = true;\r\n }\r\n\r\n if (this.state.password.length === 0) {\r\n this.setState({\r\n passwordError: 'Поле не может быть пустым',\r\n });\r\n hasError = true;\r\n }\r\n\r\n const requestData = {\r\n PhoneCountryId: this.state.phoneCountryId,\r\n Phone: this.state.phoneNumber,\r\n email: this.state.userEmail,\r\n password: this.state.password,\r\n };\r\n\r\n if (!hasError) {\r\n this.props.dispatch(changeUserSettings(requestData));\r\n }\r\n }\r\n\r\n onChangePhoneInput = (phoneNumber, additionalData) => {\r\n this.setState({\r\n phoneNumber,\r\n phoneCountryId: additionalData.id,\r\n })\r\n }\r\n\r\n render() {\r\n if (this.props.loading) {\r\n return ;\r\n }\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n

    \r\n Для изменения телефона или адреса электронной почты вам нужно ввести текущий пароль\r\n

    \r\n {this.props.settingsError &&\r\n

    {this.props.settingsError}

    \r\n }\r\n \r\n {(!this.props.settingsError && this.props.saved) &&\r\n

    \r\n Настройки успешно обновлены\r\n

    \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n address: state.appReducer.user.address,\r\n birthday: state.appReducer.user.birthday,\r\n email: state.appReducer.user.email,\r\n number: state.appReducer.user.number,\r\n phoneCountryId: state.appReducer.user.phoneCountryId,\r\n phoneNumber: state.appReducer.user.phoneNumber,\r\n phone: state.appReducer.user.phone,\r\n name: state.appReducer.user.name,\r\n settingsError: state.appReducer.settingsError,\r\n saved: state.appReducer.userSettingsSaved,\r\n loading: state.appReducer.userFetching,\r\n});\r\n\r\nexport default connect(mapStateToProps)(UserSettingsForm);\r\n","import React from 'react';\r\nimport cx from 'classnames';\r\nimport AccountSettingsForm from '../../components/AccountSettingsForm';\r\nimport UserSettingsForm from '../../components/UserSettingsForm';\r\nimport './assets/styles/styles.scss';\r\n\r\nexport default class Settings extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.tabChangeHandler = this.tabChangeHandler.bind(this);\r\n\r\n this.state = {\r\n activeTab: 'user',\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = 'Личные данные';\r\n }\r\n\r\n getForm() {\r\n if (this.state.activeTab === 'user') {\r\n return ;\r\n }\r\n return ;\r\n }\r\n\r\n tabChangeHandler(event) {\r\n this.setState({\r\n activeTab: event.target.value,\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n Личные данные\r\n \r\n \r\n \r\n Настройки аккаунта\r\n \r\n
    \r\n
    \r\n {this.getForm()}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { push } from 'react-router-redux';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport './assets/styles/styles.scss';\r\nimport { changeTempPassword } from '../../../App/actions';\r\n\r\nclass ChangePassword extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n tempPasswordError: PropTypes.shape({\r\n Message: PropTypes.string,\r\n ModelState: PropTypes.shape({\r\n 'model.Login': PropTypes.arrayOf(PropTypes.string),\r\n 'model.New': PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n }),\r\n isTempPassword: PropTypes.bool.isRequired,\r\n login: PropTypes.string,\r\n }\r\n\r\n static defaultProps = {\r\n tempPasswordError: null,\r\n login: '',\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.changeHandler = this.changeHandler.bind(this);\r\n this.submitHandler = this.submitHandler.bind(this);\r\n\r\n this.state = {\r\n login: props.login,\r\n password: '',\r\n passwordConfirm: '',\r\n errors: {\r\n login: '',\r\n password: '',\r\n passwordConfirm: '',\r\n },\r\n showPassword: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = 'Сброс пароля';\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (!this.props.login && nextProps.login) {\r\n this.setState({\r\n login: nextProps.login,\r\n });\r\n }\r\n\r\n if (this.props.tempPasswordError !== nextProps.tempPasswordError) {\r\n if (nextProps.tempPasswordError && nextProps.tempPasswordError.ModelState) {\r\n this.setState(prevState => ({\r\n errors: {\r\n ...prevState.errors,\r\n login: Array.isArray(nextProps.tempPasswordError.ModelState['model.Login']) ? nextProps.tempPasswordError.ModelState['model.Login'].join(' ') : '',\r\n password: Array.isArray(nextProps.tempPasswordError.ModelState['model.New']) ? nextProps.tempPasswordError.ModelState['model.New'].join(' ') : '',\r\n },\r\n }));\r\n }\r\n\r\n if (!nextProps.tempPasswordError) {\r\n this.setState({\r\n errors: {\r\n login: '',\r\n password: '',\r\n passwordConfirm: '',\r\n },\r\n });\r\n }\r\n }\r\n }\r\n\r\n changeHandler(event) {\r\n const { value, name, checked } = event.target;\r\n if (name === 'showPassword') {\r\n this.setState({\r\n showPassword: checked,\r\n });\r\n } else {\r\n this.setState(prevState => ({\r\n [name]: value,\r\n errors: {\r\n ...prevState.errors,\r\n [name]: '',\r\n },\r\n }));\r\n }\r\n }\r\n\r\n submitHandler(event) {\r\n event.preventDefault();\r\n const formData = {\r\n login: this.state.login,\r\n password: this.state.password,\r\n passwordConfirm: this.state.passwordConfirm,\r\n };\r\n\r\n Object.keys(formData).forEach((field) => {\r\n if (formData[field].length === 0) {\r\n this.setState(prevState => ({\r\n errors: {\r\n ...prevState.errors,\r\n [field]: 'Поле не может быть пустым',\r\n },\r\n }));\r\n }\r\n });\r\n\r\n if (formData.password.length && formData.passwordConfirm.length\r\n && formData.password.length !== formData.passwordConfirm.length) {\r\n this.setState(prevState => ({\r\n errors: {\r\n ...prevState.errors,\r\n passwordConfirm: 'Пароли должны совпадать',\r\n },\r\n }));\r\n return;\r\n }\r\n\r\n if (Object.keys(this.state.errors).every(item => this.state.errors[item] === '')) {\r\n this.props.dispatch(changeTempPassword(formData));\r\n }\r\n }\r\n\r\n render() {\r\n if (!this.props.isTempPassword) {\r\n this.props.dispatch(push('/'));\r\n }\r\n return (\r\n
    \r\n
    \r\n

    Изменение временного логина и пароля

    \r\n

    \r\n Пожалуйста, придумайте и введите новый логин и пароль.
    \r\n Вы также можете оставить свой предыдущий логин.\r\n

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n isTempPassword: state.appReducer.isTempPassword,\r\n tempPasswordError: state.appReducer.tempPasswordError,\r\n login: state.appReducer.user.login,\r\n});\r\n\r\nexport default connect(mapStateToProps)(ChangePassword);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport './assets/styles/styles.scss';\r\n\r\n\r\nconst Inner = ({ children, className }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nconst RegularText = ({ children, className }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nconst BoldText = ({ children, className }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nconst CustomText = ({ children, className }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nconst innerPropTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.number,\r\n PropTypes.node,\r\n PropTypes.element,\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.arrayOf(PropTypes.element),\r\n ]),\r\n className: PropTypes.string,\r\n};\r\n\r\nconst innerDefaultProps = {\r\n children: null,\r\n className: null,\r\n};\r\n\r\nRegularText.propTypes = innerPropTypes;\r\nBoldText.propTypes = innerPropTypes;\r\nCustomText.propTypes = innerPropTypes;\r\nInner.propTypes = innerPropTypes;\r\n\r\nRegularText.defaultProps = innerDefaultProps;\r\nBoldText.defaultProps = innerDefaultProps;\r\nCustomText.defaultProps = innerDefaultProps;\r\nInner.defaultProps = innerDefaultProps;\r\n\r\n\r\nexport default class BlockLikeInput extends React.Component {\r\n static RegularText = RegularText;\r\n static BoldText = BoldText;\r\n static CustomText = CustomText;\r\n\r\n static propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.number,\r\n PropTypes.node,\r\n PropTypes.element,\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.arrayOf(PropTypes.element),\r\n ]),\r\n className: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n className: null,\r\n children: null,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n
    \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst Link = ({ children }) => {children};\r\n\r\nLink.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nLink.defaultProps = {\r\n children: null,\r\n};\r\n\r\nexport default class Typography {\r\n static Link = Link;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst SetMaxSum = ({ label, onClick }) => (\r\n
    \r\n \r\n \r\n {label}\r\n \r\n \r\n
    \r\n);\r\n\r\nSetMaxSum.propTypes = {\r\n label: PropTypes.node.isRequired,\r\n onClick: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default SetMaxSum;\r\n","import { push } from 'react-router-redux';\r\nimport { getCookie, resultDataToCamelCase } from '../../../utils';\r\nimport { BASE_API_URL } from '../../../constants';\r\n\r\nexport const fetchStart = () => ({\r\n type: 'transfer/FETCH_START',\r\n});\r\n\r\nexport const fetchStop = () => ({\r\n type: 'transfer/FETCH_STOP',\r\n});\r\n\r\nexport const fetchFail = errorMessage => ({\r\n type: 'transfer/FETCH_FAIL',\r\n payload: errorMessage,\r\n});\r\n\r\nconst getUrlForConfirmCode = (transferType) => {\r\n switch (transferType) {\r\n case 'salary':\r\n return `${BASE_API_URL}/transfer`;\r\n\r\n case 'loan':\r\n return `${BASE_API_URL}/transfer/loan`;\r\n\r\n case 'deposit':\r\n return `${BASE_API_URL}/transfer/deposit`;\r\n\r\n case 'currency':\r\n return `${BASE_API_URL}/transfer/currency`;\r\n\r\n case 'to-partner':\r\n return `${BASE_API_URL}/transfer/outer`;\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nconst getUrlForReFetchCode = (transferType, codeType) => {\r\n switch (transferType) {\r\n case 'salary':\r\n return `${BASE_API_URL}/transfer/request-code`;\r\n\r\n case 'loan':\r\n return `${BASE_API_URL}/transfer/loan/request-code`;\r\n\r\n case 'deposit':\r\n return `${BASE_API_URL}/transfer/deposit/request-code`;\r\n\r\n case 'to-partner':\r\n return `${BASE_API_URL}/transfer/outer/request-code/${codeType}`;\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport const cancelTransfer = () => (dispatch) => {\r\n dispatch({\r\n type: 'CANCEL_TRANSFER',\r\n });\r\n};\r\n\r\nexport const submitConfirmCode = (code, { transferType, transferData }) => (dispatch) => {\r\n const token = getCookie('access_token');\r\n const apiUrl = getUrlForConfirmCode(transferType);\r\n if (!code || !apiUrl) {\r\n return;\r\n }\r\n\r\n dispatch(fetchStart());\r\n\r\n fetch(apiUrl, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ ...transferData, Code: code }),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n const contentLength = parseInt(response.headers.get('content-length'), 10);\r\n if (contentLength) {\r\n return response.json();\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(() => {\r\n dispatch(fetchStop());\r\n dispatch(push('/transfers/success', {\r\n transferType,\r\n accountId:\r\n transferType === 'currency' && transferData\r\n ? resultDataToCamelCase(transferData).toBill\r\n : null,\r\n }));\r\n dispatch(cancelTransfer());\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'TRANSFER_CONFIRM_CODE_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const reFetchConfirmCode = ({ transferType, transferData }) => (dispatch) => {\r\n const url = getUrlForReFetchCode(transferType, transferData.CodeType);\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !url) {\r\n return;\r\n }\r\n dispatch(fetchStart());\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ ...transferData }),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response;\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(() => {\r\n dispatch(fetchStop());\r\n dispatch({\r\n type: 'RE_FETCH_CODE_SUCCESS',\r\n });\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'RE_FETCH_CODE_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n","import { push } from 'react-router-redux';\r\nimport {\r\n resultDataToCamelCase,\r\n getCookie,\r\n} from '../../../utils';\r\nimport {\r\n BASE_API_URL,\r\n ACCOUNT_TYPES_FOR_TRANSFER,\r\n CONFIRM_TYPES,\r\n} from '../../../constants';\r\nimport {\r\n fetchStart,\r\n fetchStop,\r\n} from './';\r\n\r\nexport const getAccounts = () => (dispatch) => {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch(fetchStart());\r\n\r\n const requests = ACCOUNT_TYPES_FOR_TRANSFER.map(item => fetch(\r\n `${BASE_API_URL}/transfer/${item}`,\r\n {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n },\r\n ).then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n }));\r\n\r\n Promise.all(requests).then((json) => {\r\n dispatch(fetchStop());\r\n dispatch({\r\n type: 'salaryTransfer/ACCOUNTS_LOADED_SUCCESS',\r\n payload: resultDataToCamelCase(json.reduce((a, b) => a.concat(b))),\r\n });\r\n }).catch((error) => {\r\n dispatch({\r\n type: 'salaryTransfer/ACCOUNTS_LOADED_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const changeAccount = id => ({\r\n type: 'salaryTransfer/CHANGE_ACCOUNT',\r\n payload: id,\r\n});\r\n\r\nexport const setTransferSum = sum => ({\r\n type: 'salaryTransfer/SET_TRANSFER_SUM',\r\n payload: sum,\r\n});\r\n\r\nexport const submitTransferForm = confirmMethod => (dispatch, getState) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !CONFIRM_TYPES[confirmMethod]) {\r\n return;\r\n }\r\n dispatch(fetchStart());\r\n\r\n const { accountFrom, transferSum } = getState().transfersReducerSalary;\r\n const requestData = {\r\n CodeType: CONFIRM_TYPES[confirmMethod],\r\n Id: accountFrom,\r\n Sum: transferSum,\r\n };\r\n\r\n fetch(`${BASE_API_URL}/transfer/request-code`, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(requestData),\r\n }).then((response) => {\r\n if (response.ok) {\r\n dispatch(fetchStop());\r\n return dispatch(push('/transfers/confirm', {\r\n confirmMethod,\r\n transferType: 'salary',\r\n transferData: requestData,\r\n }));\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n }).catch((error) => {\r\n dispatch({\r\n type: 'salaryTransfer/SUBMIT_FORM_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport { FormControl, Radio } from '../../../../commonComponents/FormControl';\r\n\r\nconst ConfirmMethodControls = ({ changeHandler, selectedMethod }) => (\r\n \r\n \r\n Выберите способ потверждения\r\n \r\n Выслать код в SMS\r\n \r\n \r\n Выслать код на e-mail\r\n \r\n \r\n PUSH сообщение\r\n \r\n \r\n \r\n);\r\n\r\nConfirmMethodControls.propTypes = {\r\n changeHandler: PropTypes.func.isRequired,\r\n selectedMethod: PropTypes.oneOf([\r\n 'sms',\r\n 'email',\r\n ]).isRequired,\r\n};\r\n\r\nexport default ConfirmMethodControls;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport cx from 'classnames';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport BlockLikeInput from '../../../../commonComponents/BlockLikeInput';\r\nimport Typography from '../../../../commonComponents/Typography';\r\nimport SetMaxSum from '../SetMaxSum';\r\nimport { getAccountLabelTransfer, getMoneyString } from '../../../../utils';\r\nimport { cancelTransfer } from '../../actions';\r\nimport {\r\n getAccounts,\r\n changeAccount,\r\n setTransferSum,\r\n submitTransferForm,\r\n} from '../../actions/salaryTransfer';\r\nimport { DEFAULT_CURRENCY_LABEL } from '../../../../constants';\r\nimport ConfirmMethodControls from '../ConfirmMethodControls';\r\nimport { acceptLimitInfo, checkLimitInfo } from '../../../App/actions';\r\n\r\nclass TransferFormSalary extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n className: PropTypes.string,\r\n accountFrom: PropTypes.number,\r\n transferSum: PropTypes.number.isRequired,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n })).isRequired,\r\n transferFormError: PropTypes.string,\r\n fetching: PropTypes.bool.isRequired,\r\n initialAccount: PropTypes.number,\r\n limitInfo: PropTypes.shape({\r\n IsActivated: PropTypes.bool.isRequired,\r\n IsAccepted: PropTypes.bool.isRequired,\r\n Description: PropTypes.string.isRequired,\r\n }).isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n className: null,\r\n accountFrom: null,\r\n transferFormError: null,\r\n initialAccount: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n sumError: null,\r\n currency: DEFAULT_CURRENCY_LABEL,\r\n availableSum: 0,\r\n confirmMethod: 'sms',\r\n accountFromError: null,\r\n focusSum: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.dispatch(getAccounts());\r\n this.props.dispatch(checkLimitInfo());\r\n if (this.props.initialAccount) {\r\n this.props.dispatch(changeAccount(this.props.initialAccount));\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n const selectedAccount = nextProps.accounts.find(item => item.id === nextProps.accountFrom);\r\n\r\n if (selectedAccount) {\r\n this.setState({\r\n currency: selectedAccount.currencyName,\r\n availableSum: selectedAccount.sum,\r\n });\r\n }\r\n\r\n if (!nextProps.accountFrom) {\r\n this.setState({\r\n currency: DEFAULT_CURRENCY_LABEL,\r\n availableSum: 0,\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (!this.props.accounts.length && prevProps.accounts.length) {\r\n this.props.dispatch(getAccounts());\r\n }\r\n }\r\n\r\n setMaxSum = () => {\r\n this.props.dispatch(setTransferSum(this.state.availableSum));\r\n };\r\n\r\n handleChangeAccount = ({ value: id }) => {\r\n this.resetErrors(() => this.props.dispatch(changeAccount(id)));\r\n };\r\n\r\n handleChangeSum = (value) => {\r\n this.props.dispatch(setTransferSum(value));\r\n };\r\n\r\n handleChangeConfirmMethod = (event) => {\r\n this.setState({\r\n confirmMethod: event.target.value,\r\n });\r\n };\r\n\r\n resetErrors = (callback) => {\r\n this.setState(\r\n {\r\n sumError: null,\r\n accountFromError: null,\r\n },\r\n () => {\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n },\r\n );\r\n };\r\n\r\n validateAccoutFrom = () => {\r\n const account = this.props.accountFrom;\r\n\r\n if (!account) {\r\n return 'Выберите счет списания';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n validateSumm = () => {\r\n const sum = parseFloat(this.props.transferSum);\r\n\r\n if (sum <= 0) {\r\n return 'Введите сумму перевода';\r\n }\r\n\r\n if (sum > this.state.availableSum) {\r\n return 'Недостаточно средств на счете';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n submitTransferForm = () => {\r\n if (this.props.fetching) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n sumError: this.validateSumm(),\r\n accountFromError: this.validateAccoutFrom(),\r\n },\r\n () => {\r\n if (this.state.sumError || this.state.accountFromError) {\r\n return;\r\n }\r\n\r\n this.props.dispatch(submitTransferForm(this.state.confirmMethod));\r\n },\r\n );\r\n };\r\n\r\n submitHasDisabled = () => {\r\n const { fetching, accountFrom, transferSum } = this.props;\r\n const { sumError } = this.state;\r\n return !!(fetching || !accountFrom || !transferSum || sumError);\r\n };\r\n\r\n cancelTransfer = () => {\r\n this.props.dispatch(cancelTransfer());\r\n };\r\n\r\n renderBlockForm = () => {\r\n const { limitInfo } = this.props;\r\n return (\r\n
    \r\n
    ')}} />\r\n \r\n Продолжить\r\n \r\n
    \r\n );\r\n };\r\n\r\n showBlockForm = () => {\r\n const { focusSum } = this.state;\r\n const { limitInfo } = this.props;\r\n\r\n return focusSum && limitInfo.IsActivated && !limitInfo.IsAccepted;\r\n };\r\n\r\n onFocus = () => {\r\n this.resetErrors();\r\n this.setState({\r\n focusSum: true,\r\n });\r\n };\r\n\r\n acceptBlocking = () => {\r\n this.props.dispatch(acceptLimitInfo());\r\n };\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.showBlockForm() && this.renderBlockForm()}\r\n \r\n \r\n Счет списания\r\n ({\r\n value: item.id,\r\n label: getAccountLabelTransfer(item),\r\n account: item,\r\n }))}\r\n name=\"accountType\"\r\n clearable={false}\r\n searchable={false}\r\n onChange={this.handleChangeAccount}\r\n value={this.props.accountFrom}\r\n placeholder=\"Выберите счет\"\r\n error={!!this.state.accountFromError}\r\n />\r\n {this.state.accountFromError}\r\n \r\n \r\n \r\n \r\n Доступно для снятия\r\n \r\n \r\n {getMoneyString(this.state.availableSum, this.state.currency)}\r\n \r\n \r\n \r\n \r\n Валюта\r\n \r\n {this.state.currency}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.availableSum > 0 && (\r\n \r\n \r\n Перевести все{' '}\r\n \r\n {getMoneyString(this.state.availableSum, this.state.currency)}\r\n \r\n \r\n }\r\n />\r\n \r\n )}\r\n \r\n \r\n {this.props.transferFormError && (\r\n

    {this.props.transferFormError}

    \r\n )}\r\n \r\n \r\n \r\n {this.props.fetching ? 'Подождите...' : 'Подтвердить операцию'}\r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n accounts: state.transfersReducerSalary.accounts,\r\n accountFrom: state.transfersReducerSalary.accountFrom,\r\n transferSum: state.transfersReducerSalary.transferSum,\r\n transferFormError: state.transfersReducerSalary.transferFormError,\r\n fetching: state.transfersReducer.fetching,\r\n limitInfo: state.appReducer.limitInfo,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TransferFormSalary);\r\n","import { push } from 'react-router-redux';\r\nimport {\r\n resultDataToCamelCase,\r\n getCookie,\r\n} from '../../../utils';\r\nimport { cancelTransfer } from './';\r\nimport { BASE_API_URL } from '../../../constants';\r\n\r\nconst fetchStart = () => ({\r\n type: 'TRANSFER_FETCH_START',\r\n});\r\n\r\nconst fetchStop = () => ({\r\n type: 'TRANSFER_FETCH_START',\r\n});\r\n\r\nexport const getAccounts = () => (dispatch) => {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch(fetchStart());\r\n\r\n fetch(`${BASE_API_URL}/transfer/inner`, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n }).then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n }).then((json) => {\r\n dispatch({\r\n type: 'innertTransfer/ACCOUNTS_LOADED',\r\n payload: resultDataToCamelCase(JSON.parse(json)),\r\n });\r\n dispatch(fetchStop());\r\n }).catch((error) => {\r\n dispatch({\r\n type: 'innertTransfer/ACCOUNTS_LOADED_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const changeAccount = (id, direction) => {\r\n if (direction === 'from') {\r\n return {\r\n type: 'innertTransfer/CHANGE_FROM_ACCOUNT',\r\n payload: id,\r\n };\r\n }\r\n\r\n if (direction === 'to') {\r\n return {\r\n type: 'innertTransfer/CHANGE_TO_ACCOUNT',\r\n payload: id,\r\n };\r\n }\r\n\r\n return {};\r\n};\r\n\r\nexport const changeTransferSum = sum => ({\r\n type: 'innertTransfer/CHANGE_TRANSFER_SUM',\r\n payload: sum,\r\n});\r\n\r\nexport const submitTransferForm = () => (dispatch, getState) => {\r\n const {\r\n accountFrom,\r\n accountTo,\r\n transferSum,\r\n } = getState().transfersReducerInner;\r\n const token = getCookie('access_token');\r\n\r\n if (!token) {\r\n return;\r\n }\r\n\r\n const requestData = {\r\n FromBill: accountFrom,\r\n ToBill: accountTo,\r\n Sum: transferSum,\r\n };\r\n\r\n dispatch(fetchStart());\r\n fetch(`${BASE_API_URL}/transfer/inner`, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(requestData),\r\n }).then((response) => {\r\n if (response.ok) {\r\n dispatch(fetchStop());\r\n dispatch(cancelTransfer());\r\n dispatch(push('/transfers/success', {\r\n transferType: 'inner',\r\n }));\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n /** Если не ОК, рэйзим ошибку из ответа с сервака */\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n }).catch((error) => {\r\n console.warn(error);\r\n dispatch(fetchStop());\r\n });\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport cx from 'classnames';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport { getAccountLabelTransfer, getMoneyString } from '../../../../utils';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Typography from '../../../../commonComponents/Typography';\r\nimport BlockLikeInput from '../../../../commonComponents/BlockLikeInput';\r\nimport SetMaxSum from '../SetMaxSum';\r\nimport {\r\n getAccounts,\r\n changeAccount,\r\n changeTransferSum,\r\n submitTransferForm,\r\n} from '../../actions/innerTransfer';\r\nimport { DEFAULT_CURRENCY_LABEL } from '../../../../constants';\r\n\r\nclass TransferFormInner extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n className: PropTypes.string,\r\n accountFrom: PropTypes.number,\r\n accountTo: PropTypes.number,\r\n transferSum: PropTypes.number.isRequired,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n })).isRequired,\r\n transferError: PropTypes.string,\r\n fetching: PropTypes.bool.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n className: null,\r\n accountFrom: null,\r\n accountTo: null,\r\n transferError: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n sumError: null,\r\n accountFromError: null,\r\n accountToError: null,\r\n currency: DEFAULT_CURRENCY_LABEL,\r\n availableSum: 0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.dispatch(getAccounts());\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n const selectedAccountFrom = nextProps.accounts.find(item => item.id === nextProps.accountFrom);\r\n\r\n if (selectedAccountFrom) {\r\n this.setState({\r\n currency: selectedAccountFrom.currencyName,\r\n availableSum: selectedAccountFrom.balance,\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (!this.props.accounts.length && prevProps.accounts.length) {\r\n this.props.dispatch(getAccounts());\r\n }\r\n }\r\n\r\n getavailableSum = () => getMoneyString(this.state.availableSum, this.state.currency);\r\n\r\n getAccountFromOptions = () => {\r\n const selectedToAccount = this.props.accounts.find(item => item.id === this.props.accountFrom);\r\n\r\n if (selectedToAccount) {\r\n return selectedToAccount.avaliableAccounts.map(item => ({\r\n value: item.id,\r\n label: `\"${item.accountName}\", ${item.currencyName}`,\r\n account: item,\r\n }));\r\n }\r\n return null;\r\n };\r\n\r\n setMaxSum = () => {\r\n this.props.dispatch(changeTransferSum(this.state.availableSum));\r\n };\r\n\r\n changeFromAccount = ({ value: id }) => {\r\n this.resetErrors(() => {\r\n this.props.dispatch(changeAccount(id, 'from'));\r\n });\r\n };\r\n\r\n changeToAccount = ({ value: id }) => {\r\n this.resetErrors(() => {\r\n this.props.dispatch(changeAccount(id, 'to'));\r\n });\r\n };\r\n\r\n handleChangetransferSum = (value) => {\r\n this.props.dispatch(changeTransferSum(value));\r\n };\r\n\r\n resetErrors = (callback) => {\r\n this.setState(\r\n {\r\n sumError: null,\r\n accountFromError: null,\r\n accountToError: null,\r\n },\r\n () => {\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n },\r\n );\r\n };\r\n\r\n validateAccoutFrom = () => {\r\n const account = this.props.accountFrom;\r\n\r\n if (!account) {\r\n return 'Выберите счет списания';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n validateAccoutTo = () => {\r\n const account = this.props.accountTo;\r\n\r\n if (!account) {\r\n return 'Выберите счет зачисления';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n validateSumm = () => {\r\n const sum = parseFloat(this.props.transferSum);\r\n\r\n if (sum <= 0) {\r\n return 'Введите сумму перевода';\r\n }\r\n\r\n if (sum > this.state.availableSum) {\r\n return 'Недостаточно средств';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n submitForm = () => {\r\n if (this.props.fetching) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n sumError: this.validateSumm(),\r\n accountFromError: this.validateAccoutFrom(),\r\n accountToError: this.validateAccoutTo(),\r\n },\r\n () => {\r\n if (this.state.sumError || this.state.accountFromError || this.state.accountToError) {\r\n return;\r\n }\r\n\r\n this.props.dispatch(submitTransferForm());\r\n },\r\n );\r\n };\r\n\r\n isSubmitDisabled = () => {\r\n const { fetching, accountFrom, accountTo } = this.props;\r\n const { sumError } = this.state;\r\n return !!(fetching || !accountFrom || !accountTo || sumError);\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n

    Счет снятия

    \r\n ({\r\n value: item.id,\r\n label: getAccountLabelTransfer(item),\r\n }))}\r\n name=\"accountType\"\r\n clearable={false}\r\n searchable={false}\r\n onChange={this.changeFromAccount}\r\n value={this.props.accountFrom}\r\n placeholder=\"Выберите счет\"\r\n error={!!this.state.accountFromError}\r\n />\r\n {this.state.accountFromError}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n

    Счет зачисления

    \r\n \r\n \r\n {!!this.props.accountFrom && this.state.accountToError}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Доступно для снятия\r\n \r\n {this.getavailableSum()}\r\n \r\n \r\n \r\n Валюта\r\n \r\n \r\n {this.state.currency || '---'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.availableSum > 0 && (\r\n \r\n \r\n Перевести все{' '}\r\n \r\n {getMoneyString(this.state.availableSum, this.state.currency)}\r\n \r\n \r\n }\r\n />\r\n \r\n )}\r\n \r\n \r\n {this.props.transferError && (\r\n \r\n

    {this.props.transferError}

    \r\n
    \r\n )}\r\n \r\n \r\n {this.props.fetching ? 'Подождите...' : 'Подтвердить операцию'}\r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n accounts: state.transfersReducerInner.accounts,\r\n accountFrom: state.transfersReducerInner.accountFrom,\r\n accountTo: state.transfersReducerInner.accountTo,\r\n transferSum: state.transfersReducerInner.transferSum,\r\n transferError: state.transfersReducer.transferError,\r\n fetching: state.appReducer.fetching,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TransferFormInner);\r\n","import { push } from 'react-router-redux';\r\nimport { resultDataToCamelCase, getCookie } from '../../../utils';\r\nimport { BASE_API_URL, CONFIRM_TYPES } from '../../../constants';\r\nimport { fetchStart, fetchStop } from './';\r\n\r\nexport const getAccounts = () => (dispatch) => {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch(fetchStart());\r\n\r\n fetch(`${BASE_API_URL}/transfer/loan`, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n /** Если не ОК, рэйзим ошибку из ответа с сервака */\r\n return response.json().then((json) => {\r\n throw new Error(json);\r\n });\r\n })\r\n .then((json) => {\r\n dispatch(fetchStop());\r\n dispatch({\r\n type: 'loanTransfer/ACCOUNTS_LOADED',\r\n payload: resultDataToCamelCase(json),\r\n });\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'loanTransfer/ACCOUNTS_LOADING_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const changeAccount = (id, direction) => {\r\n if (direction === 'loan') {\r\n return {\r\n type: 'loanTransfer/CHANGE_ACCOUNT_LOAN',\r\n payload: id,\r\n };\r\n }\r\n\r\n if (direction === 'debit') {\r\n return {\r\n type: 'loanTransfer/CHANGE_ACCOUNT_DEBIT',\r\n payload: id,\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const setTransferSum = sum => ({\r\n type: 'loanTransfer/SET_TRANSFER_SUM',\r\n payload: sum,\r\n});\r\n\r\nexport const changeAgreement = () => ({\r\n type: 'loanTransfer/CHANGE_AGREEMENT',\r\n});\r\n\r\nexport const submitForm = confirmMethod => (dispatch, getState) => {\r\n const {\r\n loanAccount, debitAccount, transferSum,\r\n } = getState().transfersReducerLoan;\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !CONFIRM_TYPES[confirmMethod]) {\r\n return;\r\n }\r\n\r\n const requestData = {\r\n CodeType: CONFIRM_TYPES[confirmMethod],\r\n FromBill: debitAccount,\r\n ToBill: loanAccount,\r\n Sum: transferSum,\r\n };\r\n dispatch(fetchStart());\r\n fetch(`${BASE_API_URL}/transfer/loan/request-code`, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(requestData),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n dispatch(fetchStop());\r\n dispatch(push('/transfers/confirm', {\r\n transferType: 'loan',\r\n transferData: requestData,\r\n }));\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n /** Если не ОК, рэйзим ошибку из ответа с сервака */\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'loanTransfer/SUBMIT_FORM_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const getShedule = () => (dispatch, getState) => {\r\n const state = getState().transfersReducerLoan;\r\n const id = state.loanAccount;\r\n const sum = state.transferSum;\r\n const token = getCookie('access_token');\r\n\r\n if (!sum || !id || !token) {\r\n return;\r\n }\r\n\r\n dispatch(fetchStart());\r\n dispatch({\r\n type: 'loanTransfer/CLEAR_SCHEDULE',\r\n });\r\n fetch(`${BASE_API_URL}/transfer/loan/shedule?id=${id}&sum=${sum}`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then((json) => {\r\n const result = resultDataToCamelCase(json);\r\n dispatch(fetchStop());\r\n dispatch({\r\n type: 'loanTransfer/SCHEDULE_SUCCESS',\r\n payload: result.payments || [],\r\n });\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'loanTransfer/SCHEDULE_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './assets/styles/styles.scss';\r\n\r\n\r\nexport default class Modal extends React.Component {\r\n static propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n onClose: PropTypes.func,\r\n size: PropTypes.oneOf([\r\n 'medium',\r\n 'large',\r\n ]),\r\n };\r\n\r\n static defaultProps = {\r\n onClose: null,\r\n size: 'medium',\r\n };\r\n\r\n state = {\r\n opened: false,\r\n additionalProps: null,\r\n };\r\n\r\n openModal = (additionalProps) => {\r\n this.setState({\r\n opened: true,\r\n additionalProps,\r\n });\r\n document.body.classList.add('fixed');\r\n }\r\n\r\n closeModal = () => {\r\n this.setState({\r\n opened: false,\r\n }, () => {\r\n if (typeof this.props.onClose === 'function') {\r\n this.props.onClose();\r\n }\r\n\r\n document.body.classList.remove('fixed');\r\n });\r\n }\r\n\r\n handleKeyPress = (event) => {\r\n if (event.key === 'Escape') {\r\n this.closeModal();\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.opened) {\r\n return (\r\n
    event.stopPropagation()}>\r\n \r\n \r\n X\r\n \r\n event.stopPropagation()}\r\n >\r\n
    \r\n {React.cloneElement(\r\n this.props.children,\r\n { propsFromModal: this.state.additionalProps },\r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport cx from 'classnames';\r\nimport moment from 'moment';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport Table from '../../../../commonComponents/Table';\r\nimport Pagination from '../../../../commonComponents/Pagination';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport BlockLikeInput from '../../../../commonComponents/BlockLikeInput';\r\nimport Typography from '../../../../commonComponents/Typography';\r\nimport SetMaxSum from '../SetMaxSum';\r\nimport { getMoneyString } from '../../../../utils';\r\nimport {\r\n getAccounts,\r\n changeAccount,\r\n setTransferSum,\r\n submitForm,\r\n getShedule,\r\n} from '../../actions/loanTransfers';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Modal from '../../../../commonComponents/Modal';\r\nimport { DEFAULT_CURRENCY_LABEL } from '../../../../constants';\r\nimport ConfirmMethodControls from '../ConfirmMethodControls';\r\n\r\nclass TransferFormLoan extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n className: PropTypes.string,\r\n loanAccount: PropTypes.number,\r\n debitAccount: PropTypes.number,\r\n transferSum: PropTypes.number.isRequired,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n })).isRequired,\r\n transferFormError: PropTypes.string,\r\n sheduleError: PropTypes.string,\r\n fetching: PropTypes.bool.isRequired,\r\n secondNearestPayment: PropTypes.shape({\r\n date: PropTypes.string,\r\n sum: PropTypes.number,\r\n }),\r\n shedule: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number,\r\n date: PropTypes.string,\r\n sum: PropTypes.number,\r\n })).isRequired,\r\n initialAccount: PropTypes.number,\r\n };\r\n\r\n static defaultProps = {\r\n className: null,\r\n loanAccount: null,\r\n debitAccount: null,\r\n transferFormError: null,\r\n sheduleError: null,\r\n secondNearestPayment: null,\r\n initialAccount: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n availableSum: 0,\r\n currency: DEFAULT_CURRENCY_LABEL,\r\n page: 1,\r\n latePayment: 0,\r\n sumError: null,\r\n isFullPaymentAvailable: false,\r\n confirmMethod: 'sms',\r\n accountFromError: null,\r\n accountToError: null,\r\n };\r\n\r\n this.changeSummTimer = null;\r\n }\r\n\r\n componentDidMount() {\r\n this.props.dispatch(getAccounts());\r\n\r\n if (this.props.initialAccount) {\r\n this.props.dispatch(changeAccount(this.props.initialAccount, 'loan'));\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n const selectedLoan = nextProps.accounts.find(item => item.id === nextProps.loanAccount);\r\n\r\n if (selectedLoan) {\r\n this.setState({\r\n availableSum: selectedLoan.balanceToClose || selectedLoan.maxSum,\r\n currency: selectedLoan.currencyName,\r\n latePayment: selectedLoan.latePayment,\r\n isFullPaymentAvailable: !!selectedLoan.balanceToClose,\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.transferSum !== this.props.transferSum && this.props.transferSum > 0) {\r\n clearTimeout(this.changeSummTimer);\r\n this.changeSummTimer = setTimeout(() => {\r\n this.props.dispatch(getShedule());\r\n }, 300);\r\n }\r\n\r\n if (!this.props.accounts.length && prevProps.accounts.length) {\r\n this.props.dispatch(getAccounts());\r\n }\r\n }\r\n\r\n getSelectedAccountFrom = () =>\r\n this.props.accounts.find(item => item.id === this.props.loanAccount);\r\n\r\n getAccountLabelLoan = account =>\r\n `\"${account.accountName}\", (задолженность ${getMoneyString(\r\n account.sum,\r\n account.currencyName,\r\n )})`;\r\n\r\n getCurrency = () => {\r\n const account = this.getSelectedAccountFrom();\r\n\r\n if (account) {\r\n return account.currencyName || DEFAULT_CURRENCY_LABEL;\r\n }\r\n return DEFAULT_CURRENCY_LABEL;\r\n };\r\n\r\n getDebitAccounts() {\r\n const selectedAccountLoan = this.props.accounts.find((item) => {\r\n return item.id === this.props.loanAccount;\r\n });\r\n\r\n if (selectedAccountLoan) {\r\n return selectedAccountLoan.availableAccounts.map(item => ({\r\n value: item.id,\r\n label: `\"${item.accountName}\", ${getMoneyString(item.sum, item.currencyName)}`,\r\n }));\r\n }\r\n return null;\r\n }\r\n\r\n setTransferSum = sum => this.props.dispatch(setTransferSum(sum));\r\n\r\n changeAccount = (id, direction) => {\r\n this.resetErrors(() => {\r\n this.props.dispatch(changeAccount(id, direction));\r\n });\r\n };\r\n\r\n handleChangetransferSum = (value) => {\r\n this.setTransferSum(value);\r\n };\r\n\r\n handleChangeConfirmMethod = (event) => {\r\n this.setState({\r\n confirmMethod: event.target.value,\r\n });\r\n };\r\n\r\n resetErrors = (callback) => {\r\n this.setState(\r\n {\r\n sumError: null,\r\n accountFromError: null,\r\n accountToError: null,\r\n },\r\n () => {\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n },\r\n );\r\n };\r\n\r\n validateAccoutFrom = () => {\r\n const account = this.props.loanAccount;\r\n\r\n if (!account) {\r\n return 'Выберите заем для погашения';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n validateAccoutTo = () => {\r\n const account = this.props.debitAccount;\r\n\r\n if (!account) {\r\n return 'Выберите счет для оплаты';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n validateSumm = () => {\r\n const sum = parseFloat(this.props.transferSum);\r\n\r\n if (sum <= 0) {\r\n return 'Введите сумму погашения';\r\n }\r\n\r\n if (sum > this.state.availableSum) {\r\n return 'Недостаточно средств';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n submitForm = () => {\r\n if (this.props.fetching) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n sumError: this.validateSumm(),\r\n accountFromError: this.validateAccoutFrom(),\r\n accountToError: this.validateAccoutTo(),\r\n },\r\n () => {\r\n if (this.state.sumError || this.state.accountFromError || this.state.accountToError) {\r\n return;\r\n }\r\n\r\n this.props.dispatch(submitForm(this.state.confirmMethod));\r\n },\r\n );\r\n };\r\n\r\n submitHasDisabled = () => {\r\n const {\r\n fetching, loanAccount, debitAccount, transferSum,\r\n } = this.props;\r\n const { sumError } = this.state;\r\n return !!(fetching || !loanAccount || !debitAccount || !transferSum || sumError);\r\n };\r\n\r\n renderLatePaymentData = () => {\r\n const { latePayment, currency } = this.state;\r\n\r\n if (latePayment && latePayment > 0) {\r\n return (\r\n

    \r\n Внимание!\r\n По данному займу имеется просроченная задолженность \r\n {getMoneyString(latePayment, currency)}\r\n , которая будет списана из суммы досрочного погашения\r\n

    \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n renderSecondNearestPaymentData = () => {\r\n const paymentData = this.props.secondNearestPayment;\r\n if (paymentData) {\r\n const { date, sum } = paymentData;\r\n\r\n return (\r\n \r\n \r\n \r\n Расчетный ежемесячный платеж после погашения\r\n \r\n \r\n \r\n Начиная с {moment(date).format('DD.MM.YYYY')}:\r\n {' '}\r\n \r\n {getMoneyString(sum, this.state.currency)}\r\n \r\n \r\n \r\n \r\n {\r\n if (this.modal) {\r\n this.modal.openModal();\r\n }\r\n }}\r\n label=\"Посмотреть полный график платежей\"\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n renderScheduleTable = () => (\r\n
    \r\n ({\r\n ...item,\r\n id: index,\r\n currency: this.state.currency,\r\n }))\r\n .slice((this.state.page - 1) * 10, 10 * this.state.page),\r\n }}\r\n />\r\n \r\n this.setState({\r\n page,\r\n })\r\n }\r\n />\r\n
    \r\n );\r\n\r\n renderMaxSumLabel = () => (\r\n \r\n {this.state.isFullPaymentAvailable\r\n ? 'Полное досрочное погашение'\r\n : 'Максимальное частично-досрочное погашение'}{' '}\r\n \r\n {getMoneyString(this.state.availableSum, this.state.currency)}\r\n \r\n \r\n );\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n Выберите заем для погашения\r\n ({\r\n value: item.id,\r\n label: this.getAccountLabelLoan(item),\r\n account: item,\r\n }))}\r\n name=\"accountType\"\r\n clearable={false}\r\n searchable={false}\r\n onChange={({ value }) => this.changeAccount(value, 'loan')}\r\n value={this.props.loanAccount}\r\n placeholder=\"Выберите счет\"\r\n error={!!this.state.accountFromError}\r\n />\r\n {this.state.accountFromError}\r\n \r\n \r\n \r\n \r\n Выберите счет для оплаты\r\n this.changeAccount(value, 'debit')}\r\n value={this.props.debitAccount}\r\n placeholder=\"Выберите счет\"\r\n error={!!this.props.loanAccount && !!this.state.accountToError}\r\n />\r\n \r\n {!!this.props.loanAccount && this.state.accountToError}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Валюта\r\n \r\n {this.state.currency}\r\n \r\n \r\n {this.state.availableSum > 0 &&\r\n this.props.debitAccount && (\r\n \r\n this.setTransferSum(this.state.availableSum)}\r\n label={this.renderMaxSumLabel()}\r\n />\r\n \r\n )}\r\n \r\n {this.renderLatePaymentData()}\r\n {this.renderSecondNearestPaymentData()}\r\n \r\n {(this.props.transferFormError || this.props.sheduleError) && (\r\n

    \r\n {this.props.transferFormError || this.props.sheduleError}\r\n

    \r\n )}\r\n
    \r\n \r\n {this.props.fetching ? 'Подождите...' : 'Подтвердить операцию'}\r\n \r\n
    \r\n {\r\n this.modal = element;\r\n }}\r\n >\r\n {this.renderScheduleTable()}\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n fetching: state.transfersReducer.fetching,\r\n accounts: state.transfersReducerLoan.accounts,\r\n loanAccount: state.transfersReducerLoan.loanAccount,\r\n debitAccount: state.transfersReducerLoan.debitAccount,\r\n transferSum: state.transfersReducerLoan.transferSum,\r\n secondNearestPayment: state.transfersReducerLoan.shedule[1] || null,\r\n shedule: state.transfersReducerLoan.shedule,\r\n sheduleError: state.transfersReducerLoan.sheduleError,\r\n transferFormError: state.transfersReducerLoan.transferFormError,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TransferFormLoan);\r\n","import { push } from 'react-router-redux';\r\nimport { resultDataToCamelCase, getCookie } from '../../../utils';\r\nimport { BASE_API_URL, CONFIRM_TYPES } from '../../../constants';\r\nimport { fetchStart, fetchStop } from './';\r\n\r\n\r\nexport const setAccount = (id, field) => ({\r\n type: 'depositTransfer/SET_ACCOUNT',\r\n payload: {\r\n [`${field}AccountId`]: id,\r\n },\r\n});\r\n\r\nexport const getAccounts = initialDepositId => (dispatch) => {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch(fetchStart());\r\n\r\n fetch(`${BASE_API_URL}/transfer/deposit`, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then((json) => {\r\n dispatch(fetchStop());\r\n dispatch({\r\n type: 'depositTransfer/ACCOUNTS_LOADED',\r\n payload: resultDataToCamelCase(json),\r\n });\r\n if (initialDepositId) {\r\n dispatch(setAccount(initialDepositId, 'deposit'));\r\n }\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'depositTransfer/ACCOUNTS_LOADING_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const setTransferSum = sum => ({\r\n type: 'depositTransfer/SET_TRANSFER_SUM',\r\n payload: sum,\r\n});\r\n\r\nexport const submitTransferForm = confirmMethod => (dispatch, getState) => {\r\n const {\r\n depositAccountId, debitAccountId, transferSum,\r\n } = getState().transfersReducerDeposit;\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !CONFIRM_TYPES[confirmMethod]) {\r\n return;\r\n }\r\n\r\n const requestData = {\r\n CodeType: CONFIRM_TYPES[confirmMethod], // SMS\r\n FromBill: debitAccountId,\r\n ToBill: depositAccountId,\r\n Sum: transferSum,\r\n };\r\n dispatch(fetchStart());\r\n fetch(`${BASE_API_URL}/transfer/deposit/request-code`, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(requestData),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n dispatch(fetchStop());\r\n dispatch(push('/transfers/confirm', {\r\n transferType: 'deposit',\r\n transferData: requestData,\r\n }));\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'depositTransfer/SUBMIT_FORM_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const getIncome = () => (dispatch, getState) => {\r\n const {\r\n depositAccountId, transferSum,\r\n } = getState().transfersReducerDeposit;\r\n const token = getCookie('access_token');\r\n\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: 'depositTransfer/INCOME_LOAD_START',\r\n });\r\n fetch(`${BASE_API_URL}/transfer/deposit/income?id=${depositAccountId}&sum=${transferSum}`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(json => dispatch({\r\n type: 'depositTransfer/INCOME_LOAD_SUCCESS',\r\n payload: resultDataToCamelCase(json).sum,\r\n }))\r\n .catch(error => dispatch({\r\n type: 'depositTransfer/INCOME_LOAD_FAIL',\r\n payload: error.message,\r\n }));\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport BlockLikeInput from '../../../../commonComponents/BlockLikeInput';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport ConfirmMethodControls from '../ConfirmMethodControls';\r\nimport {\r\n getAccounts,\r\n setAccount,\r\n setTransferSum,\r\n submitTransferForm,\r\n getIncome,\r\n} from '../../actions/depositTransfer';\r\nimport { getMoneyString, getDateString, declOfNum } from '../../../../utils';\r\nimport { DEFAULT_STRING_VALUE } from '../../../../constants';\r\n\r\nclass TransferFormDeposit extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n depositAccountId: PropTypes.number,\r\n debitAccountId: PropTypes.number,\r\n transferSum: PropTypes.number.isRequired,\r\n fetching: PropTypes.bool.isRequired,\r\n transferFormError: PropTypes.string,\r\n incomeAfterRefill: PropTypes.number,\r\n incomeFetching: PropTypes.bool.isRequired,\r\n incomeError: PropTypes.string,\r\n initialAccount: PropTypes.number,\r\n };\r\n\r\n static defaultProps = {\r\n depositAccountId: null,\r\n debitAccountId: null,\r\n transferFormError: null,\r\n incomeAfterRefill: null,\r\n incomeError: null,\r\n initialAccount: null,\r\n };\r\n\r\n state = {\r\n time: null,\r\n closeDate: null,\r\n openingSum: null,\r\n income: null,\r\n currency: '',\r\n confirmMethod: 'sms',\r\n sumError: null,\r\n accountFromError: null,\r\n accountToError: null,\r\n };\r\n\r\n componentDidMount() {\r\n this.props.dispatch(getAccounts(this.props.initialAccount));\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (this.props.depositAccountId !== nextProps.depositAccountId) {\r\n const depositAccount = nextProps.accounts.find(item => item.id === nextProps.depositAccountId);\r\n\r\n if (depositAccount) {\r\n this.setState({\r\n time: depositAccount.periods,\r\n closeDate: depositAccount.closeDate,\r\n openingSum: depositAccount.openingSum,\r\n income: depositAccount.income,\r\n currency: depositAccount.currencyName,\r\n });\r\n }\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.transferSum !== this.props.transferSum && this.props.transferSum > 0) {\r\n clearTimeout(this.changeSummTimer);\r\n this.changeSummTimer = setTimeout(() => {\r\n this.props.dispatch(getIncome());\r\n }, 300);\r\n }\r\n\r\n if (!this.props.accounts.length && prevProps.accounts.length) {\r\n this.props.dispatch(getAccounts());\r\n }\r\n }\r\n\r\n getDepositLabel = accountData =>\r\n `${accountData.accountName} (баланс ${getMoneyString(\r\n accountData.sum,\r\n accountData.currencyName,\r\n )})`;\r\n\r\n getDebitAccounts = () => {\r\n const depositAccount = this.props.accounts.find(item => item.id === this.props.depositAccountId);\r\n\r\n if (depositAccount) {\r\n return depositAccount.availableAccounts.map(item => ({\r\n value: item.id,\r\n label: `\"${item.accountName}\", ${getMoneyString(item.sum, item.currencyName)}`,\r\n }));\r\n }\r\n return null;\r\n };\r\n\r\n getDeositTimeString = () => {\r\n const { time } = this.state;\r\n if (typeof time === 'number') {\r\n const days = declOfNum(time, ['день', 'дня', 'дней']);\r\n\r\n return `${time} ${days}`;\r\n }\r\n\r\n return DEFAULT_STRING_VALUE;\r\n };\r\n\r\n changeSummTimer = null;\r\n\r\n changeAccount = (id, field) => {\r\n this.resetErrors(() => {\r\n this.props.dispatch(setAccount(id, field));\r\n });\r\n };\r\n\r\n handleChangeTransferSum = value => this.props.dispatch(setTransferSum(value));\r\n\r\n handleChangeConfirmMethod = (event) => {\r\n this.setState({\r\n confirmMethod: event.target.value,\r\n });\r\n };\r\n\r\n validateSumm = () => {\r\n const sum = parseFloat(this.props.transferSum);\r\n if (sum <= 0 || !sum) {\r\n return 'Укажите сумму пополнения';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n resetErrors = (callback) => {\r\n this.setState(\r\n {\r\n sumError: null,\r\n accountFromError: null,\r\n accountToError: null,\r\n },\r\n () => {\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n },\r\n );\r\n };\r\n\r\n validateAccoutFrom = () => {\r\n const account = this.props.debitAccountId;\r\n\r\n if (!account) {\r\n return 'Выберите счет, с которого будет пополнение';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n validateAccoutTo = () => {\r\n const account = this.props.depositAccountId;\r\n\r\n if (!account) {\r\n return 'Выберите вклад, который хотите пополнить';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n submitForm = () => {\r\n if (this.props.fetching) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n sumError: this.validateSumm(),\r\n accountFromError: this.validateAccoutFrom(),\r\n accountToError: this.validateAccoutTo(),\r\n },\r\n () => {\r\n if (this.state.sumError || this.state.accountFromError || this.state.accountToError) {\r\n return;\r\n }\r\n\r\n this.props.dispatch(submitTransferForm(this.state.confirmMethod));\r\n },\r\n );\r\n };\r\n\r\n submitHasDisabled = () => {\r\n const {\r\n fetching,\r\n depositAccountId,\r\n debitAccountId,\r\n transferSum,\r\n transferFormError,\r\n } = this.props;\r\n\r\n return !!(\r\n fetching ||\r\n !depositAccountId ||\r\n !debitAccountId ||\r\n !transferSum ||\r\n transferFormError\r\n );\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n

    Выберите вклад, который хотите пополнить

    \r\n ({\r\n value: item.id,\r\n label: this.getDepositLabel(item),\r\n account: item,\r\n }))}\r\n name=\"accountType\"\r\n clearable={false}\r\n searchable={false}\r\n onChange={({ value }) => this.changeAccount(value, 'deposit')}\r\n value={this.props.depositAccountId}\r\n placeholder=\"Выберите счет\"\r\n error={!!this.state.accountToError}\r\n />\r\n {this.state.accountToError}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n Срок:{' '}\r\n {this.getDeositTimeString()}\r\n \r\n \r\n \r\n \r\n Дата окончания:{' '}\r\n \r\n {getDateString(this.state.closeDate)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Сумма начального размещения:{' '}\r\n \r\n {getMoneyString(this.state.openingSum, this.state.currency)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Сумма дохода на конец действия вклада:\r\n {' '}\r\n \r\n {getMoneyString(this.state.income, this.state.currency)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n

    Выберите счет, с которого будет пополнение

    \r\n this.changeAccount(value, 'debit')}\r\n value={this.props.debitAccountId}\r\n placeholder=\"Выберите счет\"\r\n disabled={!this.props.depositAccountId}\r\n error={this.props.depositAccountId && !!this.state.accountFromError}\r\n />\r\n \r\n {this.props.depositAccountId && this.state.accountFromError}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Валюта\r\n \r\n \r\n {this.state.currency || DEFAULT_STRING_VALUE}\r\n \r\n \r\n \r\n \r\n {this.props.incomeAfterRefill && (\r\n \r\n \r\n \r\n \r\n Сумма дохода после пополнения:\r\n {' '}\r\n {this.props.incomeFetching ? (\r\n \r\n ) : (\r\n \r\n \r\n {getMoneyString(this.props.incomeAfterRefill, this.state.currency)}\r\n {' '}\r\n \r\n (+ {(this.props.incomeAfterRefill - this.state.income).toLocaleString()})\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n

    {this.props.incomeError}

    \r\n
    \r\n
    \r\n )}\r\n \r\n \r\n {this.props.transferFormError && (\r\n \r\n

    {this.props.transferFormError}

    \r\n
    \r\n )}\r\n \r\n \r\n {this.props.fetching ? 'Подождите...' : 'Подтвердить операцию'}\r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n fetching: state.transfersReducer.fetching,\r\n accounts: state.transfersReducerDeposit.accounts,\r\n depositAccountId: state.transfersReducerDeposit.depositAccountId,\r\n debitAccountId: state.transfersReducerDeposit.debitAccountId,\r\n transferSum: state.transfersReducerDeposit.transferSum,\r\n transferFormError: state.transfersReducerDeposit.transferFormError,\r\n incomeAfterRefill: state.transfersReducerDeposit.incomeAfterRefill,\r\n incomeFetching: state.transfersReducerDeposit.incomeFetching,\r\n incomeError: state.transfersReducerDeposit.incomeError,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TransferFormDeposit);\r\n","import { push } from 'react-router-redux';\r\nimport {\r\n resultDataToCamelCase,\r\n getCookie,\r\n} from '../../../utils';\r\nimport {\r\n BASE_API_URL,\r\n CONFIRM_TYPES,\r\n} from '../../../constants';\r\nimport {\r\n fetchStart,\r\n fetchStop,\r\n fetchFail,\r\n cancelTransfer,\r\n} from './';\r\n\r\nexport const getAccounts = () => (dispatch) => {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch(fetchStart());\r\n\r\n fetch(\r\n `${BASE_API_URL}/transfer/currency`,\r\n {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n },\r\n )\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then((json) => {\r\n dispatch({\r\n type: 'currencyTransfer/ACCOUNTS_LOADED_SUCCESS',\r\n payload: resultDataToCamelCase(json),\r\n });\r\n dispatch(fetchStop());\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'currencyTransfer/ACCOUNTS_LOADED_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const changeAccount = (id, direction) => ({\r\n type: 'currencyTransfer/CHANGE_ACCOUNT',\r\n payload: {\r\n id,\r\n direction,\r\n },\r\n});\r\n\r\nexport const setTransferSum = sum => ({\r\n type: 'currencyTransfer/SET_TRANSFER_SUM',\r\n payload: sum,\r\n});\r\n\r\nexport const submitSalaryTransfer = () => (dispatch, getState) => {\r\n const token = getCookie('access_token');\r\n const { accountFrom, accountTo, transferSum } = getState().transfersReducerCurrency;\r\n\r\n if (!token || !accountFrom || !accountTo || !transferSum) {\r\n return;\r\n }\r\n\r\n dispatch(fetchStart());\r\n\r\n const requestData = {\r\n Sum: transferSum,\r\n FromBill: accountFrom,\r\n ToBill: accountTo,\r\n };\r\n\r\n fetch(\r\n `${BASE_API_URL}/transfer/currency`,\r\n {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(requestData),\r\n },\r\n )\r\n .then((response) => {\r\n if (response.ok) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(() => {\r\n dispatch(fetchStop());\r\n dispatch(push('/currency-exchange/success', {\r\n transferType: 'currency',\r\n accountTo,\r\n }));\r\n dispatch(cancelTransfer());\r\n })\r\n .catch((error) => {\r\n dispatch(fetchFail(error.message));\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const submitTransferForm = confirmMethod => (dispatch, getState) => {\r\n const {\r\n accountFrom,\r\n accountTo,\r\n transferSum,\r\n } = getState().transfersReducerCurrency;\r\n\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !CONFIRM_TYPES[confirmMethod]) {\r\n return;\r\n }\r\n\r\n const requestData = {\r\n CodeType: CONFIRM_TYPES[confirmMethod], // SMS\r\n FromBill: accountFrom,\r\n ToBill: accountTo,\r\n Sum: transferSum,\r\n };\r\n dispatch(fetchStart());\r\n fetch(`${BASE_API_URL}/transfer/currency/request-code/${CONFIRM_TYPES[confirmMethod]}`, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(requestData),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n dispatch(fetchStop());\r\n dispatch(push('/currency-exchange/confirm', {\r\n transferType: 'currency',\r\n transferData: requestData,\r\n }));\r\n return;\r\n }\r\n\r\n if (response.status === 500) {\r\n response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'currencyTransfer/SUBMIT_FORM_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n","import { getCookie, resultDataToCamelCase } from '../../../../utils';\r\nimport PromiseHelper from '../../../../utils/PromiseHelper';\r\nimport { BASE_API_URL } from '../../../../constants';\r\n\r\nexport const promiseHelper = new PromiseHelper();\r\n\r\nconst getRate = async () => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token) {\r\n return null;\r\n }\r\n\r\n promiseHelper.cancel('changeRate');\r\n\r\n const request = await fetch(`${BASE_API_URL}/currency/partner`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n return promiseHelper\r\n .request(request, 'changeRate', 300)\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(resultDataToCamelCase);\r\n};\r\n\r\nexport default getRate;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { push } from 'react-router-redux';\r\nimport Button from '../../../../commonComponents/Button';\r\n\r\nconst FormOverlay = ({ dispatch }) => {\r\n const goToAccounts = () => {\r\n dispatch(push('/accounts/current'));\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n Уважаемы клиент, мы осуществляем обмен валюты по курсу биржи ММВБ. Данный функционал\r\n личного кабинета доступен с 10:00 до 18:30 (время московское). Пожалуйста, зайдите позже.\r\n

    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nFormOverlay.propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default connect()(FormOverlay);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport cx from 'classnames';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport BlockLikeInput from '../../../../commonComponents/BlockLikeInput';\r\nimport Typography from '../../../../commonComponents/Typography';\r\nimport SetMaxSum from '../SetMaxSum';\r\nimport { getAccountLabelTransfer, getMoneyString, declOfNum } from '../../../../utils';\r\nimport {\r\n getAccounts,\r\n changeAccount,\r\n setTransferSum,\r\n submitTransferForm,\r\n} from '../../actions/currencyTransfer';\r\nimport ConfirmMethodControls from '../ConfirmMethodControls';\r\nimport './assets/styles/styles.scss';\r\nimport Icon from '../../../../commonComponents/Icon';\r\nimport getRate, { promiseHelper } from './utils';\r\nimport FormOverlay from './overlay';\r\n\r\nconst TIMER = 30;\r\n\r\nclass TransferFormCurrency extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n className: PropTypes.string,\r\n accountFrom: PropTypes.number,\r\n accountTo: PropTypes.number,\r\n transferSum: PropTypes.number.isRequired,\r\n accounts: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n })).isRequired,\r\n transferFormError: PropTypes.string,\r\n initialAccount: PropTypes.number,\r\n fetching: PropTypes.bool.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n className: null,\r\n accountFrom: null,\r\n accountTo: null,\r\n transferFormError: null,\r\n initialAccount: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.timer = null;\r\n this.promiseHelper = promiseHelper;\r\n\r\n this.state = {\r\n sumError: null,\r\n accountFromError: null,\r\n accountToError: null,\r\n confirmMethod: 'sms',\r\n counter: TIMER,\r\n rateList: [],\r\n currency: null,\r\n ratesIsNotAvailable: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchRate();\r\n\r\n if (this.props.accountFrom) {\r\n this.setCurrency();\r\n }\r\n\r\n this.props.dispatch(getAccounts());\r\n if (this.props.initialAccount) {\r\n this.props.dispatch(changeAccount(this.props.initialAccount, 'from'));\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (!this.props.accounts.length && prevProps.accounts.length) {\r\n this.props.dispatch(getAccounts());\r\n }\r\n\r\n if (prevProps.accountFrom !== this.props.accountFrom && this.props.accountFrom) {\r\n this.fetchRate();\r\n }\r\n\r\n if (\r\n prevProps.accountFrom !== this.props.accountFrom ||\r\n prevProps.accounts.length !== this.props.accounts.length\r\n ) {\r\n if (this.props.accountFrom && !!this.props.accounts.length);\r\n this.setCurrency();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n clearTimeout(this.timer);\r\n this.promiseHelper.cancel('changeRate');\r\n }\r\n\r\n setMaxSum = (sum) => {\r\n this.setState({\r\n sumError: null,\r\n });\r\n this.props.dispatch(setTransferSum(sum));\r\n };\r\n\r\n setCurrency = () => {\r\n const currentAccountFrom = this.props.accounts.find(({ id }) => id === this.props.accountFrom);\r\n\r\n if (currentAccountFrom) {\r\n this.setState({ currency: currentAccountFrom.currencyName });\r\n }\r\n };\r\n\r\n getRate = () => {\r\n if (this.state.rateList.length) {\r\n const rate = this.state.rateList.find(({ currencyName }) => currencyName === `${this.state.currency}Inner`);\r\n return rate ? rate.value || 0 : 0;\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n resetErrors = (callback) => {\r\n this.setState({\r\n sumError: null,\r\n accountFromError: null,\r\n accountToError: null,\r\n }, () => {\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n };\r\n\r\n handleChangeAccount = ({ value: id }, direction) => {\r\n this.resetErrors(() => {\r\n this.props.dispatch(changeAccount(id, direction));\r\n });\r\n };\r\n\r\n handleChangeSum = (value) => {\r\n this.setState({\r\n sumError: null,\r\n }, () => {\r\n this.props.dispatch(setTransferSum(value));\r\n });\r\n };\r\n\r\n formHasError = () => {\r\n const {\r\n sumError,\r\n accountFromError,\r\n accountToError,\r\n } = this.state;\r\n\r\n return sumError || accountFromError || accountToError;\r\n }\r\n\r\n validateSumm = (maxSum) => {\r\n const sum = parseFloat(this.props.transferSum);\r\n if (sum <= 0 || !sum) {\r\n return 'Укажите сумму конвертации';\r\n }\r\n\r\n if (sum > maxSum) {\r\n return 'На вашем счете недостаточно средств';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n validateAccoutFrom = () => {\r\n const account = this.props.accountFrom;\r\n\r\n if (!account) {\r\n return 'Выберите счет снятия';\r\n }\r\n\r\n return null;\r\n }\r\n\r\n validateAccoutTo = () => {\r\n const account = this.props.accountTo;\r\n\r\n if (!account) {\r\n return 'Выберите счет зачисления';\r\n }\r\n\r\n return null;\r\n }\r\n\r\n submitTransferForm = (maxSum) => {\r\n if (this.state.ratesIsNotAvailable) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n sumError: this.validateSumm(maxSum),\r\n accountFromError: this.validateAccoutFrom(),\r\n accountToError: this.validateAccoutTo(),\r\n }, () => {\r\n if (this.formHasError()) {\r\n return;\r\n }\r\n\r\n this.props.dispatch(submitTransferForm(this.state.confirmMethod));\r\n });\r\n };\r\n\r\n submitHasDisabled = () => {\r\n const { accountFrom, accountTo, transferSum } = this.props;\r\n return !!(\r\n !accountFrom ||\r\n !transferSum ||\r\n !accountTo ||\r\n !this.state.rateList.length ||\r\n this.state.rateLoading\r\n );\r\n };\r\n\r\n handleChangeConfirmMethod = (event) => {\r\n this.setState({\r\n confirmMethod: event.target.value,\r\n });\r\n };\r\n\r\n startCounter = () => {\r\n this.stopCounter();\r\n this.tick();\r\n };\r\n\r\n stopCounter = () => {\r\n this.setState({ counter: TIMER }, () => clearTimeout(this.timer));\r\n };\r\n\r\n tick = () => {\r\n if (this.state.counter === 0) {\r\n this.setState({ rateList: [] }, this.stopCounter);\r\n return;\r\n }\r\n this.setState(\r\n state => ({\r\n counter: state.counter - 1,\r\n }),\r\n () => {\r\n this.timer = setTimeout(this.tick, 1000);\r\n },\r\n );\r\n };\r\n\r\n fetchRate = () => {\r\n if (this.state.rateLoading) {\r\n return;\r\n }\r\n\r\n this.setState({ rateList: [], rateLoading: true }, this.stopCounter);\r\n\r\n getRate()\r\n .then((result) => {\r\n this.setState(\r\n {\r\n rateList: result.currenciesList,\r\n rateLoading: false,\r\n },\r\n () => {\r\n this.startCounter();\r\n this.checkRates();\r\n },\r\n );\r\n })\r\n .catch(() => {\r\n this.setState({ rateLoading: false }, () => {\r\n this.stopCounter();\r\n this.checkRates();\r\n });\r\n });\r\n };\r\n\r\n checkRates = () => {\r\n const ratesIsNotAvailable = this.state.rateList.every(item => item.value === 0);\r\n\r\n this.setState({\r\n ratesIsNotAvailable,\r\n });\r\n }\r\n\r\n renderRate = () => {\r\n const currentRate = this.getRate();\r\n\r\n if (currentRate && this.props.accountFrom) {\r\n return typeof currentRate === 'number'\r\n ? currentRate.toLocaleString('ru-RU', {\r\n minimumFractionDigits: 4,\r\n maximumFractionDigits: 4,\r\n })\r\n : currentRate;\r\n }\r\n\r\n return '--';\r\n };\r\n\r\n render() {\r\n const selectedAccount =\r\n this.props.accounts.find(item => item.id === this.props.accountFrom) || {};\r\n const targetAccounts = selectedAccount.avaliableAccounts || [];\r\n const selectedTargetAccount =\r\n targetAccounts.find(item => item.id === this.props.accountTo) || {};\r\n\r\n const sumFieldIsDisabled = !selectedAccount.balance || !this.state.rateList.length;\r\n\r\n return (\r\n
    \r\n {this.state.ratesIsNotAvailable && }\r\n \r\n \r\n Счёт снятия\r\n ({\r\n value: item.id,\r\n label: getAccountLabelTransfer(item),\r\n }))}\r\n name=\"accountType\"\r\n clearable={false}\r\n searchable={false}\r\n onChange={event => this.handleChangeAccount(event, 'from')}\r\n value={this.props.accountFrom}\r\n placeholder=\"Выберите счет\"\r\n error={!!this.state.accountFromError}\r\n />\r\n \r\n {this.state.accountFromError}\r\n \r\n \r\n \r\n \r\n \r\n Счёт зачисления\r\n ({\r\n value: item.id,\r\n label: `${item.accountName}, ${item.currencyName}`,\r\n }))}\r\n name=\"accountType\"\r\n clearable={false}\r\n searchable={false}\r\n onChange={event => this.handleChangeAccount(event, 'to')}\r\n value={this.props.accountTo}\r\n placeholder=\"Выберите счет\"\r\n disabled={!targetAccounts.length}\r\n error={!!targetAccounts.length && !!this.state.accountToError}\r\n />\r\n \r\n {targetAccounts.length && this.state.accountToError}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selectedAccount.balance > 0 && (\r\n \r\n this.setMaxSum(selectedAccount.balance)}\r\n label={\r\n \r\n Конвертировать все{' '}\r\n \r\n {getMoneyString(selectedAccount.balance, selectedAccount.currencyName)}\r\n \r\n \r\n }\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n Курс обмена\r\n \r\n {this.renderRate()}\r\n {!!this.props.accountFrom && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {(!!this.state.rateList.length && !!this.props.accountFrom) && (\r\n \r\n
    \r\n {this.state.rateLoading ? (\r\n Курс обновляется...\r\n ) : (\r\n \r\n Курс действителен{' '}\r\n \r\n {this.state.counter}{' '}\r\n {declOfNum(this.state.counter, ['секунду', 'секунды', 'секунд'])}\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n \r\n {\r\n const transferSum = value / (selectedTargetAccount.rate || 1);\r\n\r\n this.handleChangeSum(parseFloat(transferSum.toFixed(2)));\r\n }}\r\n error={sumFieldIsDisabled ? '' : this.state.sumError}\r\n disabled={sumFieldIsDisabled}\r\n onFocus={this.resetErrors}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.transferFormError && (\r\n

    {this.props.transferFormError}

    \r\n )}\r\n \r\n \r\n this.submitTransferForm(selectedAccount.balance)}\r\n fakeDisabled={this.submitHasDisabled()}\r\n block\r\n >\r\n {this.props.fetching ? 'Подождите...' : 'Подтвердить операцию'}\r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n fetching: state.transfersReducer.fetching,\r\n accounts: state.transfersReducerCurrency.accounts,\r\n accountFrom: state.transfersReducerCurrency.accountFrom,\r\n accountTo: state.transfersReducerCurrency.accountTo,\r\n transferSum: state.transfersReducerCurrency.transferSum,\r\n transferFormError: state.transfersReducerCurrency.transferFormError,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TransferFormCurrency);\r\n","import styled from 'styled-components';\r\n\r\nexport const TransferFormContainer = styled.div`\r\n width: 45%;\r\n`;\r\n","import { getCookie, resultDataToCamelCase } from '../../../../utils';\r\nimport PromiseHelper from '../../../../utils/PromiseHelper';\r\nimport { BASE_API_URL, CONFIRM_TYPES } from '../../../../constants';\r\nimport { ConfirmMethodType } from '.';\r\n\r\nconst promiseHelper = new PromiseHelper();\r\n\r\nexport interface DefaultResponseWithError {\r\n Message?: string;\r\n}\r\n\r\nexport interface BaseAccount {\r\n id: number;\r\n accountName: string;\r\n currencyName: string;\r\n}\r\n\r\nexport interface InnerAccount extends BaseAccount {\r\n avaliableAccounts: BaseAccount[];\r\n balance: number;\r\n}\r\n\r\nasync function processResponse(response: Response): Promise {\r\n if (response.ok) {\r\n const result = await response.json();\r\n return resultDataToCamelCase(typeof result === 'string' ? JSON.parse(result) : result) as T;\r\n }\r\n\r\n if (response.status === 500) {\r\n throw Error(await response.text());\r\n }\r\n\r\n const errorResult: DefaultResponseWithError = await response.json();\r\n throw Error(errorResult.Message);\r\n}\r\n\r\nexport async function getAccounts(): Promise {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n throw Error('access_token is required');\r\n }\r\n\r\n const request = () =>\r\n fetch(`${BASE_API_URL}/transfer/inner`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n const response = await promiseHelper.request(request(), 'getAccounts', 500);\r\n\r\n return await processResponse(response);\r\n}\r\n\r\nexport async function getPartner(partnerPhoneOrEmail: string): Promise {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n throw Error('access_token is required');\r\n }\r\n\r\n const request = () =>\r\n fetch(`${BASE_API_URL}/transfer/outer/transferpartner?emailorphone=${partnerPhoneOrEmail}`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n const response = await promiseHelper.request(request(), 'getPartner', 500);\r\n\r\n return await processResponse(response);\r\n}\r\n\r\nexport async function getCode(transferData: T) {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n throw Error('access_token is required');\r\n }\r\n\r\n const codeType = CONFIRM_TYPES[transferData.confirmMethod as ConfirmMethodType];\r\n\r\n const request = () =>\r\n fetch(`${BASE_API_URL}/transfer/outer/request-code/${codeType}`, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n const response = await promiseHelper.request(request(), 'getCode', 500);\r\n\r\n if (response.ok) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (response.status === 500) {\r\n throw Error(await response.text());\r\n }\r\n\r\n const errorResult: DefaultResponseWithError = await response.json();\r\n throw Error(errorResult.Message);\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const PartnerLabel = styled.div`\r\n color: #254c64;\r\n font-size: 0.85em;\r\n font-weight: 300;\r\n margin-top: 6px;\r\n`;\r\n","import React from 'react';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport { getAccountLabelTransfer, getMoneyString } from '../../../../utils';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Typography from '../../../../commonComponents/Typography';\r\nimport BlockLikeInput from '../../../../commonComponents/BlockLikeInput';\r\nimport SetMaxSum from '../SetMaxSum';\r\nimport { TransferFormContainer } from '../Views';\r\nimport { getAccounts, InnerAccount, getPartner, getCode } from './api';\r\nimport { DEFAULT_CURRENCY_LABEL, CONFIRM_TYPES } from '../../../../constants';\r\nimport { debounce, Cancelable } from 'lodash';\r\nimport { PartnerLabel } from './views';\r\nimport ConfirmMethodControls from '../ConfirmMethodControls';\r\nimport { withRouter, RouteComponentProps } from 'react-router';\r\n\r\n// TODO: refactor to ts\r\nconst JsFormControl: any = FormControl;\r\nconst JsBlockLikeInput: any = BlockLikeInput;\r\nconst JsSelectBox: any = SelectBox;\r\n\r\nexport type ConfirmMethodType = keyof typeof CONFIRM_TYPES;\r\n\r\nexport interface Partner {\r\n id: number;\r\n partnerSecureId: string;\r\n}\r\n\r\nexport interface TransferFormPartnerProps extends RouteComponentProps {}\r\n\r\nexport interface TransferFormPartnerState {\r\n accounts: InnerAccount[];\r\n account: InnerAccount | null;\r\n sum: number;\r\n sumError: string | null;\r\n accountError: string | null;\r\n partnerPhoneOrEmail: string;\r\n loading: boolean;\r\n partnerLoading: boolean;\r\n partner: Partner | null;\r\n partnerError: string | null;\r\n confirmMethod: ConfirmMethodType;\r\n transferError: string | null;\r\n accountsLoading: boolean;\r\n}\r\n\r\nclass TransferFormPartner extends React.Component {\r\n private debouncedParterRequest: ((partnerPhoneOrEmail: string) => void) & Cancelable;\r\n\r\n constructor(props: TransferFormPartnerProps) {\r\n super(props);\r\n\r\n this.state = {\r\n accounts: [],\r\n account: null,\r\n sum: 0,\r\n sumError: null,\r\n accountError: null,\r\n partnerPhoneOrEmail: '',\r\n partnerLoading: false,\r\n loading: false,\r\n partner: null,\r\n partnerError: null,\r\n confirmMethod: 'sms',\r\n transferError: null,\r\n accountsLoading: false\r\n };\r\n\r\n this.debouncedParterRequest = debounce<(partnerPhoneOrEmail: string) => void>(this.getPartner, 1500)\r\n }\r\n\r\n public componentDidMount() {\r\n this.getAccounts();\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n \r\n Счет снятия\r\n ({\r\n value: item.id,\r\n label: getAccountLabelTransfer(item),\r\n }))\r\n : []\r\n }\r\n name=\"accountType\"\r\n id=\"accountType\"\r\n clearable={false}\r\n searchable={false}\r\n onChange={this.handleChangeAccount}\r\n value={this.state.account ? this.state.account.id : null}\r\n placeholder=\"Выберите счет\"\r\n error={!!this.state.accountError}\r\n loading={this.state.accountsLoading}\r\n />\r\n {this.state.accountError}\r\n \r\n \r\n \r\n \r\n Получатель перевода\r\n \r\n {\r\n this.state.partner && (\r\n Перевод для: {this.state.partner.partnerSecureId}\r\n )\r\n }\r\n \r\n \r\n \r\n \r\n Доступно для снятия\r\n \r\n {this.getavailableSum()}\r\n \r\n \r\n \r\n Валюта\r\n \r\n \r\n {this.state.account ? this.state.account.currencyName : DEFAULT_CURRENCY_LABEL}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.account && this.state.account.balance > 0 && (\r\n \r\n \r\n Перевести все {this.getavailableSum()}\r\n \r\n }\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n {this.state.transferError && (\r\n \r\n {this.state.transferError}\r\n \r\n )}\r\n \r\n \r\n {this.state.loading ? 'Подождите...' : 'Подтвердить операцию'}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private getAccounts = async () => {\r\n this.setState({ accountsLoading: true });\r\n try {\r\n this.setState({ accounts: await getAccounts() });\r\n } catch (error) {\r\n // tslint:disable-next-line:no-console\r\n console.log(error);\r\n } finally {\r\n this.setState({ accountsLoading: false });\r\n }\r\n };\r\n\r\n private getPartner = async () => {\r\n const { partnerPhoneOrEmail } = this.state;\r\n\r\n this.setState({ partnerLoading: true });\r\n\r\n try {\r\n this.setState({\r\n partner: await getPartner(partnerPhoneOrEmail),\r\n partnerError: null\r\n });\r\n } catch (error) {\r\n this.setState({\r\n partner: null,\r\n partnerError: error.message,\r\n });\r\n } finally {\r\n this.setState({\r\n partnerLoading: false\r\n })\r\n }\r\n }\r\n\r\n private getavailableSum = () => {\r\n if (this.state.account) {\r\n return getMoneyString(this.state.account.balance, this.state.account.currencyName);\r\n }\r\n\r\n return getMoneyString(0, '');\r\n };\r\n\r\n private setMaxSum = () => {\r\n const {account} = this.state;\r\n if (account) {\r\n this.setState({\r\n sum: account.balance,\r\n });\r\n }\r\n };\r\n\r\n private handleChangeAccount = ({ value }: {value: number}) => {\r\n const selectedAccount = this.state.accounts.find(item => item.id === value);\r\n if (selectedAccount) {\r\n this.resetErrors();\r\n this.setState({ account: selectedAccount });\r\n }\r\n };\r\n\r\n private handleChangePartner = (event: React.ChangeEvent) => {\r\n const { value } = event.target;\r\n this.resetErrors();\r\n this.setState(state => ({\r\n partnerPhoneOrEmail: value,\r\n partnerLoading: value.length > 5,\r\n partner: value.length < 6 ? null : state.partner,\r\n partnerError: null\r\n }), () => {\r\n this.debouncedParterRequest.cancel();\r\n\r\n if (this.state.partnerPhoneOrEmail.length > 5) {\r\n this.debouncedParterRequest(this.state.partnerPhoneOrEmail);\r\n }\r\n });\r\n };\r\n\r\n private handleChangetransferSum = (value: number) => {\r\n this.setState({\r\n sum: value,\r\n });\r\n };\r\n\r\n private resetErrors = (callback?: () => void) => {\r\n this.setState(\r\n {\r\n sumError: null,\r\n accountError: null,\r\n },\r\n () => {\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n },\r\n );\r\n };\r\n\r\n private validateAccount = () => {\r\n if (!this.state.account) {\r\n return 'Выберите счет списания';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n private validateSumm = () => {\r\n const {sum, account} = this.state;\r\n const availableSum = account ? account.balance : 0\r\n\r\n if (sum <= 0) {\r\n return 'Введите сумму перевода';\r\n }\r\n\r\n if (sum > availableSum) {\r\n return 'Недостаточно средств';\r\n }\r\n\r\n return null;\r\n };\r\n\r\n private submitForm = () => {\r\n if (this.state.loading) {\r\n return;\r\n }\r\n\r\n this.setState(state => \r\n ({\r\n sumError: this.validateSumm(),\r\n accountError: this.validateAccount(),\r\n partnerError: state.partner ? null : state.partnerError || 'Укажите получателя перевода'\r\n }),\r\n () => {\r\n if (this.state.sumError || this.state.accountError) {\r\n return;\r\n }\r\n\r\n this.requestCode();\r\n },\r\n );\r\n };\r\n\r\n private requestCode = async () => {\r\n const {\r\n sum,\r\n account,\r\n partner,\r\n confirmMethod,\r\n } = this.state;\r\n\r\n if (!sum || !account || !partner) {\r\n return;\r\n }\r\n\r\n this.setState({ loading: true });\r\n\r\n const requestData = {\r\n sum,\r\n account: account.id,\r\n partner: partner.id,\r\n confirmMethod\r\n }\r\n\r\n try {\r\n await getCode(requestData);\r\n this.setState({loading: false}, () => {\r\n this.props.history.push('/transfers/confirm', {\r\n confirmMethod,\r\n transferType: 'to-partner',\r\n transferData: {\r\n Sum: sum,\r\n FromBill: account.id,\r\n toParnertId : partner.id,\r\n CodeType: CONFIRM_TYPES[confirmMethod as ConfirmMethodType]\r\n },\r\n })\r\n })\r\n } catch (error) {\r\n this.setState({loading: false, transferError: error })\r\n }\r\n }\r\n\r\n private isSubmitDisabled = () => {\r\n const {\r\n account, sumError, loading, partnerLoading, partner,\r\n } = this.state;\r\n return !!(loading || !account || sumError || partnerLoading || !partner);\r\n };\r\n\r\n private handleChangeConfirmMethod = (event: React.ChangeEvent) => {\r\n const value = event.target.value as ConfirmMethodType;\r\n this.setState({\r\n confirmMethod: value\r\n });\r\n }\r\n}\r\n\r\nexport default withRouter(TransferFormPartner)\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport TransferFormSalary from '../../components/TransferFormSalary';\r\nimport TransferFormInner from '../../components/TransferFormInner';\r\nimport TransferFormLoan from '../../components/TransferFormLoan';\r\nimport TransferFormDeposit from '../../components/TransferFormDeposit';\r\nimport TransferFormCurrency from '../../components/TransferFormCurrency';\r\nimport TransferFormPartner from '../../components/TransferFormPartner/index.tsx';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst renderForm = (transferType, initialAccount) => {\r\n switch (transferType) {\r\n case 'to-salary':\r\n return (\r\n \r\n );\r\n\r\n case 'to-account':\r\n return ;\r\n\r\n case 'loan':\r\n return (\r\n \r\n );\r\n\r\n case 'deposit':\r\n return ;\r\n\r\n case 'currency':\r\n return ;\r\n\r\n case 'to-partner':\r\n return ;\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport default class Transfers extends React.Component {\r\n static propTypes = {\r\n match: PropTypes.shape({\r\n params: PropTypes.shape({\r\n transferType: PropTypes.oneOf([\r\n 'to-salary',\r\n 'to-account',\r\n 'loan',\r\n 'deposit',\r\n 'currency',\r\n 'to-partner',\r\n ]),\r\n }),\r\n }).isRequired,\r\n location: PropTypes.shape({\r\n state: PropTypes.shape({\r\n accountId: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n };\r\n\r\n static defaultProps = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.getHeading = this.getHeading.bind(this);\r\n this.getTransferType = this.getTransferType.bind(this);\r\n\r\n this.initialAccount = this.props.location.state ? this.props.location.state.accountId : null;\r\n }\r\n\r\n componentDidMount() {\r\n document.title = 'Платежи и переводы';\r\n }\r\n\r\n getHeading() {\r\n const transferType = this.getTransferType();\r\n switch (transferType) {\r\n case 'to-salary':\r\n return 'Перевод средств на зарплатную карту';\r\n\r\n case 'to-account':\r\n return 'Перевод между своими счетами';\r\n\r\n case 'loan':\r\n return 'Досрочное погашение займа';\r\n\r\n case 'deposit':\r\n return 'Пополнение вклада';\r\n\r\n case 'currency':\r\n return 'Конвертация валюты';\r\n\r\n case 'to-partner':\r\n return 'Перевод другому пайщику кооператива';\r\n\r\n default:\r\n return '---';\r\n }\r\n }\r\n\r\n getTransferType() {\r\n const { transferType = 'currency' } = this.props.match.params;\r\n\r\n return transferType;\r\n }\r\n\r\n render() {\r\n const transferType = this.getTransferType();\r\n return (\r\n
    \r\n

    \r\n {this.getHeading()}\r\n

    \r\n
    \r\n {renderForm(transferType, this.initialAccount)}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { goBack, push } from 'react-router-redux';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Icon from '../../../../commonComponents/Icon';\r\nimport { cancelTransfer, submitConfirmCode, reFetchConfirmCode } from '../../actions';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst isValidCode = text => /^\\d{6}$/.test(text);\r\n\r\nclass TransferConfirm extends React.Component {\r\n static propTypes = {\r\n className: PropTypes.string,\r\n dispatch: PropTypes.func.isRequired,\r\n transferCodeError: PropTypes.string,\r\n fetching: PropTypes.bool.isRequired,\r\n location: PropTypes.shape({\r\n state: PropTypes.shape({\r\n transferType: PropTypes.string,\r\n transferData: PropTypes.object,\r\n }),\r\n }).isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n className: null,\r\n transferCodeError: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.transfer = this.props.location.state;\r\n\r\n this.state = {\r\n code: '',\r\n codeError: null,\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({\r\n codeError: nextProps.transferCodeError,\r\n });\r\n }\r\n\r\n moveBack = () => {\r\n if (this.transfer && this.transfer.transferType === 'salary') {\r\n this.props.dispatch(push('/transfers/to-salary'));\r\n } else {\r\n this.props.dispatch(goBack());\r\n }\r\n };\r\n\r\n handleChangeCode = (event) => {\r\n const { value } = event.target;\r\n\r\n this.setState({\r\n codeError: null,\r\n code: value,\r\n });\r\n };\r\n\r\n submitCode = () => {\r\n if (this.props.fetching) {\r\n return;\r\n }\r\n\r\n const { code } = this.state;\r\n if (code.length === 0) {\r\n this.setState({\r\n codeError: 'Поле не может быть пустым',\r\n });\r\n return;\r\n }\r\n\r\n if (!isValidCode(code)) {\r\n this.setState({\r\n codeError: 'Код должен состоять из 6-и цифр',\r\n });\r\n return;\r\n }\r\n\r\n this.props.dispatch(submitConfirmCode(code, this.transfer));\r\n };\r\n\r\n repeatCode = () => {\r\n this.props.dispatch(reFetchConfirmCode(this.transfer));\r\n };\r\n\r\n isDisabledSubmit = () => !!(this.props.fetching || !this.state.code || this.state.codeError);\r\n\r\n cancelTransfer = () => {\r\n this.props.dispatch(cancelTransfer());\r\n this.moveBack();\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n {this.props.fetching ? 'Подождите...' : 'Подтвердить перевод'}\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n Отменить перевод\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n fetching: state.transfersReducer.fetching,\r\n transferCodeError: state.transfersReducer.transferCodeError,\r\n});\r\n\r\nexport default withRouter(connect(mapStateToProps)(TransferConfirm));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Redirect } from 'react-router-dom';\r\nimport TransferConfirm from '../../components/TransferConfirm';\r\n\r\nexport default class ConfirmPage extends React.Component {\r\n static propTypes = {\r\n location: PropTypes.shape({\r\n state: PropTypes.shape({\r\n transferType: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n };\r\n\r\n componentDidMount() {\r\n document.title = 'Платежи и переводы';\r\n }\r\n\r\n getHeading = () => {\r\n const { transferType } = this.props.location.state;\r\n switch (transferType) {\r\n case 'salary':\r\n return 'Перевод средств на зарплатную карту';\r\n\r\n case 'inner':\r\n return 'Перевод между своими счетами';\r\n\r\n case 'loan':\r\n return 'Досрочное погашение займа';\r\n\r\n case 'deposit':\r\n return 'Пополнение вклада';\r\n\r\n case 'currency':\r\n return 'Конвертация валюты';\r\n\r\n case 'to-partner':\r\n return 'Перевод другому пайщику кооператива';\r\n\r\n default:\r\n return '---';\r\n }\r\n };\r\n\r\n render() {\r\n if (!this.props.location.state) {\r\n return ;\r\n }\r\n\r\n return (\r\n
    \r\n

    \r\n {this.getHeading()}\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport { NavLink } from 'react-router-dom';\r\nimport './assets/styles/styles.scss';\r\n\r\n\r\nconst Link = ({\r\n children, className, activeClassName, to,\r\n}) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nLink.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n to: PropTypes.string.isRequired,\r\n className: PropTypes.string,\r\n activeClassName: PropTypes.string,\r\n};\r\n\r\nLink.defaultProps = {\r\n className: null,\r\n activeClassName: null,\r\n};\r\n\r\nexport default Link;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport Link from '../../../../commonComponents/Link';\r\nimport './assets/styles/styles.scss';\r\n\r\nconst SuccessMessage = ({ className, transferType }) => (\r\n
    \r\n \r\n

    \r\n {transferType === 'currency' && (\r\n \r\n \r\n Операция обмена валюты подтверждена и отправлена на исполнение в банк.\r\n
    \r\n Средства будут зачислены на текущий счет в течение нескольких минут.\r\n
    \r\n
    \r\n )}\r\n {(transferType === 'inner' ||\r\n transferType === 'loan' ||\r\n transferType === 'deposit' ||\r\n transferType === 'to-partner') && Ваш перевод успешно выполнен}\r\n {transferType === 'salary' && (\r\n \r\n Заявка на перевод денежных средств на вашу банковскую карту принят.\r\n
    \r\n \r\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\r\n Проверить статус заявки можно в разделе Мои распоряжения\r\n \r\n
    \r\n )}\r\n

    \r\n
    \r\n);\r\n\r\nexport default SuccessMessage;\r\n\r\nSuccessMessage.propTypes = {\r\n className: PropTypes.string,\r\n transferType: PropTypes.string,\r\n};\r\n\r\nSuccessMessage.defaultProps = {\r\n className: null,\r\n transferType: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Redirect, Link } from 'react-router-dom';\r\nimport SuccessMessage from '../../components/SuccessMessage';\r\nimport './assets/styles/styles.scss';\r\nimport Typography from '../../../../commonComponents/Typography';\r\n\r\nexport default class TransferSuccess extends React.Component {\r\n static propTypes = {\r\n location: PropTypes.shape({\r\n state: PropTypes.shape({\r\n transferType: PropTypes.string,\r\n }),\r\n }),\r\n };\r\n\r\n static defaultProps = {\r\n location: {\r\n state: {},\r\n },\r\n };\r\n\r\n componentDidMount() {\r\n document.title = 'Платежи и переводы';\r\n }\r\n\r\n getHeading = () => {\r\n const transferType = this.props.location.state ? this.props.location.state.transferType : null;\r\n switch (transferType) {\r\n case 'salary':\r\n return 'Перевод средств на зарплатную карту';\r\n\r\n case 'inner':\r\n return 'Перевод между своими счетами';\r\n\r\n case 'loan':\r\n return 'Досрочное погашение займа';\r\n\r\n case 'deposit':\r\n return 'Пополнение вклада';\r\n\r\n case 'currency':\r\n return 'Конвертация валюты';\r\n\r\n case 'to-partner':\r\n return 'Перевод другому пайщику кооператива';\r\n\r\n default:\r\n return '---';\r\n }\r\n };\r\n\r\n render() {\r\n const locationState = this.props.location.state || null;\r\n if (!locationState) {\r\n return ;\r\n }\r\n const transferType = locationState ? locationState.transferType : null;\r\n\r\n if (!transferType) {\r\n return ;\r\n }\r\n\r\n return (\r\n
    \r\n

    \r\n {this.getHeading()}\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\r\n \r\n На главную\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import { BASE_API_URL, PAGINATION_LIMIT, ACCOUNT_TYPES_FOR_REQUESTS } from '../../../constants';\r\nimport { resultDataToCamelCase, getCookie } from '../../../utils';\r\n\r\nconst getQueryParams = ({\r\n page, status, dates, account,\r\n}) => {\r\n const queryString = new URLSearchParams();\r\n queryString.append('fromDate', dates.startDate.format('DD.MM.YYYY'));\r\n queryString.append('toDate', dates.endDate.format('DD.MM.YYYY'));\r\n\r\n if (page) {\r\n queryString.append('offset', (page - 1) * PAGINATION_LIMIT);\r\n }\r\n\r\n if (PAGINATION_LIMIT) {\r\n queryString.append('limit', PAGINATION_LIMIT);\r\n }\r\n\r\n if (status > -1) {\r\n queryString.append('status', status);\r\n }\r\n\r\n if (account > -1) {\r\n queryString.append('billId', account);\r\n }\r\n\r\n return queryString;\r\n};\r\n\r\nconst fetchStop = () => ({\r\n type: 'REQUESTS_FETCH_STOP',\r\n});\r\n\r\nexport const getRequests = ({\r\n page = 1, status = -1, dates, account = -1,\r\n} = {}) => (dispatch) => {\r\n dispatch({\r\n type: 'REQUESTS_FETCH_START',\r\n });\r\n\r\n const token = getCookie('access_token');\r\n const queryParams = getQueryParams({\r\n page,\r\n status,\r\n dates,\r\n account,\r\n });\r\n\r\n fetch(`${BASE_API_URL}/requests?${queryParams}`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(resultDataToCamelCase(json).message);\r\n });\r\n })\r\n .then((json) => {\r\n const result = resultDataToCamelCase(json);\r\n\r\n dispatch({\r\n type: 'REQUESTS_FETCH_START_SUCCESS',\r\n payload: {\r\n applications: result.requests,\r\n count: result.count,\r\n currentPage: page,\r\n },\r\n });\r\n dispatch(fetchStop());\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'REQUESTS_FETCH_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const getRequest = id => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !id) {\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: 'REQUEST_FETCH_START',\r\n });\r\n\r\n fetch(`${BASE_API_URL}/requests/${id}`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(json =>\r\n dispatch({\r\n type: 'REQUEST_FETCH_SUCCESS',\r\n payload: resultDataToCamelCase(json),\r\n }))\r\n .catch(error =>\r\n dispatch({\r\n type: 'REQUEST_FETCH_FAIL',\r\n payload: error.message,\r\n }));\r\n};\r\n\r\nexport const clearRequestData = () => ({\r\n type: 'CLEAR_REQUEST',\r\n});\r\n\r\nexport const getAccounts = () => (dispatch) => {\r\n const token = getCookie('access_token');\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: 'requestFilter/ACCOUNTS_FETCH_START',\r\n });\r\n\r\n const requests = ACCOUNT_TYPES_FOR_REQUESTS.map(item =>\r\n fetch(`${BASE_API_URL}/accounts/${item}`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n }).then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n }));\r\n\r\n Promise.all(requests)\r\n .then(json =>\r\n dispatch({\r\n type: 'requestFilter/ACCOUNTS_FETCH_SUCCESS',\r\n payload: resultDataToCamelCase(json.reduce((a, b) => a.concat(b))),\r\n }))\r\n .catch(error =>\r\n dispatch({\r\n type: 'requestFilter/ACCOUNTS_FETCH_FAIL',\r\n payload: error.message,\r\n }));\r\n};\r\n\r\nexport const cancelRequest = id => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !id) {\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: 'REQUEST_CANCEL_START',\r\n });\r\n\r\n fetch(`${BASE_API_URL}/transfer/cancel/${id}`, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then(() => dispatch({ type: 'REQUEST_CANCEL_SUCCESS' }))\r\n .catch(() => dispatch({ type: 'REQUEST_CANCEL_FAIL' }));\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { getRequest, clearRequestData } from '../../actions';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport './assets/styles/styles.scss';\r\n\r\nclass SingleRequest extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n fetching: PropTypes.bool.isRequired,\r\n propsFromModal: PropTypes.shape({\r\n requestId: PropTypes.number,\r\n }),\r\n data: PropTypes.shape({\r\n id: PropTypes.number,\r\n partnerName: PropTypes.string,\r\n address: PropTypes.string,\r\n billCode: PropTypes.string,\r\n payer: PropTypes.string,\r\n payerBill: PropTypes.string,\r\n payerBank: PropTypes.string,\r\n paymentDestination: PropTypes.string,\r\n receiver: PropTypes.string,\r\n receiverBill: PropTypes.string,\r\n receiverBank: PropTypes.string,\r\n details: PropTypes.string,\r\n }),\r\n };\r\n\r\n static defaultProps = {\r\n propsFromModal: null,\r\n data: null,\r\n };\r\n\r\n componentDidMount() {\r\n if (this.props.propsFromModal && this.props.propsFromModal.requestId) {\r\n const id = this.props.propsFromModal.requestId;\r\n\r\n this.props.dispatch(getRequest(id));\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.dispatch(clearRequestData());\r\n }\r\n\r\n render() {\r\n const { data } = this.props;\r\n if (this.props.fetching) {\r\n return ;\r\n }\r\n\r\n if (!this.props.data) {\r\n return
    no data
    ;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n Клиент\r\n
    \r\n {data.partnerName}\r\n
    \r\n {data.address}\r\n
    \r\n \r\n Счет клиента\r\n
    \r\n {data.billCode}\r\n
    \r\n
    \r\n \r\n \r\n Плательщик\r\n
    \r\n {data.payer}\r\n
    \r\n \r\n Счет плательщика\r\n
    \r\n {data.payerBill}\r\n
    \r\n
    \r\n \r\n Банк плательщика\r\n
    \r\n {data.payerBank}\r\n
    \r\n {data.details &&\r\n \r\n Назначение платежа\r\n
    \r\n {data.details}\r\n
    \r\n }\r\n
    \r\n \r\n \r\n Получатель\r\n
    \r\n {data.receiver}\r\n
    \r\n \r\n Счет получателя\r\n
    \r\n {data.receiverBill}\r\n
    \r\n
    \r\n \r\n Банк получателя\r\n
    \r\n {data.receiverBank}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n fetching: state.applicationsReducer.requestFetching,\r\n data: state.applicationsReducer.requestData,\r\n});\r\n\r\nexport default connect(mapStateToProps)(SingleRequest);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport moment from 'moment';\r\nimport SingleRequest from '../../components/SingleRequest';\r\nimport ApplicationStatus from '../../components/Status';\r\nimport DataTable from '../../../../commonComponents/DataTable';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport Pagination from '../../../../commonComponents/Pagination';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Modal from '../../../../commonComponents/Modal';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport DatePicker from '../../../../commonComponents/DatePicker';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport { getRequests, getAccounts, cancelRequest } from '../../actions';\r\nimport { PAGINATION_LIMIT } from '../../../../constants';\r\nimport {\r\n getMoneyString,\r\n getDateString,\r\n getDateTimeString,\r\n getAccountLabel,\r\n} from '../../../../utils';\r\nimport './assets/styles/styles.scss';\r\n\r\nclass ApplicationsList extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n applications: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n applicationsCount: PropTypes.number.isRequired,\r\n currentPage: PropTypes.number.isRequired,\r\n accountForFilter: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number,\r\n })).isRequired,\r\n accountsFetching: PropTypes.bool.isRequired,\r\n cancelInProgress: PropTypes.bool.isRequired,\r\n };\r\n\r\n static availableStatuses = [\r\n {\r\n value: -1,\r\n label: 'Все',\r\n },\r\n {\r\n value: 0,\r\n label: 'Новые',\r\n },\r\n {\r\n value: 1,\r\n label: 'Выполненные',\r\n },\r\n {\r\n value: 2,\r\n label: 'Отклоненные',\r\n },\r\n {\r\n value: 3,\r\n label: 'Отмененные',\r\n },\r\n ];\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.maxDate = moment();\r\n this.minDate = moment().subtract(1, 'years');\r\n\r\n this.state = {\r\n selectedStatus: -1,\r\n selectedAccount: -1,\r\n dates: {\r\n startDate: this.minDate,\r\n endDate: this.maxDate,\r\n },\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (document) {\r\n document.title = 'Мои распоряжения';\r\n }\r\n\r\n this.props.dispatch(getRequests({\r\n status: this.state.selectedStatus,\r\n dates: this.state.dates,\r\n }));\r\n this.props.dispatch(getAccounts());\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (JSON.stringify(prevState) !== JSON.stringify(this.state)) {\r\n this.props.dispatch(getRequests({\r\n status: this.state.selectedStatus,\r\n dates: this.state.dates,\r\n account: this.state.selectedAccount,\r\n }));\r\n }\r\n\r\n if (prevProps.cancelInProgress && !this.props.cancelInProgress) {\r\n this.props.dispatch(getRequests({\r\n status: this.state.selectedStatus,\r\n dates: this.state.dates,\r\n account: this.state.selectedAccount,\r\n }));\r\n }\r\n }\r\n\r\n getAccountOptions = () => {\r\n const accountOptions = [\r\n {\r\n value: -1,\r\n label: 'Все счета',\r\n },\r\n ];\r\n\r\n this.props.accountForFilter.forEach(item => accountOptions.push({\r\n value: item.id,\r\n label: getAccountLabel(item),\r\n }));\r\n\r\n return accountOptions;\r\n };\r\n\r\n handleChangePage = pageNumber =>\r\n this.props.dispatch(getRequests({\r\n page: pageNumber,\r\n status: this.state.selectedStatus,\r\n dates: this.state.dates,\r\n account: this.state.selectedAccount,\r\n }));\r\n\r\n handleRequestClick = (requestId) => {\r\n if (this.modal) {\r\n this.modal.openModal({ requestId });\r\n }\r\n };\r\n\r\n handleChangeStatus = ({ value }) => this.setState({ selectedStatus: value });\r\n\r\n handleChangeAccount = ({ value }) => this.setState({ selectedAccount: value });\r\n\r\n handleChangeDates = dates => this.setState({ dates });\r\n\r\n cancelRequest = id => this.props.dispatch(cancelRequest(id));\r\n\r\n render() {\r\n const { loading, applications, cancelInProgress } = this.props;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n Выберите счет\r\n \r\n \r\n \r\n Выберите период\r\n \r\n \r\n \r\n Выберите статус\r\n \r\n \r\n \r\n
    \r\n {(loading || cancelInProgress) ? (\r\n \r\n ) : (\r\n
    \r\n \r\n \r\n \r\n \r\n Получатель\r\n
    \r\n Банк получателя\r\n
    \r\n \r\n Сумма\r\n
    \r\n Детали\r\n
    \r\n \r\n Дата распоряжения\r\n
    \r\n Номер распоряжения\r\n
    \r\n Дата валютации\r\n Статус\r\n
    \r\n
    \r\n \r\n {applications.map(item => (\r\n \r\n \r\n {item.receiver}\r\n
    \r\n {item.receiverBank}\r\n
    \r\n {item.status === 1 && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n \r\n {getMoneyString(item.sum, item.currencyName)}\r\n
    \r\n {item.details && (\r\n {item.details}\r\n )}\r\n
    \r\n \r\n {getDateTimeString(item.applicationDate)}\r\n
    \r\n Распоряжение № {item.id}\r\n
    \r\n \r\n {getDateString(item.executionDate)}\r\n \r\n \r\n \r\n {item.status === 0 && (\r\n \r\n this.cancelRequest(item.id)}\r\n className=\"applications-page__cancel-button\"\r\n >\r\n Отменить\r\n \r\n \r\n )}\r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n \r\n {\r\n this.modal = element;\r\n }}\r\n size=\"large\"\r\n >\r\n \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n applications: state.applicationsReducer.applications,\r\n applicationsCount: state.applicationsReducer.applicationsCount,\r\n loading: state.applicationsReducer.fetching,\r\n currentPage: state.applicationsReducer.currentPage,\r\n accountForFilter: state.applicationsReducer.accountForFilter,\r\n accountsFetching: state.applicationsReducer.accountsFetching,\r\n cancelInProgress: state.applicationsReducer.cancelInProgress,\r\n});\r\n\r\nexport default connect(mapStateToProps)(ApplicationsList);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport './assets/styles/styles.scss';\r\n\r\n\r\nconst childrenPropTypes = PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.element,\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.arrayOf(PropTypes.element),\r\n]);\r\n\r\nconst propTypes = {\r\n className: PropTypes.string,\r\n children: childrenPropTypes,\r\n};\r\n\r\nconst defaultProps = {\r\n className: null,\r\n children: null,\r\n};\r\n\r\nconst Heading = ({ className, children }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nHeading.propTypes = propTypes;\r\nHeading.defaultProps = defaultProps;\r\n\r\nconst SubHeading = ({ className, children }) => (\r\n \r\n {children}\r\n
    \r\n);\r\n\r\nSubHeading.propTypes = propTypes;\r\nSubHeading.defaultProps = defaultProps;\r\n\r\nconst Content = ({ className, children }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nContent.propTypes = propTypes;\r\nContent.defaultProps = defaultProps;\r\n\r\nexport default class Page extends React.Component {\r\n static propTypes = propTypes;\r\n static defaultProps = defaultProps;\r\n\r\n static Heading = Heading;\r\n static Content = Content;\r\n static SubHeading = SubHeading;\r\n\r\n render() {\r\n const { className, children } = this.props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n}\r\n","import { push } from 'react-router-redux';\r\nimport { BASE_API_URL } from '../../../constants';\r\nimport { getCookie, resultDataToCamelCase } from '../../../utils';\r\n\r\nconst fetchStart = () => ({\r\n type: 'applications/FETCH_START',\r\n});\r\n\r\nconst fetchStop = () => ({\r\n type: 'applications/FETCH_STOP',\r\n});\r\n\r\nexport const submitForm = ({\r\n formType, sum, currency, term,\r\n}) => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !sum || !currency || !term || !formType) {\r\n return;\r\n }\r\n\r\n const requestData = {\r\n Sum: sum,\r\n Currency: currency,\r\n Period: formType === 'deposit' ? term * 30 : term,\r\n };\r\n const requestUrl = `${BASE_API_URL}/requests/${formType}`;\r\n\r\n dispatch(fetchStart());\r\n fetch(requestUrl, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(requestData),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then((json) => {\r\n if (formType === 'deposit') {\r\n dispatch({\r\n type: 'applications/DEPOSIT_INCOME_LOAD_SUCCESS',\r\n payload: json,\r\n });\r\n }\r\n\r\n if (formType === 'loan') {\r\n dispatch({\r\n type: 'applications/SCHEDULE_LOAD_SUCCESS',\r\n payload: resultDataToCamelCase(json),\r\n });\r\n }\r\n dispatch(fetchStop());\r\n })\r\n .catch((error) => {\r\n if (formType === 'deposit') {\r\n dispatch({\r\n type: 'applications/DEPOSIT_INCOME_LOAD_FAIL',\r\n payload: error.message,\r\n });\r\n }\r\n\r\n if (formType === 'loan') {\r\n dispatch({\r\n type: 'applications/SCHEDULE_LOAD_FAIL',\r\n payload: error.message,\r\n });\r\n }\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const sendRequest = ({\r\n formType, sum, currency, term,\r\n}) => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token || !sum || !currency || !term || !formType) {\r\n return;\r\n }\r\n\r\n const requestData = {\r\n Sum: sum,\r\n Currency: currency,\r\n Period: formType === 'deposit' ? term * 30 : term,\r\n BillType: formType === 'deposit' ? 'Deposit' : 'Loan',\r\n };\r\n const requestUrl = `${BASE_API_URL}/requests/sendrequest`;\r\n\r\n dispatch(fetchStart());\r\n fetch(requestUrl, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(requestData),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text().then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json().then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(() => {\r\n dispatch(push('/applications/request'));\r\n dispatch(fetchStop());\r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: 'applications/REQUEST_FAIL',\r\n payload: error.message,\r\n });\r\n dispatch(fetchStop());\r\n });\r\n};\r\n\r\nexport const resetFormData = () => ({\r\n type: 'applications/RESET_FORM_DATA',\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport BlockLikeInput from '../../../../commonComponents/BlockLikeInput';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport { getCurrencyTitle, declOfNum } from '../../../../utils';\r\nimport { submitForm, sendRequest, resetFormData } from '../../actions/forms';\r\n\r\n\r\nconst CURRENCIES = [\r\n 'RUR',\r\n 'EUR',\r\n 'USD',\r\n];\r\n\r\nconst DEPOSIT_TERMS = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12].map(item => ({\r\n value: item,\r\n label: `${item} ${declOfNum(item, ['месяц', 'месяца', 'месяцев'])}`,\r\n}));\r\n\r\nclass DepositForm extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n income: PropTypes.number.isRequired,\r\n error: PropTypes.string,\r\n fetching: PropTypes.bool.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n error: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n currency: 'RUR',\r\n term: 6,\r\n sum: 0,\r\n };\r\n }\r\n\r\n handleChangeCurrency = (value) => {\r\n this.setState({ currency: value });\r\n this.props.dispatch(resetFormData());\r\n };\r\n handleChangeSum = (value) => {\r\n this.setState({ sum: value });\r\n this.props.dispatch(resetFormData());\r\n };\r\n handleChangeTerm = (value) => {\r\n this.setState({ term: value });\r\n this.props.dispatch(resetFormData());\r\n };\r\n isSubmitDisabled = () => !this.state.sum || this.props.fetching;\r\n\r\n submitForm = () => {\r\n const requestData = {\r\n formType: 'deposit',\r\n currency: this.state.currency,\r\n term: this.state.term,\r\n sum: this.state.sum,\r\n };\r\n\r\n if (!this.props.income) {\r\n return this.props.dispatch(submitForm(requestData));\r\n }\r\n\r\n return this.props.dispatch(sendRequest(requestData));\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n

    Валюта

    \r\n ({\r\n value: item,\r\n label: getCurrencyTitle(item),\r\n }))}\r\n name=\"currency\"\r\n clearable={false}\r\n searchable={false}\r\n onChange={({ value }) => this.handleChangeCurrency(value)}\r\n value={this.state.currency}\r\n placeholder=\"Выберите валюту\"\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n Срок размещения\r\n \r\n this.handleChangeTerm(value)}\r\n value={this.state.term}\r\n placeholder=\"Выберите срок\"\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n Доход за период\r\n \r\n \r\n \r\n {\r\n this.props.fetching ?\r\n :\r\n this.props.income\r\n }\r\n \r\n \r\n \r\n \r\n \r\n {this.props.error && (\r\n \r\n

    {this.props.error}

    \r\n
    \r\n )}\r\n \r\n \r\n {this.props.income ? 'Отправить заявку' : 'Рассчитать'}\r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n income: state.applicationsFormsReducer.depositIncome,\r\n error: state.applicationsFormsReducer.depositIncomeError ||\r\n state.applicationsFormsReducer.requestError,\r\n fetching: state.applicationsFormsReducer.fetching,\r\n});\r\n\r\nexport default connect(mapStateToProps)(DepositForm);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport FormLine, { FormLineColumn } from '../../../../commonComponents/FormLine/index.tsx';\r\nimport SelectBox from '../../../../commonComponents/SelectBox';\r\nimport BlockLikeInput from '../../../../commonComponents/BlockLikeInput';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport Modal from '../../../../commonComponents/Modal';\r\nimport Table from '../../../../commonComponents/Table';\r\nimport Pagination from '../../../../commonComponents/Pagination';\r\nimport { FormControl } from '../../../../commonComponents/FormControl';\r\nimport { getCurrencyTitle, getMoneyString, getDateString } from '../../../../utils';\r\nimport { submitForm, sendRequest, resetFormData } from '../../actions/forms';\r\n\r\n\r\nconst CURRENCIES = [\r\n 'RUR',\r\n 'EUR',\r\n 'USD',\r\n];\r\n\r\nconst DEPOSIT_TERMS = [\r\n {\r\n value: 3,\r\n label: '3 месяца',\r\n },\r\n {\r\n value: 6,\r\n label: '6 месяцев',\r\n },\r\n {\r\n value: 12,\r\n label: '12 месяцев',\r\n },\r\n {\r\n value: 24,\r\n label: '24 месяца',\r\n },\r\n];\r\n\r\nclass LoanForm extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n monthlyPayment: PropTypes.number,\r\n error: PropTypes.string,\r\n fetching: PropTypes.bool.isRequired,\r\n schedule: PropTypes.arrayOf(PropTypes.shape({\r\n startDate: PropTypes.string,\r\n })).isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n error: null,\r\n monthlyPayment: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n currency: 'RUR',\r\n term: 12,\r\n sum: 0,\r\n page: 1,\r\n };\r\n }\r\n\r\n handleChangeCurrency = (value) => {\r\n this.setState({ currency: value });\r\n this.props.dispatch(resetFormData());\r\n };\r\n handleChangeSum = (value) => {\r\n this.setState({ sum: value });\r\n this.props.dispatch(resetFormData());\r\n };\r\n handleChangeTerm = (value) => {\r\n this.setState({ term: value });\r\n this.props.dispatch(resetFormData());\r\n };\r\n isSubmitDisabled = () => !this.state.sum || this.props.fetching;\r\n\r\n submitForm = () => {\r\n const requestData = {\r\n formType: 'loan',\r\n currency: this.state.currency,\r\n term: this.state.term,\r\n sum: this.state.sum,\r\n };\r\n\r\n if (!this.props.monthlyPayment) {\r\n return this.props.dispatch(submitForm(requestData));\r\n }\r\n\r\n return this.props.dispatch(sendRequest(requestData));\r\n };\r\n\r\n renderPaymentData = () => {\r\n if (!this.props.schedule.length || !this.props.monthlyPayment) {\r\n return null;\r\n }\r\n return (\r\n
    \r\n \r\n Начиная с {getDateString(this.props.schedule[0].startDate)}:\r\n \r\n {' '}\r\n \r\n {getMoneyString(this.props.monthlyPayment, this.state.currency)}\r\n \r\n
    \r\n );\r\n }\r\n\r\n renderScheduleTable = () => (\r\n
    \r\n ({\r\n ...item,\r\n currency: this.state.currency,\r\n })).slice((this.state.page - 1) * 10, 10 * this.state.page),\r\n }}\r\n />\r\n this.setState({\r\n page,\r\n })}\r\n />\r\n
    \r\n );\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n

    Валюта

    \r\n ({\r\n value: item,\r\n label: getCurrencyTitle(item),\r\n }))}\r\n name=\"currency\"\r\n clearable={false}\r\n searchable={false}\r\n onChange={({ value }) => this.handleChangeCurrency(value)}\r\n value={this.state.currency}\r\n placeholder=\"Выберите валюту\"\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n Срок займа\r\n \r\n this.handleChangeTerm(value)}\r\n value={this.state.term}\r\n placeholder=\"Выберите срок\"\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n Расчетный ежемесячный платеж\r\n \r\n \r\n {\r\n this.props.fetching ?\r\n \r\n \r\n :\r\n this.renderPaymentData()\r\n }\r\n \r\n \r\n {!!this.props.schedule.length &&\r\n
    \r\n {\r\n if (this.modal) {\r\n this.modal.openModal();\r\n }\r\n }}\r\n type=\"inline\"\r\n >\r\n Посмотреть полный график платежей\r\n \r\n
    \r\n }\r\n
    \r\n \r\n {this.props.error && (\r\n \r\n

    {this.props.error}

    \r\n
    \r\n )}\r\n \r\n \r\n {this.props.monthlyPayment ? 'Отправить заявку' : 'Рассчитать'}\r\n \r\n \r\n
    \r\n { this.modal = element; }}>\r\n {this.renderScheduleTable()}\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n schedule: state.applicationsFormsReducer.loanShedule,\r\n monthlyPayment: state.applicationsFormsReducer.loanMonthlyPayment,\r\n error: state.applicationsFormsReducer.loanSheduleError ||\r\n state.applicationsFormsReducer.requestError,\r\n fetching: state.applicationsFormsReducer.fetching,\r\n});\r\n\r\nexport default connect(mapStateToProps)(LoanForm);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Page from '../../../../commonComponents/Page';\r\nimport DepositForm from '../../components/DepositForm';\r\nimport LoanForm from '../../components/LoanForm';\r\n\r\n\r\nexport default class ApplicationsForms extends React.Component {\r\n static propTypes = {\r\n location: PropTypes.shape({\r\n state: PropTypes.shape({\r\n type: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n }\r\n\r\n getHeading = () => {\r\n switch (this.props.location.state.type) {\r\n case 'deposit':\r\n document.title = 'Вклады';\r\n return 'Заявка на размещение вклада';\r\n\r\n case 'loan':\r\n return 'Заявка на получение займа';\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n getForm = () => {\r\n switch (this.props.location.state.type) {\r\n case 'deposit':\r\n return ;\r\n\r\n case 'loan':\r\n return ;\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.getHeading()}\r\n \r\n \r\n {this.getForm()}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\n\r\nconst RequestSuccess = () => (\r\n
    \r\n

    \r\n Заявка успешно отправлена.\r\n

    \r\n
    \r\n
    \r\n \r\n

    \r\n Ваша заявка успешно отправлена. Сотрудники КПК "Морской Фонд" свяжутся с вами в\r\n течение 24х часов.\r\n

    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport default RequestSuccess;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { NavLink } from 'react-router-dom';\r\nimport cx from 'classnames';\r\nimport Page from '../../../../commonComponents/Page';\r\nimport './assets/styles/styles.scss';\r\nimport { getDateString } from '../../../../utils';\r\n\r\n\r\nconst NoticesList = props => (\r\n
    \r\n {props.data.length === 0 && (\r\n \r\n \r\n

    У вас нет уведомлений

    \r\n
    \r\n
    \r\n )}\r\n {props.data.map(item => (\r\n \r\n
    \r\n

    \r\n \r\n {item.title}\r\n \r\n

    \r\n

    \r\n {getDateString(item.date)}\r\n

    \r\n
    \r\n \r\n

    {item.preview}

    \r\n
    \r\n \r\n ))}\r\n
    \r\n);\r\n\r\nNoticesList.propTypes = {\r\n data: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number,\r\n title: PropTypes.string,\r\n preview: PropTypes.string,\r\n date: PropTypes.string,\r\n isUnread: PropTypes.bool,\r\n })).isRequired,\r\n};\r\n\r\nexport default NoticesList;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport cx from 'classnames';\r\nimport { NavLink } from 'react-router-dom';\r\nimport './assets/styles/styles.scss';\r\nimport { getNotices, changeSorting } from '../../actions';\r\nimport NoticesList from '../../components/NoticesList';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport Pagination from '../../../../commonComponents/Pagination';\r\n\r\nconst PAGINATION_LIMIT = 10;\r\n\r\nclass Notices extends React.Component {\r\n static propTypes = {\r\n dispatch: PropTypes.func.isRequired,\r\n sorting: PropTypes.oneOf([\r\n 'asc',\r\n 'desc',\r\n ]).isRequired,\r\n notices: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number,\r\n title: PropTypes.string,\r\n preview: PropTypes.string,\r\n date: PropTypes.string,\r\n isUnread: PropTypes.bool,\r\n })).isRequired,\r\n fetching: PropTypes.bool.isRequired,\r\n match: PropTypes.shape({\r\n params: PropTypes.shape({\r\n section: PropTypes.oneOf([\r\n 'new',\r\n 'archive',\r\n ]).isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n noticesCount: PropTypes.number.isRequired,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.sectionLinks = [\r\n {\r\n title: 'Актуальные',\r\n link: '/notices/new',\r\n },\r\n {\r\n title: 'Все',\r\n link: '/notices/archive',\r\n },\r\n ];\r\n\r\n this.state = {\r\n page: 1,\r\n };\r\n\r\n this.section = props.match.params.section;\r\n }\r\n\r\n componentDidMount() {\r\n if (document) {\r\n document.title = 'Уведомления';\r\n }\r\n\r\n this.props.dispatch(getNotices(\r\n this.props.sorting,\r\n this.section,\r\n {\r\n page: this.state.page,\r\n limit: PAGINATION_LIMIT,\r\n },\r\n ));\r\n }\r\n\r\n componentWillUpdate(nextProps, nextState) {\r\n if (this.props.sorting !== nextProps.sorting) {\r\n nextProps.dispatch(getNotices(\r\n nextProps.sorting,\r\n this.section,\r\n {\r\n page: nextState.page,\r\n limit: PAGINATION_LIMIT,\r\n },\r\n ));\r\n }\r\n\r\n if (this.props.match.params.section !== nextProps.match.params.section) {\r\n nextProps.dispatch(getNotices(\r\n nextProps.sorting,\r\n this.section,\r\n {\r\n page: nextState.page,\r\n limit: PAGINATION_LIMIT,\r\n },\r\n ));\r\n }\r\n\r\n if (nextState.page && this.state.page !== nextState.page) {\r\n nextProps.dispatch(getNotices(\r\n nextProps.sorting,\r\n this.section,\r\n {\r\n page: nextState.page,\r\n limit: PAGINATION_LIMIT,\r\n },\r\n ));\r\n }\r\n }\r\n\r\n renderSortingButton() {\r\n const sortingLabel = {\r\n desc: 'от новых к старым',\r\n asc: 'от старых к новым',\r\n };\r\n return (\r\n this.props.dispatch(changeSorting())}\r\n >\r\n {sortingLabel[this.props.sorting]}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n

    Уведомления

    \r\n
    \r\n {this.sectionLinks.map(item => (\r\n \r\n {item.title}\r\n \r\n ))}\r\n
    \r\n
    \r\n
    \r\n Сортировка по дате: {this.renderSortingButton()}\r\n
    \r\n
    \r\n
    \r\n {\r\n (this.props.fetching && !this.props.notices.length) ?\r\n :\r\n [\r\n ,\r\n this.setState({\r\n page,\r\n })}\r\n />,\r\n ]\r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => ({\r\n notices: ownProps.match.params.section === 'new' ? state.noticesReducer.noticesNew : state.noticesReducer.notices,\r\n noticesCount: ownProps.match.params.section === 'new' ? state.noticesReducer.countNew : state.noticesReducer.count,\r\n sorting: state.noticesReducer.sorting,\r\n fetching: state.noticesReducer.noticesFetching,\r\n});\r\n\r\nexport default connect(mapStateToProps)(Notices);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { goBack } from 'react-router-redux';\r\nimport renderHTML from 'react-render-html';\r\nimport Page from '../../../../commonComponents/Page';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Icon from '../../../../commonComponents/Icon';\r\nimport { getNotice } from '../../actions';\r\nimport { getDateString } from '../../../../utils';\r\n\r\nclass SingleNotice extends React.Component {\r\n static propTypes = {\r\n match: PropTypes.shape({\r\n params: PropTypes.shape({\r\n noticeId: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n dispatch: PropTypes.func.isRequired,\r\n notice: PropTypes.shape({\r\n title: PropTypes.string.isRequired,\r\n content: PropTypes.string.isRequired,\r\n date: PropTypes.string.isRequired,\r\n }),\r\n fetching: PropTypes.bool.isRequired,\r\n error: PropTypes.string,\r\n }\r\n\r\n static defaultProps = {\r\n notice: null,\r\n error: null,\r\n }\r\n\r\n componentDidMount() {\r\n if (document) {\r\n document.title = 'Уведомления';\r\n }\r\n\r\n const { noticeId } = this.props.match.params;\r\n this.props.dispatch(getNotice(noticeId));\r\n }\r\n\r\n getBackButton = () => (\r\n

    \r\n \r\n

    \r\n );\r\n\r\n render() {\r\n if (this.props.fetching) {\r\n return ;\r\n }\r\n\r\n return (\r\n
    \r\n {this.getBackButton()}\r\n {this.props.error && (\r\n \r\n Произошла ошибка\r\n Попробуйте обновить страницу\r\n {this.props.error}\r\n \r\n )}\r\n {this.props.notice && (\r\n \r\n {getDateString(this.props.notice.date)}\r\n {this.props.notice.title}\r\n \r\n {renderHTML(this.props.notice.content)}\r\n \r\n \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n notice: state.noticesReducer.notice,\r\n fetching: state.noticesReducer.noticeFetching,\r\n error: state.noticesReducer.singleNoticeError,\r\n});\r\n\r\nexport default connect(mapStateToProps)(SingleNotice);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Redirect } from 'react-router-dom';\r\nimport renderHTML from 'react-render-html';\r\nimport Page from '../../../../commonComponents/Page';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport Button from '../../../../commonComponents/Button';\r\nimport Icon from '../../../../commonComponents/Icon';\r\nimport { history } from '../../../../store';\r\nimport { getSingleNews } from '../../actions';\r\nimport { getDateString } from '../../../../utils';\r\n\r\nimport './assets/styles/styles.scss';\r\n\r\nexport default class SingleNews extends React.Component {\r\n static propTypes = {\r\n match: PropTypes.shape({\r\n params: PropTypes.shape({\r\n newsId: PropTypes.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.newsId = props.match.params.newsId;\r\n\r\n this.state = {\r\n newsFetching: false,\r\n news: null,\r\n error: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (document) {\r\n document.title = 'Новости';\r\n }\r\n\r\n this.getNews();\r\n }\r\n\r\n getNews = () => {\r\n this.setState({\r\n newsFetching: true,\r\n });\r\n getSingleNews(this.newsId)\r\n .then(news => this.setState({ news, newsFetching: false }))\r\n .catch(error => this.setState({ error, newsFetching: false }));\r\n }\r\n\r\n getBackButton = () => {\r\n if (history.action === 'PUSH') {\r\n return (\r\n

    \r\n \r\n

    \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n render() {\r\n if (!this.newsId || this.state.error) {\r\n return ;\r\n }\r\n\r\n if (this.state.newsFetching) {\r\n return ;\r\n }\r\n\r\n if (!this.state.news) {\r\n return null;\r\n }\r\n\r\n return (\r\n
    \r\n {this.getBackButton()}\r\n \r\n {getDateString(this.state.news.startDate)}\r\n {this.state.news.title}\r\n \r\n {renderHTML(this.state.news.content)}\r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n","import React, { Component, Fragment } from 'react';\r\nimport cn from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport './assets/styles/styles.scss';\r\n\r\nconst childrenPropTypes = PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.element,\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.arrayOf(PropTypes.element),\r\n]);\r\n\r\nconst propTypes = {\r\n className: PropTypes.string,\r\n children: childrenPropTypes,\r\n withBottomDevider: PropTypes.bool,\r\n};\r\n\r\nconst defaultProps = {\r\n className: null,\r\n children: null,\r\n withBottomDevider: false,\r\n};\r\n\r\nconst rowPropTypes = {\r\n children: childrenPropTypes,\r\n key: PropTypes.string,\r\n reverse: PropTypes.bool,\r\n white: PropTypes.bool,\r\n};\r\n\r\nconst rowDefaultProps = {\r\n key: null,\r\n children: null,\r\n reverse: false,\r\n white: false,\r\n};\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass Row extends Component {\r\n static propTypes = rowPropTypes;\r\n static defaultProps = rowDefaultProps;\r\n\r\n render() {\r\n const { key, children, reverse, white } = this.props;\r\n return (\r\n
    \r\n {children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst colPropTypes = {\r\n children: childrenPropTypes,\r\n key: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nconst colDefaultProps = {\r\n key: null,\r\n children: null,\r\n className: null,\r\n};\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function,react/no-multi-comp\r\nclass Col extends Component {\r\n static propTypes = colPropTypes;\r\n static defaultProps = colDefaultProps;\r\n\r\n render() {\r\n const { key, children, className } = this.props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst subColPropTypes = {\r\n children: childrenPropTypes,\r\n key: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nconst subColDefaultProps = {\r\n key: null,\r\n children: null,\r\n className: null,\r\n};\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function,react/no-multi-comp\r\nclass SubCol extends Component {\r\n static propTypes = subColPropTypes;\r\n static defaultProps = subColDefaultProps;\r\n\r\n render() {\r\n const { key, children, className } = this.props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n}\r\n\r\n// eslint-disable-next-line react/no-multi-comp\r\nexport default class Table extends Component {\r\n static propTypes = propTypes;\r\n static defaultProps = defaultProps;\r\n\r\n static Row = Row;\r\n static Col = Col;\r\n static SubCol = SubCol;\r\n\r\n render() {\r\n const { children, className, withBottomDevider } = this.props;\r\n return (\r\n \r\n
    \r\n \r\n {children}\r\n \r\n
    \r\n {withBottomDevider &&
    }\r\n \r\n );\r\n }\r\n}\r\n","import React, { PureComponent, Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport { get, concat, take, orderBy, isEmpty } from 'lodash';\r\n\r\nimport Page from '../../../../commonComponents/Page';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport Table from '../Table';\r\nimport { getCurrencyTitle } from '../../../../utils';\r\nimport { EMPTY_TABLE_TEXT } from '../../../../constants';\r\n\r\nconst propTypes = {\r\n loading: PropTypes.bool.isRequired,\r\n data: PropTypes.shape({\r\n Current: PropTypes.arrayOf(PropTypes.shape({})),\r\n Share: PropTypes.arrayOf(PropTypes.shape({})),\r\n Salary: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n};\r\n\r\nconst defaultProps = {\r\n data: {},\r\n};\r\n\r\nclass AvailableFunds extends PureComponent {\r\n static propTypes = propTypes;\r\n static defaultProps = defaultProps;\r\n\r\n render() {\r\n const { data, loading } = this.props;\r\n if (loading) {\r\n return ;\r\n }\r\n const Current = get(data, 'Current', []);\r\n const Share = get(data, 'Share', []);\r\n const Salary = get(data, 'Salary', []);\r\n const result = take(orderBy(concat(Current, Share, Salary), ['Balance'], ['desc']), 3);\r\n return (\r\n \r\n Доступные средства:\r\n \r\n {!isEmpty(result) && \r\n \r\n {result.map(item => (\r\n \r\n \r\n {item.Title}\r\n Валюта: {getCurrencyTitle(item.Currency)}\r\n \r\n \r\n \r\n {item.Balance.toLocaleString('ru-RU', {\r\n style: 'currency',\r\n currency: item.Currency,\r\n })}\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n Показать все счета > \r\n
    \r\n
    }\r\n {isEmpty(result) &&
    {EMPTY_TABLE_TEXT.availableFunds}
    }\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n data: state.dashboardReducer.accounts.data,\r\n loading: state.dashboardReducer.accounts.loading,\r\n});\r\n\r\nexport default connect(mapStateToProps)(AvailableFunds);\r\n","import React, { PureComponent, Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport { get, take, orderBy, isEmpty } from 'lodash';\r\n\r\nimport Page from '../../../../commonComponents/Page';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport Table from '../Table';\r\nimport { getCurrencyTitle } from '../../../../utils';\r\nimport { EMPTY_TABLE_TEXT } from '../../../../constants';\r\n\r\n\r\nconst propTypes = {\r\n loading: PropTypes.bool.isRequired,\r\n data: PropTypes.shape({\r\n Deposit: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.number,\r\n Title: PropTypes.string,\r\n Balance: PropTypes.number,\r\n Currency: PropTypes.string,\r\n })),\r\n }),\r\n};\r\n\r\nconst defaultProps = {\r\n data: {},\r\n};\r\n\r\nclass SavingAccounts extends PureComponent {\r\n static propTypes = propTypes;\r\n static defaultProps = defaultProps;\r\n\r\n render() {\r\n const { data, loading } = this.props;\r\n if (loading) {\r\n return ;\r\n }\r\n const Deposit = take(orderBy(get(data, 'Deposit', []), ['Balance'], ['desc']), 3);\r\n return (\r\n \r\n Сберегательные счета:\r\n \r\n {!isEmpty(Deposit) && \r\n \r\n {Deposit.map(item => (\r\n \r\n \r\n {item.Title}\r\n Валюта: {getCurrencyTitle(item.Currency)}\r\n \r\n \r\n \r\n {item.Balance.toLocaleString('ru-RU', {\r\n style: 'currency',\r\n currency: item.Currency,\r\n })}\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n Показать все счета > \r\n
    \r\n
    }\r\n {isEmpty(Deposit) &&
    {EMPTY_TABLE_TEXT.deposit}
    }\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n data: state.dashboardReducer.accounts.data,\r\n loading: state.dashboardReducer.accounts.loading,\r\n});\r\n\r\nexport default connect(mapStateToProps)(SavingAccounts);\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport { get, isEmpty } from 'lodash';\r\n\r\nimport Page from '../../../../commonComponents/Page';\r\nimport Table from '../Table';\r\n\r\nimport img from './assets/images/vektornyi_smart-obekt.jpg';\r\nimport img1 from './assets/images/vektornyi_smart-obekt_2.jpg';\r\nimport img2 from './assets/images/vektornyi_smart-obekt_3.jpg';\r\nimport img3 from './assets/images/vektornyi_smart-obekt_4.jpg';\r\nimport img4 from './assets/images/vektornyi_smart-obekt_5.jpg';\r\n\r\n\r\nconst data = [\r\n {\r\n id: 1,\r\n image: img,\r\n text: 'Перевод на зарплатную карту',\r\n link: '/transfers/to-salary',\r\n },\r\n {\r\n id: 2,\r\n image: img4,\r\n text: 'Перевод между счетами',\r\n link: '/transfers/to-account',\r\n },\r\n // {\r\n // id: 3,\r\n // image: img1,\r\n // text: 'Перевод другому пайщику',\r\n // link: '/transfers/to-partner',\r\n // },\r\n {\r\n id: 4,\r\n image: img2,\r\n text: 'Погашение займа',\r\n link: '/transfers/loan',\r\n },\r\n {\r\n id: 5,\r\n image: img3,\r\n text: 'Пополнение вклада',\r\n link: '/transfers/deposit',\r\n },\r\n];\r\n\r\nconst propTypes = {\r\n data: PropTypes.shape({\r\n Loan: PropTypes.arrayOf(PropTypes.shape({})),\r\n Deposit: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n};\r\n\r\nconst defaultProps = {\r\n data: {},\r\n};\r\n\r\nclass FastOperations extends PureComponent {\r\n static propTypes = propTypes;\r\n static defaultProps = defaultProps;\r\n\r\n checkDisabled = (text) => {\r\n const { accaunts } = this.props;\r\n\r\n switch (text) {\r\n case 'Погашение займа':\r\n return isEmpty(get(accaunts, 'Loan', []));\r\n case 'Пополнение вклада':\r\n return isEmpty(get(accaunts, 'Deposit', []));\r\n default:\r\n return false;\r\n }\r\n };\r\n\r\n preventClick = (e) => {\r\n e.preventDefault();\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n Быстрые операции:\r\n \r\n \r\n {data.map(item => (\r\n \r\n \r\n {item.text}\r\n \r\n \r\n {this.checkDisabled(item.text) ? (\r\n \r\n {item.text}\r\n \r\n ) : (\r\n \r\n {item.text}\r\n \r\n )}\r\n\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n accaunts: state.dashboardReducer.accounts.data,\r\n loading: state.dashboardReducer.accounts.loading,\r\n});\r\n\r\nexport default connect(mapStateToProps)(FastOperations);\r\n","import React, { PureComponent, Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport { get, take, orderBy, isEmpty } from 'lodash';\r\nimport moment from 'moment';\r\n\r\nimport Page from '../../../../commonComponents/Page';\r\nimport Table from '../Table';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport { EMPTY_TABLE_TEXT } from '../../../../constants';\r\n\r\nconst propTypes = {\r\n history: PropTypes.shape({}).isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n data: PropTypes.shape({\r\n Loan: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.number,\r\n DateOfCreate: PropTypes.string,\r\n LoanSum: PropTypes.number,\r\n NextPaymentSum: PropTypes.number,\r\n NextPaymentDate: PropTypes.string,\r\n DateOfEnd: PropTypes.string,\r\n Currency: PropTypes.string,\r\n Balance: PropTypes.number,\r\n })),\r\n }),\r\n};\r\n\r\nconst defaultProps = {\r\n data: {},\r\n};\r\n\r\nclass LoanBalance extends PureComponent {\r\n static propTypes = propTypes;\r\n static defaultProps = defaultProps;\r\n\r\n payLoan = id => () => {\r\n const { history } = this.props;\r\n history.push('/transfers/loan', { accountId: id });\r\n };\r\n\r\n render() {\r\n const { data, loading } = this.props;\r\n if (loading) {\r\n return ;\r\n }\r\n const Loan = take(orderBy(get(data, 'Loan', []), ['Balance'], ['desc']), 3);\r\n return (\r\n \r\n Остаток долга по займам:\r\n \r\n {!isEmpty(Loan) && \r\n \r\n {Loan.map(item => (\r\n \r\n \r\n {item.LoanSum.toLocaleString('ru-RU', {\r\n style: 'currency',\r\n currency: item.Currency,\r\n })}\r\n Дата открытия: {moment(item.DateOfCreate)\r\n .format('DD.MM.YYYY')}\r\n \r\n \r\n \r\n {item.NextPaymentSum.toLocaleString('ru-RU', {\r\n style: 'currency',\r\n currency: item.Currency,\r\n })}\r\n Очередной платеж: {moment(item.NextPaymentDate)\r\n .format('DD.MM.YYYY')}\r\n \r\n \r\n \r\n \r\n {item.Balance.toLocaleString('ru-RU', {\r\n style: 'currency',\r\n currency: item.Currency,\r\n })}\r\n \r\n Дата закрытия: {moment(item.DateOfEnd)\r\n .format('DD.MM.YYYY')}\r\n \r\n \r\n \r\n
    Оплатить
    \r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n Показать все займы > \r\n
    \r\n
    }\r\n {isEmpty(Loan) &&
    {EMPTY_TABLE_TEXT.loan}
    }\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n data: state.dashboardReducer.accounts.data,\r\n loading: state.dashboardReducer.accounts.loading,\r\n});\r\n\r\nexport default connect(mapStateToProps)(LoanBalance);\r\n","import React, { PureComponent, Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport moment from 'moment';\r\nimport { get, isEmpty } from 'lodash';\r\n\r\nimport Page from '../../../../commonComponents/Page';\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport Table from '../Table';\r\nimport { EMPTY_TABLE_TEXT } from '../../../../constants';\r\n\r\n\r\nconst propTypes = {\r\n loading: PropTypes.bool.isRequired,\r\n data: PropTypes.shape({\r\n Operations: PropTypes.arrayOf(PropTypes.shape({\r\n Id: PropTypes.number,\r\n Title: PropTypes.string,\r\n Date: PropTypes.string,\r\n Sum: PropTypes.number,\r\n })),\r\n }),\r\n};\r\n\r\nconst defaultProps = {\r\n data: {},\r\n};\r\n\r\nclass LastOperations extends PureComponent {\r\n static propTypes = propTypes;\r\n static defaultProps = defaultProps;\r\n\r\n render() {\r\n const { data, loading } = this.props;\r\n if (loading) {\r\n return ;\r\n }\r\n const Operations = get(data, 'Operations', []);\r\n return (\r\n \r\n Последние операции:\r\n \r\n {!isEmpty(Operations) && \r\n \r\n {Operations.map(item => (\r\n \r\n \r\n {item.Title}\r\n \r\n {moment(item.Date).format('DD.MM.YYYY')}\r\n \r\n \r\n 0 ? 'green' : 'red'}`}>\r\n {item.Sum.toLocaleString('ru-RU', {\r\n style: 'currency',\r\n currency: item.Currency,\r\n })}\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n Показать больше > \r\n
    \r\n
    }\r\n {isEmpty(Operations) &&
    {EMPTY_TABLE_TEXT.operations}
    }\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n data: state.dashboardReducer.lastOperations.data,\r\n loading: state.dashboardReducer.lastOperations.loading,\r\n});\r\n\r\nexport default connect(mapStateToProps)(LastOperations);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport 'bootstrap/dist/css/bootstrap-grid.min.css';\r\n\r\nimport Throbber from '../../../../commonComponents/Throbber';\r\nimport AvailableFunds from '../../components/AvailableFunds';\r\nimport SavingAccounts from '../../components/SavingAccounts';\r\nimport FastOperations from '../../components/FastOperations';\r\nimport LoanBalance from '../../components/LoanBalance';\r\nimport LastOperations from '../../components/LastOperations';\r\nimport { getAccounts, getLastOperations } from '../../actions';\r\n\r\n\r\nexport default class Dashboard extends React.Component {\r\n static propTypes = {\r\n user: PropTypes.shape({\r\n name: PropTypes.string,\r\n }).isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n dispatch: PropTypes.func.isRequired,\r\n history: PropTypes.shape({}).isRequired,\r\n };\r\n\r\n componentDidMount() {\r\n this.fetchAccaunts();\r\n this.fetchLastOperations();\r\n }\r\n\r\n getUserName() {\r\n const { user: { name } } = this.props;\r\n return `Добро пожаловать, ${name}!`;\r\n }\r\n\r\n fetchAccaunts() {\r\n this.props.dispatch(getAccounts());\r\n }\r\n\r\n fetchLastOperations() {\r\n this.props.dispatch(getLastOperations(6));\r\n }\r\n\r\n render() {\r\n const { loading, history } = this.props;\r\n if (loading) {\r\n return ;\r\n }\r\n return (\r\n
    \r\n

    {this.getUserName()}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n );\r\n }\r\n}\r\n","import { BASE_API_URL } from '../../../constants';\r\nimport { getCookie } from '../../../utils';\r\nimport {\r\n DASHBOARD_FETCH_ACCOUNTS_FAILURE,\r\n DASHBOARD_FETCH_ACCOUNTS_REQUEST,\r\n DASHBOARD_FETCH_ACCOUNTS_SUCCESS,\r\n DASHBOARD_FETCH_LAST_OPERATIONS_REQUEST,\r\n DASHBOARD_FETCH_LAST_OPERATIONS_SUCCESS,\r\n DASHBOARD_FETCH_LAST_OPERATIONS_FAILURE,\r\n} from '../constants';\r\n\r\nexport const getAccounts = () => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: DASHBOARD_FETCH_ACCOUNTS_REQUEST,\r\n });\r\n\r\n fetch(`${BASE_API_URL}/accounts`, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text()\r\n .then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json()\r\n .then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(json => dispatch({\r\n type: DASHBOARD_FETCH_ACCOUNTS_SUCCESS,\r\n payload: json,\r\n }))\r\n .catch(error => dispatch({\r\n type: DASHBOARD_FETCH_ACCOUNTS_FAILURE,\r\n payload: error.message,\r\n }));\r\n};\r\n\r\n\r\nexport const getLastOperations = limit => (dispatch) => {\r\n const token = getCookie('access_token');\r\n\r\n if (!token) {\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: DASHBOARD_FETCH_LAST_OPERATIONS_REQUEST,\r\n });\r\n\r\n fetch(`${BASE_API_URL}/accounts/last-operations?limit=${limit}`, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n if (response.status === 500) {\r\n return response.text()\r\n .then((text) => {\r\n throw new Error(text);\r\n });\r\n }\r\n\r\n return response.json()\r\n .then((json) => {\r\n throw new Error(json.Message);\r\n });\r\n })\r\n .then(json => dispatch({\r\n type: DASHBOARD_FETCH_LAST_OPERATIONS_SUCCESS,\r\n payload: json,\r\n }))\r\n .catch(error => dispatch({\r\n type: DASHBOARD_FETCH_LAST_OPERATIONS_FAILURE,\r\n payload: error.message,\r\n }));\r\n};\r\n","import { connect } from 'react-redux';\r\nimport Dashboard from './Dashboard';\r\n\r\n\r\nconst mapStateToProps = state => ({\r\n user: state.appReducer.user,\r\n loading: state.appReducer.userFetching,\r\n});\r\n\r\nexport default connect(mapStateToProps)(Dashboard);\r\n","import React from 'react';\r\nimport { Route, Switch, Redirect } from 'react-router-dom';\r\nimport PrivateComponent from '../modules/App/containers/PrivateComponent';\r\n\r\nimport Login from '../modules/App/containers/Login';\r\nimport MobileDisclamer from '../modules/App/components/MobileDisclamer';\r\nimport RecoveryPassword from '../modules/App/containers/RecoveryPassword';\r\nimport Listing from '../modules/Accounts/pages/Listing';\r\nimport Details from '../modules/Accounts/pages/Details';\r\nimport Settings from '../modules/Settings/pages/Settings';\r\nimport ChangePassword from '../modules/Settings/pages/ChangePassword';\r\nimport Transfers from '../modules/Transfers/pages/Transfers';\r\nimport ConfirmPage from '../modules/Transfers/pages/ConfirmPage';\r\nimport TransferSuccess from '../modules/Transfers/pages/TransferSuccess';\r\nimport ApplicationsList from '../modules/Applications/pages/ApplicationsList';\r\nimport ApplicationsForms from '../modules/Applications/pages/ApplicationsForms';\r\nimport RequestSuccess from '../modules/Applications/pages/RequestSuccess';\r\nimport Notices from '../modules/Notices/pages/Notices';\r\nimport SingleNotice from '../modules/Notices/pages/SingleNotice';\r\nimport SingleNews from '../modules/News/pages/SingleNews';\r\nimport Dashboard from '../modules/Dashboard/pages/Dasboard';\r\nimport { getCookie } from '../utils';\r\n\r\n\r\nfunction detectmob() {\r\n let check = false;\r\n (function (a) { if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true; }(navigator.userAgent || navigator.vendor || window.opera));\r\n return check || (window.innerWidth <= 800 && window.innerHeight <= 600);\r\n}\r\n\r\nconst Routes = () => (\r\n \r\n {detectmob() && !getCookie('allow_mobile') && }\r\n {\r\n if (routeProps.location.search) {\r\n return ;\r\n }\r\n return ;\r\n }\r\n }\r\n />\r\n } />\r\n \r\n \r\n \r\n \r\n \r\n } />\r\n \r\n {/* */}\r\n \r\n \r\n {/* */}\r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

    404

    } />\r\n
    \r\n);\r\n\r\nexport default Routes;\r\n","import 'react-app-polyfill/ie11';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter as Router } from 'react-router-redux';\r\nimport ReactGA from 'react-ga';\r\nimport 'normalize.css';\r\nimport './static/styles/global.scss';\r\nimport { configureStore, history } from './store';\r\nimport Routes from './routes';\r\n\r\nconst store = configureStore();\r\nReactGA.initialize('UA-67697148-2', { debug: process.env.NODE_ENV === 'development' });\r\n\r\nhistory.listen((location) => {\r\n ReactGA.pageview(location.pathname);\r\n});\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'),\r\n);\r\n","module.exports = __webpack_public_path__ + \"static/media/logo_sm.634923ff.png\";"],"sourceRoot":""}