From 5f95d857d468fd617f1cec8ad9f3ab70be108cca Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Sat, 14 Oct 2023 22:02:57 -0400 Subject: [PATCH] first commit --- .eslintrc.json | 3 + .gitignore | 36 + .idea/.gitignore | 8 + .idea/CMS-Clent.iml | 8 + .idea/inspectionProfiles/Project_Default.xml | 6 + .idea/modules.xml | 8 + .idea/php.xml | 19 + README.md | 34 + .../Analytics/Customers/CustomersDetails.js | 575 + components/Analytics/Customers/NetIncome.js | 132 + components/Analytics/Customers/NewSessions.js | 132 + components/Analytics/Customers/VisitsByDay.js | 132 + .../AvarageReportList.module.css | 36 + .../Reports/AvarageReport/RevenueChart.js | 59 + .../Analytics/Reports/AvarageReport/index.js | 193 + .../Reports/BrowserUsedAndTrafficReports.js | 621 + components/Apps/Calendar/Events.js | 47 + components/Apps/Chat/ChatBox.js | 599 + components/Apps/Chat/ChatBoxThree.js | 599 + components/Apps/Chat/ChatBoxTwo.js | 599 + components/Apps/FileManager/AllAssets.js | 218 + components/Apps/FileManager/AllProjects.js | 218 + components/Apps/FileManager/AllRecentFiles.js | 469 + components/Apps/FileManager/DocumentsFiles.js | 362 + components/Apps/FileManager/Files.js | 291 + components/Apps/FileManager/ImportantFiles.js | 470 + components/Apps/FileManager/LeftSidebar.js | 236 + .../Apps/FileManager/LeftSidebar.module.css | 73 + components/Apps/FileManager/MediaFiles.js | 294 + components/Apps/FileManager/MyDrive.js | 162 + components/Apps/FileManager/PersonalFiles.js | 218 + components/Apps/FileManager/RecentFiles.js | 433 + components/Apps/FileManager/TemplateFiles.js | 298 + components/Apps/FileManager/TrashFiles.js | 274 + components/Apps/ToDoLists.js | 926 ++ .../Authentication/Authentication.module.css | 244 + .../Authentication/ForgotPasswordForm.js | 121 + components/Authentication/LockScreenForm.js | 119 + components/Authentication/SignInForm.js | 189 + components/Authentication/SignUpForm.js | 240 + .../ActivityTimeline.module.css | 40 + .../ContactList/ActivityTimeline/index.js | 158 + components/ContactList/Features.js | 87 + components/ContactList/MyTasks.js | 414 + components/ContactList/Overview.js | 172 + .../ContactList/PersonalInformation/index.js | 96 + components/ContactList/ProfileInfo/index.js | 21 + .../ActivityTimeline.module.css | 90 + .../Analytics/ActivityTimeline/index.js | 151 + .../Dashboard/Analytics/AudienceOverview.js | 112 + .../Analytics/BrowserUsedTrafficReports.js | 503 + components/Dashboard/Analytics/Features.js | 114 + .../Analytics/Gender/Gender.module.css | 61 + .../Dashboard/Analytics/Gender/index.js | 110 + .../ImpressionGoalConversions/Conversions.js | 74 + .../GoalCompletions.js | 74 + .../ImpressionShare.js | 74 + .../ImpressionShare.module.css | 19 + .../ImpressionGoalConversions/index.js | 29 + .../NewReturning/NewReturning.module.css | 61 + .../Dashboard/Analytics/NewReturning/index.js | 110 + .../Dashboard/Analytics/RevenueReport.js | 95 + .../Dashboard/Analytics/SalesAnalytics.js | 175 + .../Analytics/SessionsByCountries.js | 174 + .../SessionsDevice/SessionsDevice.module.css | 61 + .../Analytics/SessionsDevice/index.js | 110 + .../Analytics/Terminals/Terminals.module.css | 151 + .../Dashboard/Analytics/Terminals/index.js | 62 + .../Analytics/TotalRevenue/RevenueChart.js | 59 + .../TotalRevenue/TotalRevenueList.module.css | 39 + .../Dashboard/Analytics/TotalRevenue/index.js | 162 + .../Dashboard/Analytics/TotalTransactions.js | 127 + .../VisitorsAge/VisitorsAge.module.css | 61 + .../Dashboard/Analytics/VisitorsAge/index.js | 110 + .../VisitsByDayAndNetIncome/NetIncome.js | 123 + .../VisitsByDayAndNetIncome/index.js | 136 + .../Analytics/Welcome/Welcome.module.css | 36 + .../Dashboard/Analytics/Welcome/index.js | 21 + components/Dashboard/Crypto/CurrentRate.js | 247 + components/Dashboard/Crypto/Features.js | 120 + .../Crypto/MarketGraph/MarketGraph.module.css | 24 + .../Dashboard/Crypto/MarketGraph/index.js | 703 + components/Dashboard/Crypto/MyCurrencies.js | 590 + .../Crypto/MyProfile/MyProfile.module.css | 51 + .../Crypto/MyProfile/MyProfileChart.js | 72 + .../Dashboard/Crypto/MyProfile/index.js | 284 + .../Dashboard/Crypto/OrdersActivities.js | 635 + components/Dashboard/Crypto/Trading.js | 229 + .../UserActivities/UserActivities.module.css | 46 + .../Dashboard/Crypto/UserActivities/index.js | 109 + .../HelpDesk/Activity/Activity.module.css | 54 + .../Dashboard/HelpDesk/Activity/index.js | 153 + .../Dashboard/HelpDesk/AgentPerformance.js | 465 + .../HelpDesk/AverageSpeedOfAnswer.js | 43 + .../CustomerSatisfactionChart.js | 59 + .../HelpDesk/CustomerSatisfaction/index.js | 112 + components/Dashboard/HelpDesk/Features.js | 104 + .../Dashboard/HelpDesk/SupportStatus.js | 261 + .../Dashboard/HelpDesk/TicketsStatus.js | 264 + .../HelpDesk/TimeToResolveComplaint.js | 43 + .../ActiveCourse/ActiveCourseChart.js | 62 + .../LMSCourses/ActiveCourse/index.js | 110 + .../CourseCompletion/CourseCompletionList.js | 241 + .../LMSCourses/CourseCompletion/index.js | 111 + .../LMSCourses/Courses/CreatedCourses.js | 380 + .../LMSCourses/Courses/EnrolledCourses.js | 366 + .../LMSCourses/Courses/Tabs.module.css | 20 + .../Dashboard/LMSCourses/Courses/index.js | 38 + .../Dashboard/LMSCourses/CurrentCourses.js | 123 + .../Dashboard/LMSCourses/ExperienceIQ.js | 161 + components/Dashboard/LMSCourses/Features.js | 91 + components/Dashboard/LMSCourses/HoursSpent.js | 156 + .../LMSCourses/Messages/Messages.module.css | 24 + .../Dashboard/LMSCourses/Messages/index.js | 248 + components/Dashboard/LMSCourses/MyPlanning.js | 166 + .../Dashboard/LMSCourses/TopInstructor.js | 174 + .../Dashboard/LMSCourses/TopStudents.js | 156 + .../TotalWatched/TotalWatched.module.css | 44 + .../LMSCourses/TotalWatched/index.js | 34 + .../Dashboard/LMSCourses/YourProgress.js | 139 + .../ActivityTimeline.module.css | 56 + .../ActivityTimeline/index.js | 158 + .../ProjectManagement/AllProjects.js | 570 + .../ProjectManagement/CompletedTasks.js | 250 + .../Dashboard/ProjectManagement/Features.js | 150 + .../IssuesSummary/IssuesSummaryChart.js | 472 + .../ProjectManagement/IssuesSummary/index.js | 43 + .../Dashboard/ProjectManagement/MyTasks.js | 402 + .../TaskDistribution/TaskDistributionChart.js | 50 + .../TaskDistribution/index.js | 76 + .../TasksPerformance/TasksPerformanceChart.js | 141 + .../TasksPerformance/index.js | 110 + .../ProjectManagement/TeamMembers.js | 198 + .../TotalUsers/TotalUsersChart.js | 113 + .../ProjectManagement/TotalUsers/index.js | 110 + components/Dashboard/SaasApp/AllProjects.js | 503 + .../Dashboard/SaasApp/AudienceOverview.js | 177 + .../Dashboard/SaasApp/CompletedTasks.js | 250 + components/Dashboard/SaasApp/Features.js | 130 + components/Dashboard/SaasApp/IncomeStatus.js | 80 + .../SaasApp/Messages/Messages.module.css | 20 + .../Dashboard/SaasApp/Messages/index.js | 270 + .../MilestonesOverviewChart.js | 122 + .../SaasApp/MilestonesOverview/index.js | 110 + .../SaasApp/Profile/ImpressionShare.js | 75 + .../Profile/ImpressionShare.module.css | 29 + components/Dashboard/SaasApp/Profile/index.js | 42 + .../Dashboard/SaasApp/RevenueSummary.js | 177 + .../Dashboard/SaasApp/SalesAnalytics.js | 181 + .../TasksPerformance/TasksPerformanceChart.js | 141 + .../SaasApp/TasksPerformance/index.js | 110 + components/Dashboard/SaasApp/TotalOrders.js | 80 + .../ActivityTimeline.module.css | 92 + .../eCommerce/ActivityTimeline/index.js | 144 + .../Dashboard/eCommerce/AudienceOverview.js | 131 + .../eCommerce/BestSellingProducts.js | 251 + components/Dashboard/eCommerce/Features.js | 115 + components/Dashboard/eCommerce/Impressions.js | 43 + .../LiveVisitsOnOurSite/LiveVisitsChart.js | 62 + .../eCommerce/LiveVisitsOnOurSite/index.js | 110 + .../NewCustomers/NewCustomers.module.css | 68 + .../Dashboard/eCommerce/NewCustomers/index.js | 164 + .../eCommerce/Ratings/RatingsChart.js | 67 + .../Dashboard/eCommerce/Ratings/index.js | 90 + .../Dashboard/eCommerce/RecentOrders.js | 679 + .../Dashboard/eCommerce/RevenuStatus.js | 136 + .../SalesByCountries/SalesByCountriesChart.js | 59 + .../eCommerce/SalesByCountries/index.js | 208 + .../Dashboard/eCommerce/TeamMembersList.js | 448 + components/Dashboard/eCommerce/VisitsByDay.js | 102 + components/Email/EmailLists.js | 474 + components/Email/LeftSidebar.js | 375 + components/Email/LeftSidebar.module.css | 75 + components/Email/ReadEmailContent.js | 262 + .../Forms/AdvancedElements/BasicDatePicker.js | 43 + .../Forms/AdvancedElements/BasicTimePicker.js | 44 + .../Forms/AdvancedElements/CountrySelect.js | 488 + .../Forms/AdvancedElements/DefaultSelect.js | 55 + .../Forms/AdvancedElements/MultiSelect.js | 105 + .../AdvancedElements/MultipleSelectChip.js | 113 + components/Forms/EditorArea.js | 47 + .../Forms/FileUploader/UploadMultipleFiles.js | 163 + .../UploadMultipleFiles.module.css | 43 + components/Forms/FormLayouts/BasicForm.js | 135 + .../Forms/FormLayouts/BasicWithIcons.js | 144 + components/Forms/FormLayouts/CustomStyles.js | 156 + components/Forms/FormLayouts/SignInForm.js | 126 + components/Forms/FormLayouts/SignUpForm.js | 143 + components/Notification/NotificationTable.js | 447 + .../ApexCharts/AreaCharts/BasicAreaCharts.js | 297 + .../ApexCharts/AreaCharts/DatetimeXAxis.js | 500 + .../Charts/ApexCharts/AreaCharts/Negative.js | 291 + .../Charts/ApexCharts/AreaCharts/Spline.js | 89 + .../ApexCharts/BarCharts/BasicBarCharts.js | 84 + .../Charts/ApexCharts/BarCharts/Grouped.js | 96 + .../Charts/ApexCharts/BarCharts/StackedBar.js | 126 + .../ApexCharts/BarCharts/StackedBars100.js | 114 + .../ColumnCharts/BasicColumnCharts.js | 113 + .../ColumnCharts/ColumnWithDataLabels.js | 147 + .../ApexCharts/ColumnCharts/StackedColumns.js | 130 + .../ColumnCharts/StackedColumns100.js | 108 + .../Charts/ApexCharts/LineCharts/Basic.js | 96 + .../Charts/ApexCharts/LineCharts/Dashed.js | 147 + .../Charts/ApexCharts/LineCharts/Gradient.js | 122 + .../Charts/ApexCharts/LineCharts/Stepline.js | 75 + .../Charts/ApexCharts/MixedCharts/LineArea.js | 104 + .../ApexCharts/MixedCharts/LineColumn.js | 93 + .../ApexCharts/MixedCharts/LineColumnArea.js | 136 + .../ApexCharts/MixedCharts/MultipleYAxis.js | 173 + .../ApexCharts/PieCharts/DonutWithPattern.js | 130 + .../ApexCharts/PieCharts/GradientDonut.js | 94 + .../ApexCharts/PieCharts/MonochromePie.js | 85 + .../ApexCharts/PieCharts/SimpleDonut.js | 72 + .../ApexCharts/PieCharts/SimplePieChart.js | 75 + .../ApexCharts/PieCharts/UpdateDonut.js | 132 + .../PolarAreaCharts/BasicPolarAreaCharts.js | 78 + .../ApexCharts/PolarAreaCharts/Monochrome.js | 98 + .../RadarCharts/BasicRadarCharts.js | 72 + .../RadarCharts/RadarMultipleSeries.js | 95 + .../RadarCharts/RadarWithPolygonFill.js | 120 + .../RadialBarCharts/BasicRadialBarCharts.js | 69 + .../RadialBarCharts/CustomAngleCircle.js | 110 + .../RadialBarCharts/MultipleRadialbars.js | 82 + components/Pages/Charts/NavBar.js | 29 + components/Pages/Charts/NavBar.module.css | 33 + .../Recharts/AreaChart/SimpleAreaChart.js | 113 + .../Recharts/AreaChart/StackedAreaChart.js | 128 + .../Recharts/BarChart/SimpleBarChart.js | 112 + .../Charts/Recharts/BarChart/TinyBarChart.js | 90 + .../ComposedChart/LineBarAreaComposedChart.js | 121 + .../ComposedChart/SameDataComposedChart.js | 107 + .../Recharts/LineChart/SimpleLineChart.js | 116 + .../Recharts/LineChart/VerticalLineChart.js | 112 + .../Recharts/PieChart/TwoLevelPieChart.js | 78 + .../Recharts/PieChart/TwoSimplePieChart.js | 70 + .../Recharts/RadarChart/SimpleRadarChart.js | 96 + .../RadarChart/SpecifiedDomainRadarChart.js | 105 + .../ScatterChart/SimpleScatterChart.js | 69 + .../ScatterChart/ThreeDimScatterChart.js | 82 + components/Pages/Gallery/GalleryContent.js | 116 + .../Pages/Invoice/InvoiceDetailsContent.js | 853 ++ components/Pages/Invoice/InvoiceLists.js | 627 + components/Pages/Maps/BasicMarkers.js | 105 + .../Pages/Maps/EuropeMapWithGraticule.js | 67 + components/Pages/Maps/GoogleMap.js | 44 + components/Pages/Pricing/PricingPlanStyle1.js | 209 + .../Pricing/PricingPlanStyle1.module.css | 37 + components/Pages/Pricing/PricingPlanStyle2.js | 196 + .../Pricing/PricingPlanStyle2.module.css | 34 + .../ActivityTimeline.module.css | 40 + .../Pages/Profile/ActivityTimeline/index.js | 158 + components/Pages/Profile/Features.js | 87 + components/Pages/Profile/MyTasks.js | 415 + components/Pages/Profile/Overview.js | 160 + .../Profile/PersonalInformation/index.js | 98 + components/Pages/Profile/ProfileContent.js | 22 + components/Pages/Search/SearchContent.js | 213 + components/Pages/Support/SupportForm.js | 171 + .../TermsConditions/TermsConditionsContent.js | 47 + .../TermsConditionsContent.module.css | 37 + .../Pages/Testimonials/TestimonialsOne.js | 266 + .../Testimonials/TestimonialsOne.module.css | 61 + .../Pages/Testimonials/TestimonialsThree.js | 265 + .../Testimonials/TestimonialsThree.module.css | 48 + .../Pages/Testimonials/TestimonialsTwo.js | 269 + .../Testimonials/TestimonialsTwo.module.css | 59 + components/Pages/Timeline/TimelineStyle1.js | 172 + components/Pages/Timeline/TimelineStyle2.js | 140 + .../AllProjects/AllProjects.module.css | 10 + components/Projects/AllProjects/index.js | 1116 ++ components/Projects/KanbanBoard/InReview.js | 420 + .../Projects/KanbanBoard/NewProjects.js | 420 + components/Projects/KanbanBoard/ToDo.js | 420 + .../ProjectCreate/CategoriesSelect.js | 89 + .../Projects/ProjectCreate/MemberSelect.js | 91 + components/Projects/Task/CompletedTasks.js | 224 + components/Projects/Task/MyTasks.js | 672 + .../TasksPerformance/TasksPerformanceChart.js | 141 + .../Projects/Task/TasksPerformance/index.js | 110 + .../Task/TotalUsers/TotalUsersChart.js | 121 + components/Projects/Task/TotalUsers/index.js | 110 + components/Settings/Account/ChangePassword.js | 147 + .../Settings/Account/PrivacyPolicyContent.js | 102 + components/Settings/Account/Profile.js | 155 + components/Settings/NavBar.js | 34 + components/Settings/NavBar.module.css | 37 + .../UIElements/Accordion/BasicAccordion.js | 75 + .../Accordion/ControlledAccordion.js | 141 + .../UIElements/Accordion/Customization.js | 133 + components/UIElements/Alerts/Actions.js | 47 + components/UIElements/Alerts/BasicAlerts.js | 48 + components/UIElements/Alerts/Color.js | 36 + .../UIElements/Alerts/DescriptionAlerts.js | 56 + components/UIElements/Alerts/Filled.js | 48 + components/UIElements/Alerts/Icons.js | 51 + components/UIElements/Alerts/Transition.js | 68 + components/UIElements/Alerts/Variants.js | 48 + .../UIElements/Autocomplete/ComboBox.js | 172 + .../UIElements/Autocomplete/CountrySelect.js | 494 + .../CustomizeTextareaComponent.js | 46 + .../UIElements/Autocomplete/CustomizedHook.js | 363 + .../UIElements/Autocomplete/LimitTags.js | 174 + .../UIElements/Avatar/GroupUserExample.js | 64 + components/UIElements/Avatar/Grouped.js | 43 + components/UIElements/Avatar/IconAvatars.js | 61 + components/UIElements/Avatar/ImageAvatars.js | 45 + components/UIElements/Avatar/LetterAvatars.js | 68 + .../UIElements/Avatar/SingleUserExample.js | 133 + components/UIElements/Avatar/SizesAvatars.js | 65 + components/UIElements/Avatar/TotalAvatars.js | 40 + components/UIElements/Avatar/WithBadge.js | 89 + components/UIElements/Badge/Accessibility.js | 50 + components/UIElements/Badge/BadgeOverlap.js | 56 + components/UIElements/Badge/BasicBadge.js | 62 + components/UIElements/Badge/Dynamic.js | 96 + components/UIElements/Badge/MaximumValue.js | 49 + components/UIElements/Buttons/BasicFAB.js | 58 + components/UIElements/Buttons/BlockButtons.js | 87 + .../UIElements/Buttons/ButtonsWithIcon.js | 170 + .../UIElements/Buttons/DefaultButtons.js | 156 + components/UIElements/Buttons/Loading.js | 54 + .../UIElements/Buttons/OutlineButtons.js | 143 + .../Buttons/OutlineRoundedButtons.js | 143 + .../UIElements/Buttons/RoundedButtons.js | 156 + components/UIElements/Buttons/SizesButtons.js | 81 + components/UIElements/Buttons/SoftButtons.js | 144 + components/UIElements/Cards/BasicCard.js | 46 + components/UIElements/Cards/Cards.module.css | 18 + .../UIElements/Cards/ComplexInteraction.js | 123 + components/UIElements/Cards/Media.js | 35 + components/UIElements/Cards/UIControls.js | 52 + components/UIElements/Checkbox/Basic.js | 39 + components/UIElements/Checkbox/Color.js | 54 + components/UIElements/Checkbox/Controlled.js | 43 + components/UIElements/Checkbox/Icon.js | 45 + components/UIElements/Checkbox/Label.js | 37 + components/UIElements/Checkbox/Size.js | 42 + components/UIElements/Chip/Basic.js | 36 + components/UIElements/Chip/ChipActions.js | 41 + components/UIElements/Chip/ChipAdornments.js | 41 + components/UIElements/Chip/ChipArray.js | 80 + .../UIElements/Chip/ClickableAndDeletable.js | 53 + components/UIElements/Chip/ClickableLink.js | 42 + components/UIElements/Chip/ColorChip.js | 62 + .../UIElements/Chip/CustomDeleteIcon.js | 58 + components/UIElements/Chip/Deletable.js | 41 + components/UIElements/Chip/IconChip.js | 37 + components/UIElements/Chip/SizesChip.js | 36 + .../ImageList/ImageListWithTitleBars.js | 137 + .../UIElements/ImageList/MasonryImageList.js | 98 + .../UIElements/ImageList/QuiltedImageList.js | 118 + .../UIElements/ImageList/StandardImageList.js | 95 + .../ImageList/TitleBarBelowImageStandard.js | 113 + .../UIElements/ImageList/WovenImageList.js | 95 + components/UIElements/List/BasicList.js | 82 + components/UIElements/List/FolderList.js | 69 + components/UIElements/List/ListControls.js | 84 + components/UIElements/List/NestedList.js | 92 + components/UIElements/Modal/BasicModal.js | 73 + .../UIElements/Modal/CustomizationDialog.js | 126 + .../UIElements/Modal/FullScreenDialogs.js | 96 + components/UIElements/Modal/NestedModal.js | 103 + .../UIElements/Modal/ScrollingLongContent.js | 95 + components/UIElements/Modal/Transitions.js | 75 + .../UIElements/Modal/TransitionsDialog.js | 78 + .../UIElements/Pagination/BasicPagination.js | 38 + .../UIElements/Pagination/CustomIcons.js | 46 + .../Pagination/OutlinedPagination.js | 38 + .../UIElements/Pagination/PaginationSize.js | 37 + .../Pagination/RoundedPagination.js | 36 + components/UIElements/Progress/Circular.js | 37 + .../Progress/CircularDeterminate.js | 52 + .../UIElements/Progress/CircularWithLabel.js | 78 + .../UIElements/Progress/Customization.js | 88 + .../Progress/InteractiveIntegration.js | 117 + .../Progress/LinearIndeterminate.js | 37 + components/UIElements/Radio/Color.js | 62 + components/UIElements/Radio/Controlled.js | 53 + components/UIElements/Radio/Direction.js | 53 + components/UIElements/Radio/Group.js | 47 + components/UIElements/Radio/Size.js | 59 + components/UIElements/Rating/Basic.js | 57 + components/UIElements/Rating/Customization.js | 61 + components/UIElements/Rating/HoverFeedback.js | 82 + components/UIElements/Rating/RadioGroup.js | 83 + .../UIElements/Rating/RatingPrecision.js | 36 + components/UIElements/Rating/Sizes.js | 37 + components/UIElements/Select/AutoWidth.js | 61 + components/UIElements/Select/Basic.js | 58 + components/UIElements/Select/Customization.js | 115 + .../Select/MultipleSelectCheckmarks.js | 96 + .../UIElements/Select/MultipleSelectChip.js | 115 + .../Select/MultipleSelectDefault.js | 108 + components/UIElements/Skeleton/Animations.js | 37 + .../UIElements/Skeleton/PulsateExample.js | 107 + components/UIElements/Skeleton/Variants.js | 43 + components/UIElements/Skeleton/WaveExample.js | 118 + components/UIElements/Slider/Continuous.js | 50 + components/UIElements/Slider/CustomMarks.js | 65 + components/UIElements/Slider/Discrete.js | 49 + .../UIElements/Slider/LabelAlwaysVisible.js | 65 + .../UIElements/Slider/RestrictedValues.js | 70 + components/UIElements/Slider/Sizes.js | 41 + components/UIElements/Slider/SmallSteps.js | 48 + .../Snackbar/ComplementaryProjects.js | 55 + .../UIElements/Snackbar/Customization.js | 72 + .../Snackbar/PositionedSnackbars.js | 111 + .../UIElements/Snackbar/SimpleSnackbars.js | 77 + .../UIElements/Stepper/AlternativeLabel.js | 49 + .../Stepper/CustomizedHorizontalStepper.js | 211 + components/UIElements/Stepper/ErrorStep.js | 62 + .../UIElements/Stepper/HorizontalStepper.js | 139 + .../UIElements/Stepper/MobileStepperText.js | 122 + components/UIElements/Stepper/NonLinear.js | 148 + .../UIElements/Stepper/VerticalStepper.js | 121 + .../UIElements/SwiperSlider/AutoplaySlider.js | 66 + components/UIElements/SwiperSlider/Default.js | 52 + .../SwiperSlider/NavigationSlider.js | 57 + .../SwiperSlider/PaginationDynamic.js | 59 + .../SwiperSlider/PaginationProgress.js | 60 + .../SwiperSlider/PaginationSlider.js | 57 + components/UIElements/Switch/Basic.js | 39 + components/UIElements/Switch/Color.js | 52 + components/UIElements/Switch/Controlled.js | 43 + components/UIElements/Switch/Label.js | 37 + components/UIElements/Switch/Size.js | 35 + .../Switch/SwitchesWithFormGroup.js | 74 + components/UIElements/Table/BasicTable.js | 78 + .../UIElements/Table/CustomizationTable.js | 97 + components/UIElements/Table/DataTable.js | 74 + components/UIElements/Table/DenseTable.js | 79 + .../UIElements/Table/SortingSelectingTable.js | 402 + components/UIElements/Tabs/BasicTabs.js | 90 + components/UIElements/Tabs/ExperimentalAPI.js | 56 + components/UIElements/Tabs/IconPosition.js | 53 + components/UIElements/Tabs/IconTabs.js | 47 + components/UIElements/Tabs/VerticalTabs.js | 123 + components/UIElements/Tooltip/BasicTooltip.js | 55 + .../UIElements/Tooltip/PositionedTooltips.js | 101 + .../Transitions/CollapseTransitions.js | 93 + .../UIElements/Transitions/FadeTransitions.js | 67 + .../UIElements/Transitions/GrowTransitions.js | 75 + .../Transitions/SlideRelativeToAContainer.js | 82 + .../Transitions/SlideTransitions.js | 69 + .../UIElements/Transitions/ZoomTransitions.js | 70 + .../ControlPanelModal/DarkAndLightMode.js | 54 + .../DarkAndLightMode.module.css | 11 + .../OnlyLeftSidebarDarkMode.js | 56 + .../ControlPanelModal/OnlyTopNavbarDark.js | 54 + .../_App/ControlPanelModal/RTLSwitch.js | 40 + .../ControlPanelModal/RTLSwitch.module.css | 11 + components/_App/ControlPanelModal/index.js | 98 + components/_App/Footer.js | 36 + components/_App/Layout.js | 75 + components/_App/LeftSidebar/SidebarData.js | 516 + components/_App/LeftSidebar/SubMenu.js | 63 + .../_App/LeftSidebar/SubMenu.module.css | 92 + components/_App/LeftSidebar/index.js | 82 + components/_App/ScrollToTop.js | 40 + components/_App/TopNavbar/CurrentDate.js | 24 + .../_App/TopNavbar/CurrentDate.module.css | 31 + components/_App/TopNavbar/Email.js | 225 + components/_App/TopNavbar/Email.module.css | 41 + components/_App/TopNavbar/Notification.js | 179 + .../_App/TopNavbar/Notification.module.css | 64 + components/_App/TopNavbar/Profile.js | 199 + components/_App/TopNavbar/SearchForm.js | 69 + .../_App/TopNavbar/TopNavbar.module.css | 0 components/_App/TopNavbar/index.js | 62 + components/eCommerce/Cart/HaveAPromoCode.js | 78 + components/eCommerce/Cart/OrderSummary.js | 188 + components/eCommerce/Cart/ShoppingCart.js | 562 + .../eCommerce/Checkout/BillingInformation.js | 334 + components/eCommerce/Checkout/ShoppingCart.js | 440 + .../eCommerce/Customers/CustomersLists.js | 965 ++ .../OrderDetails/TrackOrder/OrderTable.js | 612 + .../TrackOrder/TrackOrder.module.css | 73 + .../OrderDetails/TrackOrder/index.js | 124 + components/eCommerce/OrdersList/Features.js | 170 + .../eCommerce/OrdersList/OrdersLists.js | 679 + .../ProductDetails/ProductDescription.js | 23 + .../ProductDetails/ProductDetailsContent.js | 177 + .../ProductDetailsContent.module.css | 57 + .../ProductDetails/ProductReviews.js | 83 + docker-compose.yml | 22 + docker-entrypoint.sh | 11 + docker/Dockerfile | 127 + docker/docker-entrypoint.sh | 11 + jsconfig.json | 11 + next.config.js | 20 + package-lock.json | 5603 ++++++++ package.json | 48 + pages/404.js | 54 + pages/_app.js | 34 + pages/_document.js | 25 + pages/analytics.js | 128 + pages/analytics/customers.js | 50 + pages/analytics/reports.js | 44 + pages/apps/calendar.js | 269 + pages/apps/chat/index.js | 716 + pages/apps/file-manager/assets.js | 39 + pages/apps/file-manager/documents.js | 39 + pages/apps/file-manager/important.js | 39 + pages/apps/file-manager/index.js | 49 + pages/apps/file-manager/media.js | 39 + pages/apps/file-manager/personal.js | 39 + pages/apps/file-manager/projects.js | 39 + pages/apps/file-manager/recents.js | 39 + pages/apps/file-manager/templates.js | 39 + pages/apps/file-manager/trash.js | 39 + pages/apps/to-do.js | 23 + pages/authentication/confirm-mail.js | 72 + pages/authentication/forgot-password.js | 9 + pages/authentication/lock-screen.js | 9 + pages/authentication/logout.js | 74 + pages/authentication/sign-in.js | 9 + pages/authentication/sign-up.js | 9 + pages/contact-list/contact-list2.js | 227 + pages/contact-list/index.js | 265 + pages/contact-list/members-list.js | 883 ++ pages/contact-list/profile.js | 59 + pages/crypto.js | 65 + pages/ecommerce.js | 102 + pages/ecommerce/cart.js | 45 + pages/ecommerce/checkout.js | 41 + pages/ecommerce/create-product.js | 384 + pages/ecommerce/customers.js | 25 + pages/ecommerce/order-details.js | 344 + pages/ecommerce/orders-list.js | 30 + pages/ecommerce/product-details.js | 23 + pages/ecommerce/products.js | 1017 ++ pages/ecommerce/sellers.js | 207 + pages/email/inbox.js | 39 + pages/email/read-email.js | 39 + pages/forms/advanced-elements.js | 57 + pages/forms/editors.js | 23 + pages/forms/file-uploader.js | 23 + pages/forms/form-layouts.js | 50 + pages/help-desk.js | 74 + pages/index.js | 102 + pages/lms-courses.js | 87 + pages/notification.js | 22 + pages/pages/apexcharts.js | 399 + pages/pages/faq.js | 32 + pages/pages/gallery.js | 23 + pages/pages/invoice-details.js | 23 + pages/pages/invoice.js | 23 + pages/pages/maps.js | 32 + pages/pages/material-icons.js | 558 + pages/pages/pricing.js | 26 + pages/pages/profile.js | 59 + pages/pages/recharts.js | 151 + pages/pages/remixicon.js | 528 + pages/pages/search.js | 23 + pages/pages/support.js | 24 + pages/pages/terms-conditions.js | 23 + pages/pages/testimonials.js | 29 + pages/pages/timeline.js | 26 + pages/project-management.js | 95 + pages/projects/clients.js | 245 + pages/projects/index.js | 25 + pages/projects/kanban-board.js | 48 + pages/projects/project-create.js | 286 + pages/projects/task.js | 51 + pages/projects/team.js | 549 + pages/projects/user.js | 910 ++ pages/saas-app.js | 97 + pages/settings/account.js | 39 + pages/settings/privacy-policy.js | 39 + pages/settings/security.js | 39 + pages/ui-elements/accordion.js | 43 + pages/ui-elements/alerts.js | 63 + pages/ui-elements/autocomplete.js | 51 + pages/ui-elements/avatar.js | 67 + pages/ui-elements/badge.js | 51 + pages/ui-elements/buttons.js | 71 + pages/ui-elements/cards.js | 975 ++ pages/ui-elements/checkbox.js | 55 + pages/ui-elements/chip.js | 76 + pages/ui-elements/image-list.js | 55 + pages/ui-elements/list.js | 47 + pages/ui-elements/modal.js | 59 + pages/ui-elements/pagination.js | 51 + pages/ui-elements/progress.js | 55 + pages/ui-elements/radio.js | 51 + pages/ui-elements/rating.js | 55 + pages/ui-elements/select.js | 55 + pages/ui-elements/skeleton.js | 47 + pages/ui-elements/slider.js | 59 + pages/ui-elements/snackbar.js | 47 + pages/ui-elements/stepper.js | 59 + pages/ui-elements/swiper-slider.js | 63 + pages/ui-elements/switch.js | 55 + pages/ui-elements/table.js | 61 + pages/ui-elements/tabs.js | 51 + pages/ui-elements/tooltip.js | 28 + pages/ui-elements/transitions.js | 55 + public/fonts/remixicon.eot | Bin 0 -> 403228 bytes public/fonts/remixicon.svg | 6835 ++++++++++ public/fonts/remixicon.symbol.svg | 11356 ++++++++++++++++ public/fonts/remixicon.ttf | Bin 0 -> 403056 bytes public/fonts/remixicon.woff | Bin 0 -> 172876 bytes public/fonts/remixicon.woff2 | Bin 0 -> 125268 bytes public/images/3d1.png | Bin 0 -> 3258 bytes public/images/3d2.png | Bin 0 -> 2619 bytes public/images/3d3.png | Bin 0 -> 2281 bytes public/images/3d4.png | Bin 0 -> 4308 bytes public/images/apps-icon.png | Bin 0 -> 600 bytes public/images/avatar2.png | Bin 0 -> 3115 bytes public/images/binance.png | Bin 0 -> 1285 bytes public/images/bitcoin.png | Bin 0 -> 1094 bytes public/images/bitcoin2.png | Bin 0 -> 1153 bytes public/images/bitcoin3.png | Bin 0 -> 1181 bytes public/images/bitcoin4.png | Bin 0 -> 1473 bytes public/images/btc.png | Bin 0 -> 1711 bytes public/images/burger-menu-icon.png | Bin 0 -> 189 bytes public/images/c+.png | Bin 0 -> 2032 bytes public/images/card-img1.png | Bin 0 -> 58551 bytes public/images/card-img2.png | Bin 0 -> 374753 bytes public/images/card-img3.png | Bin 0 -> 94424 bytes public/images/card-img4.png | Bin 0 -> 148648 bytes public/images/card-img5.png | Bin 0 -> 178472 bytes public/images/cardano.png | Bin 0 -> 4920 bytes public/images/chart1.png | Bin 0 -> 5719 bytes public/images/chart2.png | Bin 0 -> 5918 bytes public/images/chart3.png | Bin 0 -> 25600 bytes public/images/chart4.png | Bin 0 -> 28224 bytes public/images/coffee.png | Bin 0 -> 2390 bytes public/images/comp-bidr.png | Bin 0 -> 947 bytes public/images/comp.png | Bin 0 -> 1971 bytes public/images/contemplative-reptile.jpg | Bin 0 -> 42845 bytes public/images/coupon-icon.png | Bin 0 -> 661 bytes public/images/course-brand1.png | Bin 0 -> 1145 bytes public/images/course-brand2.png | Bin 0 -> 1395 bytes public/images/course-brand3.png | Bin 0 -> 1338 bytes public/images/course-brand4.png | Bin 0 -> 1180 bytes public/images/dash.png | Bin 0 -> 1041 bytes public/images/dollar.png | Bin 0 -> 1317 bytes public/images/down-arrow.png | Bin 0 -> 587 bytes public/images/error.png | Bin 0 -> 24266 bytes public/images/ethereum.png | Bin 0 -> 1165 bytes public/images/ethereum2.png | Bin 0 -> 1199 bytes public/images/ethereum3.png | Bin 0 -> 1466 bytes public/images/favicon.ico | Bin 0 -> 25931 bytes public/images/favicon.png | Bin 0 -> 703 bytes public/images/fb-icon.png | Bin 0 -> 341 bytes public/images/file1.png | Bin 0 -> 1044 bytes public/images/file10.png | Bin 0 -> 1044 bytes public/images/file2.png | Bin 0 -> 1105 bytes public/images/file3.png | Bin 0 -> 1067 bytes public/images/file4.png | Bin 0 -> 1039 bytes public/images/file5.png | Bin 0 -> 3319 bytes public/images/file6.png | Bin 0 -> 1154 bytes public/images/file7.png | Bin 0 -> 1197 bytes public/images/file8.png | Bin 0 -> 995 bytes public/images/file9.png | Bin 0 -> 1023 bytes public/images/folder.png | Bin 0 -> 596 bytes public/images/google-icon.png | Bin 0 -> 688 bytes public/images/graph-icon.png | Bin 0 -> 1025 bytes public/images/haskell.png | Bin 0 -> 981 bytes public/images/hex-map.png | Bin 0 -> 327822 bytes public/images/icon1.png | Bin 0 -> 4654 bytes public/images/icon2.png | Bin 0 -> 3106 bytes public/images/icon3.png | Bin 0 -> 2979 bytes public/images/icon4.png | Bin 0 -> 3546 bytes public/images/icon5.png | Bin 0 -> 1151 bytes public/images/icon6.png | Bin 0 -> 600 bytes public/images/icon7.png | Bin 0 -> 418 bytes public/images/js.png | Bin 0 -> 786 bytes public/images/litecoin.png | Bin 0 -> 941 bytes public/images/litecoin2.png | Bin 0 -> 965 bytes public/images/litecoin3.png | Bin 0 -> 767 bytes public/images/live-from-space.jpg | Bin 0 -> 15949 bytes public/images/logo-white.png | Bin 0 -> 3819 bytes public/images/logo.png | Bin 0 -> 3819 bytes public/images/man.png | Bin 0 -> 1312 bytes public/images/matic.png | Bin 0 -> 1757 bytes public/images/matic2.png | Bin 0 -> 1107 bytes public/images/matic3.png | Bin 0 -> 1137 bytes public/images/media.png | Bin 0 -> 368 bytes public/images/member1.png | Bin 0 -> 29888 bytes public/images/member10.png | Bin 0 -> 35195 bytes public/images/member11.png | Bin 0 -> 28034 bytes public/images/member12.png | Bin 0 -> 30217 bytes public/images/member2.png | Bin 0 -> 31264 bytes public/images/member3.png | Bin 0 -> 36002 bytes public/images/member4.png | Bin 0 -> 26311 bytes public/images/member5.png | Bin 0 -> 31788 bytes public/images/member6.png | Bin 0 -> 31513 bytes public/images/member7.png | Bin 0 -> 33457 bytes public/images/member8.png | Bin 0 -> 25423 bytes public/images/member9.png | Bin 0 -> 37633 bytes public/images/message.png | Bin 0 -> 2818 bytes public/images/oval.png | Bin 0 -> 2893 bytes public/images/paella.jpg | Bin 0 -> 33329 bytes public/images/pdf-icon.png | Bin 0 -> 713 bytes public/images/product-preview.png | Bin 0 -> 178553 bytes public/images/product1.png | Bin 0 -> 4087 bytes public/images/product2.png | Bin 0 -> 4800 bytes public/images/product3.png | Bin 0 -> 4377 bytes public/images/product4.png | Bin 0 -> 2445 bytes public/images/product5.png | Bin 0 -> 5196 bytes public/images/product6.png | Bin 0 -> 5061 bytes public/images/product7.png | Bin 0 -> 4761 bytes public/images/product8.png | Bin 0 -> 4620 bytes public/images/product9.png | Bin 0 -> 3141 bytes public/images/profile.png | Bin 0 -> 7245 bytes public/images/project-logo1.png | Bin 0 -> 1349 bytes public/images/project-logo10.png | Bin 0 -> 728 bytes public/images/project-logo11.png | Bin 0 -> 1166 bytes public/images/project-logo12.png | Bin 0 -> 1142 bytes public/images/project-logo13.png | Bin 0 -> 721 bytes public/images/project-logo14.png | Bin 0 -> 606 bytes public/images/project-logo2.png | Bin 0 -> 620 bytes public/images/project-logo3.png | Bin 0 -> 645 bytes public/images/project-logo4.png | Bin 0 -> 557 bytes public/images/project-logo5.png | Bin 0 -> 597 bytes public/images/project-logo6.png | Bin 0 -> 1415 bytes public/images/project-logo7.png | Bin 0 -> 876 bytes public/images/project-logo8.png | Bin 0 -> 1120 bytes public/images/project-logo9.png | Bin 0 -> 874 bytes public/images/seller1.png | Bin 0 -> 3666 bytes public/images/seller2.png | Bin 0 -> 3584 bytes public/images/seller3.png | Bin 0 -> 3987 bytes public/images/seller4.png | Bin 0 -> 4665 bytes public/images/seller5.png | Bin 0 -> 3008 bytes public/images/seller6.png | Bin 0 -> 3632 bytes public/images/seller7.png | Bin 0 -> 2735 bytes public/images/seller8.png | Bin 0 -> 3437 bytes public/images/shape-1.png | Bin 0 -> 2868 bytes public/images/shape-2-icon.png | Bin 0 -> 757 bytes public/images/slider-img1.jpg | Bin 0 -> 73524 bytes public/images/slider-img2.jpg | Bin 0 -> 259067 bytes public/images/slider-img3.jpg | Bin 0 -> 178467 bytes public/images/slider-img4.jpg | Bin 0 -> 217677 bytes public/images/slider-img5.jpg | Bin 0 -> 141443 bytes public/images/small-product-img.png | Bin 0 -> 1196 bytes public/images/small-product-img2.png | Bin 0 -> 1624 bytes public/images/small-product-img3.png | Bin 0 -> 1376 bytes public/images/stack-icon.png | Bin 0 -> 949 bytes public/images/support.png | Bin 0 -> 1107 bytes public/images/time.png | Bin 0 -> 1290 bytes public/images/user1.png | Bin 0 -> 3645 bytes public/images/user10.png | Bin 0 -> 4871 bytes public/images/user11.png | Bin 0 -> 4834 bytes public/images/user12.png | Bin 0 -> 5054 bytes public/images/user13.png | Bin 0 -> 5223 bytes public/images/user14.png | Bin 0 -> 6674 bytes public/images/user15.png | Bin 0 -> 5585 bytes public/images/user16.png | Bin 0 -> 6330 bytes public/images/user17.png | Bin 0 -> 5109 bytes public/images/user18.png | Bin 0 -> 4311 bytes public/images/user19.png | Bin 0 -> 4116 bytes public/images/user2.png | Bin 0 -> 3798 bytes public/images/user20.png | Bin 0 -> 4073 bytes public/images/user21.png | Bin 0 -> 4026 bytes public/images/user22.png | Bin 0 -> 4165 bytes public/images/user23.png | Bin 0 -> 3798 bytes public/images/user3.png | Bin 0 -> 3998 bytes public/images/user4.png | Bin 0 -> 3432 bytes public/images/user5.png | Bin 0 -> 3749 bytes public/images/user6.png | Bin 0 -> 3613 bytes public/images/user7.png | Bin 0 -> 3608 bytes public/images/user8.png | Bin 0 -> 4452 bytes public/images/user9.png | Bin 0 -> 5773 bytes public/images/users-icon.png | Bin 0 -> 1035 bytes public/images/work-icon.png | Bin 0 -> 847 bytes public/images/working-on-table.png | Bin 0 -> 23837 bytes styles/PageTitle.module.css | 65 + styles/chat.css | 128 + styles/chat.css.map | 1 + styles/chat.scss | 151 + styles/dark.css | 290 + styles/dark.css.map | 1 + styles/dark.scss | 395 + styles/globals.css | 1183 ++ styles/globals.css.map | 1 + styles/globals.scss | 1092 ++ styles/remixicon.css | 2317 ++++ styles/rtl.css | 780 ++ styles/rtl.css.map | 1 + styles/rtl.scss | 853 ++ styles/theme/index.js | 40 + 783 files changed, 112323 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/CMS-Clent.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/php.xml create mode 100644 README.md create mode 100644 components/Analytics/Customers/CustomersDetails.js create mode 100644 components/Analytics/Customers/NetIncome.js create mode 100644 components/Analytics/Customers/NewSessions.js create mode 100644 components/Analytics/Customers/VisitsByDay.js create mode 100644 components/Analytics/Reports/AvarageReport/AvarageReportList.module.css create mode 100644 components/Analytics/Reports/AvarageReport/RevenueChart.js create mode 100644 components/Analytics/Reports/AvarageReport/index.js create mode 100644 components/Analytics/Reports/BrowserUsedAndTrafficReports.js create mode 100644 components/Apps/Calendar/Events.js create mode 100644 components/Apps/Chat/ChatBox.js create mode 100644 components/Apps/Chat/ChatBoxThree.js create mode 100644 components/Apps/Chat/ChatBoxTwo.js create mode 100644 components/Apps/FileManager/AllAssets.js create mode 100644 components/Apps/FileManager/AllProjects.js create mode 100644 components/Apps/FileManager/AllRecentFiles.js create mode 100644 components/Apps/FileManager/DocumentsFiles.js create mode 100644 components/Apps/FileManager/Files.js create mode 100644 components/Apps/FileManager/ImportantFiles.js create mode 100644 components/Apps/FileManager/LeftSidebar.js create mode 100644 components/Apps/FileManager/LeftSidebar.module.css create mode 100644 components/Apps/FileManager/MediaFiles.js create mode 100644 components/Apps/FileManager/MyDrive.js create mode 100644 components/Apps/FileManager/PersonalFiles.js create mode 100644 components/Apps/FileManager/RecentFiles.js create mode 100644 components/Apps/FileManager/TemplateFiles.js create mode 100644 components/Apps/FileManager/TrashFiles.js create mode 100644 components/Apps/ToDoLists.js create mode 100644 components/Authentication/Authentication.module.css create mode 100644 components/Authentication/ForgotPasswordForm.js create mode 100644 components/Authentication/LockScreenForm.js create mode 100644 components/Authentication/SignInForm.js create mode 100644 components/Authentication/SignUpForm.js create mode 100644 components/ContactList/ActivityTimeline/ActivityTimeline.module.css create mode 100644 components/ContactList/ActivityTimeline/index.js create mode 100644 components/ContactList/Features.js create mode 100644 components/ContactList/MyTasks.js create mode 100644 components/ContactList/Overview.js create mode 100644 components/ContactList/PersonalInformation/index.js create mode 100644 components/ContactList/ProfileInfo/index.js create mode 100644 components/Dashboard/Analytics/ActivityTimeline/ActivityTimeline.module.css create mode 100644 components/Dashboard/Analytics/ActivityTimeline/index.js create mode 100644 components/Dashboard/Analytics/AudienceOverview.js create mode 100644 components/Dashboard/Analytics/BrowserUsedTrafficReports.js create mode 100644 components/Dashboard/Analytics/Features.js create mode 100644 components/Dashboard/Analytics/Gender/Gender.module.css create mode 100644 components/Dashboard/Analytics/Gender/index.js create mode 100644 components/Dashboard/Analytics/ImpressionGoalConversions/Conversions.js create mode 100644 components/Dashboard/Analytics/ImpressionGoalConversions/GoalCompletions.js create mode 100644 components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.js create mode 100644 components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css create mode 100644 components/Dashboard/Analytics/ImpressionGoalConversions/index.js create mode 100644 components/Dashboard/Analytics/NewReturning/NewReturning.module.css create mode 100644 components/Dashboard/Analytics/NewReturning/index.js create mode 100644 components/Dashboard/Analytics/RevenueReport.js create mode 100644 components/Dashboard/Analytics/SalesAnalytics.js create mode 100644 components/Dashboard/Analytics/SessionsByCountries.js create mode 100644 components/Dashboard/Analytics/SessionsDevice/SessionsDevice.module.css create mode 100644 components/Dashboard/Analytics/SessionsDevice/index.js create mode 100644 components/Dashboard/Analytics/Terminals/Terminals.module.css create mode 100644 components/Dashboard/Analytics/Terminals/index.js create mode 100644 components/Dashboard/Analytics/TotalRevenue/RevenueChart.js create mode 100644 components/Dashboard/Analytics/TotalRevenue/TotalRevenueList.module.css create mode 100644 components/Dashboard/Analytics/TotalRevenue/index.js create mode 100644 components/Dashboard/Analytics/TotalTransactions.js create mode 100644 components/Dashboard/Analytics/VisitorsAge/VisitorsAge.module.css create mode 100644 components/Dashboard/Analytics/VisitorsAge/index.js create mode 100644 components/Dashboard/Analytics/VisitsByDayAndNetIncome/NetIncome.js create mode 100644 components/Dashboard/Analytics/VisitsByDayAndNetIncome/index.js create mode 100644 components/Dashboard/Analytics/Welcome/Welcome.module.css create mode 100644 components/Dashboard/Analytics/Welcome/index.js create mode 100644 components/Dashboard/Crypto/CurrentRate.js create mode 100644 components/Dashboard/Crypto/Features.js create mode 100644 components/Dashboard/Crypto/MarketGraph/MarketGraph.module.css create mode 100644 components/Dashboard/Crypto/MarketGraph/index.js create mode 100644 components/Dashboard/Crypto/MyCurrencies.js create mode 100644 components/Dashboard/Crypto/MyProfile/MyProfile.module.css create mode 100644 components/Dashboard/Crypto/MyProfile/MyProfileChart.js create mode 100644 components/Dashboard/Crypto/MyProfile/index.js create mode 100644 components/Dashboard/Crypto/OrdersActivities.js create mode 100644 components/Dashboard/Crypto/Trading.js create mode 100644 components/Dashboard/Crypto/UserActivities/UserActivities.module.css create mode 100644 components/Dashboard/Crypto/UserActivities/index.js create mode 100644 components/Dashboard/HelpDesk/Activity/Activity.module.css create mode 100644 components/Dashboard/HelpDesk/Activity/index.js create mode 100644 components/Dashboard/HelpDesk/AgentPerformance.js create mode 100644 components/Dashboard/HelpDesk/AverageSpeedOfAnswer.js create mode 100644 components/Dashboard/HelpDesk/CustomerSatisfaction/CustomerSatisfactionChart.js create mode 100644 components/Dashboard/HelpDesk/CustomerSatisfaction/index.js create mode 100644 components/Dashboard/HelpDesk/Features.js create mode 100644 components/Dashboard/HelpDesk/SupportStatus.js create mode 100644 components/Dashboard/HelpDesk/TicketsStatus.js create mode 100644 components/Dashboard/HelpDesk/TimeToResolveComplaint.js create mode 100644 components/Dashboard/LMSCourses/ActiveCourse/ActiveCourseChart.js create mode 100644 components/Dashboard/LMSCourses/ActiveCourse/index.js create mode 100644 components/Dashboard/LMSCourses/CourseCompletion/CourseCompletionList.js create mode 100644 components/Dashboard/LMSCourses/CourseCompletion/index.js create mode 100644 components/Dashboard/LMSCourses/Courses/CreatedCourses.js create mode 100644 components/Dashboard/LMSCourses/Courses/EnrolledCourses.js create mode 100644 components/Dashboard/LMSCourses/Courses/Tabs.module.css create mode 100644 components/Dashboard/LMSCourses/Courses/index.js create mode 100644 components/Dashboard/LMSCourses/CurrentCourses.js create mode 100644 components/Dashboard/LMSCourses/ExperienceIQ.js create mode 100644 components/Dashboard/LMSCourses/Features.js create mode 100644 components/Dashboard/LMSCourses/HoursSpent.js create mode 100644 components/Dashboard/LMSCourses/Messages/Messages.module.css create mode 100644 components/Dashboard/LMSCourses/Messages/index.js create mode 100644 components/Dashboard/LMSCourses/MyPlanning.js create mode 100644 components/Dashboard/LMSCourses/TopInstructor.js create mode 100644 components/Dashboard/LMSCourses/TopStudents.js create mode 100644 components/Dashboard/LMSCourses/TotalWatched/TotalWatched.module.css create mode 100644 components/Dashboard/LMSCourses/TotalWatched/index.js create mode 100644 components/Dashboard/LMSCourses/YourProgress.js create mode 100644 components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css create mode 100644 components/Dashboard/ProjectManagement/ActivityTimeline/index.js create mode 100644 components/Dashboard/ProjectManagement/AllProjects.js create mode 100644 components/Dashboard/ProjectManagement/CompletedTasks.js create mode 100644 components/Dashboard/ProjectManagement/Features.js create mode 100644 components/Dashboard/ProjectManagement/IssuesSummary/IssuesSummaryChart.js create mode 100644 components/Dashboard/ProjectManagement/IssuesSummary/index.js create mode 100644 components/Dashboard/ProjectManagement/MyTasks.js create mode 100644 components/Dashboard/ProjectManagement/TaskDistribution/TaskDistributionChart.js create mode 100644 components/Dashboard/ProjectManagement/TaskDistribution/index.js create mode 100644 components/Dashboard/ProjectManagement/TasksPerformance/TasksPerformanceChart.js create mode 100644 components/Dashboard/ProjectManagement/TasksPerformance/index.js create mode 100644 components/Dashboard/ProjectManagement/TeamMembers.js create mode 100644 components/Dashboard/ProjectManagement/TotalUsers/TotalUsersChart.js create mode 100644 components/Dashboard/ProjectManagement/TotalUsers/index.js create mode 100644 components/Dashboard/SaasApp/AllProjects.js create mode 100644 components/Dashboard/SaasApp/AudienceOverview.js create mode 100644 components/Dashboard/SaasApp/CompletedTasks.js create mode 100644 components/Dashboard/SaasApp/Features.js create mode 100644 components/Dashboard/SaasApp/IncomeStatus.js create mode 100644 components/Dashboard/SaasApp/Messages/Messages.module.css create mode 100644 components/Dashboard/SaasApp/Messages/index.js create mode 100644 components/Dashboard/SaasApp/MilestonesOverview/MilestonesOverviewChart.js create mode 100644 components/Dashboard/SaasApp/MilestonesOverview/index.js create mode 100644 components/Dashboard/SaasApp/Profile/ImpressionShare.js create mode 100644 components/Dashboard/SaasApp/Profile/ImpressionShare.module.css create mode 100644 components/Dashboard/SaasApp/Profile/index.js create mode 100644 components/Dashboard/SaasApp/RevenueSummary.js create mode 100644 components/Dashboard/SaasApp/SalesAnalytics.js create mode 100644 components/Dashboard/SaasApp/TasksPerformance/TasksPerformanceChart.js create mode 100644 components/Dashboard/SaasApp/TasksPerformance/index.js create mode 100644 components/Dashboard/SaasApp/TotalOrders.js create mode 100644 components/Dashboard/eCommerce/ActivityTimeline/ActivityTimeline.module.css create mode 100644 components/Dashboard/eCommerce/ActivityTimeline/index.js create mode 100644 components/Dashboard/eCommerce/AudienceOverview.js create mode 100644 components/Dashboard/eCommerce/BestSellingProducts.js create mode 100644 components/Dashboard/eCommerce/Features.js create mode 100644 components/Dashboard/eCommerce/Impressions.js create mode 100644 components/Dashboard/eCommerce/LiveVisitsOnOurSite/LiveVisitsChart.js create mode 100644 components/Dashboard/eCommerce/LiveVisitsOnOurSite/index.js create mode 100644 components/Dashboard/eCommerce/NewCustomers/NewCustomers.module.css create mode 100644 components/Dashboard/eCommerce/NewCustomers/index.js create mode 100644 components/Dashboard/eCommerce/Ratings/RatingsChart.js create mode 100644 components/Dashboard/eCommerce/Ratings/index.js create mode 100644 components/Dashboard/eCommerce/RecentOrders.js create mode 100644 components/Dashboard/eCommerce/RevenuStatus.js create mode 100644 components/Dashboard/eCommerce/SalesByCountries/SalesByCountriesChart.js create mode 100644 components/Dashboard/eCommerce/SalesByCountries/index.js create mode 100644 components/Dashboard/eCommerce/TeamMembersList.js create mode 100644 components/Dashboard/eCommerce/VisitsByDay.js create mode 100644 components/Email/EmailLists.js create mode 100644 components/Email/LeftSidebar.js create mode 100644 components/Email/LeftSidebar.module.css create mode 100644 components/Email/ReadEmailContent.js create mode 100644 components/Forms/AdvancedElements/BasicDatePicker.js create mode 100644 components/Forms/AdvancedElements/BasicTimePicker.js create mode 100644 components/Forms/AdvancedElements/CountrySelect.js create mode 100644 components/Forms/AdvancedElements/DefaultSelect.js create mode 100644 components/Forms/AdvancedElements/MultiSelect.js create mode 100644 components/Forms/AdvancedElements/MultipleSelectChip.js create mode 100644 components/Forms/EditorArea.js create mode 100644 components/Forms/FileUploader/UploadMultipleFiles.js create mode 100644 components/Forms/FileUploader/UploadMultipleFiles.module.css create mode 100644 components/Forms/FormLayouts/BasicForm.js create mode 100644 components/Forms/FormLayouts/BasicWithIcons.js create mode 100644 components/Forms/FormLayouts/CustomStyles.js create mode 100644 components/Forms/FormLayouts/SignInForm.js create mode 100644 components/Forms/FormLayouts/SignUpForm.js create mode 100644 components/Notification/NotificationTable.js create mode 100644 components/Pages/Charts/ApexCharts/AreaCharts/BasicAreaCharts.js create mode 100644 components/Pages/Charts/ApexCharts/AreaCharts/DatetimeXAxis.js create mode 100644 components/Pages/Charts/ApexCharts/AreaCharts/Negative.js create mode 100644 components/Pages/Charts/ApexCharts/AreaCharts/Spline.js create mode 100644 components/Pages/Charts/ApexCharts/BarCharts/BasicBarCharts.js create mode 100644 components/Pages/Charts/ApexCharts/BarCharts/Grouped.js create mode 100644 components/Pages/Charts/ApexCharts/BarCharts/StackedBar.js create mode 100644 components/Pages/Charts/ApexCharts/BarCharts/StackedBars100.js create mode 100644 components/Pages/Charts/ApexCharts/ColumnCharts/BasicColumnCharts.js create mode 100644 components/Pages/Charts/ApexCharts/ColumnCharts/ColumnWithDataLabels.js create mode 100644 components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns.js create mode 100644 components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns100.js create mode 100644 components/Pages/Charts/ApexCharts/LineCharts/Basic.js create mode 100644 components/Pages/Charts/ApexCharts/LineCharts/Dashed.js create mode 100644 components/Pages/Charts/ApexCharts/LineCharts/Gradient.js create mode 100644 components/Pages/Charts/ApexCharts/LineCharts/Stepline.js create mode 100644 components/Pages/Charts/ApexCharts/MixedCharts/LineArea.js create mode 100644 components/Pages/Charts/ApexCharts/MixedCharts/LineColumn.js create mode 100644 components/Pages/Charts/ApexCharts/MixedCharts/LineColumnArea.js create mode 100644 components/Pages/Charts/ApexCharts/MixedCharts/MultipleYAxis.js create mode 100644 components/Pages/Charts/ApexCharts/PieCharts/DonutWithPattern.js create mode 100644 components/Pages/Charts/ApexCharts/PieCharts/GradientDonut.js create mode 100644 components/Pages/Charts/ApexCharts/PieCharts/MonochromePie.js create mode 100644 components/Pages/Charts/ApexCharts/PieCharts/SimpleDonut.js create mode 100644 components/Pages/Charts/ApexCharts/PieCharts/SimplePieChart.js create mode 100644 components/Pages/Charts/ApexCharts/PieCharts/UpdateDonut.js create mode 100644 components/Pages/Charts/ApexCharts/PolarAreaCharts/BasicPolarAreaCharts.js create mode 100644 components/Pages/Charts/ApexCharts/PolarAreaCharts/Monochrome.js create mode 100644 components/Pages/Charts/ApexCharts/RadarCharts/BasicRadarCharts.js create mode 100644 components/Pages/Charts/ApexCharts/RadarCharts/RadarMultipleSeries.js create mode 100644 components/Pages/Charts/ApexCharts/RadarCharts/RadarWithPolygonFill.js create mode 100644 components/Pages/Charts/ApexCharts/RadialBarCharts/BasicRadialBarCharts.js create mode 100644 components/Pages/Charts/ApexCharts/RadialBarCharts/CustomAngleCircle.js create mode 100644 components/Pages/Charts/ApexCharts/RadialBarCharts/MultipleRadialbars.js create mode 100644 components/Pages/Charts/NavBar.js create mode 100644 components/Pages/Charts/NavBar.module.css create mode 100644 components/Pages/Charts/Recharts/AreaChart/SimpleAreaChart.js create mode 100644 components/Pages/Charts/Recharts/AreaChart/StackedAreaChart.js create mode 100644 components/Pages/Charts/Recharts/BarChart/SimpleBarChart.js create mode 100644 components/Pages/Charts/Recharts/BarChart/TinyBarChart.js create mode 100644 components/Pages/Charts/Recharts/ComposedChart/LineBarAreaComposedChart.js create mode 100644 components/Pages/Charts/Recharts/ComposedChart/SameDataComposedChart.js create mode 100644 components/Pages/Charts/Recharts/LineChart/SimpleLineChart.js create mode 100644 components/Pages/Charts/Recharts/LineChart/VerticalLineChart.js create mode 100644 components/Pages/Charts/Recharts/PieChart/TwoLevelPieChart.js create mode 100644 components/Pages/Charts/Recharts/PieChart/TwoSimplePieChart.js create mode 100644 components/Pages/Charts/Recharts/RadarChart/SimpleRadarChart.js create mode 100644 components/Pages/Charts/Recharts/RadarChart/SpecifiedDomainRadarChart.js create mode 100644 components/Pages/Charts/Recharts/ScatterChart/SimpleScatterChart.js create mode 100644 components/Pages/Charts/Recharts/ScatterChart/ThreeDimScatterChart.js create mode 100644 components/Pages/Gallery/GalleryContent.js create mode 100644 components/Pages/Invoice/InvoiceDetailsContent.js create mode 100644 components/Pages/Invoice/InvoiceLists.js create mode 100644 components/Pages/Maps/BasicMarkers.js create mode 100644 components/Pages/Maps/EuropeMapWithGraticule.js create mode 100644 components/Pages/Maps/GoogleMap.js create mode 100644 components/Pages/Pricing/PricingPlanStyle1.js create mode 100644 components/Pages/Pricing/PricingPlanStyle1.module.css create mode 100644 components/Pages/Pricing/PricingPlanStyle2.js create mode 100644 components/Pages/Pricing/PricingPlanStyle2.module.css create mode 100644 components/Pages/Profile/ActivityTimeline/ActivityTimeline.module.css create mode 100644 components/Pages/Profile/ActivityTimeline/index.js create mode 100644 components/Pages/Profile/Features.js create mode 100644 components/Pages/Profile/MyTasks.js create mode 100644 components/Pages/Profile/Overview.js create mode 100644 components/Pages/Profile/PersonalInformation/index.js create mode 100644 components/Pages/Profile/ProfileContent.js create mode 100644 components/Pages/Search/SearchContent.js create mode 100644 components/Pages/Support/SupportForm.js create mode 100644 components/Pages/TermsConditions/TermsConditionsContent.js create mode 100644 components/Pages/TermsConditions/TermsConditionsContent.module.css create mode 100644 components/Pages/Testimonials/TestimonialsOne.js create mode 100644 components/Pages/Testimonials/TestimonialsOne.module.css create mode 100644 components/Pages/Testimonials/TestimonialsThree.js create mode 100644 components/Pages/Testimonials/TestimonialsThree.module.css create mode 100644 components/Pages/Testimonials/TestimonialsTwo.js create mode 100644 components/Pages/Testimonials/TestimonialsTwo.module.css create mode 100644 components/Pages/Timeline/TimelineStyle1.js create mode 100644 components/Pages/Timeline/TimelineStyle2.js create mode 100644 components/Projects/AllProjects/AllProjects.module.css create mode 100644 components/Projects/AllProjects/index.js create mode 100644 components/Projects/KanbanBoard/InReview.js create mode 100644 components/Projects/KanbanBoard/NewProjects.js create mode 100644 components/Projects/KanbanBoard/ToDo.js create mode 100644 components/Projects/ProjectCreate/CategoriesSelect.js create mode 100644 components/Projects/ProjectCreate/MemberSelect.js create mode 100644 components/Projects/Task/CompletedTasks.js create mode 100644 components/Projects/Task/MyTasks.js create mode 100644 components/Projects/Task/TasksPerformance/TasksPerformanceChart.js create mode 100644 components/Projects/Task/TasksPerformance/index.js create mode 100644 components/Projects/Task/TotalUsers/TotalUsersChart.js create mode 100644 components/Projects/Task/TotalUsers/index.js create mode 100644 components/Settings/Account/ChangePassword.js create mode 100644 components/Settings/Account/PrivacyPolicyContent.js create mode 100644 components/Settings/Account/Profile.js create mode 100644 components/Settings/NavBar.js create mode 100644 components/Settings/NavBar.module.css create mode 100644 components/UIElements/Accordion/BasicAccordion.js create mode 100644 components/UIElements/Accordion/ControlledAccordion.js create mode 100644 components/UIElements/Accordion/Customization.js create mode 100644 components/UIElements/Alerts/Actions.js create mode 100644 components/UIElements/Alerts/BasicAlerts.js create mode 100644 components/UIElements/Alerts/Color.js create mode 100644 components/UIElements/Alerts/DescriptionAlerts.js create mode 100644 components/UIElements/Alerts/Filled.js create mode 100644 components/UIElements/Alerts/Icons.js create mode 100644 components/UIElements/Alerts/Transition.js create mode 100644 components/UIElements/Alerts/Variants.js create mode 100644 components/UIElements/Autocomplete/ComboBox.js create mode 100644 components/UIElements/Autocomplete/CountrySelect.js create mode 100644 components/UIElements/Autocomplete/CustomizeTextareaComponent.js create mode 100644 components/UIElements/Autocomplete/CustomizedHook.js create mode 100644 components/UIElements/Autocomplete/LimitTags.js create mode 100644 components/UIElements/Avatar/GroupUserExample.js create mode 100644 components/UIElements/Avatar/Grouped.js create mode 100644 components/UIElements/Avatar/IconAvatars.js create mode 100644 components/UIElements/Avatar/ImageAvatars.js create mode 100644 components/UIElements/Avatar/LetterAvatars.js create mode 100644 components/UIElements/Avatar/SingleUserExample.js create mode 100644 components/UIElements/Avatar/SizesAvatars.js create mode 100644 components/UIElements/Avatar/TotalAvatars.js create mode 100644 components/UIElements/Avatar/WithBadge.js create mode 100644 components/UIElements/Badge/Accessibility.js create mode 100644 components/UIElements/Badge/BadgeOverlap.js create mode 100644 components/UIElements/Badge/BasicBadge.js create mode 100644 components/UIElements/Badge/Dynamic.js create mode 100644 components/UIElements/Badge/MaximumValue.js create mode 100644 components/UIElements/Buttons/BasicFAB.js create mode 100644 components/UIElements/Buttons/BlockButtons.js create mode 100644 components/UIElements/Buttons/ButtonsWithIcon.js create mode 100644 components/UIElements/Buttons/DefaultButtons.js create mode 100644 components/UIElements/Buttons/Loading.js create mode 100644 components/UIElements/Buttons/OutlineButtons.js create mode 100644 components/UIElements/Buttons/OutlineRoundedButtons.js create mode 100644 components/UIElements/Buttons/RoundedButtons.js create mode 100644 components/UIElements/Buttons/SizesButtons.js create mode 100644 components/UIElements/Buttons/SoftButtons.js create mode 100644 components/UIElements/Cards/BasicCard.js create mode 100644 components/UIElements/Cards/Cards.module.css create mode 100644 components/UIElements/Cards/ComplexInteraction.js create mode 100644 components/UIElements/Cards/Media.js create mode 100644 components/UIElements/Cards/UIControls.js create mode 100644 components/UIElements/Checkbox/Basic.js create mode 100644 components/UIElements/Checkbox/Color.js create mode 100644 components/UIElements/Checkbox/Controlled.js create mode 100644 components/UIElements/Checkbox/Icon.js create mode 100644 components/UIElements/Checkbox/Label.js create mode 100644 components/UIElements/Checkbox/Size.js create mode 100644 components/UIElements/Chip/Basic.js create mode 100644 components/UIElements/Chip/ChipActions.js create mode 100644 components/UIElements/Chip/ChipAdornments.js create mode 100644 components/UIElements/Chip/ChipArray.js create mode 100644 components/UIElements/Chip/ClickableAndDeletable.js create mode 100644 components/UIElements/Chip/ClickableLink.js create mode 100644 components/UIElements/Chip/ColorChip.js create mode 100644 components/UIElements/Chip/CustomDeleteIcon.js create mode 100644 components/UIElements/Chip/Deletable.js create mode 100644 components/UIElements/Chip/IconChip.js create mode 100644 components/UIElements/Chip/SizesChip.js create mode 100644 components/UIElements/ImageList/ImageListWithTitleBars.js create mode 100644 components/UIElements/ImageList/MasonryImageList.js create mode 100644 components/UIElements/ImageList/QuiltedImageList.js create mode 100644 components/UIElements/ImageList/StandardImageList.js create mode 100644 components/UIElements/ImageList/TitleBarBelowImageStandard.js create mode 100644 components/UIElements/ImageList/WovenImageList.js create mode 100644 components/UIElements/List/BasicList.js create mode 100644 components/UIElements/List/FolderList.js create mode 100644 components/UIElements/List/ListControls.js create mode 100644 components/UIElements/List/NestedList.js create mode 100644 components/UIElements/Modal/BasicModal.js create mode 100644 components/UIElements/Modal/CustomizationDialog.js create mode 100644 components/UIElements/Modal/FullScreenDialogs.js create mode 100644 components/UIElements/Modal/NestedModal.js create mode 100644 components/UIElements/Modal/ScrollingLongContent.js create mode 100644 components/UIElements/Modal/Transitions.js create mode 100644 components/UIElements/Modal/TransitionsDialog.js create mode 100644 components/UIElements/Pagination/BasicPagination.js create mode 100644 components/UIElements/Pagination/CustomIcons.js create mode 100644 components/UIElements/Pagination/OutlinedPagination.js create mode 100644 components/UIElements/Pagination/PaginationSize.js create mode 100644 components/UIElements/Pagination/RoundedPagination.js create mode 100644 components/UIElements/Progress/Circular.js create mode 100644 components/UIElements/Progress/CircularDeterminate.js create mode 100644 components/UIElements/Progress/CircularWithLabel.js create mode 100644 components/UIElements/Progress/Customization.js create mode 100644 components/UIElements/Progress/InteractiveIntegration.js create mode 100644 components/UIElements/Progress/LinearIndeterminate.js create mode 100644 components/UIElements/Radio/Color.js create mode 100644 components/UIElements/Radio/Controlled.js create mode 100644 components/UIElements/Radio/Direction.js create mode 100644 components/UIElements/Radio/Group.js create mode 100644 components/UIElements/Radio/Size.js create mode 100644 components/UIElements/Rating/Basic.js create mode 100644 components/UIElements/Rating/Customization.js create mode 100644 components/UIElements/Rating/HoverFeedback.js create mode 100644 components/UIElements/Rating/RadioGroup.js create mode 100644 components/UIElements/Rating/RatingPrecision.js create mode 100644 components/UIElements/Rating/Sizes.js create mode 100644 components/UIElements/Select/AutoWidth.js create mode 100644 components/UIElements/Select/Basic.js create mode 100644 components/UIElements/Select/Customization.js create mode 100644 components/UIElements/Select/MultipleSelectCheckmarks.js create mode 100644 components/UIElements/Select/MultipleSelectChip.js create mode 100644 components/UIElements/Select/MultipleSelectDefault.js create mode 100644 components/UIElements/Skeleton/Animations.js create mode 100644 components/UIElements/Skeleton/PulsateExample.js create mode 100644 components/UIElements/Skeleton/Variants.js create mode 100644 components/UIElements/Skeleton/WaveExample.js create mode 100644 components/UIElements/Slider/Continuous.js create mode 100644 components/UIElements/Slider/CustomMarks.js create mode 100644 components/UIElements/Slider/Discrete.js create mode 100644 components/UIElements/Slider/LabelAlwaysVisible.js create mode 100644 components/UIElements/Slider/RestrictedValues.js create mode 100644 components/UIElements/Slider/Sizes.js create mode 100644 components/UIElements/Slider/SmallSteps.js create mode 100644 components/UIElements/Snackbar/ComplementaryProjects.js create mode 100644 components/UIElements/Snackbar/Customization.js create mode 100644 components/UIElements/Snackbar/PositionedSnackbars.js create mode 100644 components/UIElements/Snackbar/SimpleSnackbars.js create mode 100644 components/UIElements/Stepper/AlternativeLabel.js create mode 100644 components/UIElements/Stepper/CustomizedHorizontalStepper.js create mode 100644 components/UIElements/Stepper/ErrorStep.js create mode 100644 components/UIElements/Stepper/HorizontalStepper.js create mode 100644 components/UIElements/Stepper/MobileStepperText.js create mode 100644 components/UIElements/Stepper/NonLinear.js create mode 100644 components/UIElements/Stepper/VerticalStepper.js create mode 100644 components/UIElements/SwiperSlider/AutoplaySlider.js create mode 100644 components/UIElements/SwiperSlider/Default.js create mode 100644 components/UIElements/SwiperSlider/NavigationSlider.js create mode 100644 components/UIElements/SwiperSlider/PaginationDynamic.js create mode 100644 components/UIElements/SwiperSlider/PaginationProgress.js create mode 100644 components/UIElements/SwiperSlider/PaginationSlider.js create mode 100644 components/UIElements/Switch/Basic.js create mode 100644 components/UIElements/Switch/Color.js create mode 100644 components/UIElements/Switch/Controlled.js create mode 100644 components/UIElements/Switch/Label.js create mode 100644 components/UIElements/Switch/Size.js create mode 100644 components/UIElements/Switch/SwitchesWithFormGroup.js create mode 100644 components/UIElements/Table/BasicTable.js create mode 100644 components/UIElements/Table/CustomizationTable.js create mode 100644 components/UIElements/Table/DataTable.js create mode 100644 components/UIElements/Table/DenseTable.js create mode 100644 components/UIElements/Table/SortingSelectingTable.js create mode 100644 components/UIElements/Tabs/BasicTabs.js create mode 100644 components/UIElements/Tabs/ExperimentalAPI.js create mode 100644 components/UIElements/Tabs/IconPosition.js create mode 100644 components/UIElements/Tabs/IconTabs.js create mode 100644 components/UIElements/Tabs/VerticalTabs.js create mode 100644 components/UIElements/Tooltip/BasicTooltip.js create mode 100644 components/UIElements/Tooltip/PositionedTooltips.js create mode 100644 components/UIElements/Transitions/CollapseTransitions.js create mode 100644 components/UIElements/Transitions/FadeTransitions.js create mode 100644 components/UIElements/Transitions/GrowTransitions.js create mode 100644 components/UIElements/Transitions/SlideRelativeToAContainer.js create mode 100644 components/UIElements/Transitions/SlideTransitions.js create mode 100644 components/UIElements/Transitions/ZoomTransitions.js create mode 100644 components/_App/ControlPanelModal/DarkAndLightMode.js create mode 100644 components/_App/ControlPanelModal/DarkAndLightMode.module.css create mode 100644 components/_App/ControlPanelModal/OnlyLeftSidebarDarkMode.js create mode 100644 components/_App/ControlPanelModal/OnlyTopNavbarDark.js create mode 100644 components/_App/ControlPanelModal/RTLSwitch.js create mode 100644 components/_App/ControlPanelModal/RTLSwitch.module.css create mode 100644 components/_App/ControlPanelModal/index.js create mode 100644 components/_App/Footer.js create mode 100644 components/_App/Layout.js create mode 100644 components/_App/LeftSidebar/SidebarData.js create mode 100644 components/_App/LeftSidebar/SubMenu.js create mode 100644 components/_App/LeftSidebar/SubMenu.module.css create mode 100644 components/_App/LeftSidebar/index.js create mode 100644 components/_App/ScrollToTop.js create mode 100644 components/_App/TopNavbar/CurrentDate.js create mode 100644 components/_App/TopNavbar/CurrentDate.module.css create mode 100644 components/_App/TopNavbar/Email.js create mode 100644 components/_App/TopNavbar/Email.module.css create mode 100644 components/_App/TopNavbar/Notification.js create mode 100644 components/_App/TopNavbar/Notification.module.css create mode 100644 components/_App/TopNavbar/Profile.js create mode 100644 components/_App/TopNavbar/SearchForm.js create mode 100644 components/_App/TopNavbar/TopNavbar.module.css create mode 100644 components/_App/TopNavbar/index.js create mode 100644 components/eCommerce/Cart/HaveAPromoCode.js create mode 100644 components/eCommerce/Cart/OrderSummary.js create mode 100644 components/eCommerce/Cart/ShoppingCart.js create mode 100644 components/eCommerce/Checkout/BillingInformation.js create mode 100644 components/eCommerce/Checkout/ShoppingCart.js create mode 100644 components/eCommerce/Customers/CustomersLists.js create mode 100644 components/eCommerce/OrderDetails/TrackOrder/OrderTable.js create mode 100644 components/eCommerce/OrderDetails/TrackOrder/TrackOrder.module.css create mode 100644 components/eCommerce/OrderDetails/TrackOrder/index.js create mode 100644 components/eCommerce/OrdersList/Features.js create mode 100644 components/eCommerce/OrdersList/OrdersLists.js create mode 100644 components/eCommerce/ProductDetails/ProductDescription.js create mode 100644 components/eCommerce/ProductDetails/ProductDetailsContent.js create mode 100644 components/eCommerce/ProductDetails/ProductDetailsContent.module.css create mode 100644 components/eCommerce/ProductDetails/ProductReviews.js create mode 100644 docker-compose.yml create mode 100644 docker-entrypoint.sh create mode 100644 docker/Dockerfile create mode 100644 docker/docker-entrypoint.sh create mode 100644 jsconfig.json create mode 100644 next.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages/404.js create mode 100644 pages/_app.js create mode 100644 pages/_document.js create mode 100644 pages/analytics.js create mode 100644 pages/analytics/customers.js create mode 100644 pages/analytics/reports.js create mode 100644 pages/apps/calendar.js create mode 100644 pages/apps/chat/index.js create mode 100644 pages/apps/file-manager/assets.js create mode 100644 pages/apps/file-manager/documents.js create mode 100644 pages/apps/file-manager/important.js create mode 100644 pages/apps/file-manager/index.js create mode 100644 pages/apps/file-manager/media.js create mode 100644 pages/apps/file-manager/personal.js create mode 100644 pages/apps/file-manager/projects.js create mode 100644 pages/apps/file-manager/recents.js create mode 100644 pages/apps/file-manager/templates.js create mode 100644 pages/apps/file-manager/trash.js create mode 100644 pages/apps/to-do.js create mode 100644 pages/authentication/confirm-mail.js create mode 100644 pages/authentication/forgot-password.js create mode 100644 pages/authentication/lock-screen.js create mode 100644 pages/authentication/logout.js create mode 100644 pages/authentication/sign-in.js create mode 100644 pages/authentication/sign-up.js create mode 100644 pages/contact-list/contact-list2.js create mode 100644 pages/contact-list/index.js create mode 100644 pages/contact-list/members-list.js create mode 100644 pages/contact-list/profile.js create mode 100644 pages/crypto.js create mode 100644 pages/ecommerce.js create mode 100644 pages/ecommerce/cart.js create mode 100644 pages/ecommerce/checkout.js create mode 100644 pages/ecommerce/create-product.js create mode 100644 pages/ecommerce/customers.js create mode 100644 pages/ecommerce/order-details.js create mode 100644 pages/ecommerce/orders-list.js create mode 100644 pages/ecommerce/product-details.js create mode 100644 pages/ecommerce/products.js create mode 100644 pages/ecommerce/sellers.js create mode 100644 pages/email/inbox.js create mode 100644 pages/email/read-email.js create mode 100644 pages/forms/advanced-elements.js create mode 100644 pages/forms/editors.js create mode 100644 pages/forms/file-uploader.js create mode 100644 pages/forms/form-layouts.js create mode 100644 pages/help-desk.js create mode 100644 pages/index.js create mode 100644 pages/lms-courses.js create mode 100644 pages/notification.js create mode 100644 pages/pages/apexcharts.js create mode 100644 pages/pages/faq.js create mode 100644 pages/pages/gallery.js create mode 100644 pages/pages/invoice-details.js create mode 100644 pages/pages/invoice.js create mode 100644 pages/pages/maps.js create mode 100644 pages/pages/material-icons.js create mode 100644 pages/pages/pricing.js create mode 100644 pages/pages/profile.js create mode 100644 pages/pages/recharts.js create mode 100644 pages/pages/remixicon.js create mode 100644 pages/pages/search.js create mode 100644 pages/pages/support.js create mode 100644 pages/pages/terms-conditions.js create mode 100644 pages/pages/testimonials.js create mode 100644 pages/pages/timeline.js create mode 100644 pages/project-management.js create mode 100644 pages/projects/clients.js create mode 100644 pages/projects/index.js create mode 100644 pages/projects/kanban-board.js create mode 100644 pages/projects/project-create.js create mode 100644 pages/projects/task.js create mode 100644 pages/projects/team.js create mode 100644 pages/projects/user.js create mode 100644 pages/saas-app.js create mode 100644 pages/settings/account.js create mode 100644 pages/settings/privacy-policy.js create mode 100644 pages/settings/security.js create mode 100644 pages/ui-elements/accordion.js create mode 100644 pages/ui-elements/alerts.js create mode 100644 pages/ui-elements/autocomplete.js create mode 100644 pages/ui-elements/avatar.js create mode 100644 pages/ui-elements/badge.js create mode 100644 pages/ui-elements/buttons.js create mode 100644 pages/ui-elements/cards.js create mode 100644 pages/ui-elements/checkbox.js create mode 100644 pages/ui-elements/chip.js create mode 100644 pages/ui-elements/image-list.js create mode 100644 pages/ui-elements/list.js create mode 100644 pages/ui-elements/modal.js create mode 100644 pages/ui-elements/pagination.js create mode 100644 pages/ui-elements/progress.js create mode 100644 pages/ui-elements/radio.js create mode 100644 pages/ui-elements/rating.js create mode 100644 pages/ui-elements/select.js create mode 100644 pages/ui-elements/skeleton.js create mode 100644 pages/ui-elements/slider.js create mode 100644 pages/ui-elements/snackbar.js create mode 100644 pages/ui-elements/stepper.js create mode 100644 pages/ui-elements/swiper-slider.js create mode 100644 pages/ui-elements/switch.js create mode 100644 pages/ui-elements/table.js create mode 100644 pages/ui-elements/tabs.js create mode 100644 pages/ui-elements/tooltip.js create mode 100644 pages/ui-elements/transitions.js create mode 100644 public/fonts/remixicon.eot create mode 100644 public/fonts/remixicon.svg create mode 100644 public/fonts/remixicon.symbol.svg create mode 100644 public/fonts/remixicon.ttf create mode 100644 public/fonts/remixicon.woff create mode 100644 public/fonts/remixicon.woff2 create mode 100644 public/images/3d1.png create mode 100644 public/images/3d2.png create mode 100644 public/images/3d3.png create mode 100644 public/images/3d4.png create mode 100644 public/images/apps-icon.png create mode 100644 public/images/avatar2.png create mode 100644 public/images/binance.png create mode 100644 public/images/bitcoin.png create mode 100644 public/images/bitcoin2.png create mode 100644 public/images/bitcoin3.png create mode 100644 public/images/bitcoin4.png create mode 100644 public/images/btc.png create mode 100644 public/images/burger-menu-icon.png create mode 100644 public/images/c+.png create mode 100644 public/images/card-img1.png create mode 100644 public/images/card-img2.png create mode 100644 public/images/card-img3.png create mode 100644 public/images/card-img4.png create mode 100644 public/images/card-img5.png create mode 100644 public/images/cardano.png create mode 100644 public/images/chart1.png create mode 100644 public/images/chart2.png create mode 100644 public/images/chart3.png create mode 100644 public/images/chart4.png create mode 100644 public/images/coffee.png create mode 100644 public/images/comp-bidr.png create mode 100644 public/images/comp.png create mode 100644 public/images/contemplative-reptile.jpg create mode 100644 public/images/coupon-icon.png create mode 100644 public/images/course-brand1.png create mode 100644 public/images/course-brand2.png create mode 100644 public/images/course-brand3.png create mode 100644 public/images/course-brand4.png create mode 100644 public/images/dash.png create mode 100644 public/images/dollar.png create mode 100644 public/images/down-arrow.png create mode 100644 public/images/error.png create mode 100644 public/images/ethereum.png create mode 100644 public/images/ethereum2.png create mode 100644 public/images/ethereum3.png create mode 100644 public/images/favicon.ico create mode 100644 public/images/favicon.png create mode 100644 public/images/fb-icon.png create mode 100644 public/images/file1.png create mode 100644 public/images/file10.png create mode 100644 public/images/file2.png create mode 100644 public/images/file3.png create mode 100644 public/images/file4.png create mode 100644 public/images/file5.png create mode 100644 public/images/file6.png create mode 100644 public/images/file7.png create mode 100644 public/images/file8.png create mode 100644 public/images/file9.png create mode 100644 public/images/folder.png create mode 100644 public/images/google-icon.png create mode 100644 public/images/graph-icon.png create mode 100644 public/images/haskell.png create mode 100644 public/images/hex-map.png create mode 100644 public/images/icon1.png create mode 100644 public/images/icon2.png create mode 100644 public/images/icon3.png create mode 100644 public/images/icon4.png create mode 100644 public/images/icon5.png create mode 100644 public/images/icon6.png create mode 100644 public/images/icon7.png create mode 100644 public/images/js.png create mode 100644 public/images/litecoin.png create mode 100644 public/images/litecoin2.png create mode 100644 public/images/litecoin3.png create mode 100644 public/images/live-from-space.jpg create mode 100644 public/images/logo-white.png create mode 100644 public/images/logo.png create mode 100644 public/images/man.png create mode 100644 public/images/matic.png create mode 100644 public/images/matic2.png create mode 100644 public/images/matic3.png create mode 100644 public/images/media.png create mode 100644 public/images/member1.png create mode 100644 public/images/member10.png create mode 100644 public/images/member11.png create mode 100644 public/images/member12.png create mode 100644 public/images/member2.png create mode 100644 public/images/member3.png create mode 100644 public/images/member4.png create mode 100644 public/images/member5.png create mode 100644 public/images/member6.png create mode 100644 public/images/member7.png create mode 100644 public/images/member8.png create mode 100644 public/images/member9.png create mode 100644 public/images/message.png create mode 100644 public/images/oval.png create mode 100644 public/images/paella.jpg create mode 100644 public/images/pdf-icon.png create mode 100644 public/images/product-preview.png create mode 100644 public/images/product1.png create mode 100644 public/images/product2.png create mode 100644 public/images/product3.png create mode 100644 public/images/product4.png create mode 100644 public/images/product5.png create mode 100644 public/images/product6.png create mode 100644 public/images/product7.png create mode 100644 public/images/product8.png create mode 100644 public/images/product9.png create mode 100644 public/images/profile.png create mode 100644 public/images/project-logo1.png create mode 100644 public/images/project-logo10.png create mode 100644 public/images/project-logo11.png create mode 100644 public/images/project-logo12.png create mode 100644 public/images/project-logo13.png create mode 100644 public/images/project-logo14.png create mode 100644 public/images/project-logo2.png create mode 100644 public/images/project-logo3.png create mode 100644 public/images/project-logo4.png create mode 100644 public/images/project-logo5.png create mode 100644 public/images/project-logo6.png create mode 100644 public/images/project-logo7.png create mode 100644 public/images/project-logo8.png create mode 100644 public/images/project-logo9.png create mode 100644 public/images/seller1.png create mode 100644 public/images/seller2.png create mode 100644 public/images/seller3.png create mode 100644 public/images/seller4.png create mode 100644 public/images/seller5.png create mode 100644 public/images/seller6.png create mode 100644 public/images/seller7.png create mode 100644 public/images/seller8.png create mode 100644 public/images/shape-1.png create mode 100644 public/images/shape-2-icon.png create mode 100644 public/images/slider-img1.jpg create mode 100644 public/images/slider-img2.jpg create mode 100644 public/images/slider-img3.jpg create mode 100644 public/images/slider-img4.jpg create mode 100644 public/images/slider-img5.jpg create mode 100644 public/images/small-product-img.png create mode 100644 public/images/small-product-img2.png create mode 100644 public/images/small-product-img3.png create mode 100644 public/images/stack-icon.png create mode 100644 public/images/support.png create mode 100644 public/images/time.png create mode 100644 public/images/user1.png create mode 100644 public/images/user10.png create mode 100644 public/images/user11.png create mode 100644 public/images/user12.png create mode 100644 public/images/user13.png create mode 100644 public/images/user14.png create mode 100644 public/images/user15.png create mode 100644 public/images/user16.png create mode 100644 public/images/user17.png create mode 100644 public/images/user18.png create mode 100644 public/images/user19.png create mode 100644 public/images/user2.png create mode 100644 public/images/user20.png create mode 100644 public/images/user21.png create mode 100644 public/images/user22.png create mode 100644 public/images/user23.png create mode 100644 public/images/user3.png create mode 100644 public/images/user4.png create mode 100644 public/images/user5.png create mode 100644 public/images/user6.png create mode 100644 public/images/user7.png create mode 100644 public/images/user8.png create mode 100644 public/images/user9.png create mode 100644 public/images/users-icon.png create mode 100644 public/images/work-icon.png create mode 100644 public/images/working-on-table.png create mode 100644 styles/PageTitle.module.css create mode 100644 styles/chat.css create mode 100644 styles/chat.css.map create mode 100644 styles/chat.scss create mode 100644 styles/dark.css create mode 100644 styles/dark.css.map create mode 100644 styles/dark.scss create mode 100644 styles/globals.css create mode 100644 styles/globals.css.map create mode 100644 styles/globals.scss create mode 100644 styles/remixicon.css create mode 100644 styles/rtl.css create mode 100644 styles/rtl.css.map create mode 100644 styles/rtl.scss create mode 100644 styles/theme/index.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c87c9b3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/CMS-Clent.iml b/.idea/CMS-Clent.iml new file mode 100644 index 0000000..c956989 --- /dev/null +++ b/.idea/CMS-Clent.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..3e8dfc6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml new file mode 100644 index 0000000..f324872 --- /dev/null +++ b/.idea/php.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b12f3e3 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. + +[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. + +The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/components/Analytics/Customers/CustomersDetails.js b/components/Analytics/Customers/CustomersDetails.js new file mode 100644 index 0000000..6a30c87 --- /dev/null +++ b/components/Analytics/Customers/CustomersDetails.js @@ -0,0 +1,575 @@ +import * as React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Checkbox from "@mui/material/Checkbox"; + +const label = { inputProps: { "aria-label": "Checkbox demo" } }; + +function CustomersDetail(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +CustomersDetail.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + name, + userName, + image, + email, + rolls, + status, + badgeClass, + projects +) { + return { + name, + userName, + image, + email, + rolls, + status, + badgeClass, + projects, + }; +} + +const rows = [ + createData( + "Evangelina Mcclain", + "@jstevenson5c", + "/images/user1.png", + "jordansteve@gmail.com", + "Agent", + "Active", + "successBadge", + "165" + ), + createData( + "Candice Munoz", + "@candice3unoz", + "/images/user2.png", + "candicemunoz@gmail.com", + "Administrator", + "Active", + "successBadge", + "120" + ), + createData( + "Mike Mcclain", + "@mike4mcclain", + "/images/user3.png", + "mikemcclain@gmail.com", + "Contributor", + "Active", + "successBadge", + "220" + ), + createData( + "Bernard Langley", + "@bernardlangley", + "/images/user4.png", + "bernardlangley@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "122" + ), + createData( + "Kristie Hall", + "@kristie7hall", + "/images/user5.png", + "kristiehall@gmail.com", + "Contributor", + "Active", + "successBadge", + "360" + ), + createData( + "Bolton Obrien", + "@bolton4obrien", + "/images/user6.png", + "boltonobrien@gmail.com", + "Administrator", + "Active", + "successBadge", + "250" + ), + createData( + "Dee Alvarado", + "@dee3alvarado", + "/images/user7.png", + "deealvarado@gmail.com", + "Agent", + "Active", + "successBadge", + "140" + ), + createData( + "Cervantes Kramer", + "@cervantes4kramer", + "/images/user8.png", + "cervantes4kramer@gmail.com", + "Agent", + "Active", + "successBadge", + "345" + ), + createData( + "Dejesus Michael", + "@dejesus1michael", + "/images/user9.png", + "dejesusmichael@gmail.com", + "Agent", + "Active", + "successBadge", + "323" + ), + createData( + "Alissa Nelson", + "@alissa1nelson", + "/images/user10.png", + "alissa1nelson@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "451" + ), + createData( + "Milton", + "@milton", + "/images/user11.png", + "milton@gmail.com", + "Agent", + "Active", + "successBadge", + "432" + ), + createData( + "Claude", + "@claude", + "/images/user12.png", + "claude@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "543" + ), + createData( + "Joshua", + "@joshua", + "/images/user13.png", + "joshua@gmail.com", + "Agent", + "Active", + "successBadge", + "543" + ), + createData( + "Harvey", + "@harvey", + "/images/user14.png", + "harvey@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "432" + ), + createData( + "Antonio", + "@antonio", + "/images/user15.png", + "antonio@gmail.com", + "Agent", + "Active", + "successBadge", + "765" + ), + createData( + "Julian", + "@julian", + "/images/user16.png", + "julian@gmail.com", + "Agent", + "Active", + "successBadge", + "678" + ), + createData( + "Harold", + "@harold", + "/images/user17.png", + "harold@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "165" + ), + createData( + "Kingston", + "@kingston", + "/images/user18.png", + "kingston@info.com", + "Agent", + "Active", + "successBadge", + "165" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +export default function CustomersDetails() { + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + Customers Details + + + + + + + + + Name + + + + Email + + + + Rolls + + + + Status + + + + Projects + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + User + + + {row.name} + + + + {row.userName} + + + + + + + {row.email} + + + + {row.rolls} + + + + {row.status} + + + + {row.projects} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Analytics/Customers/NetIncome.js b/components/Analytics/Customers/NetIncome.js new file mode 100644 index 0000000..b389cec --- /dev/null +++ b/components/Analytics/Customers/NetIncome.js @@ -0,0 +1,132 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Box from "@mui/material/Box"; +import Typography from "@mui/material/Typography"; +import { BarChart, Bar, XAxis, Tooltip, ResponsiveContainer } from "recharts"; + +const data = [ + { + name: "Sat", + income: 24, + }, + { + name: "Sun", + income: 13, + }, + { + name: "Mon", + income: 98, + }, + { + name: "Tue", + income: 39, + }, + { + name: "Wed", + income: 48, + }, + { + name: "Thu", + income: 38, + }, + { + name: "Fri", + income: 43, + }, +]; + +const NetIncome = () => { + return ( + <> + + + + + + + + + + + Net Income + + + $438.5k + + + + + + + + + + + + + + + + + + + + ); +}; + +export default NetIncome; diff --git a/components/Analytics/Customers/NewSessions.js b/components/Analytics/Customers/NewSessions.js new file mode 100644 index 0000000..59dc5a9 --- /dev/null +++ b/components/Analytics/Customers/NewSessions.js @@ -0,0 +1,132 @@ +import React from "react"; +import { + BarChart, + Bar, + XAxis, + Tooltip, + ResponsiveContainer, +} from "recharts"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Box from "@mui/material/Box"; +import Typography from "@mui/material/Typography"; + +const data = [ + { + name: "Sat", + visited: 2400, + }, + { + name: "Sun", + visited: 1398, + }, + { + name: "Mon", + visited: 9800, + }, + { + name: "Tue", + visited: 3908, + }, + { + name: "Wed", + visited: 4800, + }, + { + name: "Thu", + visited: 3800, + }, + { + name: "Fri", + visited: 4300, + }, +]; + +const NewSessions = () => { + return ( + <> + + + + + + + + + + + New Sessions + + + 1,500 + + + + + + + + + + + + + + + + + + + + ); +}; + +export default NewSessions; diff --git a/components/Analytics/Customers/VisitsByDay.js b/components/Analytics/Customers/VisitsByDay.js new file mode 100644 index 0000000..1019cf7 --- /dev/null +++ b/components/Analytics/Customers/VisitsByDay.js @@ -0,0 +1,132 @@ +import React from "react"; +import { + BarChart, + Bar, + XAxis, + Tooltip, + ResponsiveContainer, +} from "recharts"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Box from "@mui/material/Box"; +import Typography from "@mui/material/Typography"; + +const data = [ + { + name: "Sat", + visited: 2400, + }, + { + name: "Sun", + visited: 1398, + }, + { + name: "Mon", + visited: 9800, + }, + { + name: "Tue", + visited: 3908, + }, + { + name: "Wed", + visited: 4800, + }, + { + name: "Thu", + visited: 3800, + }, + { + name: "Fri", + visited: 4300, + }, +]; + +const VisitsByDay = () => { + return ( + <> + + + + + + + + + + + Visits By Day + + + 1,802 + + + + + + + + + + + + + + + + + + + + ); +}; + +export default VisitsByDay; diff --git a/components/Analytics/Reports/AvarageReport/AvarageReportList.module.css b/components/Analytics/Reports/AvarageReport/AvarageReportList.module.css new file mode 100644 index 0000000..fded2c4 --- /dev/null +++ b/components/Analytics/Reports/AvarageReport/AvarageReportList.module.css @@ -0,0 +1,36 @@ +.totalRevenueList { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #F7FAFF; + margin-bottom: 13px; + padding-bottom: 13px; +} +.totalRevenueList:last-child { + border-bottom: none; + margin-bottom: 0; + padding-bottom: 0; +} +.totalRevenueList p { + font-size: 13px; + margin: 0; +} +.totalRevenueList .rightContent { + display: flex; + align-items: center; + justify-content: space-between; +} +.totalRevenueList .rightContent h5 { + margin: 0 15px 0 0; + font-size: 12px; + color: #5B5B98; +} +.totalRevenueList .rightContent i { + position: relative; + top: 2px; +} + +/* For dark mode */ +[class="dark"] .totalRevenueList { + border-bottom: 1px solid var(--borderColor); +} \ No newline at end of file diff --git a/components/Analytics/Reports/AvarageReport/RevenueChart.js b/components/Analytics/Reports/AvarageReport/RevenueChart.js new file mode 100644 index 0000000..be53021 --- /dev/null +++ b/components/Analytics/Reports/AvarageReport/RevenueChart.js @@ -0,0 +1,59 @@ +import React, { Component } from 'react'; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class RevenueChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [65], + options: { + plotOptions: { + radialBar: { + hollow: { + size: "50%", + }, + track: { + background: "#ECEFF7", + }, + dataLabels: { + name: { + show: true, + fontSize: '12px', + color: '#5B5B98', + }, + value: { + offsetY: 3, + color: "#00B69B", + fontSize: "16px", + fontWeight: "500", + }, + }, + }, + }, + labels: ['Revenue'], + fill: { + opacity: 1, + colors: ["#757FEF"], + }, + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default RevenueChart; diff --git a/components/Analytics/Reports/AvarageReport/index.js b/components/Analytics/Reports/AvarageReport/index.js new file mode 100644 index 0000000..4465ac6 --- /dev/null +++ b/components/Analytics/Reports/AvarageReport/index.js @@ -0,0 +1,193 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import RevenueChart from "./RevenueChart"; +import styles from "@/components/Analytics/Reports/AvarageReport/AvarageReportList.module.css"; + +const AvarageReport = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Avarage Report + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* RevenueChart */} + + + <> +
+

Avg. Session

+
+
972
+

+ 49% +

+
+
+ +
+

Conversion Rate

+
+
102
+

+ 18% +

+
+
+ +
+

Avg. Duration

+
+
3m
+

+ 42% +

+
+
+ +
+

Weekly Earning

+
+
$972
+

+ 28% +

+
+
+ +
+

Monthly Revenue

+
+
50k
+

+ 70% +

+
+
+ +
+

Order Rate

+
+
1026
+

+ 18% +

+
+
+ +
+

Avg. Visitors

+
+
1.5k
+

+ 42% +

+
+
+ +
+

Avg. Sales

+
+
1250k
+

+ 42% +

+
+
+ +
+ + ); +}; + +export default AvarageReport; diff --git a/components/Analytics/Reports/BrowserUsedAndTrafficReports.js b/components/Analytics/Reports/BrowserUsedAndTrafficReports.js new file mode 100644 index 0000000..a9ee629 --- /dev/null +++ b/components/Analytics/Reports/BrowserUsedAndTrafficReports.js @@ -0,0 +1,621 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; + +function BrowserUsedAndTrafficReport(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +BrowserUsedAndTrafficReport.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + channel, + sessions, + sessionsProgress, + prevPeriod, + prevPeriodProgress, + transactions, + transactionsProgress, + conRate, + bounceRate, + change, + iconName, + badgeClass +) { + return { + channel, + sessions, + sessionsProgress, + prevPeriod, + prevPeriodProgress, + transactions, + transactionsProgress, + conRate, + bounceRate, + change, + iconName, + badgeClass, + }; +} + +const rows = [ + createData( + "Organic Search", + "10853", + "(52%)", + "566", + "(52%)", + "566", + "(52%)", + "3.2%", + "57.8%", + "52.80%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Direct", + "10844", + "(50%)", + "666", + "(50%)", + "766", + "(50%)", + "2.2%", + "20.8%", + "55.99%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Referal", + "20844", + "(60%)", + "754", + "(60%)", + "899", + "(60%)", + "1.2%", + "60.8%", + "60.99%", + "ri-arrow-down-s-fill", + "dangerBadge" + ), + createData( + "Email", + "15844", + "(50%)", + "764", + "(50%)", + "755", + "(50%)", + "4.2%", + "30.8%", + "50.99%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Social", + "12844", + "(50%)", + "764", + "(50%)", + "755", + "(50%)", + "5.2%", + "35.8%", + "50.99%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Chrome", + "5853", + "(52%)", + "466", + "(52%)", + "566", + "(52%)", + "6.2%", + "40.8%", + "52.80%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Safari", + "2844", + "(50%)", + "766", + "(50%)", + "666", + "(50%)", + "3.2%", + "55.8%", + "55.00%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Edge", + "1844", + "(60%)", + "454", + "(60%)", + "399", + "(60%)", + "7.2%", + "10.8%", + "60.00%", + "ri-arrow-down-s-fill", + "dangerBadge" + ), + createData( + "Firefox", + "15844", + "(55%)", + "564", + "(55%)", + "455", + "(55%)", + "4.2%", + "20.8%", + "55.00%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Opera", + "11844", + "(50%)", + "864", + "(50%)", + "655", + "(50%)", + "3.2%", + "32.8%", + "50.00%", + "ri-arrow-up-s-fill", + "successBadge" + ), +].sort((a, b) => (a.channel < b.channel ? -1 : 1)); + +const BrowserUsedAndTrafficReports = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(7); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + Browser Used & Traffic Reports + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Channel + + + + Sessions + + + + Prev.Period + + + + Transactions + + + + Con.Rate + + + + Bounce Rate + + + + % Change + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.channel} + + + + {row.sessions}{" "} + + {row.sessionsProgress} + + + + + {row.prevPeriod}{" "} + + {row.prevPeriodProgress} + + + + + {row.transactions}{" "} + + {row.transactionsProgress} + + + + + {row.conRate} + + + + {row.bounceRate} + + + + + {row.change}{" "} + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default BrowserUsedAndTrafficReports; diff --git a/components/Apps/Calendar/Events.js b/components/Apps/Calendar/Events.js new file mode 100644 index 0000000..de64ca7 --- /dev/null +++ b/components/Apps/Calendar/Events.js @@ -0,0 +1,47 @@ +const events = [ + { title: "All Day Event", start: getDate("YEAR-MONTH-01") }, + { + title: "Rendezvous", + start: getDate("YEAR-MONTH-07"), + end: getDate("YEAR-MONTH-10") + }, + { + groupId: "999", + title: "Repeating Event", + start: getDate("YEAR-MONTH-09T16:00:00+00:00") + }, + { + groupId: "999", + title: "Repeating Event", + start: getDate("YEAR-MONTH-16T16:00:00+00:00") + }, + { + title: "Dontiste", + start: "YEAR-MONTH-17", + end: getDate("YEAR-MONTH-19") + }, + { + title: "Consultation", + start: getDate("YEAR-MONTH-18T10:30:00+00:00"), + end: getDate("YEAR-MONTH-18T12:30:00+00:00") + }, + { title: "Visit", start: getDate("YEAR-MONTH-18T12:00:00+00:00") }, + { title: "maladie", start: getDate("YEAR-MONTH-19T07:00:00+00:00") }, + { title: "Meeting", start: getDate("YEAR-MONTH-18T14:30:00+00:00") }, + { title: "controlle", start: getDate("YEAR-MONTH-18T17:30:00+00:00") }, + { title: "finish", start: getDate("YEAR-MONTH-18T20:00:00+00:00") } +]; + +function getDate(dayString) { + const today = new Date(); + const year = today.getFullYear().toString(); + let month = (today.getMonth() + 1).toString(); + + if (month.length === 1) { + month = "0" + month; + } + + return dayString.replace("YEAR", year).replace("MONTH", month); +} + +export default events; diff --git a/components/Apps/Chat/ChatBox.js b/components/Apps/Chat/ChatBox.js new file mode 100644 index 0000000..6b81d83 --- /dev/null +++ b/components/Apps/Chat/ChatBox.js @@ -0,0 +1,599 @@ +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import IconButton from "@mui/material/IconButton"; +import VideocamIcon from "@mui/icons-material/Videocam"; +import CallIcon from "@mui/icons-material/Call"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import List from "@mui/material/List"; +import ListItem from "@mui/material/ListItem"; +import ListItemButton from "@mui/material/ListItemButton"; +import ListItemText from "@mui/material/ListItemText"; +import ReplyIcon from "@mui/icons-material/Reply"; +import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import SendIcon from "@mui/icons-material/Send"; + +const ChatBox = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + {/* Header */} + + + user + + + Laurent Perrier + + + Active + Now + + + + + + + + + + + + + + + + + + + + {/* Chat List */} +
+ {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Pharetra ligula non varius curabitur etiam malesuada. Congue + eget luctus aliquet consectetur. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet 🔥! Lorem ipsum dolor sit amet, + consectetur adipiscing elit. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem + ipsum dolor sit + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + Sed ut perspiciatis unde omnis iste natus error sit voluptatem + accusantium doloremque laudantium, totam rem aperiam, eaque + ipsa quae ab illo inventore veritatis et quasi architecto + beatae vitae dicta sunt explicabo. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+
+ + {/* Footer */} + + + + + + + + + + + + + + + + + +
+ + ); +}; + +export default ChatBox; diff --git a/components/Apps/Chat/ChatBoxThree.js b/components/Apps/Chat/ChatBoxThree.js new file mode 100644 index 0000000..32cd2a4 --- /dev/null +++ b/components/Apps/Chat/ChatBoxThree.js @@ -0,0 +1,599 @@ +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import IconButton from "@mui/material/IconButton"; +import VideocamIcon from "@mui/icons-material/Videocam"; +import CallIcon from "@mui/icons-material/Call"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import List from "@mui/material/List"; +import ListItem from "@mui/material/ListItem"; +import ListItemButton from "@mui/material/ListItemButton"; +import ListItemText from "@mui/material/ListItemText"; +import ReplyIcon from "@mui/icons-material/Reply"; +import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import SendIcon from "@mui/icons-material/Send"; + +const ChatBoxThree = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + {/* Header */} + + + user + + + Bernard Langley + + + Active + Now + + + + + + + + + + + + + + + + + + + + {/* Chat List */} +
+ {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Pharetra ligula non varius curabitur etiam malesuada. Congue + eget luctus aliquet consectetur. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet 🔥! Lorem ipsum dolor sit amet, + consectetur adipiscing elit. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem + ipsum dolor sit + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + Sed ut perspiciatis unde omnis iste natus error sit voluptatem + accusantium doloremque laudantium, totam rem aperiam, eaque + ipsa quae ab illo inventore veritatis et quasi architecto + beatae vitae dicta sunt explicabo. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+
+ + {/* Footer */} + + + + + + + + + + + + + + + + + +
+ + ); +}; + +export default ChatBoxThree; diff --git a/components/Apps/Chat/ChatBoxTwo.js b/components/Apps/Chat/ChatBoxTwo.js new file mode 100644 index 0000000..436142d --- /dev/null +++ b/components/Apps/Chat/ChatBoxTwo.js @@ -0,0 +1,599 @@ +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import IconButton from "@mui/material/IconButton"; +import VideocamIcon from "@mui/icons-material/Videocam"; +import CallIcon from "@mui/icons-material/Call"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import List from "@mui/material/List"; +import ListItem from "@mui/material/ListItem"; +import ListItemButton from "@mui/material/ListItemButton"; +import ListItemText from "@mui/material/ListItemText"; +import ReplyIcon from "@mui/icons-material/Reply"; +import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import SendIcon from "@mui/icons-material/Send"; + +const ChatBoxTwo = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + {/* Header */} + + + user + + + Nunez Faulkner + + + Active + Now + + + + + + + + + + + + + + + + + + + + {/* Chat List */} +
+ {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Pharetra ligula non varius curabitur etiam malesuada. Congue + eget luctus aliquet consectetur. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet 🔥! Lorem ipsum dolor sit amet, + consectetur adipiscing elit. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem + ipsum dolor sit + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + Sed ut perspiciatis unde omnis iste natus error sit voluptatem + accusantium doloremque laudantium, totam rem aperiam, eaque + ipsa quae ab illo inventore veritatis et quasi architecto + beatae vitae dicta sunt explicabo. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+
+ + {/* Footer */} + + + + + + + + + + + + + + + + + +
+ + ); +}; + +export default ChatBoxTwo; diff --git a/components/Apps/FileManager/AllAssets.js b/components/Apps/FileManager/AllAssets.js new file mode 100644 index 0000000..f706b4b --- /dev/null +++ b/components/Apps/FileManager/AllAssets.js @@ -0,0 +1,218 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; + +const AssetsData = [ + { + id: "1", + icon: "/images/folder.png", + title: "Projects", + totalFiles: "387 Files", + filesSize: "4.5 GB", + }, + { + id: "2", + icon: "/images/folder.png", + title: "Documents", + totalFiles: "1572 Files", + filesSize: "7.5 GB", + }, + { + id: "3", + icon: "/images/folder.png", + title: "Media", + totalFiles: "1241 Files", + filesSize: "2.8 GB", + }, + { + id: "4", + icon: "/images/folder.png", + title: "Applications", + totalFiles: "2487 Files", + filesSize: "4.5 GB", + }, + { + id: "5", + icon: "/images/folder.png", + title: "ET Template", + totalFiles: "60 Files", + filesSize: "8 GB", + }, + { + id: "6", + icon: "/images/folder.png", + title: "React Template", + totalFiles: "120 Files", + filesSize: "6.5 GB", + }, + { + id: "7", + icon: "/images/folder.png", + title: "Material UI", + totalFiles: "40 Files", + filesSize: "5.5 GB", + }, + { + id: "8", + icon: "/images/folder.png", + title: "WP Themes", + totalFiles: "2487 Files", + filesSize: "4.5 GB", + }, + { + id: "9", + icon: "/images/folder.png", + title: "Personal Photos", + totalFiles: "2587 Files", + filesSize: "14 GB", + }, + { + id: "10", + icon: "/images/folder.png", + title: "Mobile Apps", + totalFiles: "55 Files", + filesSize: "4.5 GB", + }, + { + id: "11", + icon: "/images/folder.png", + title: "Important Files", + totalFiles: "200 Files", + filesSize: "6.5 GB", + }, + { + id: "12", + icon: "/images/folder.png", + title: "Angular Template", + totalFiles: "340 Files", + filesSize: "7.5 GB", + }, +]; + +const AllAssets = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + {AssetsData.map((asset) => ( + + + + + + + + + + + Rename + + + Download + + + Remove + + + + + + folder + + {asset.title} + + + + + {asset.totalFiles} + {asset.filesSize} + + + + ))} + + + ); +}; + +export default AllAssets; diff --git a/components/Apps/FileManager/AllProjects.js b/components/Apps/FileManager/AllProjects.js new file mode 100644 index 0000000..921b9f7 --- /dev/null +++ b/components/Apps/FileManager/AllProjects.js @@ -0,0 +1,218 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; + +const ProjectsData = [ + { + id: "1", + icon: "/images/folder.png", + title: "ET Template", + totalFiles: "60 Files", + filesSize: "8 GB", + }, + { + id: "2", + icon: "/images/folder.png", + title: "React Template", + totalFiles: "120 Files", + filesSize: "6.5 GB", + }, + { + id: "3", + icon: "/images/folder.png", + title: "Material UI", + totalFiles: "40 Files", + filesSize: "5.5 GB", + }, + { + id: "4", + icon: "/images/folder.png", + title: "WP Themes", + totalFiles: "2487 Files", + filesSize: "4.5 GB", + }, + { + id: "5", + icon: "/images/folder.png", + title: "Personal Photos", + totalFiles: "2587 Files", + filesSize: "14 GB", + }, + { + id: "6", + icon: "/images/folder.png", + title: "Mobile Apps", + totalFiles: "55 Files", + filesSize: "4.5 GB", + }, + { + id: "7", + icon: "/images/folder.png", + title: "Important Files", + totalFiles: "200 Files", + filesSize: "6.5 GB", + }, + { + id: "8", + icon: "/images/folder.png", + title: "Angular Template", + totalFiles: "340 Files", + filesSize: "7.5 GB", + }, + { + id: "9", + icon: "/images/folder.png", + title: "Projects", + totalFiles: "387 Files", + filesSize: "4.5 GB", + }, + { + id: "10", + icon: "/images/folder.png", + title: "Documents", + totalFiles: "1572 Files", + filesSize: "7.5 GB", + }, + { + id: "11", + icon: "/images/folder.png", + title: "Media", + totalFiles: "1241 Files", + filesSize: "2.8 GB", + }, + { + id: "12", + icon: "/images/folder.png", + title: "Applications", + totalFiles: "2487 Files", + filesSize: "4.5 GB", + }, +]; + +const AllProjects = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + {ProjectsData.map((project) => ( + + + + + + + + + + + Rename + + + Download + + + Remove + + + + + + folder + + {project.title} + + + + + {project.totalFiles} + {project.filesSize} + + + + ))} + + + ); +}; + +export default AllProjects; diff --git a/components/Apps/FileManager/AllRecentFiles.js b/components/Apps/FileManager/AllRecentFiles.js new file mode 100644 index 0000000..05c975a --- /dev/null +++ b/components/Apps/FileManager/AllRecentFiles.js @@ -0,0 +1,469 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import Tooltip from "@mui/material/Tooltip"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; +import CloudDownloadIcon from "@mui/icons-material/CloudDownload"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Backdrop from "@mui/material/Backdrop"; +import Button from "@mui/material/Button"; +import Fade from "@mui/material/Fade"; +import Modal from "@mui/material/Modal"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; + +// Create Folder Modal Style +const style = { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + maxWidth: 500, + width: "100%", + bgcolor: "background.paper", + boxShadow: 24, + borderRadius: "8px", +}; + +function createData(name, icon, owner, fileSize, listedDate, fileItem) { + return { name, icon, owner, fileSize, listedDate, fileItem }; +} + +const rows = [ + createData( + "Product UI/UX Design", + "/images/folder.png", + "Danielle Thompson", + "0.7 GB", + "Mar 08, 2021", + "02" + ), + createData( + "App Design & Development", + "/images/folder.png", + "ET Themes", + "521 MB", + "Feb 13, 2021", + "01" + ), + createData( + "Ubold Sketch Design", + "/images/folder.png", + "Gary Coley", + "64.2 MB", + "Dec 18, 2020", + "02" + ), + createData( + "Annualreport.pdf", + "/images/folder.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Wireframes", + "/images/folder.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), + createData( + "App Design", + "/images/folder.png", + "ET Agency", + "5 GB", + "Jan 08, 2022", + "15" + ), + createData( + "Web Design & Development", + "/images/folder.png", + "ET Templates", + "13 GB", + "Jan 13, 2022", + "90" + ), + createData( + "React Template", + "/images/folder.png", + "ET Company", + "100 GB", + "Dec 18, 2021", + "120" + ), + createData( + "Material Template", + "/images/folder.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Angular Template", + "/images/folder.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), +]; + +const AllRecentFiles = () => { + // Create Folder Modal + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + // Form + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + + Recent Files + + + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + {/* Create Folder Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Folder Name + + + + + + + + + + + + + + + ); +}; + +export default AllRecentFiles; diff --git a/components/Apps/FileManager/DocumentsFiles.js b/components/Apps/FileManager/DocumentsFiles.js new file mode 100644 index 0000000..6922a2f --- /dev/null +++ b/components/Apps/FileManager/DocumentsFiles.js @@ -0,0 +1,362 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import IconButton from "@mui/material/IconButton"; +import Backdrop from "@mui/material/Backdrop"; +import Button from "@mui/material/Button"; +import Fade from "@mui/material/Fade"; +import Modal from "@mui/material/Modal"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; + +// Create Files Modal Style +const style = { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + maxWidth: 500, + width: "100%", + bgcolor: "background.paper", + boxShadow: 24, + borderRadius: "8px", +}; + +const FilesData = [ + { + id: "1", + icon: "/images/file1.png", + title: "sketch-design.zip", + }, + { + id: "2", + icon: "/images/file2.png", + title: "Compile.png", + }, + { + id: "3", + icon: "/images/file3.png", + title: "Integrations.pdf", + }, + { + id: "4", + icon: "/images/file4.png", + title: "contact @32", + }, + { + id: "5", + icon: "/images/file5.png", + title: "app-Design.doc", + }, + { + id: "6", + icon: "/images/file6.png", + title: "image02.png", + }, + { + id: "7", + icon: "/images/file7.png", + title: "Ubold-sketch.doc", + }, + { + id: "8", + icon: "/images/file8.png", + title: "Annualreport.txt", + }, + { + id: "9", + icon: "/images/file9.png", + title: "Wireframes.xl4", + }, + { + id: "10", + icon: "/images/file10.png", + title: "contact @32.jpg", + }, + { + id: "11", + icon: "/images/file1.png", + title: "sketch-design.zip", + }, + { + id: "12", + icon: "/images/file2.png", + title: "Compile.png", + }, + { + id: "13", + icon: "/images/file3.png", + title: "Integrations.pdf", + }, + { + id: "14", + icon: "/images/file4.png", + title: "contact @32", + }, + { + id: "15", + icon: "/images/file5.png", + title: "app-Design.doc", + }, + { + id: "16", + icon: "/images/file6.png", + title: "image02.png", + }, + { + id: "17", + icon: "/images/file7.png", + title: "Ubold-sketch.doc", + }, + { + id: "18", + icon: "/images/file8.png", + title: "Annualreport.txt", + }, + { + id: "19", + icon: "/images/file9.png", + title: "Wireframes.xl4", + }, + { + id: "20", + icon: "/images/file10.png", + title: "contact @32.jpg", + }, + { + id: "21", + icon: "/images/file5.png", + title: "app-Design.doc", + }, + { + id: "22", + icon: "/images/file6.png", + title: "image02.png", + }, + { + id: "23", + icon: "/images/file7.png", + title: "Ubold-sketch.doc", + }, + { + id: "24", + icon: "/images/file8.png", + title: "Annualreport.txt", + }, +]; + +const DocumentsFiles = () => { + // Create Files Modal + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + // Form + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + + Documents + + + + + + + {FilesData.map((file) => ( + + + Icon + + {file.title} + + + + ))} + + + + {/* Create Files Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Files Name + + + + + + + + + + + + + + + + ); +}; + +export default DocumentsFiles; diff --git a/components/Apps/FileManager/Files.js b/components/Apps/FileManager/Files.js new file mode 100644 index 0000000..fa9d520 --- /dev/null +++ b/components/Apps/FileManager/Files.js @@ -0,0 +1,291 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import IconButton from "@mui/material/IconButton"; +import Backdrop from "@mui/material/Backdrop"; +import Button from "@mui/material/Button"; +import Fade from "@mui/material/Fade"; +import Modal from "@mui/material/Modal"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; + +// Create Files Modal Style +const style = { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + maxWidth: 500, + width: "100%", + bgcolor: "background.paper", + boxShadow: 24, + borderRadius: "8px", +}; + +const FilesData = [ + { + id: "1", + icon: "/images/file1.png", + title: "sketch-design.zip", + }, + { + id: "2", + icon: "/images/file2.png", + title: "Compile.png", + }, + { + id: "3", + icon: "/images/file3.png", + title: "Integrations.pdf", + }, + { + id: "4", + icon: "/images/file4.png", + title: "contact @32", + }, + { + id: "5", + icon: "/images/file5.png", + title: "app-Design.doc", + }, + { + id: "6", + icon: "/images/file6.png", + title: "image02.png", + }, + { + id: "7", + icon: "/images/file7.png", + title: "Ubold-sketch.doc", + }, + { + id: "8", + icon: "/images/file8.png", + title: "Annualreport.txt", + }, + { + id: "9", + icon: "/images/file9.png", + title: "Wireframes.xl4", + }, + { + id: "10", + icon: "/images/file10.png", + title: "contact @32.jpg", + }, +]; + +const Files = () => { + // Create Files Modal + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + // Form + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + + Files + + + + + + + {FilesData.map((file) => ( + + + Icon + + {file.title} + + + + ))} + + + + {/* Create Files Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Files Name + + + + + + + + + + + + + + + + ); +}; + +export default Files; diff --git a/components/Apps/FileManager/ImportantFiles.js b/components/Apps/FileManager/ImportantFiles.js new file mode 100644 index 0000000..d03e613 --- /dev/null +++ b/components/Apps/FileManager/ImportantFiles.js @@ -0,0 +1,470 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import Tooltip from "@mui/material/Tooltip"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; +import CloudDownloadIcon from "@mui/icons-material/CloudDownload"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Backdrop from "@mui/material/Backdrop"; +import Button from "@mui/material/Button"; +import Fade from "@mui/material/Fade"; +import Modal from "@mui/material/Modal"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; + +// Create Folder Modal Style +const style = { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + maxWidth: 500, + width: "100%", + bgcolor: "background.paper", + boxShadow: 24, + borderRadius: "8px", +}; + +function createData(name, icon, owner, fileSize, listedDate, fileItem) { + return { name, icon, owner, fileSize, listedDate, fileItem }; +} + +const rows = [ + createData( + "Product UI/UX Design", + "/images/folder.png", + "Danielle Thompson", + "0.7 GB", + "Mar 08, 2021", + "02" + ), + createData( + "App Design & Development", + "/images/folder.png", + "ET Themes", + "521 MB", + "Feb 13, 2021", + "01" + ), + createData( + "Ubold Sketch Design", + "/images/folder.png", + "Gary Coley", + "64.2 MB", + "Dec 18, 2020", + "02" + ), + createData( + "Annualreport.pdf", + "/images/folder.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Wireframes", + "/images/folder.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), + createData( + "App Design", + "/images/folder.png", + "ET Agency", + "5 GB", + "Jan 08, 2022", + "15" + ), + createData( + "Web Design & Development", + "/images/folder.png", + "ET Templates", + "13 GB", + "Jan 13, 2022", + "90" + ), + createData( + "React Template", + "/images/folder.png", + "ET Company", + "100 GB", + "Dec 18, 2021", + "120" + ), + createData( + "Material Template", + "/images/folder.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Angular Template", + "/images/folder.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), +]; + +const ImportantFiles = () => { + // Create Folder Modal + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + // Form + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + + Important Files + + + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + {/* Create Folder Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Folder Name + + + + + + + + + + + + + + + + ); +}; + +export default ImportantFiles; diff --git a/components/Apps/FileManager/LeftSidebar.js b/components/Apps/FileManager/LeftSidebar.js new file mode 100644 index 0000000..f6c2e77 --- /dev/null +++ b/components/Apps/FileManager/LeftSidebar.js @@ -0,0 +1,236 @@ +import React from "react"; +import { useRouter } from "next/router"; +import Link from "next/link"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import { styled, alpha } from "@mui/material/styles"; +import InputBase from "@mui/material/InputBase"; +import SearchIcon from "@mui/icons-material/Search"; +import LinearProgress, { + linearProgressClasses, +} from "@mui/material/LinearProgress"; +import styles from "@/components/Apps/FileManager/LeftSidebar.module.css"; + +// Search field style +const Search = styled("div")(({ theme }) => ({ + position: "relative", + borderRadius: 100, + backgroundColor: alpha(theme.palette.common.white, 0.15), + "&:hover": { + backgroundColor: alpha(theme.palette.common.white, 0.25), + }, + marginRight: 0, + marginLeft: 0, + marginBottom: 15, + width: "100%", + [theme.breakpoints.up("xs")]: { + marginRight: theme.spacing(1), + width: "auto", + }, +})); + +const SearchIconWrapper = styled("div")(({ theme }) => ({ + color: "#757FEF", + padding: theme.spacing(0, 2), + height: "100%", + position: "absolute", + right: "0", + pointerEvents: "none", + display: "flex", + alignItems: "center", + justifyContent: "center", + zIndex: "5", +})); + +const StyledInputBase = styled(InputBase)(({ theme }) => ({ + color: "inherit", + width: "100%", + "& .MuiInputBase-input": { + backgroundColor: "#F5F7FA", + borderRadius: "30px", + padding: theme.spacing(1.4, 0, 1.4, 2), + }, +})); + +// Storage Status Progress +const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ + height: 5, + borderRadius: 5, + [`&.${linearProgressClasses.colorPrimary}`]: { + backgroundColor: + theme.palette.grey[theme.palette.mode === "light" ? 200 : 800], + }, + [`& .${linearProgressClasses.bar}`]: { + borderRadius: 5, + backgroundColor: theme.palette.mode === "light" ? "#757FEF" : "#308fe8", + }, +})); + +const LeftSidebar = () => { + const router = useRouter(); + + return ( + <> + + + My Drive + + + {/* Search */} + + + + + + + + {/* Nav */} +
    +
  • + + My Drive + + +
      +
    • + Assets +
    • + +
    • + Projects +
    • + +
    • + Personal +
    • + +
    • + Templates +
    • +
    +
  • + +
  • + + Documents + +
  • + +
  • + + Media + +
  • + +
  • + + Recents + +
  • + +
  • + + Important + +
  • + +
  • + + Trash + +
  • +
+ + {/* Storage status */} + + + Storage Status + + + + + + 186.5 GB Used of 120 GB + + +
+ + ); +}; + +export default LeftSidebar; diff --git a/components/Apps/FileManager/LeftSidebar.module.css b/components/Apps/FileManager/LeftSidebar.module.css new file mode 100644 index 0000000..cc9e9b9 --- /dev/null +++ b/components/Apps/FileManager/LeftSidebar.module.css @@ -0,0 +1,73 @@ +.leftNav { + padding: 0; + margin: 0 0 30px; + list-style-type: none; +} +.leftNav li { + margin-bottom: 15px; +} +.leftNav li:last-child { + margin-bottom: 0; +} +.leftNav li a { + text-decoration: none; + color: #260944; + font-size: 14px; + font-weight: 500; +} +.leftNav li a:hover, .leftNav li a:hover i { + color: var(--primaryColor); +} +.leftNav li a i { + color: #818093; + font-size: 18px; + position: relative; + top: 3px; + margin-right: 5px; +} + +.leftNav li ul { + padding: 0; + margin: 15px 0 0; + list-style-type: none; +} +.leftNav li ul li { + position: relative; + padding-left: 45px; +} +.leftNav li ul li::before { + content: ""; + background-color: #818093; + width: 6px; + height: 6px; + border-radius: 100%; + position: absolute; + left: 30px; + top: 6px; +} +.leftNav li ul li a { + color: #5B5B98; + font-size: 13.5px; +} + +/* For RTL Style */ +[dir="rtl"] .leftNav li a i { + margin-right: 0; + margin-left: 5px; +} +[dir="rtl"] .leftNav li ul li { + padding-left: 0; + padding-right: 45px; +} +[dir="rtl"] .leftNav li ul li::before { + left: auto; + right: 25px; +} + +/* For dark mode */ +[class="dark"] .leftNav li a { + color: var(--darkHeadingTextColor); +} +[class="dark"] .leftNav li ul li a { + color: var(--darkBodyTextColor); +} \ No newline at end of file diff --git a/components/Apps/FileManager/MediaFiles.js b/components/Apps/FileManager/MediaFiles.js new file mode 100644 index 0000000..a9db080 --- /dev/null +++ b/components/Apps/FileManager/MediaFiles.js @@ -0,0 +1,294 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import Tooltip from "@mui/material/Tooltip"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; +import CloudDownloadIcon from "@mui/icons-material/CloudDownload"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; + +function createData(name, icon, owner, fileSize, listedDate, fileItem) { + return { name, icon, owner, fileSize, listedDate, fileItem }; +} + +const rows = [ + createData( + "Product UI/UX Design", + "/images/media.png", + "Danielle Thompson", + "0.7 GB", + "Mar 08, 2021", + "02" + ), + createData( + "App Design & Development", + "/images/media.png", + "ET Themes", + "521 MB", + "Feb 13, 2021", + "01" + ), + createData( + "Ubold Sketch Design", + "/images/media.png", + "Gary Coley", + "64.2 MB", + "Dec 18, 2020", + "02" + ), + createData( + "Annualreport.pdf", + "/images/media.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Wireframes", + "/images/media.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), + createData( + "App Design", + "/images/media.png", + "ET Agency", + "5 GB", + "Jan 08, 2022", + "15" + ), + createData( + "Web Design & Development", + "/images/media.png", + "ET Templates", + "13 GB", + "Jan 13, 2022", + "90" + ), + createData( + "React Template", + "/images/media.png", + "ET Company", + "100 GB", + "Dec 18, 2021", + "120" + ), + createData( + "Material Template", + "/images/media.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Angular Template", + "/images/media.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), +]; + +const MediaFiles = () => { + return ( + <> + + + + Media + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + ); +}; + +export default MediaFiles; diff --git a/components/Apps/FileManager/MyDrive.js b/components/Apps/FileManager/MyDrive.js new file mode 100644 index 0000000..59ae144 --- /dev/null +++ b/components/Apps/FileManager/MyDrive.js @@ -0,0 +1,162 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; + +const MyDriveData = [ + { + id: "1", + icon: "/images/folder.png", + title: "Projects", + totalFiles: "387 Files", + filesSize: "4.5 GB", + }, + { + id: "2", + icon: "/images/folder.png", + title: "Documents", + totalFiles: "1572 Files", + filesSize: "7.5 GB", + }, + { + id: "3", + icon: "/images/folder.png", + title: "Media", + totalFiles: "1241 Files", + filesSize: "2.8 GB", + }, + { + id: "4", + icon: "/images/folder.png", + title: "Applications", + totalFiles: "2487 Files", + filesSize: "4.5 GB", + }, +]; + +const MyDrive = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + {MyDriveData.map((dInfo) => ( + + + + + + + + + + + Rename + + + Download + + + Remove + + + + + + folder + + {dInfo.title} + + + + + {dInfo.totalFiles} + {dInfo.filesSize} + + + + ))} + + + ); +}; + +export default MyDrive; diff --git a/components/Apps/FileManager/PersonalFiles.js b/components/Apps/FileManager/PersonalFiles.js new file mode 100644 index 0000000..8f186aa --- /dev/null +++ b/components/Apps/FileManager/PersonalFiles.js @@ -0,0 +1,218 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; + +const PersonalFilesData = [ + { + id: "1", + icon: "/images/folder.png", + title: "Mobile Apps", + totalFiles: "55 Files", + filesSize: "4.5 GB", + }, + { + id: "2", + icon: "/images/folder.png", + title: "Important Files", + totalFiles: "200 Files", + filesSize: "6.5 GB", + }, + { + id: "3", + icon: "/images/folder.png", + title: "Angular Template", + totalFiles: "340 Files", + filesSize: "7.5 GB", + }, + { + id: "4", + icon: "/images/folder.png", + title: "Projects", + totalFiles: "387 Files", + filesSize: "4.5 GB", + }, + { + id: "5", + icon: "/images/folder.png", + title: "Documents", + totalFiles: "1572 Files", + filesSize: "7.5 GB", + }, + { + id: "6", + icon: "/images/folder.png", + title: "ET Template", + totalFiles: "60 Files", + filesSize: "8 GB", + }, + { + id: "7", + icon: "/images/folder.png", + title: "React Template", + totalFiles: "120 Files", + filesSize: "6.5 GB", + }, + { + id: "8", + icon: "/images/folder.png", + title: "Material UI", + totalFiles: "40 Files", + filesSize: "5.5 GB", + }, + { + id: "9", + icon: "/images/folder.png", + title: "WP Themes", + totalFiles: "2487 Files", + filesSize: "4.5 GB", + }, + { + id: "10", + icon: "/images/folder.png", + title: "Personal Photos", + totalFiles: "2587 Files", + filesSize: "14 GB", + }, + { + id: "11", + icon: "/images/folder.png", + title: "Media", + totalFiles: "1241 Files", + filesSize: "2.8 GB", + }, + { + id: "12", + icon: "/images/folder.png", + title: "Applications", + totalFiles: "2487 Files", + filesSize: "4.5 GB", + }, +]; + +const PersonalFiles = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + {PersonalFilesData.map((file) => ( + + + + + + + + + + + Rename + + + Download + + + Remove + + + + + + folder + + {file.title} + + + + + {file.totalFiles} + {file.filesSize} + + + + ))} + + + ); +}; + +export default PersonalFiles; diff --git a/components/Apps/FileManager/RecentFiles.js b/components/Apps/FileManager/RecentFiles.js new file mode 100644 index 0000000..b1da4ca --- /dev/null +++ b/components/Apps/FileManager/RecentFiles.js @@ -0,0 +1,433 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import Tooltip from "@mui/material/Tooltip"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; +import CloudDownloadIcon from "@mui/icons-material/CloudDownload"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Backdrop from "@mui/material/Backdrop"; +import Button from "@mui/material/Button"; +import Fade from "@mui/material/Fade"; +import Modal from "@mui/material/Modal"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; + +// Create Folder Modal Style +const style = { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + maxWidth: 500, + width: "100%", + bgcolor: "background.paper", + boxShadow: 24, + borderRadius: "8px", +}; + +function createData(name, icon, owner, fileSize, listedDate, fileItem) { + return { name, icon, owner, fileSize, listedDate, fileItem }; +} + +const rows = [ + createData( + "Product UI/UX Design", + "/images/folder.png", + "Danielle Thompson", + "0.7 GB", + "Mar 08, 2021", + "02" + ), + createData( + "App Design & Development", + "/images/folder.png", + "ET Themes", + "521 MB", + "Feb 13, 2021", + "01" + ), + createData( + "Ubold Sketch Design", + "/images/folder.png", + "Gary Coley", + "64.2 MB", + "Dec 18, 2020", + "02" + ), + createData( + "Annualreport.pdf", + "/images/folder.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Wireframes", + "/images/folder.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), +]; + +const RecentFiles = () => { + // Create Folder Modal + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + // Form + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + + Recent Files + + + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + {/* Create Folder Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Folder Name + + + + + + + + + + + + + + + + ); +}; + +export default RecentFiles; diff --git a/components/Apps/FileManager/TemplateFiles.js b/components/Apps/FileManager/TemplateFiles.js new file mode 100644 index 0000000..5104dc5 --- /dev/null +++ b/components/Apps/FileManager/TemplateFiles.js @@ -0,0 +1,298 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import Tooltip from "@mui/material/Tooltip"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; +import CloudDownloadIcon from "@mui/icons-material/CloudDownload"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; + +function createData(name, icon, owner, fileSize, listedDate, fileItem) { + return { name, icon, owner, fileSize, listedDate, fileItem }; +} + +const rows = [ + createData( + "Product UI/UX Design", + "/images/folder.png", + "Danielle Thompson", + "0.7 GB", + "Mar 08, 2021", + "02" + ), + createData( + "App Design & Development", + "/images/folder.png", + "ET Themes", + "521 MB", + "Feb 13, 2021", + "01" + ), + createData( + "Ubold Sketch Design", + "/images/folder.png", + "Gary Coley", + "64.2 MB", + "Dec 18, 2020", + "02" + ), + createData( + "Annualreport.pdf", + "/images/folder.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Wireframes", + "/images/folder.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), + createData( + "App Design", + "/images/folder.png", + "ET Agency", + "5 GB", + "Jan 08, 2022", + "15" + ), + createData( + "Web Design & Development", + "/images/folder.png", + "ET Templates", + "13 GB", + "Jan 13, 2022", + "90" + ), + createData( + "React Template", + "/images/folder.png", + "ET Company", + "100 GB", + "Dec 18, 2021", + "120" + ), + createData( + "Material Template", + "/images/folder.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Angular Template", + "/images/folder.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), +]; + +const TemplateFiles = () => { + return ( + <> + + + + Templates + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + ); +}; + +export default TemplateFiles; diff --git a/components/Apps/FileManager/TrashFiles.js b/components/Apps/FileManager/TrashFiles.js new file mode 100644 index 0000000..8b39c45 --- /dev/null +++ b/components/Apps/FileManager/TrashFiles.js @@ -0,0 +1,274 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import Tooltip from "@mui/material/Tooltip"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; + +function createData(name, icon, owner, fileSize, listedDate, fileItem) { + return { name, icon, owner, fileSize, listedDate, fileItem }; +} + +const rows = [ + createData( + "Product UI/UX Design", + "/images/folder.png", + "Danielle Thompson", + "0.7 GB", + "Mar 08, 2021", + "02" + ), + createData( + "App Design & Development", + "/images/folder.png", + "ET Themes", + "521 MB", + "Feb 13, 2021", + "01" + ), + createData( + "Ubold Sketch Design", + "/images/folder.png", + "Gary Coley", + "64.2 MB", + "Dec 18, 2020", + "02" + ), + createData( + "Annualreport.pdf", + "/images/folder.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Wireframes", + "/images/folder.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), + createData( + "App Design", + "/images/folder.png", + "ET Agency", + "5 GB", + "Jan 08, 2022", + "15" + ), + createData( + "Web Design & Development", + "/images/folder.png", + "ET Templates", + "13 GB", + "Jan 13, 2022", + "90" + ), + createData( + "React Template", + "/images/folder.png", + "ET Company", + "100 GB", + "Dec 18, 2021", + "120" + ), + createData( + "Material Template", + "/images/folder.png", + "Cooper Sharwood", + "12.5 GB", + "Nov 25, 2020", + "05" + ), + createData( + "Angular Template", + "/images/folder.png", + "Jasper Rigg", + "8.3 MB", + "Nov 25, 2019", + "03" + ), +]; + +const TrashFiles = () => { + return ( + <> + + + + Trash Files + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + ))} + +
+
+
+ + ); +}; + +export default TrashFiles; diff --git a/components/Apps/ToDoLists.js b/components/Apps/ToDoLists.js new file mode 100644 index 0000000..93f76df --- /dev/null +++ b/components/Apps/ToDoLists.js @@ -0,0 +1,926 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import IconButton from "@mui/material/IconButton"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Tooltip from "@mui/material/Tooltip"; +import Grid from "@mui/material/Grid"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; +import Avatar from "@mui/material/Avatar"; +import Checkbox from "@mui/material/Checkbox"; +const label = { inputProps: { "aria-label": "Checkbox demo" } }; +import { styled } from "@mui/material/styles"; +import Dialog from "@mui/material/Dialog"; +import DialogTitle from "@mui/material/DialogTitle"; +import CloseIcon from "@mui/icons-material/Close"; + +// Add Task Modal +const BootstrapDialog = styled(Dialog)(({ theme }) => ({ + "& .MuiDialogContent-root": { + padding: theme.spacing(2), + }, + "& .MuiDialogActions-root": { + padding: theme.spacing(1), + }, +})); + +function BootstrapDialogTitle(props) { + const { children, onClose, ...other } = props; + + return ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Add Task Modal + +function ToDoList(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +ToDoList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + name, + url, + startDate, + endDate, + status, + badgeClass, + completion, + priority +) { + return { + name, + url, + startDate, + endDate, + status, + badgeClass, + completion, + priority, + }; +} + +const rows = [ + createData( + "Public Beta Release", + "/images/user1.png", + "1 Jan 2022", + "1 Apr 2022", + "Completed", + "successBadge", + "10/10", + "High" + ), + createData( + "Fix Platform Errors", + "/images/user2.png", + "1 Mar 2022", + "1 May 2022", + "Completed", + "successBadge", + "10/10", + "High" + ), + createData( + "Launch our Mobile App", + "/images/user3.png", + "15 Apr 2022", + "15 Jun 2022", + "On Going", + "primaryBadge", + "7/10", + "Medium" + ), + createData( + "Add the New Pricing Page", + "/images/user4.png", + "15 May 2022", + "15 Jun 2022", + "Pending", + "dangerBadge", + "1/10", + "Low" + ), + createData( + "Redesign New Online Shop", + "/images/user5.png", + "15 Jun 2022", + "15 Aug 2022", + "On Going", + "primaryBadge", + "0/10", + "Low" + ), + createData( + "Material Ui Design", + "/images/user6.png", + "15 Jul 2022", + "15 Sep 2022", + "On Going", + "primaryBadge", + "7/10", + "Medium" + ), + createData( + "Add Progress Track", + "/images/user7.png", + "15 Mar 2022", + "15 May 2022", + "Completed", + "successBadge", + "10/10", + "High" + ), + createData( + "Web Design", + "/images/user8.png", + "15 Aug 2022", + "15 Dec 2022", + "On Going", + "primaryBadge", + "9/10", + "High" + ), + createData( + "Web Development", + "/images/user9.png", + "15 Nov 2022", + "15 Jan 2023", + "On Going", + "primaryBadge", + "8/10", + "High" + ), + createData( + "React App Development", + "/images/user10.png", + "15 Jan 2022", + "15 Mar 2022", + "Completed", + "successBadge", + "10/10", + "High" + ), + createData( + "eCommerce Development", + "/images/user11.png", + "15 Mar 2022", + "15 May 2022", + "On Going", + "primaryBadge", + "8/10", + "Medium" + ), + createData( + "App Development", + "/images/user12.png", + "15 May 2022", + "15 Jul 2022", + "On Going", + "primaryBadge", + "5/10", + "Medium" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +const ToDoLists = () => { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(8); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + // Add task modal + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + // End Add Task Modal + + return ( + <> + + + + My Tasks + + + + + + + + + + + Name + + + + Assigned + + + + Start Date + + + + End Date + + + + Status + + + + Completion + + + + Priority + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + {row.name} + + + + + + + + {row.startDate} + + + + {row.endDate} + + + + {row.status} + + + + {row.completion} + + + + {row.priority} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + {/* Add task modal */} + + + + + Add Task + + + + + + + + + + + + + Task + + + + + + + + Member + + + + + + + + Start Date + + + + + + + + End Date + + + + + + + + Status + + + + + + + + Completion + + + + + + + + Priority + + + + + + + + + + + + + + + + + ); +}; + +export default ToDoLists; diff --git a/components/Authentication/Authentication.module.css b/components/Authentication/Authentication.module.css new file mode 100644 index 0000000..342723d --- /dev/null +++ b/components/Authentication/Authentication.module.css @@ -0,0 +1,244 @@ +.favicon { + position: relative; + top: 5px; + margin-left: 10px; +} + +/* googleBtn */ +.googleBtn { + background: #FFFFFF; + border: 1px solid #EDEFF5; + border-radius: 8px; + display: inline-block; + width: 100%; + padding: 16px 25px 16px 55px; + color: #260944; + font-weight: 500; + font-size: 14px; + text-decoration: none; + transition: .6s; + -webkit-transition: .6s; + margin-right: 7px; + position: relative; +} +.googleBtn:hover { + box-shadow: rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px; +} +.googleBtn img { + position: absolute; + top: 15px; + left: 25px; + margin-right: 5px; +} + +/* Facebook Btn */ +.fbBtn { + background: #4776D0; + border: 1px solid #4776D0; + border-radius: 8px; + display: inline-block; + width: 100%; + padding: 16px 25px 16px 55px; + color: #fff !important; + font-weight: 500; + font-size: 14px; + text-decoration: none; + transition: .6s; + -webkit-transition: .6s; + margin-left: 7px; + position: relative; +} +.fbBtn:hover { + box-shadow: rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px; +} +.fbBtn img { + position: absolute; + top: 15px; + left: 25px; + margin-right: 5px; +} + +/* or */ +.or { + text-align: center; + position: relative; + margin-bottom: 30px; + color: #777E90; + font-weight: 500; + z-index: 0; +} +.or:before { + content: ""; + background: #E2E8F0; + position: absolute; + width: 100%; + height: 1px; + left: 0; + top: 10px; + z-index: -1; +} +.or span { + background-color: #F5F5F5; + display: inline-block; + padding: 0 10px; +} + +/* Lock screen */ +.profileBox { + background-color: #fff; + border-radius: 10px; + position: relative; +} +.header { + background: #EAEDFB; + border-radius: 10px 10px 0px 0px; + padding: 30px 15px 50px; + position: relative; +} +.headerContent { + max-width: 300px; + position: relative; + z-index: 1; +} +.header h1 { + margin: 0 0 10px; + font-size: 18px; + color: #757FEF; + font-weight: 500; +} +.header p { + margin: 0; + font-size: 14px; + color: #757FEF; +} +.header img { + position: absolute; + bottom: 0; + right: 0; +} + +.profileInfo { + position: relative; + text-align: center; + margin-bottom: 10px; +} +.profileInfo img { + width: 60px; + height: 60px; + border: 5px solid #fff; + border-radius: 100%; + box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px; +} +.profileInfo h3 { + margin: 5px 0 0; + font-size: 14px; +} + +@media only screen and (max-width: 767px) { + .googleBtn { + padding: 13px 15px 13px 40px; + font-size: 12px; + margin-right: 5px; + } + .googleBtn img { + left: 15px; + top: 10px; + } + .fbBtn { + padding: 13px 15px 13px 40px; + font-size: 12px; + margin-left: 5px; + } + .fbBtn img { + left: 15px; + top: 10px; + } +} + +/* For RTL Style */ +[dir="rtl"] .favicon { + margin-left: 0; + margin-right: 10px; +} + +/* googleBtn */ +[dir="rtl"] .googleBtn { + margin-right: 0; + margin-left: 7px; + padding: 16px 55px 16px 25px; +} +[dir="rtl"] .googleBtn img { + left: auto; + right: 25px; + margin-right: 0; + margin-left: 5px; +} + +/* Facebook Btn */ +[dir="rtl"] .fbBtn { + margin-left: 0; + margin-right: 7px; + padding: 16px 55px 16px 25px; +} +[dir="rtl"] .fbBtn img { + left: auto; + right: 25px; + margin-right: 0; + margin-left: 5px; +} + +/* or */ +[dir="rtl"] .or:before { + left: auto; + right: 0; +} + +/* Lock screen */ +[dir="rtl"] .header img { + right: auto; + left: 0; +} + +/* For dark mode */ +[class="dark"] .or { + color: #fff; +} +[class="dark"] .or:before { + background: var(--borderColor); +} +[class="dark"] .or span { + background-color: #000; +} + +/* googleBtn */ +[class="dark"] .googleBtn { + background: var(--colorBlack); + border: 1px solid var(--colorBlack); +} + +/* Lock screen */ +[class="dark"] .header { + background: #101010; +} + + +@media only screen and (max-width: 767px) { + [dir="rtl"] .googleBtn { + margin-right: 0; + margin-left: 5px; + } + [dir="rtl"] .googleBtn img { + left: auto; + right: 15px; + top: 14px; + } + [dir="rtl"] .fbBtn { + margin-left: 0; + margin-right: 5px; + } + [dir="rtl"] .fbBtn img { + left: auto; + right: 15px; + top: 14px; + } +} \ No newline at end of file diff --git a/components/Authentication/ForgotPasswordForm.js b/components/Authentication/ForgotPasswordForm.js new file mode 100644 index 0000000..2cbcb86 --- /dev/null +++ b/components/Authentication/ForgotPasswordForm.js @@ -0,0 +1,121 @@ +import React from "react"; +import Link from "next/link"; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import { Box } from "@mui/system"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import styles from "@/components/Authentication/Authentication.module.css"; + +const ForgotPasswordForm = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> +
+ + + + + Forgot Password?{" "} + favicon + + + + Enter your email and we′ll send you instructions to reset your + password + + + + + + + + Email + + + + + + + + + + + + + Back to Sign in + + + + + +
+ + ); +}; + +export default ForgotPasswordForm; diff --git a/components/Authentication/LockScreenForm.js b/components/Authentication/LockScreenForm.js new file mode 100644 index 0000000..f65d1b7 --- /dev/null +++ b/components/Authentication/LockScreenForm.js @@ -0,0 +1,119 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import { Box } from "@mui/system"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import styles from "@/components/Authentication/Authentication.module.css"; + +const LockScreenForm = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> +
+ + + + +
+
+
+

Welcome to admash Dashboard!

+

+ Hello Andrew Burns, enter your password to unlock the + screen ! +

+
+ Working on table +
+
+ + +
+ Profile +

Andrew Burns

+
+ + + + + Password + + + + + + + + + +
+
+
+
+
+
+ + ); +}; + +export default LockScreenForm; diff --git a/components/Authentication/SignInForm.js b/components/Authentication/SignInForm.js new file mode 100644 index 0000000..f5bd1fe --- /dev/null +++ b/components/Authentication/SignInForm.js @@ -0,0 +1,189 @@ +import React from "react"; +import Link from "next/link"; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import { Box } from "@mui/system"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import FormControlLabel from "@mui/material/FormControlLabel"; +import Checkbox from "@mui/material/Checkbox"; +import styles from "@/components/Authentication/Authentication.module.css"; + +const SignInForm = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> +
+ + + + + Sign In{" "} + favicon + + + + Already have an account?{" "} + + Sign up + + + + + + + Sign in with Google + + + + + Sign in with Facebook + + + +
+ or +
+ + + + + + + Email + + + + + + + + Password + + + + + + + + + + + } + label="Remember me." + /> + + + + + Forgot your password? + + + + + + +
+
+
+
+ + ); +}; + +export default SignInForm; diff --git a/components/Authentication/SignUpForm.js b/components/Authentication/SignUpForm.js new file mode 100644 index 0000000..b1f68a7 --- /dev/null +++ b/components/Authentication/SignUpForm.js @@ -0,0 +1,240 @@ +import React from "react"; +import Link from "next/link"; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import { Box } from "@mui/system"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import FormControlLabel from "@mui/material/FormControlLabel"; +import Checkbox from "@mui/material/Checkbox"; +import styles from "@/components/Authentication/Authentication.module.css"; + +const SignUpForm = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> +
+ + + + + Get’s started.{" "} + favicon + + + + Already have an account?{" "} + + Sign in + + + + + + Sign in with Google + + + + Sign in with Facebook + + + +
+ or +
+ + + + + + + First Name + + + + + + + + Last Name + + + + + + + + Email + + + + + + + + Password + + + + + + + + + + + } + label="Remember me." + /> + + + + + Forgot your password? + + + + + + +
+
+
+
+ + ); +}; + +export default SignUpForm; diff --git a/components/ContactList/ActivityTimeline/ActivityTimeline.module.css b/components/ContactList/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..5d8b844 --- /dev/null +++ b/components/ContactList/ActivityTimeline/ActivityTimeline.module.css @@ -0,0 +1,40 @@ +.timelineList .tList { + position: relative; + margin-bottom: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #F7FAFF; + display: flex; + align-items: center; + justify-content: space-between; +} +.timelineList .tList:last-child { + border: none; + padding-bottom: 0; + margin-bottom: 0; +} +.timelineList .tList .content { + display: flex; + align-items: center; +} +.timelineList .tList .content img { + margin-right: 10px; + width: 27px; +} +.timelineList .tList .content h5 { + margin: 0; + color: #5B5B98; + font-size: 13px; + font-weight: 500; +} +.timelineList .tList .date { + color: #A9A9C8; + font-size: 12px; + margin: 0; +} + +@media only screen and (min-width: 1800px) { + .timelineList .tList { + margin-bottom: 16.5px; + padding-bottom: 16.5px; + } +} \ No newline at end of file diff --git a/components/ContactList/ActivityTimeline/index.js b/components/ContactList/ActivityTimeline/index.js new file mode 100644 index 0000000..265ecda --- /dev/null +++ b/components/ContactList/ActivityTimeline/index.js @@ -0,0 +1,158 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import styles from "@/components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css"; + +const ActivityTimelineData = [ + { + id: "1", + image: '/images/pdf-icon.png', + title: "Donald updated the status", + time: "54 min ago", + }, + { + id: "2", + image: '/images/man.png', + title: "Design new UI and check sales", + time: "10 hours ago", + }, + { + id: "3", + title: "James Bangs Client Meeting", + image: '/images/small-product-img.png', + time: "5 min ago", + }, + { + id: "4", + title: "Joseph Rust opened new showcase", + image: '/images/small-product-img2.png', + time: "10 min ago", + }, + { + id: "5", + title: "Brust opened new showcase", + image: '/images/small-product-img3.png', + time: "15 min ago", + }, + { + id: "6", + title: "Create a new project for client", + image: '/images/man.png', + time: "20 min ago", + }, +]; + +const ActivityTimeline = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 6).map((timeline) => ( +
+
+ Icon +
{timeline.title}
+
+

{timeline.time}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/ContactList/Features.js b/components/ContactList/Features.js new file mode 100644 index 0000000..c117228 --- /dev/null +++ b/components/ContactList/Features.js @@ -0,0 +1,87 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; + +const FeaturesData = [ + { + id: "1", + subTitle: "Completed Projects", + title: "24k", + image: "/images/users-icon.png", + }, + { + id: "2", + subTitle: "Pending Projects", + title: "17", + image: "/images/graph-icon.png", + }, + { + id: "3", + subTitle: "Total Revenue", + title: "16.2M", + image: "/images/work-icon.png", + } +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + Icon + + + + + {feature.subTitle} + + + {feature.title} + + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/ContactList/MyTasks.js b/components/ContactList/MyTasks.js new file mode 100644 index 0000000..f4375d7 --- /dev/null +++ b/components/ContactList/MyTasks.js @@ -0,0 +1,414 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import IconButton from "@mui/material/IconButton"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; + +function MyTask(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +MyTask.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(name, startDate, endDate, status, badgeClass, budget) { + return { + name, + startDate, + endDate, + status, + badgeClass, + budget + }; +} + +const rows = [ + createData( + "Public Beta Release", + "1 Jan 2022", + "1 Apr 2022", + "Completed", + "successBadge", + "$1250" + ), + createData( + "Fix Platform Errors", + "1 Mar 2022", + "1 May 2022", + "Completed", + "successBadge", + "$1550" + ), + createData( + "Launch our Mobile App", + "15 Apr 2022", + "15 Jun 2022", + "On Going", + "primaryBadge", + "$2500" + ), + createData( + "Add the New Pricing Page", + "15 May 2022", + "15 Jun 2022", + "Pending", + "dangerBadge", + "$100" + ), + createData( + "Redesign New Online Shop", + "15 Jun 2022", + "15 Aug 2022", + "On Going", + "primaryBadge", + "$1000" + ), + createData( + "Material Ui Design", + "15 Jul 2022", + "15 Sep 2022", + "On Going", + "primaryBadge", + "$2200" + ), + createData( + "Add Progress Track", + "15 Mar 2022", + "15 May 2022", + "Completed", + "successBadge", + "$1400" + ), + createData( + "Web Design", + "15 Aug 2022", + "15 Dec 2022", + "On Going", + "primaryBadge", + "$4000" + ), + createData( + "Web Development", + "15 Nov 2022", + "15 Jan 2023", + "On Going", + "primaryBadge", + "$400" + ), + createData( + "React App Development", + "15 Jan 2022", + "15 Mar 2022", + "Completed", + "successBadge", + "$1200" + ), + createData( + "eCommerce Development", + "15 Mar 2022", + "15 May 2022", + "On Going", + "primaryBadge", + "$250" + ), + createData( + "App Development", + "15 May 2022", + "15 Jul 2022", + "On Going", + "primaryBadge", + "$3400" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +const MyTasks = () => { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(8); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + My Tasks + + + + + + + + + Name + + + + Start Date + + + + End Date + + + + Status + + + + Budget + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.name} + + + + {row.startDate} + + + + {row.endDate} + + + + {row.status} + + + + {row.budget} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default MyTasks; diff --git a/components/ContactList/Overview.js b/components/ContactList/Overview.js new file mode 100644 index 0000000..ebf7cbf --- /dev/null +++ b/components/ContactList/Overview.js @@ -0,0 +1,172 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const Overview = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "Income", + data: [20, 35, 20, 40, 40, 50, 25, 25, 35, 30, 25, 40], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#90C6E0"], + plotOptions: { + bar: { + columnWidth: "30%", + distributed: true, + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + show: false, + }, + xaxis: { + categories: [ + ["Jan"], + ["Feb"], + ["Mar"], + ["Api"], + ["May"], + ["Jun"], + ["Jul"], + ["Aug"], + ["Sep"], + ["Oct"], + ["Nov"], + ["Dec"], + ], + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + }, + yaxis: { + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + axisBorder: { + show: false, + colors: "#f6f6f7", + }, + }, + fill: { + opacity: 1, + }, + tooltip: { + y: { + formatter: function (val) { + return "$" + val + "k"; + }, + }, + }, + grid: { + show: true, + borderColor: "#EDEFF5", + strokeDashArray: 5, + }, + }; + + return ( + <> + + + + Overview + + + + + Select + + + + + + + + + + ); +}; + +export default Overview; diff --git a/components/ContactList/PersonalInformation/index.js b/components/ContactList/PersonalInformation/index.js new file mode 100644 index 0000000..7ef4fbc --- /dev/null +++ b/components/ContactList/PersonalInformation/index.js @@ -0,0 +1,96 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; + +const personalInfo = [ + { + title: "Full Name :", + text: "Andrew Burns", + }, + { + title: "Mobile :", + text: "(123) 123 1234", + }, + { + title: "Email :", + text: "andrewburns@gmail.com", + }, + { + title: "Location : ", + text: "USA", + }, + { + title: "Experience : ", + text: "Back end Developer", + }, +]; + +const PersonalInformation = () => { + return ( + <> + + + + Personal Information + + + + + + About Me: + + + + Hi I'm Andrew Burns,has been the industry's standard dummy text ever + since the 1500s, when an unknown printer took a galley of type. + + + {personalInfo.map((info) => ( + + + {info.title} + + + {info.text} + + ))} + + + + ); +}; + +export default PersonalInformation; diff --git a/components/ContactList/ProfileInfo/index.js b/components/ContactList/ProfileInfo/index.js new file mode 100644 index 0000000..49d3475 --- /dev/null +++ b/components/ContactList/ProfileInfo/index.js @@ -0,0 +1,21 @@ +import React from "react"; +import styles from "@/components/Dashboard/Analytics/Welcome/Welcome.module.css"; + +const ProfileInfo = () => { + return ( + <> +
+
+

Welcome to admash Dashboard!

+

+ You have done 68% 😎 more sales today. Check your new badge in + your profile. +

+
+ shape +
+ + ); +}; + +export default ProfileInfo; diff --git a/components/Dashboard/Analytics/ActivityTimeline/ActivityTimeline.module.css b/components/Dashboard/Analytics/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..5e5dcdb --- /dev/null +++ b/components/Dashboard/Analytics/ActivityTimeline/ActivityTimeline.module.css @@ -0,0 +1,90 @@ +.timelineList .tList { + position: relative; + padding-left: 20px; + margin-bottom: 9px; + padding-bottom: 9px; + border-bottom: 1px solid #F7FAFF; +} +.timelineList .tList:last-child { + border: none; + padding-bottom: 0; + margin-bottom: 0; +} +.timelineList .tList::before { + content: ''; + background: linear-gradient(149.1deg, #99B8F3 14.61%, #177FCB 130.18%); + box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25); + width: 10px; + height: 10px; + border-radius: 100%; + position: absolute; + top: 4px; + left: 0; +} +.timelineList .tList::after { + content: ''; + background: #F7FAFF; + width: 3px; + height: 75px; + border-radius: 5px; + position: absolute; + top: 18px; + left: 3px; +} +.timelineList .tList h4 { + font-weight: 500; + font-size: 14px; + margin: 0 0 8px; +} +.timelineList .tList .content { + display: flex; + align-items: center; + margin-bottom: 10px; +} +.timelineList .tList .content img { + margin-right: 10px; + width: 27px; +} +.timelineList .tList .content h5 { + margin: 0; + color: #5B5B98; + font-size: 13px; + font-weight: 500; +} +.timelineList .tList .date { + color: #A9A9C8; + font-size: 12px; + margin: 0; +} + +/* For RTL Style */ +[dir="rtl"] .timelineList .tList { + padding-left: 0; + padding-right: 20px; +} +[dir="rtl"] .timelineList .tList::before { + left: auto; + right: 0; +} +[dir="rtl"] .timelineList .tList::after { + left: auto; + right: 3px; +} +[dir="rtl"] .timelineList .tList .content img { + margin-right: 0; + margin-left: 10px; +} + +/* For dark mode */ +[class="dark"] .timelineList .tList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .timelineList .tList:last-child { + border-bottom: none; +} +[class="dark"] .timelineList .tList .content h5 { + color: var(--darkBodyTextColor); +} +[class="dark"] .timelineList .tList::after { + background: var(--borderColor); +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/ActivityTimeline/index.js b/components/Dashboard/Analytics/ActivityTimeline/index.js new file mode 100644 index 0000000..a404d3a --- /dev/null +++ b/components/Dashboard/Analytics/ActivityTimeline/index.js @@ -0,0 +1,151 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import styles from "../../Analytics/ActivityTimeline/ActivityTimeline.module.css"; + +const ActivityTimelineData = [ + { + id: "1", + title: "8 Invoices have been paid", + subTitle: "Invoices have been paid to the company.", + icon: "/images/pdf-icon.png", + date: "11:47 PM Wednesday", + }, + { + id: "2", + title: "8 Invoices have been paid", + subTitle: "Create a new project for client Johnson John", + icon: "/images/man.png", + date: "April, 18", + }, + { + id: "3", + title: "Added new style collection", + subTitle: "Product uploaded By Nesta Technologies", + icon: "/images/small-product-img.png", + date: "02:14 PM Today", + }, + { + id: "4", + title: "Brust opened new showcase", + subTitle: "Product uploaded By Nesta Technologies", + icon: "/images/small-product-img2.png", + date: "5 Min Ago", + }, +]; + +const ActivityTimeline = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 4).map((timeline) => ( +
+

{timeline.title}

+
+ Icon +
{timeline.subTitle}
+
+

{timeline.date}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/Dashboard/Analytics/AudienceOverview.js b/components/Dashboard/Analytics/AudienceOverview.js new file mode 100644 index 0000000..ea8661c --- /dev/null +++ b/components/Dashboard/Analytics/AudienceOverview.js @@ -0,0 +1,112 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import Chart from "chart.js/auto"; +import { Line } from "react-chartjs-2"; + +const labels = ["Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri"]; + +const data = { + labels: labels, + datasets: [ + { + label: "New Visitors", + backgroundColor: "#6F52ED", + borderColor: "#6F52ED", + data: [30, 40, 30, 80, 65, 70, 30], + }, + { + label: "Unique Visitors", + backgroundColor: "#2DB6F5", + borderColor: "#2DB6F5", + data: [55, 60, 55, 45, 35, 55, 60], + }, + { + label: "Previous Visitors", + backgroundColor: "#F765A3", + borderColor: "#F765A3", + data: [45, 30, 40, 30, 20, 30, 40], + }, + ], +}; + +const options = { + plugins: { + legend: { + labels: { + color: '#5B5B98' + } + }, + } +} + +const AudienceOverview = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Audience Overview + + + + Select + + + + + + + + + ); +}; + +export default AudienceOverview; diff --git a/components/Dashboard/Analytics/BrowserUsedTrafficReports.js b/components/Dashboard/Analytics/BrowserUsedTrafficReports.js new file mode 100644 index 0000000..ab87f17 --- /dev/null +++ b/components/Dashboard/Analytics/BrowserUsedTrafficReports.js @@ -0,0 +1,503 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import ProgressBar from "@ramonak/react-progress-bar"; + +function BrowserUsedTrafficReport(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +BrowserUsedTrafficReport.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + browser, + users, + usersProgress, + transactions, + transactionsProgress, + change, + iconName, + badgeClass +) { + return { + browser, + users, + usersProgress, + transactions, + transactionsProgress, + change, + iconName, + badgeClass, + }; +} + +const rows = [ + createData( + "Safari Browser", + "1051", + "18", + "43080", + "(35%)", + "14.80%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "UC Browser", + "8075", + "13", + "5466", + "(12%)", + "11.50%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Google Chrome", + "59802", + "38", + "17654", + "(19%)", + "8.69%", + "ri-arrow-down-s-fill", + "dangerBadge" + ), + createData( + "Mozilla Firefox", + "21854", + "24", + "87759", + "(52%)", + "22.06%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Opera Mini", + "853", + "35", + "566", + "(52%)", + "52.80%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Microsoft Edge", + "1844", + "10", + "399", + "(60%)", + "60.00%", + "ri-arrow-down-s-fill", + "dangerBadge" + ), + createData( + "Brave", + "15844", + "55", + "455", + "(55%)", + "55.00%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Vivaldi", + "11844", + "50", + "655", + "(50%)", + "50.00%", + "ri-arrow-up-s-fill", + "successBadge" + ), + createData( + "Other Browser", + "5907", + "7", + "4576", + "(10%)", + "16.25%", + "ri-arrow-up-s-fill", + "successBadge" + ), +].sort((a, b) => (a.browser < b.browser ? -1 : 1)); + +const BrowserUsedTrafficReports = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(4); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + Browser Used & Traffic Reports + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Browser + + + + Users + + + + Transactions + + + + % Change + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.browser} + + + + + {row.users} + + {row.usersProgress}% + + + + + + + + {row.transactions}{" "} + + {row.transactionsProgress} + + + + + + {row.change}{" "} + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default BrowserUsedTrafficReports; diff --git a/components/Dashboard/Analytics/Features.js b/components/Dashboard/Analytics/Features.js new file mode 100644 index 0000000..dc1b58a --- /dev/null +++ b/components/Dashboard/Analytics/Features.js @@ -0,0 +1,114 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import TrendingUpIcon from "@mui/icons-material/TrendingUp"; +import TrendingDownIcon from "@mui/icons-material/TrendingDown"; + +const FeaturesData = [ + { + id: "1", + subTitle: "Sessions", + title: "24k", + image: "/images/users-icon.png", + icon: , + growthText: "9.5% new session", + color: "successColor", + }, + { + id: "2", + subTitle: "Total Orders", + title: "155K", + image: "/images/graph-icon.png", + icon: , + growthText: "7.5% vs. previous month", + color: "dangerColor", + }, + { + id: "3", + subTitle: "Total Earning", + title: "$50.5M", + image: "/images/work-icon.png", + icon: , + growthText: "3.5% bounce rate", + color: "successColor", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + Icon + + + + + {feature.subTitle} + + + {feature.title} + + + + + + + + {feature.icon} + + {feature.growthText} + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/Analytics/Gender/Gender.module.css b/components/Dashboard/Analytics/Gender/Gender.module.css new file mode 100644 index 0000000..61c468b --- /dev/null +++ b/components/Dashboard/Analytics/Gender/Gender.module.css @@ -0,0 +1,61 @@ +.infoList { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #F7FAFF; + margin-bottom: 13px; + padding-bottom: 13px; + position: relative; + padding-left: 20px; +} +.infoList::before { + content: ''; + background: #00B69B; + box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25); + width: 10px; + height: 10px; + border-radius: 100%; + position: absolute; + left: 0; + top: 15px; +} +.infoList:last-child { + border-bottom: none; + padding-bottom: 0; +} +.infoList p { + font-size: 13px; + margin: 0; +} +.infoList .rightContent { + display: flex; + align-items: center; + justify-content: space-between; +} +.infoList h5 { + margin: 0; + font-size: 14px; + color: #260944; +} +.infoList .rightContent i { + position: relative; + top: 2px; +} + +/* For RTL Style */ +[dir="rtl"] .infoList { + padding-left: 0; + padding-right: 20px; +} +[dir="rtl"] .infoList::before { + left: auto; + right: 0; +} + +/* For dark mode */ +[class="dark"] .infoList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .infoList:last-child { + border-bottom: none; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/Gender/index.js b/components/Dashboard/Analytics/Gender/index.js new file mode 100644 index 0000000..d4b7d02 --- /dev/null +++ b/components/Dashboard/Analytics/Gender/index.js @@ -0,0 +1,110 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "@/components/Dashboard/Analytics/Gender/Gender.module.css"; + +class Gender extends Component { + constructor(props) { + super(props); + this.state = { + series: [50], + options: { + plotOptions: { + radialBar: { + hollow: { + size: "50%", + }, + track: { + background: "rgba(0, 182, 155, 0.5)", + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 4, + color: "#00B69B", + fontSize: "16px", + fontWeight: "500", + }, + }, + }, + }, + fill: { + colors: ["#00B69B"], + }, + }, + }; + } + render() { + return ( + <> + + + + Gender + + + +
+
+
+

Male

+
45,347
+
+
+

+ 70% +

+
+
+ +
+
+

Female

+
20,738
+
+
+

+ 30% +

+
+
+
+ + +
+ + ); + } +} + +export default Gender; diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/Conversions.js b/components/Dashboard/Analytics/ImpressionGoalConversions/Conversions.js new file mode 100644 index 0000000..8146a41 --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/Conversions.js @@ -0,0 +1,74 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "@/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css" + +class Conversions extends Component { + constructor(props) { + super(props); + + this.state = { + series: [60], + options: { + chart: { + type: "radialBar", + offsetY: -20, + sparkline: { + enabled: true, + }, + }, + plotOptions: { + radialBar: { + startAngle: -110, + endAngle: 110, + track: { + background: "#e7e7e7", + strokeWidth: "90%", + margin: 5, + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 1, + fontSize: "15px", + fontWeight: "600", + color: '#5B5B98' + }, + }, + }, + }, + grid: { + padding: { + top: -10, + }, + }, + fill: { + colors: ["#EE368C"], + }, + labels: ["Average Results"], + }, + }; + } + + render() { + return ( + <> +
+ +

Conversions

+
+ + ); + } +} + +export default Conversions; diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/GoalCompletions.js b/components/Dashboard/Analytics/ImpressionGoalConversions/GoalCompletions.js new file mode 100644 index 0000000..537b4aa --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/GoalCompletions.js @@ -0,0 +1,74 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "@/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css" + +class GoalCompletions extends Component { + constructor(props) { + super(props); + + this.state = { + series: [68], + options: { + chart: { + type: "radialBar", + offsetY: -20, + sparkline: { + enabled: true, + }, + }, + plotOptions: { + radialBar: { + startAngle: -110, + endAngle: 110, + track: { + background: "#e7e7e7", + strokeWidth: "90%", + margin: 5, + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 1, + fontSize: "15px", + fontWeight: "600", + color: '#5B5B98' + }, + }, + }, + }, + grid: { + padding: { + top: -10, + }, + }, + fill: { + colors: ["#757FEF"], + }, + labels: ["Average Results"], + }, + }; + } + + render() { + return ( + <> +
+ +

Goal Completions

+
+ + ); + } +} + +export default GoalCompletions; diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.js b/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.js new file mode 100644 index 0000000..56543d6 --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.js @@ -0,0 +1,74 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "@/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css" + +class ImpressionShare extends Component { + constructor(props) { + super(props); + + this.state = { + series: [45], + options: { + chart: { + type: "radialBar", + offsetY: -20, + sparkline: { + enabled: true, + }, + }, + plotOptions: { + radialBar: { + startAngle: -110, + endAngle: 110, + track: { + background: "#e7e7e7", + strokeWidth: "90%", + margin: 5, + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 1, + fontSize: "15px", + fontWeight: "600", + color: '#5B5B98' + }, + }, + }, + }, + grid: { + padding: { + top: -10, + }, + }, + fill: { + colors: ["#00B69B"], + }, + labels: ["Average Results"], + }, + }; + } + + render() { + return ( + <> +
+ +

Impression Share

+
+ + ); + } +} + +export default ImpressionShare; diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css b/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css new file mode 100644 index 0000000..610a5b5 --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css @@ -0,0 +1,19 @@ +.chartBox { + text-align: center; + top: 12px; + position: relative; +} +.chartBox h3 { + margin: 0; + color: #5B5B98; + font-weight: 500; + font-size: 13px; + position: relative; + bottom: 7px; +} + +@media only screen and (max-width: 767px) { + .chartBox h3 { + font-size: 10px; + } +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/index.js b/components/Dashboard/Analytics/ImpressionGoalConversions/index.js new file mode 100644 index 0000000..8fdb39d --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/index.js @@ -0,0 +1,29 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import ImpressionShare from "./ImpressionShare"; +import GoalCompletions from "./GoalCompletions"; +import Conversions from "./Conversions"; + +const ImpressionGoalConversions = () => { + return ( + <> +
+ + + + + + + + + + + + + +
+ + ); +}; + +export default ImpressionGoalConversions; diff --git a/components/Dashboard/Analytics/NewReturning/NewReturning.module.css b/components/Dashboard/Analytics/NewReturning/NewReturning.module.css new file mode 100644 index 0000000..c8a751c --- /dev/null +++ b/components/Dashboard/Analytics/NewReturning/NewReturning.module.css @@ -0,0 +1,61 @@ +.infoList { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #F7FAFF; + margin-bottom: 13px; + padding-bottom: 13px; + position: relative; + padding-left: 20px; +} +.infoList::before { + content: ''; + background: #757FEF; + box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25); + width: 10px; + height: 10px; + border-radius: 100%; + position: absolute; + left: 0; + top: 15px; +} +.infoList:last-child { + border-bottom: none; + padding-bottom: 0; +} +.infoList p { + font-size: 13px; + margin: 0; +} +.infoList .rightContent { + display: flex; + align-items: center; + justify-content: space-between; +} +.infoList h5 { + margin: 0; + font-size: 14px; + color: #260944; +} +.infoList .rightContent i { + position: relative; + top: 2px; +} + +/* For RTL Style */ +[dir="rtl"] .infoList { + padding-left: 0; + padding-right: 20px; +} +[dir="rtl"] .infoList::before { + left: auto; + right: 0; +} + +/* For dark mode */ +[class="dark"] .infoList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .infoList:last-child { + border-bottom: none; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/NewReturning/index.js b/components/Dashboard/Analytics/NewReturning/index.js new file mode 100644 index 0000000..efd6961 --- /dev/null +++ b/components/Dashboard/Analytics/NewReturning/index.js @@ -0,0 +1,110 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "@/components/Dashboard/Analytics/NewReturning/NewReturning.module.css"; + +class NewReturning extends Component { + constructor(props) { + super(props); + this.state = { + series: [60], + options: { + plotOptions: { + radialBar: { + hollow: { + size: "50%", + }, + track: { + background: "rgba(117, 127, 239, 0.5)", + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 4, + color: "#757FEF", + fontSize: "16px", + fontWeight: "500", + }, + }, + }, + }, + fill: { + colors: ["#757FEF"], + }, + }, + }; + } + render() { + return ( + <> + + + + New vs. Returning + + + +
+
+
+

New

+
36,868
+
+
+

+ 75% +

+
+
+ +
+
+

Returning

+
9,217
+
+
+

+ 25% +

+
+
+
+ + +
+ + ); + } +} + +export default NewReturning; diff --git a/components/Dashboard/Analytics/RevenueReport.js b/components/Dashboard/Analytics/RevenueReport.js new file mode 100644 index 0000000..996dddf --- /dev/null +++ b/components/Dashboard/Analytics/RevenueReport.js @@ -0,0 +1,95 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const RevenueReport = () => { + const series = [ + { + name: "Earning", + data: [80, 50, 30, 40, 100, 20, 35, 75, 45, 55, 65, 85,], + }, + { + name: "Expenses", + data: [20, 30, 40, 80, 20, 80, 15, 32, 70, 38, 60, 76,], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + dropShadow: { + enabled: true, + blur: 1, + left: 1, + top: 1, + }, + }, + stroke: { + width: 2, + }, + colors: ["#757FEF", "#FF8A65"], + fill: { + opacity: 0.1, + }, + markers: { + size: 5, + }, + xaxis: { + categories: [ + "January", + "Fubruary", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + ], + }, + }; + + return ( + <> + + + + Revenue Report + + + + + + + ); +}; + +export default RevenueReport; diff --git a/components/Dashboard/Analytics/SalesAnalytics.js b/components/Dashboard/Analytics/SalesAnalytics.js new file mode 100644 index 0000000..73d762c --- /dev/null +++ b/components/Dashboard/Analytics/SalesAnalytics.js @@ -0,0 +1,175 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import { + BarChart, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + date: "01 Jan", + cost: 4000, + sales: 2400, + revenue: 2400, + }, + { + date: "02 Jan", + cost: 3000, + sales: 1398, + revenue: 2210, + }, + { + date: "03 Jan", + cost: 2000, + sales: 9800, + revenue: 2290, + }, + { + date: "04 Jan", + cost: 2780, + sales: 3908, + revenue: 2000, + }, + { + date: "05 Jan", + cost: 1890, + sales: 4800, + revenue: 2181, + }, + { + date: "06 Jan", + cost: 2390, + sales: 3800, + revenue: 2500, + }, + { + date: "07 Jan", + cost: 3490, + sales: 4300, + revenue: 2100, + }, +]; + +const SalesAnalytics = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Sales Analytics + + + + + Select + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+
+ + ); +}; + +export default SalesAnalytics; diff --git a/components/Dashboard/Analytics/SessionsByCountries.js b/components/Dashboard/Analytics/SessionsByCountries.js new file mode 100644 index 0000000..1099d4d --- /dev/null +++ b/components/Dashboard/Analytics/SessionsByCountries.js @@ -0,0 +1,174 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const SessionsByCountries = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + // Chart + const series = [ + { + data: [1200, 930, 748, 670, 540, 580, 690, 1100, 1200, 1380], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + }, + plotOptions: { + bar: { + borderRadius: 4, + horizontal: true, + }, + }, + dataLabels: { + enabled: false, + }, + colors: ["#757FEF"], + xaxis: { + categories: [ + "United State", + "China", + "Canada", + "Indonesia", + "Russia", + "Bangladesh", + "Brazil", + "United Kingdom", + "Vietnam", + "Germany", + ], + labels: { + style: { + colors: "#5B5B98", + fontSize: "12px", + }, + }, + }, + yaxis: { + labels: { + style: { + colors: "#5B5B98", + fontSize: "11px", + }, + }, + axisBorder: { + show: false, + colors: "#f6f6f7", + }, + }, + fill: { + opacity: 1, + }, + grid: { + show: true, + borderColor: "#f6f6f7", + }, + }; + + return ( + <> + + + + Sessions By Countries + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + ); +}; + +export default SessionsByCountries; diff --git a/components/Dashboard/Analytics/SessionsDevice/SessionsDevice.module.css b/components/Dashboard/Analytics/SessionsDevice/SessionsDevice.module.css new file mode 100644 index 0000000..1985726 --- /dev/null +++ b/components/Dashboard/Analytics/SessionsDevice/SessionsDevice.module.css @@ -0,0 +1,61 @@ +.infoList { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #F7FAFF; + margin-bottom: 13px; + padding-bottom: 13px; + position: relative; + padding-left: 20px; +} +.infoList::before { + content: ''; + background: #FF8A54; + box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25); + width: 10px; + height: 10px; + border-radius: 100%; + position: absolute; + left: 0; + top: 15px; +} +.infoList:last-child { + border-bottom: none; + padding-bottom: 0; +} +.infoList p { + font-size: 13px; + margin: 0; +} +.infoList .rightContent { + display: flex; + align-items: center; + justify-content: space-between; +} +.infoList h5 { + margin: 0; + font-size: 14px; + color: #260944; +} +.infoList .rightContent i { + position: relative; + top: 2px; +} + +/* For RTL Style */ +[dir="rtl"] .infoList { + padding-left: 0; + padding-right: 20px; +} +[dir="rtl"] .infoList::before { + left: auto; + right: 0; +} + +/* For dark mode */ +[class="dark"] .infoList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .infoList:last-child { + border-bottom: none; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/SessionsDevice/index.js b/components/Dashboard/Analytics/SessionsDevice/index.js new file mode 100644 index 0000000..41a3e2f --- /dev/null +++ b/components/Dashboard/Analytics/SessionsDevice/index.js @@ -0,0 +1,110 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "@/components/Dashboard/Analytics/SessionsDevice/SessionsDevice.module.css"; + +class SessionsDevice extends Component { + constructor(props) { + super(props); + this.state = { + series: [70], + options: { + plotOptions: { + radialBar: { + hollow: { + size: "50%", + }, + track: { + background: "rgba(255, 138, 84, 0.5)", + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 4, + color: "#FF8A54", + fontSize: "16px", + fontWeight: "500", + }, + }, + }, + }, + fill: { + colors: ["#FF8A54"], + }, + }, + }; + } + render() { + return ( + <> + + + + Sessions Device + + + +
+
+
+

Mobile

+
15,684
+
+
+

+ 50% +

+
+
+ +
+
+

Laptop

+
36,868
+
+
+

+ 60% +

+
+
+
+ + +
+ + ); + } +} + +export default SessionsDevice; diff --git a/components/Dashboard/Analytics/Terminals/Terminals.module.css b/components/Dashboard/Analytics/Terminals/Terminals.module.css new file mode 100644 index 0000000..ad59ea3 --- /dev/null +++ b/components/Dashboard/Analytics/Terminals/Terminals.module.css @@ -0,0 +1,151 @@ +.terminalsBox { + position: relative; +} +.monthlyEarning { + background: #757FEF; + mix-blend-mode: multiply; + box-shadow: 0px 109px 80px rgb(132 13 226 / 14%), 0px 45.5376px 33.4221px rgb(132 13 226 / 10%), 0px 24.3466px 17.869px rgb(132 13 226 / 8%), 0px 13.6485px 10.0172px rgb(132 13 226 / 7%), 0px 7.24861px 5.32008px rgb(132 13 226 / 6%), 0px 3.01631px 2.21381px rgb(132 13 226 / 4%); + width: 200px; + height: 200px; + text-align: center; + border-radius: 100%; + margin-left: auto; + margin-right: auto; + padding-top: 75px; + position: relative; + right: -55px; + top: 40px; +} +.monthlyEarning h3 { + margin: 0 0 10px; + line-height: 1; + color: #fff !important; + font-weight: 700; + font-size: 24px; +} +.monthlyEarning p { + margin: 0; + line-height: 1; + color: #fff; + font-size: 14px; +} + +.usersEarning { + background: #F765A3; + mix-blend-mode: multiply; + opacity: 0.8; + box-shadow: 0px 100px 80px rgb(255 43 43 / 15%), 0px 46.233px 36.9864px rgb(255 43 43 / 11%), 0px 26.4535px 21.1628px rgb(255 43 43 / 9%), 0px 16.0571px 12.8457px rgb(255 43 43 / 8%), 0px 9.67509px 7.74008px rgb(255 43 43 / 7%), 0px 5.38772px 4.31018px rgb(255 43 43 / 6%), 0px 2.31722px 1.85378px rgb(255 43 43 / 4%); + width: 130px; + height: 130px; + text-align: center; + border-radius: 100%; + padding-top: 40px; + left: -160px; + right: 0; + top: 130px; + margin: auto; + position: absolute; +} +.usersEarning h3 { + margin: 0 0 10px; + line-height: 1; + color: #fff !important; + font-weight: 700; + font-size: 24px; +} +.usersEarning p { + margin: 0; + line-height: 1; + color: #fff; + font-size: 14px; +} + +.inactiveEarning { + top: 210px; + background: #FF8A54; + mix-blend-mode: multiply; + width: 85px; + height: 85px; + text-align: center; + border-radius: 100%; + padding-top: 25px; + position: absolute; + left: -22px; + right: 0; + margin: auto; +} +.inactiveEarning h3 { + margin: 0 0 5px; + line-height: 1; + color: #fff !important; + font-weight: 700; + font-size: 18px; +} +.inactiveEarning p { + margin: 0; + line-height: 1; + color: #fff; + font-size: 13px; +} + +.terminalsBox ul { + margin: 133px 0 0; + padding: 0; + list-style: none; + text-align: center; +} +.terminalsBox ul li { + display: inline-block; + position: relative; + font-size: 13px; + padding-left: 20px; + margin-right: 15px; +} +.terminalsBox ul li:last-child { + margin-right: 0; +} +.terminalsBox ul li::before { + content: ''; + position: absolute; + border-radius: 5px; + width: 13px; + height: 13px; + left: 0; + top: 2px; +} +.terminalsBox ul li:nth-child(1)::before { + background: #757FEF; +} +.terminalsBox ul li:nth-child(2)::before { + background: #F765A3; +} +.terminalsBox ul li:nth-child(3)::before { + background: #FF8A54; +} + + +/* For RTL Style */ +[dir="rtl"] .terminalsBox ul li { + padding-left: 0; + padding-right: 20px; + margin-right: 0; + margin-left: 15px; +} +[dir="rtl"] .terminalsBox ul li:last-child { + margin-left: 0; +} +[dir="rtl"] .terminalsBox ul li::before { + left: auto; + right: 0; +} + +/* For dark mode */ +[class="dark"] .monthlyEarning { + mix-blend-mode: initial; +} +[class="dark"] .usersEarning { + mix-blend-mode: initial; +} +[class="dark"] .inactiveEarning { + mix-blend-mode: initial; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/Terminals/index.js b/components/Dashboard/Analytics/Terminals/index.js new file mode 100644 index 0000000..0bc2786 --- /dev/null +++ b/components/Dashboard/Analytics/Terminals/index.js @@ -0,0 +1,62 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import styles from "@/components/Dashboard/Analytics/Terminals/Terminals.module.css"; + +const Terminals = () => { + return ( + <> + + + + Terminals + + + +
+
+

$27632

+

Monthly Earning

+
+ +
+

82.9k

+

Users

+
+ +
+

0.9k

+

Inactive

+
+ +
    +
  • Monthly Earning
  • +
  • Users
  • +
  • Inactive
  • +
+
+
+ + ); +}; + +export default Terminals; diff --git a/components/Dashboard/Analytics/TotalRevenue/RevenueChart.js b/components/Dashboard/Analytics/TotalRevenue/RevenueChart.js new file mode 100644 index 0000000..be53021 --- /dev/null +++ b/components/Dashboard/Analytics/TotalRevenue/RevenueChart.js @@ -0,0 +1,59 @@ +import React, { Component } from 'react'; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class RevenueChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [65], + options: { + plotOptions: { + radialBar: { + hollow: { + size: "50%", + }, + track: { + background: "#ECEFF7", + }, + dataLabels: { + name: { + show: true, + fontSize: '12px', + color: '#5B5B98', + }, + value: { + offsetY: 3, + color: "#00B69B", + fontSize: "16px", + fontWeight: "500", + }, + }, + }, + }, + labels: ['Revenue'], + fill: { + opacity: 1, + colors: ["#757FEF"], + }, + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default RevenueChart; diff --git a/components/Dashboard/Analytics/TotalRevenue/TotalRevenueList.module.css b/components/Dashboard/Analytics/TotalRevenue/TotalRevenueList.module.css new file mode 100644 index 0000000..d2ddb15 --- /dev/null +++ b/components/Dashboard/Analytics/TotalRevenue/TotalRevenueList.module.css @@ -0,0 +1,39 @@ +.totalRevenueList { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #F7FAFF; + margin-bottom: 13px; + padding-bottom: 13px; +} +.totalRevenueList:last-child { + border-bottom: none; + margin-bottom: 0; + padding-bottom: 0; +} +.totalRevenueList p { + font-size: 13px; + margin: 0; +} +.totalRevenueList .rightContent { + display: flex; + align-items: center; + justify-content: space-between; +} +.totalRevenueList .rightContent h5 { + margin: 0 15px 0 0; + font-size: 12px; + color: #5B5B98; +} +.totalRevenueList .rightContent i { + position: relative; + top: 2px; +} + +/* For dark mode */ +[class="dark"] .totalRevenueList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .totalRevenueList:last-child { + border-bottom: none; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/TotalRevenue/index.js b/components/Dashboard/Analytics/TotalRevenue/index.js new file mode 100644 index 0000000..b9d8f14 --- /dev/null +++ b/components/Dashboard/Analytics/TotalRevenue/index.js @@ -0,0 +1,162 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import RevenueChart from "./RevenueChart"; +import styles from "@/components/Dashboard/Analytics/TotalRevenue/TotalRevenueList.module.css"; + +const TotalRevenue = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Total Revenue + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* RevenueChart */} + + + <> +
+

Avg. Session

+
+
972
+

+ 49% +

+
+
+ +
+

Conversion Rate

+
+
102
+

+ 18% +

+
+
+ +
+

Avg. Duration

+
+
3m
+

+ 42% +

+
+
+ +
+

Weekly Earning

+
+
$972
+

+ 28% +

+
+
+ +
+

Monthly Revenue

+
+
50k
+

+ 70% +

+
+
+ +
+ + ); +}; + +export default TotalRevenue; diff --git a/components/Dashboard/Analytics/TotalTransactions.js b/components/Dashboard/Analytics/TotalTransactions.js new file mode 100644 index 0000000..188915a --- /dev/null +++ b/components/Dashboard/Analytics/TotalTransactions.js @@ -0,0 +1,127 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const TotalTransactions = () => { + // Chart + const series = [ + { + name: "This Week", + data: [30, 20, 40, 25, 18, 43, 15] + }, + { + name: "Last Week", + data: [20, 10, 20, 20, 12, 27, 28] + }, + { + name: "Performance", + data: [10, 10, 15, 15, 15, 14, 15] + }, + { + name: "Cost", + data: [20, 10, 20, 20, 12, 27, 28] + }, + ]; + + const options = { + chart: { + stacked: true, + toolbar: { + show: false + } + }, + dataLabels: { + enabled: false + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: "22%" + } + }, + xaxis: { + type: "category", + axisBorder: { + show: false, + }, + labels: { + show: false, + style: { + colors: "#a9a9c8", + fontSize: "14px" + } + } + }, + colors: [ + "#EDF0F4", "#1CCAB8", "#BDEEE1", "#D0F1FA" + ], + legend: { + offsetY: 8, + fontSize: "14px", + position: "bottom", + horizontalAlign: "center", + labels: { + colors: '#5B5B98' + } + }, + yaxis: { + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px" + }, + }, + axisBorder: { + show: false + } + }, + fill: { + opacity: 1 + }, + grid: { + show: true, + strokeDashArray: 5, + borderColor: "#EDEFF5" + } + } + + return ( + <> + + + + Total Transactions + + + + + + + ); +}; + +export default TotalTransactions; diff --git a/components/Dashboard/Analytics/VisitorsAge/VisitorsAge.module.css b/components/Dashboard/Analytics/VisitorsAge/VisitorsAge.module.css new file mode 100644 index 0000000..d994b63 --- /dev/null +++ b/components/Dashboard/Analytics/VisitorsAge/VisitorsAge.module.css @@ -0,0 +1,61 @@ +.infoList { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #F7FAFF; + margin-bottom: 13px; + padding-bottom: 13px; + position: relative; + padding-left: 20px; +} +.infoList::before { + content: ''; + background: #F765A3; + box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25); + width: 10px; + height: 10px; + border-radius: 100%; + position: absolute; + left: 0; + top: 15px; +} +.infoList:last-child { + border-bottom: none; + padding-bottom: 0; +} +.infoList p { + font-size: 13px; + margin: 0; +} +.infoList .rightContent { + display: flex; + align-items: center; + justify-content: space-between; +} +.infoList h5 { + margin: 0; + font-size: 14px; + color: #260944; +} +.infoList .rightContent i { + position: relative; + top: 2px; +} + +/* For RTL Style */ +[dir="rtl"] .infoList { + padding-left: 0; + padding-right: 20px; +} +[dir="rtl"] .infoList::before { + left: auto; + right: 0; +} + +/* For dark mode */ +[class="dark"] .infoList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .infoList:last-child { + border-bottom: none; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/VisitorsAge/index.js b/components/Dashboard/Analytics/VisitorsAge/index.js new file mode 100644 index 0000000..9eef694 --- /dev/null +++ b/components/Dashboard/Analytics/VisitorsAge/index.js @@ -0,0 +1,110 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "@/components/Dashboard/Analytics/VisitorsAge/VisitorsAge.module.css"; + +class VisitorsAge extends Component { + constructor(props) { + super(props); + this.state = { + series: [40], + options: { + plotOptions: { + radialBar: { + hollow: { + size: "50%", + }, + track: { + background: "rgba(247, 101, 163, 0.5)", + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 4, + color: "#F765A3", + fontSize: "16px", + fontWeight: "500", + }, + }, + }, + }, + fill: { + colors: ["#F765A3"], + }, + }, + }; + } + render() { + return ( + <> + + + + Visitors Age + + + +
+
+
+

Under 30

+
16,868
+
+
+

+ 32% +

+
+
+ +
+
+

Over 30

+
31,868
+
+
+

+ 68% +

+
+
+
+ + +
+ + ); + } +} + +export default VisitorsAge; diff --git a/components/Dashboard/Analytics/VisitsByDayAndNetIncome/NetIncome.js b/components/Dashboard/Analytics/VisitsByDayAndNetIncome/NetIncome.js new file mode 100644 index 0000000..8cdd901 --- /dev/null +++ b/components/Dashboard/Analytics/VisitsByDayAndNetIncome/NetIncome.js @@ -0,0 +1,123 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Typography from "@mui/material/Typography"; +import { + BarChart, + Bar, + XAxis, + Tooltip, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Sat", + income: 24, + }, + { + name: "Sun", + income: 13, + }, + { + name: "Mon", + income: 98, + }, + { + name: "Tue", + income: 39, + }, + { + name: "Wed", + income: 48, + }, + { + name: "Thu", + income: 38, + }, + { + name: "Fri", + income: 43, + }, +]; + +const NetIncome = () => { + return ( + <> + + + + + + + + + + Net Income + + + $438.5k + + + + + + + + + + + + + + + + + + + ); +}; + +export default NetIncome; diff --git a/components/Dashboard/Analytics/VisitsByDayAndNetIncome/index.js b/components/Dashboard/Analytics/VisitsByDayAndNetIncome/index.js new file mode 100644 index 0000000..5f6468f --- /dev/null +++ b/components/Dashboard/Analytics/VisitsByDayAndNetIncome/index.js @@ -0,0 +1,136 @@ +import React from "react"; +import { + BarChart, + Bar, + XAxis, + Tooltip, + ResponsiveContainer, +} from "recharts"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Box from "@mui/material/Box"; +import Typography from "@mui/material/Typography"; +import NetIncome from "./NetIncome"; + +const data = [ + { + name: "Sat", + visited: 2400, + }, + { + name: "Sun", + visited: 1398, + }, + { + name: "Mon", + visited: 9800, + }, + { + name: "Tue", + visited: 3908, + }, + { + name: "Wed", + visited: 4800, + }, + { + name: "Thu", + visited: 3800, + }, + { + name: "Fri", + visited: 4300, + }, +]; + +const VisitsByDayAndNetIncome = () => { + return ( + <> + + + + + + + + + + + Visits By Day + + + 1,802 + + + + + + + + + + + + + + + + + + + {/* NetIncome */} + + + + ); +}; + +export default VisitsByDayAndNetIncome; diff --git a/components/Dashboard/Analytics/Welcome/Welcome.module.css b/components/Dashboard/Analytics/Welcome/Welcome.module.css new file mode 100644 index 0000000..a253810 --- /dev/null +++ b/components/Dashboard/Analytics/Welcome/Welcome.module.css @@ -0,0 +1,36 @@ +.welcomeBox { + background: #757FEF; + border-radius: 10px; + padding: 40px 20px; + position: relative; + margin-bottom: 15px; +} +.welcomeContent { + max-width: 300px; + position: relative; + z-index: 1; +} +.welcomeBox h1 { + margin: 0 0 10px; + font-size: 18px; + color: #fff; + font-weight: 500; +} +.welcomeBox p { + margin: 0; + font-size: 14px; + color: #EDEFF5; +} +.welcomeBox img { + position: absolute; + bottom: 10px; + right: 10px; +} + +/* For dark mode */ +[class="dark"] .welcomeBox { + background-color: var(--cardBg); +} +[class="dark"] .welcomeContent { + background: #161515; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/Welcome/index.js b/components/Dashboard/Analytics/Welcome/index.js new file mode 100644 index 0000000..596fff4 --- /dev/null +++ b/components/Dashboard/Analytics/Welcome/index.js @@ -0,0 +1,21 @@ +import React from "react"; +import styles from "@/components/Dashboard/Analytics/Welcome/Welcome.module.css"; + +const Welcome = () => { + return ( + <> +
+
+

Welcome to admash Dashboard!

+

+ You have done 68% 😎 more sales today. Check your new badge in your + profile. +

+
+ shape +
+ + ); +}; + +export default Welcome; diff --git a/components/Dashboard/Crypto/CurrentRate.js b/components/Dashboard/Crypto/CurrentRate.js new file mode 100644 index 0000000..c6c1fb2 --- /dev/null +++ b/components/Dashboard/Crypto/CurrentRate.js @@ -0,0 +1,247 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import TrendingUpIcon from "@mui/icons-material/TrendingUp"; +import TrendingDownIcon from "@mui/icons-material/TrendingDown"; + +const CurrentRate = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + {/* Header */} + + + Current Rate + + + + + Select + + + + + + + {/* Card */} + + + + + + matic + + + + +1.3% + + + + + + 0.451269 + + + + $12,06547.00 + + + + + + + + + + btc + + + + +2.48% + + + + + + 1.111211 + + + + $14,32522.00 + + + + + + + + + + comp + + + + -0.5% + + + + + + 0.451269 + + + + $12,06547.00 + + + + + + + + ); +}; + +export default CurrentRate; diff --git a/components/Dashboard/Crypto/Features.js b/components/Dashboard/Crypto/Features.js new file mode 100644 index 0000000..e893747 --- /dev/null +++ b/components/Dashboard/Crypto/Features.js @@ -0,0 +1,120 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import TrendingUpIcon from "@mui/icons-material/TrendingUp"; +import TrendingDownIcon from "@mui/icons-material/TrendingDown"; + +const FeaturesData = [ + { + id: "1", + amount: "$25,890", + title: "Total Invested", + image: "/images/icon5.png", + icon: , + growth: "+1.3%", + growthText: "Up from past week", + color: "successColor", + }, + { + id: "2", + amount: "$10,324", + title: "Total Changed", + image: "/images/icon6.png", + icon: , + growth: "-2.5%", + growthText: "Up from past week", + color: "dangerColor", + }, + { + id: "3", + amount: "$100", + title: "Day Changed", + image: "/images/icon7.png", + icon: , + growth: "+0.4%", + growthText: "Up from past week", + color: "successColor", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + + {feature.title} + + + + + Graph + + + + + {feature.amount} + + + + + {feature.growthText} + + {feature.icon}{" "} + {feature.growth} + + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/Crypto/MarketGraph/MarketGraph.module.css b/components/Dashboard/Crypto/MarketGraph/MarketGraph.module.css new file mode 100644 index 0000000..e0b6334 --- /dev/null +++ b/components/Dashboard/Crypto/MarketGraph/MarketGraph.module.css @@ -0,0 +1,24 @@ +.marketGraphList { + text-align: end; +} +.marketGraphList p { + margin-right: 20px; +} +.marketGraphList p:last-child { + margin-right: 0; +} + +@media screen and (max-width: 599px) { + .marketGraphList { + text-align: left; + } +} + +/* For RTL Style */ +[dir="rtl"] .marketGraphList p { + margin-right: 0; + margin-left: 20px; +} +[dir="rtl"] .marketGraphList p:last-child { + margin-left: 0; +} \ No newline at end of file diff --git a/components/Dashboard/Crypto/MarketGraph/index.js b/components/Dashboard/Crypto/MarketGraph/index.js new file mode 100644 index 0000000..1e716fc --- /dev/null +++ b/components/Dashboard/Crypto/MarketGraph/index.js @@ -0,0 +1,703 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import Card from "@mui/material/Card"; +import Grid from "@mui/material/Grid"; +import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "../../Crypto/MarketGraph/MarketGraph.module.css"; + +class MarketGraph extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Price", + data: [ + [1327359600000, 30.95], + [1327446000000, 31.34], + [1327532400000, 31.18], + [1327618800000, 31.05], + [1327878000000, 31.0], + [1327964400000, 30.95], + [1328050800000, 31.24], + [1328137200000, 31.29], + [1328223600000, 31.85], + [1328482800000, 31.86], + [1328569200000, 32.28], + [1328655600000, 32.1], + [1328742000000, 32.65], + [1328828400000, 32.21], + [1329087600000, 32.35], + [1329174000000, 32.44], + [1329260400000, 32.46], + [1329346800000, 32.86], + [1329433200000, 32.75], + [1329778800000, 32.54], + [1329865200000, 32.33], + [1329951600000, 32.97], + [1330038000000, 33.41], + [1330297200000, 33.27], + [1330383600000, 33.27], + [1330470000000, 32.89], + [1330556400000, 33.1], + [1330642800000, 33.73], + [1330902000000, 33.22], + [1330988400000, 31.99], + [1331074800000, 32.41], + [1331161200000, 33.05], + [1331247600000, 33.64], + [1331506800000, 33.56], + [1331593200000, 34.22], + [1331679600000, 33.77], + [1331766000000, 34.17], + [1331852400000, 33.82], + [1332111600000, 34.51], + [1332198000000, 33.16], + [1332284400000, 33.56], + [1332370800000, 33.71], + [1332457200000, 33.81], + [1332712800000, 34.4], + [1332799200000, 34.63], + [1332885600000, 34.46], + [1332972000000, 34.48], + [1333058400000, 34.31], + [1333317600000, 34.7], + [1333404000000, 34.31], + [1333490400000, 33.46], + [1333576800000, 33.59], + [1333922400000, 33.22], + [1334008800000, 32.61], + [1334095200000, 33.01], + [1334181600000, 33.55], + [1334268000000, 33.18], + [1334527200000, 32.84], + [1334613600000, 33.84], + [1334700000000, 33.39], + [1334786400000, 32.91], + [1334872800000, 33.06], + [1335132000000, 32.62], + [1335218400000, 32.4], + [1335304800000, 33.13], + [1335391200000, 33.26], + [1335477600000, 33.58], + [1335736800000, 33.55], + [1335823200000, 33.77], + [1335909600000, 33.76], + [1335996000000, 33.32], + [1336082400000, 32.61], + [1336341600000, 32.52], + [1336428000000, 32.67], + [1336514400000, 32.52], + [1336600800000, 31.92], + [1336687200000, 32.2], + [1336946400000, 32.23], + [1337032800000, 32.33], + [1337119200000, 32.36], + [1337205600000, 32.01], + [1337292000000, 31.31], + [1337551200000, 32.01], + [1337637600000, 32.01], + [1337724000000, 32.18], + [1337810400000, 31.54], + [1337896800000, 31.6], + [1338242400000, 32.05], + [1338328800000, 31.29], + [1338415200000, 31.05], + [1338501600000, 29.82], + [1338760800000, 30.31], + [1338847200000, 30.7], + [1338933600000, 31.69], + [1339020000000, 31.32], + [1339106400000, 31.65], + [1339365600000, 31.13], + [1339452000000, 31.77], + [1339538400000, 31.79], + [1339624800000, 31.67], + [1339711200000, 32.39], + [1339970400000, 32.63], + [1340056800000, 32.89], + [1340143200000, 31.99], + [1340229600000, 31.23], + [1340316000000, 31.57], + [1340575200000, 30.84], + [1340661600000, 31.07], + [1340748000000, 31.41], + [1340834400000, 31.17], + [1340920800000, 32.37], + [1341180000000, 32.19], + [1341266400000, 32.51], + [1341439200000, 32.53], + [1341525600000, 31.37], + [1341784800000, 30.43], + [1341871200000, 30.44], + [1341957600000, 30.2], + [1342044000000, 30.14], + [1342130400000, 30.65], + [1342389600000, 30.4], + [1342476000000, 30.65], + [1342562400000, 31.43], + [1342648800000, 31.89], + [1342735200000, 31.38], + [1342994400000, 30.64], + [1343080800000, 30.02], + [1343167200000, 30.33], + [1343253600000, 30.95], + [1343340000000, 31.89], + [1343599200000, 31.01], + [1343685600000, 30.88], + [1343772000000, 30.69], + [1343858400000, 30.58], + [1343944800000, 32.02], + [1344204000000, 32.14], + [1344290400000, 32.37], + [1344376800000, 32.51], + [1344463200000, 32.65], + [1344549600000, 32.64], + [1344808800000, 32.27], + [1344895200000, 32.1], + [1344981600000, 32.91], + [1345068000000, 33.65], + [1345154400000, 33.8], + [1345413600000, 33.92], + [1345500000000, 33.75], + [1345586400000, 33.84], + [1345672800000, 33.5], + [1345759200000, 32.26], + [1346018400000, 32.32], + [1346104800000, 32.06], + [1346191200000, 31.96], + [1346277600000, 31.46], + [1346364000000, 31.27], + [1346709600000, 31.43], + [1346796000000, 32.26], + [1346882400000, 32.79], + [1346968800000, 32.46], + [1347228000000, 32.13], + [1347314400000, 32.43], + [1347400800000, 32.42], + [1347487200000, 32.81], + [1347573600000, 33.34], + [1347832800000, 33.41], + [1347919200000, 32.57], + [1348005600000, 33.12], + [1348092000000, 34.53], + [1348178400000, 33.83], + [1348437600000, 33.41], + [1348524000000, 32.9], + [1348610400000, 32.53], + [1348696800000, 32.8], + [1348783200000, 32.44], + [1349042400000, 32.62], + [1349128800000, 32.57], + [1349215200000, 32.6], + [1349301600000, 32.68], + [1349388000000, 32.47], + [1349647200000, 32.23], + [1349733600000, 31.68], + [1349820000000, 31.51], + [1349906400000, 31.78], + [1349992800000, 31.94], + [1350252000000, 32.33], + [1350338400000, 33.24], + [1350424800000, 33.44], + [1350511200000, 33.48], + [1350597600000, 33.24], + [1350856800000, 33.49], + [1350943200000, 33.31], + [1351029600000, 33.36], + [1351116000000, 33.4], + [1351202400000, 34.01], + [1351638000000, 34.02], + [1351724400000, 34.36], + [1351810800000, 34.39], + [1352070000000, 34.24], + [1352156400000, 34.39], + [1352242800000, 33.47], + [1352329200000, 32.98], + [1352415600000, 32.9], + [1352674800000, 32.7], + [1352761200000, 32.54], + [1352847600000, 32.23], + [1352934000000, 32.64], + [1353020400000, 32.65], + [1353279600000, 32.92], + [1353366000000, 32.64], + [1353452400000, 32.84], + [1353625200000, 33.4], + [1353884400000, 33.3], + [1353970800000, 33.18], + [1354057200000, 33.88], + [1354143600000, 34.09], + [1354230000000, 34.61], + [1354489200000, 34.7], + [1354575600000, 35.3], + [1354662000000, 35.4], + [1354748400000, 35.14], + [1354834800000, 35.48], + [1355094000000, 35.75], + [1355180400000, 35.54], + [1355266800000, 35.96], + [1355353200000, 35.53], + [1355439600000, 37.56], + [1355698800000, 37.42], + [1355785200000, 37.49], + [1355871600000, 38.09], + [1355958000000, 37.87], + [1356044400000, 37.71], + [1356303600000, 37.53], + [1356476400000, 37.55], + [1356562800000, 37.3], + [1356649200000, 36.9], + [1356908400000, 37.68], + [1357081200000, 38.34], + [1357167600000, 37.75], + [1357254000000, 38.13], + [1357513200000, 37.94], + [1357599600000, 38.14], + [1357686000000, 38.66], + [1357772400000, 38.62], + [1357858800000, 38.09], + [1358118000000, 38.16], + [1358204400000, 38.15], + [1358290800000, 37.88], + [1358377200000, 37.73], + [1358463600000, 37.98], + [1358809200000, 37.95], + [1358895600000, 38.25], + [1358982000000, 38.1], + [1359068400000, 38.32], + [1359327600000, 38.24], + [1359414000000, 38.52], + [1359500400000, 37.94], + [1359586800000, 37.83], + [1359673200000, 38.34], + [1359932400000, 38.1], + [1360018800000, 38.51], + [1360105200000, 38.4], + [1360191600000, 38.07], + [1360278000000, 39.12], + [1360537200000, 38.64], + [1360623600000, 38.89], + [1360710000000, 38.81], + [1360796400000, 38.61], + [1360882800000, 38.63], + [1361228400000, 38.99], + [1361314800000, 38.77], + [1361401200000, 38.34], + [1361487600000, 38.55], + [1361746800000, 38.11], + [1361833200000, 38.59], + [1361919600000, 39.6], + ], + }, + ], + options: { + chart: { + id: "area-datetime", + type: "area", + height: 350, + zoom: { + autoScaleYaxis: true, + }, + toolbar: { + show: false, + }, + }, + annotations: { + yaxis: [ + { + y: 30, + borderColor: "#ddd", + label: { + show: true, + text: "", + style: { + color: "#fff", + background: "#00E396", + }, + }, + }, + ], + xaxis: [ + { + x: new Date("14 Nov 2012").getTime(), + borderColor: "#ddd", + yAxisIndex: 0, + label: { + show: true, + text: "", + style: { + color: "#fff", + background: "#775DD0", + }, + }, + }, + ], + }, + dataLabels: { + enabled: false, + }, + markers: { + size: 0, + style: "hollow", + }, + xaxis: { + type: "datetime", + min: new Date("01 Mar 2012").getTime(), + tickAmount: 6, + labels: { + style: { + fontSize: "13px", + }, + }, + }, + yaxis: { + labels: { + style: { + fontSize: "13px", + }, + }, + }, + tooltip: { + x: { + format: "dd MMM yyyy", + }, + y: { + formatter: function (val) { + return "$" + val + ""; + }, + }, + }, + grid: { + show: true, + borderColor: "#EDEFF5", + strokeDashArray: 5, + }, + colors: ["#757FEF"], + fill: { + type: "gradient", + gradient: { + shadeIntensity: 1, + opacityFrom: 0.7, + opacityTo: 0.9, + stops: [0, 100], + }, + }, + }, + + selection: "one_year", + }; + } + + updateData(timeline) { + this.setState({ + selection: timeline, + }); + + switch (timeline) { + case "one_month": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("28 Jan 2013").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "six_months": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("27 Sep 2012").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "one_year": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("27 Feb 2012").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "ytd": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("01 Jan 2013").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "all": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("23 Jan 2012").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + default: + } + } + + render() { + return ( + <> + + + + Market Graph + + + + + + + + + + + + + + + + + bitcoin + + + Bitcoin (BTC) 6.5%{" "} + + + + $35,294.90 + + + + + + +
+ + Market Cap: 0.546218602 + + + + Supply: 0.546218602 + +
+
+
+ + +
+
+ +   + +   + +   + +   + +
+ +
+ +
+
+
+
+ + ); + } +} + +export default MarketGraph; diff --git a/components/Dashboard/Crypto/MyCurrencies.js b/components/Dashboard/Crypto/MyCurrencies.js new file mode 100644 index 0000000..53a4e71 --- /dev/null +++ b/components/Dashboard/Crypto/MyCurrencies.js @@ -0,0 +1,590 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import Button from "@mui/material/Button"; +import { Typography } from "@mui/material"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import TrendingUpIcon from "@mui/icons-material/TrendingUp"; +import TrendingDownIcon from "@mui/icons-material/TrendingDown"; + +const MyCurrencies = () => { + return ( + <> + + {/* Card Header */} + + + My Currencies + + + + + + + + + + + + {/* Table */} + + + + + + Coin Name + + + + Price + + + + 24h Change + + + + Total Balance + + + + Total Coin + + + + Operation + + + + + + + + bitcoin + + + Bitcoin + + + + + $48,568.025 + + + + + +2.48% + + + + + 12,565.75 USD + + + + + 0.2040 BTC + + + + + + + + + + ethereum + + + Ethereum + + + + + $1,876.76 + + + + + -3.48% + + + + + 4,565.75 USD + + + + + 0.2040 ETH + + + + + + + + + + binance + + + Binance + + + + + $278.87 + + + + + +1.08% + + + + + 20,565.75 USD + + + + + 0.2040 BTC + + + + + + + + + + litecoin + + + Litecoin + + + + + $89.98 + + + + + +2.05% + + + + + 7,565.75 USD + + + + + 0.2040 LTC + + + + + + + + + + cardano + + + Cardano + + + + + $37.32 + + + + + -1.01% + + + + + 1,431.75 USD + + + + + 0.2040 CDR + + + + + + + +
+
+
+ + ); +}; + +export default MyCurrencies; diff --git a/components/Dashboard/Crypto/MyProfile/MyProfile.module.css b/components/Dashboard/Crypto/MyProfile/MyProfile.module.css new file mode 100644 index 0000000..be4598c --- /dev/null +++ b/components/Dashboard/Crypto/MyProfile/MyProfile.module.css @@ -0,0 +1,51 @@ +.myProfileChart { + position: relative; +} +.myProfileChart .content { + left: 0; + right: 0; + text-align: center; + top: 50%; + position: absolute; + pointer-events: none; + transform: translateY(-50%); +} +.myProfileChart .content h5 { + margin-top: 0; + margin-bottom: 5px; + font-size: 18px; +} +.myProfileChart .content p { + color: #5b5b98; + margin: 0; +} + +.list { + padding: 0; + margin: 0; + list-style-type: none; +} +.list li { + display: flex; + justify-content: space-between; + align-items: center; +} +.list li { + border-bottom: 1px solid #F7FAFF; + margin-bottom: 20px; + padding-bottom: 20px; +} +.list li:last-child { + border-bottom: none; + margin-bottom: 0; + padding-bottom: 0; +} + +/* For dark mode */ +[class="dark"] .list li { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .list li:last-child { + border-bottom: none; +} + \ No newline at end of file diff --git a/components/Dashboard/Crypto/MyProfile/MyProfileChart.js b/components/Dashboard/Crypto/MyProfile/MyProfileChart.js new file mode 100644 index 0000000..224b262 --- /dev/null +++ b/components/Dashboard/Crypto/MyProfile/MyProfileChart.js @@ -0,0 +1,72 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "../../Crypto/MyProfile/MyProfile.module.css"; + +class MyProfileChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [1000, 800, 1500, 761, 871], + options: { + colors: ["#757fef", "#2db6f5", "#00b69b", "#f7931a", "#f4f4f4"], + chart: { + type: "donut", + }, + tooltip: { + y: { + formatter: function (val) { + return "$" + val; + }, + }, + }, + plotOptions: { + pie: { + donut: { + size: "88%", + }, + }, + }, + stroke: { + width: 0, + show: true, + }, + dataLabels: { + enabled: false, + }, + legend: { + offsetY: 0, + show: false, + fontSize: "14px", + position: "bottom", + horizontalAlign: "center", + }, + labels: ["Bitcoin", "Ethereum", "Comp Bidr", "Matic", "Litecoin"], + }, + }; + } + + render() { + return ( + <> +
+ +
+
$1025465
+

Total Value

+
+
+ + ); + } +} + +export default MyProfileChart; diff --git a/components/Dashboard/Crypto/MyProfile/index.js b/components/Dashboard/Crypto/MyProfile/index.js new file mode 100644 index 0000000..f9447ec --- /dev/null +++ b/components/Dashboard/Crypto/MyProfile/index.js @@ -0,0 +1,284 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import MyProfileChart from "./MyProfileChart"; +import styles from "../../Crypto/MyProfile/MyProfile.module.css"; + +const MyProfile = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + My Profile + + + + + + + + + Edit Profile + Settings + + + + {/* MyProfileChart */} + + + {/* list */} +
    +
  • + + bitcoin + + + Bitcoin + + + (BTC) 3.8% + + + + + + BTC 0.00251068 + + + $13,6218602 + + +
  • + +
  • + + ethereum + + + Ethereum + + + (ETH) 0.25% + + + + + + ETH 0.00251068 + + + $13,6218602 + + +
  • + +
  • + + comp-bidr + + + Comp Bidr + + + (BDR) 3.8% + + + + + + BDR 0.001068 + + + $13,6218602 + + +
  • + +
  • + + matic2 + + + Matic + + + (MTC) 3.02% + + + + + + MTC 0.00251068 + + + $13,6218602 + + +
  • + +
  • + + litecoin + + + Litecoin + + + (LTC) 1.8% + + + + + + LTC 0.00251068 + + + $13,6218602 + + +
  • +
+
+ + ); +}; + +export default MyProfile; diff --git a/components/Dashboard/Crypto/OrdersActivities.js b/components/Dashboard/Crypto/OrdersActivities.js new file mode 100644 index 0000000..ef427c7 --- /dev/null +++ b/components/Dashboard/Crypto/OrdersActivities.js @@ -0,0 +1,635 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import Button from "@mui/material/Button"; +import { Typography } from "@mui/material"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import ProgressBar from "@ramonak/react-progress-bar"; +import Avatar from "@mui/material/Avatar"; +import AvatarGroup from "@mui/material/AvatarGroup"; + +const OrdersActivities = () => { + return ( + <> + + {/* Card Header */} + + + Orders Activities + + + + + + + + + + + + {/* Table */} + + + + + + Type + + + + Change + + + + Date + + + + Time + + + + USD Amount + + + + Supply + + + + Amount + + + + Operation + + + + + + + + + + + + + Bitcoin{" "} + + (BTC) + + + + + + + +2.48% + + + + + 04 June 2023 + + + + 11:37 PM + + + + 12,565.75 USD + + + + + + 180548.00 BTC + + + + + + + + + 0.2040 BTC + + + + Buy + + + + + + + + + + + Ethereum{" "} + + (ETH) + + + + + + + -1.11% + + + + + 05 June 2023 + + + + 12:00 PM + + + + 11,232.22 USD + + + + + + 220548.22 ETH + + + + + + + + + 0.4453 ETH + + + + Transfer + + + + + + + + + + + Dash{" "} + + (DASH) + + + + + + + +0.32% + + + + + 04 June 2023 + + + + 09:33 AM + + + + 32,222.23 USD + + + + + + 110148.43 DASH + + + + + + + + + 0.3421 DASH + + + + Sell + + + + + + + + + + + Litecoin{" "} + + (LTC) + + + + + + + -3.06% + + + + + 03 June 2023 + + + + 10:00 PM + + + + 7,432.43 USD + + + + + + 321548.01 LTC + + + + + + + + + 1.1140 LTC + + + + Buy + + + + + + + + + + + Dollar{" "} + + (USD) + + + + + + + +1.11% + + + + + 02 June 2023 + + + + 08:21 AM + + + + 32,565.75 USD + + + + + + 200548.00 BTC + + + + + + + + + 2.2040 USD + + + + Sell + + + +
+
+
+ + ); +}; + +export default OrdersActivities; diff --git a/components/Dashboard/Crypto/Trading.js b/components/Dashboard/Crypto/Trading.js new file mode 100644 index 0000000..6277bbd --- /dev/null +++ b/components/Dashboard/Crypto/Trading.js @@ -0,0 +1,229 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import Button from "@mui/material/Button"; +import { Typography } from "@mui/material"; +import TextField from "@mui/material/TextField"; +import InputLabel from "@mui/material/InputLabel"; +import FormControl from "@mui/material/FormControl"; +import MenuItem from "@mui/material/MenuItem"; +import Select from "@mui/material/Select"; +import Grid from "@mui/material/Grid"; + +const Trading = () => { + const [currency, setCurrency] = React.useState(""); + + const handleChange = (event) => { + setCurrency(event.target.value); + }; + + return ( + <> + + {/* Card Header */} + + + Trading + + + + + Wallet Balance: $12,426.07 + + + + + + + + + + + + + + + + Currency: + + + Currency + + + + + + + Payment Method: + + + + + + + Amount: + + + + + + + Estimated Rate + + 1 BTC ~ $34572.00 + + + + + Transaction Fees (0.05%) + + + + + Total + + 72.00 BTC + + + + + + + + + + ); +}; + +export default Trading; diff --git a/components/Dashboard/Crypto/UserActivities/UserActivities.module.css b/components/Dashboard/Crypto/UserActivities/UserActivities.module.css new file mode 100644 index 0000000..daef433 --- /dev/null +++ b/components/Dashboard/Crypto/UserActivities/UserActivities.module.css @@ -0,0 +1,46 @@ +.list { + padding: 0; + margin: 0; + list-style-type: none; +} +.list li { + display: flex; + justify-content: space-between; + align-items: center; +} +.list li { + border-bottom: 1px solid #F7FAFF; + margin-bottom: 25px; + padding-bottom: 25px; +} +.list li:last-child { + border-bottom: none; + margin-bottom: 0; + padding-bottom: 0; +} +.list li .content { + display: flex; + justify-content: space-between; + align-items: center; +} +.list li .content i { + margin: 0 10px 0 0; + line-height: 1; + font-size: 30px; +} +.list li .content h5 { + margin: 0; + font-size: 20px; +} +.list li .content span { + margin: 0; +} + + +/* For dark mode */ +[class="dark"] .list li { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .list li:last-child { + border-bottom: none; +} \ No newline at end of file diff --git a/components/Dashboard/Crypto/UserActivities/index.js b/components/Dashboard/Crypto/UserActivities/index.js new file mode 100644 index 0000000..ac3407a --- /dev/null +++ b/components/Dashboard/Crypto/UserActivities/index.js @@ -0,0 +1,109 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import styles from "../../Crypto/UserActivities/UserActivities.module.css"; + +const UserActivities = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + {/* Header */} + + + User Activities + + + + + Select + + + + + + + {/* Activities list */} +
    +
  • +
    + +
    +
    1,802
    + Visits by Day +
    +
    + chart +
  • + +
  • +
    + +
    +
    1605
    + Referral Join +
    +
    + chart +
  • +
+
+ + ); +}; + +export default UserActivities; diff --git a/components/Dashboard/HelpDesk/Activity/Activity.module.css b/components/Dashboard/HelpDesk/Activity/Activity.module.css new file mode 100644 index 0000000..96de45f --- /dev/null +++ b/components/Dashboard/HelpDesk/Activity/Activity.module.css @@ -0,0 +1,54 @@ +.timelineList .tList { + position: relative; + margin-bottom: 14px; + padding-bottom: 14px; + border-bottom: 1px solid #F7FAFF; +} +.timelineList .tList:last-child { + border: none; + padding-bottom: 0; + margin-bottom: 0; +} +.timelineList .tList .content { + display: flex; +} +.timelineList .tList .content img { + margin-right: 10px; + width: 40px; + height: 40px; +} +.timelineList .tList .content h5 { + margin: 0 0 3px; + color: #260944; + font-size: 15px; + font-weight: 500; + font-family: var(--bodyFontFamily) !important; +} +.timelineList .tList .content .text { + margin: 0 0 5px; +} +.timelineList .tList .date { + color: #A9A9C8; + font-size: 12px; + margin: 0; +} + +/* For RTL Style */ +[dir="rtl"] .timelineList .tList { + padding-right: 20px; +} +[dir="rtl"] .timelineList .tList .content img { + margin-right: 0; + margin-left: 10px; +} + +/* For dark mode */ +[class="dark"] .timelineList .tList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .timelineList .tList:last-child { + border-bottom: none; +} +[class="dark"] .timelineList .tList .content h5 { + color: var(--darkBodyTextColor) !important; +} \ No newline at end of file diff --git a/components/Dashboard/HelpDesk/Activity/index.js b/components/Dashboard/HelpDesk/Activity/index.js new file mode 100644 index 0000000..2f25922 --- /dev/null +++ b/components/Dashboard/HelpDesk/Activity/index.js @@ -0,0 +1,153 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import styles from "../../HelpDesk/Activity/Activity.module.css"; + +const ActivityTimelineData = [ + { + id: "1", + title: "Drop us an email at [Insert Email Address]", + text: "We'll get back to you as soon as possible with detailed..", + icon: "/images/support.png", + date: "10 Min ago", + }, + { + id: "2", + title: "Visit our website [Insert Website URL]", + text: "Initiate a live chat session. Our team will be there to live chat session...", + icon: "/images/avatar2.png", + date: "11:47 PM", + }, + { + id: "3", + title: "Our representatives are available", + text: "Dial our toll-free number, representative are available..", + icon: "/images/time.png", + date: "07 June", + }, + { + id: "4", + title: "Drop us an email at [Insert Email Address]", + text: "We'll get back to you as soon as possible with detailed..", + icon: "/images/support.png", + date: "05 June", + }, +]; + +const Activity = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Activity + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 4).map((timeline) => ( +
+
+ Icon +
+
{timeline.title}
+

{timeline.text}

+

{timeline.date}

+
+
+
+ ))} +
+
+ + ); +}; + +export default Activity; diff --git a/components/Dashboard/HelpDesk/AgentPerformance.js b/components/Dashboard/HelpDesk/AgentPerformance.js new file mode 100644 index 0000000..267190d --- /dev/null +++ b/components/Dashboard/HelpDesk/AgentPerformance.js @@ -0,0 +1,465 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Tooltip from "@mui/material/Tooltip"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; + +function AgentPerformances(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +AgentPerformances.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + userImg, + name, + userName, + ratings, + totalCalls, + callsAnswered, + averageSpeedOfAnswer, + Adherence +) { + return { + userImg, + name, + userName, + ratings, + totalCalls, + callsAnswered, + averageSpeedOfAnswer, + Adherence, + }; +} + +const rows = [ + createData( + "/images/user1.png", + "Jordan Stevenson", + "@jstevenson5c", + "4.5", + "185", + "172", + "2:10s", + "91%" + ), + createData( + "/images/user2.png", + "Lucile Young", + "@lyoung4a", + "3.5", + "399", + "269", + "3:20s", + "95%" + ), + createData( + "/images/user3.png", + "Francis Frank", + "@ffrank7e", + "5", + "499", + "490", + "5:25s", + "99%" + ), + createData( + "/images/user4.png", + "Phoebe Patterson", + "@ppatterson2g", + "4.3", + "199", + "149", + "2:30s", + "77%" + ), + createData( + "/images/user5.png", + "James Andy", + "@andyjm32", + "4.7", + "150", + "129", + "4:31s", + "65%" + ), + createData( + "/images/user6.png", + "Sarah Taylor", + "@taylors32", + "4.9", + "266", + "250", + "2:39s", + "85%" + ), + createData( + "/images/user7.png", + "David Warner", + "@davidwabc2", + "5", + "477", + "470", + "3:21s", + "95%" + ), + createData( + "/images/user8.png", + "Steven Smith", + "@ssmith542", + "4.8", + "199", + "188", + "5:21s", + "91%" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); +export default function AgentPerformance() { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(6); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + Performance of the Agents + + + + + + + + + User + + + + Ratings + + + + Total Calls + + + + Calls Answered + + + + Speed of Answer + + + + Adherence + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + Product Img + + + + {row.name} + + + {row.userName} + + + + + + + {row.ratings} + + + + {row.totalCalls} + + + + {row.callsAnswered} + + + + {row.averageSpeedOfAnswer} + + + + + {row.Adherence} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Dashboard/HelpDesk/AverageSpeedOfAnswer.js b/components/Dashboard/HelpDesk/AverageSpeedOfAnswer.js new file mode 100644 index 0000000..f0b604b --- /dev/null +++ b/components/Dashboard/HelpDesk/AverageSpeedOfAnswer.js @@ -0,0 +1,43 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import Box from "@mui/material/Box"; +import Typography from "@mui/material/Typography"; + +const AverageSpeedOfAnswer = () => { + return ( + <> + + + + Average Speed of Answer + + + + 01m : 20 + s + + + + + chart + + + + ); +}; + +export default AverageSpeedOfAnswer; diff --git a/components/Dashboard/HelpDesk/CustomerSatisfaction/CustomerSatisfactionChart.js b/components/Dashboard/HelpDesk/CustomerSatisfaction/CustomerSatisfactionChart.js new file mode 100644 index 0000000..ccc1287 --- /dev/null +++ b/components/Dashboard/HelpDesk/CustomerSatisfaction/CustomerSatisfactionChart.js @@ -0,0 +1,59 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class CustomerSatisfactionChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [80, 75, 70, 60], + options: { + plotOptions: { + radialBar: { + dataLabels: { + name: { + offsetY: -2, + show: true, + }, + value: { + show: true, + offsetY: 3, + fontWeight: "600", + }, + total: { + show: true, + label: "Overall", + }, + }, + hollow: { + size: "45%", + }, + }, + }, + colors: ["#757FEF", "#2DB6F5", "#8BD3F4", "#BFE9FF"], + labels: ["Excellent", "Very Good", "Good", "Unhappy"], + legend: { + show: false, + }, + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default CustomerSatisfactionChart; diff --git a/components/Dashboard/HelpDesk/CustomerSatisfaction/index.js b/components/Dashboard/HelpDesk/CustomerSatisfaction/index.js new file mode 100644 index 0000000..b996950 --- /dev/null +++ b/components/Dashboard/HelpDesk/CustomerSatisfaction/index.js @@ -0,0 +1,112 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import CustomerSatisfactionChart from "./CustomerSatisfactionChart"; + +const CustomerSatisfaction = () => { + // Menu + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Customer Satisfaction + + + + + + + + + Today + Last Month + Last Year + All Time + + + + {/* CustomerSatisfactionChart */} + + + + ); +}; + +export default CustomerSatisfaction; diff --git a/components/Dashboard/HelpDesk/Features.js b/components/Dashboard/HelpDesk/Features.js new file mode 100644 index 0000000..6154610 --- /dev/null +++ b/components/Dashboard/HelpDesk/Features.js @@ -0,0 +1,104 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; + +const FeaturesData = [ + { + id: "1", + bgColor: "#EEF0FA", + number: "199", + subTitle: "New Tickets", + icon: "/images/coupon-icon.png", + helpText: "From Average Yesterday", + }, + { + id: "2", + bgColor: "#F8EEE2", + number: "207", + subTitle: "Open Tickets", + icon: "/images/shape-2-icon.png", + helpText: "From Average Yesterday", + }, + { + id: "3", + bgColor: "#DDF0F1", + number: "30", + subTitle: "On Hold", + icon: "/images/stack-icon.png", + helpText: "From Average Yesterday", + }, + { + id: "4", + bgColor: "#FBEAEA", + number: "150", + subTitle: "Unassigned", + icon: "/images/apps-icon.png", + helpText: "From Average Yesterday", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + + {feature.number} + + + + + icon + + + + + {feature.subTitle} + + + + {feature.helpText} + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/HelpDesk/SupportStatus.js b/components/Dashboard/HelpDesk/SupportStatus.js new file mode 100644 index 0000000..56295bc --- /dev/null +++ b/components/Dashboard/HelpDesk/SupportStatus.js @@ -0,0 +1,261 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import Link from "@mui/material/Link"; + +const SupportStatus = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + return ( + <> + + {/* Card Header */} + + + Support Status + + + + + Select + + + + + + + + + + 12,50846 + {" "} + Tickets + + + + + + + + + + + Status + + + % Change + + + + + + {" "} + Resolved Tickets + + + +2.48% + + + + + {" "} + Open Tickets + + +1.21% + + + + + {" "} + Unresolved Tickets + + -0.50% + + + + Create New Ticket + + + + + ); +}; + +export default SupportStatus; diff --git a/components/Dashboard/HelpDesk/TicketsStatus.js b/components/Dashboard/HelpDesk/TicketsStatus.js new file mode 100644 index 0000000..8576b07 --- /dev/null +++ b/components/Dashboard/HelpDesk/TicketsStatus.js @@ -0,0 +1,264 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import TrendingUpIcon from "@mui/icons-material/TrendingUp"; +import TrendingDownIcon from "@mui/icons-material/TrendingDown"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const TicketsStatus = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "Open", + data: [10, 20, 15, 12, 9, 11, 6], + }, + { + name: "Closed", + data: [-10, -10, -15, -12, -9, -11, -6], + }, + ]; + const options = { + chart: { + stacked: true, + toolbar: { + show: false, + }, + }, + colors: ["#2DB6F5", "#757FEF"], + plotOptions: { + bar: { + borderRadius: 5, + columnWidth: "15%", + borderRadiusWhenStacked: "last", + }, + }, + dataLabels: { + enabled: false, + }, + grid: { + xaxis: { + lines: { + show: false, + }, + }, + show: true, + strokeDashArray: 5, + borderColor: "#EDEFF5", + }, + yaxis: { + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + }, + xaxis: { + axisBorder: { + show: false, + }, + categories: ["Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri"], + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + }, + legend: { + show: false, + }, + }; + + return ( + <> + + {/* Card Header */} + + + Tickets Status + + + + + Select + + + + + + + {/* Chart */} + + + + + + + {/* New Tickets */} + + + + + New Tickets + + + + 12,50846 + + + + + {" "} + +2.48% + + + + + + + {/* Solved Tickets */} + + + + + Solved Tickets + + + + 10,431 + + + + + {" "} + -1.02% + + + + + + + + + + ); +}; + +export default TicketsStatus; diff --git a/components/Dashboard/HelpDesk/TimeToResolveComplaint.js b/components/Dashboard/HelpDesk/TimeToResolveComplaint.js new file mode 100644 index 0000000..48cd159 --- /dev/null +++ b/components/Dashboard/HelpDesk/TimeToResolveComplaint.js @@ -0,0 +1,43 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import Box from "@mui/material/Box"; +import Typography from "@mui/material/Typography"; + +const TimeToResolveComplaint = () => { + return ( + <> + + + + Time to Resolve Complaint + + + + 03m : 00 + s + + + + + chart + + + + ); +}; + +export default TimeToResolveComplaint; diff --git a/components/Dashboard/LMSCourses/ActiveCourse/ActiveCourseChart.js b/components/Dashboard/LMSCourses/ActiveCourse/ActiveCourseChart.js new file mode 100644 index 0000000..219c743 --- /dev/null +++ b/components/Dashboard/LMSCourses/ActiveCourse/ActiveCourseChart.js @@ -0,0 +1,62 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class ActiveCourseChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [72, 56, 50], + options: { + chart: { + type: "donut", + }, + legend: { + offsetY: 2, + position: "bottom", + horizontalAlign: "center", + }, + labels: ["Courses Done", "On Progress", "To Do"], + colors: ["#757FEF", "#EE368C", "#00B69B"], + tooltip: { + y: { + formatter: function (val) { + return "" + val + "%"; + }, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default ActiveCourseChart; diff --git a/components/Dashboard/LMSCourses/ActiveCourse/index.js b/components/Dashboard/LMSCourses/ActiveCourse/index.js new file mode 100644 index 0000000..0a5e57e --- /dev/null +++ b/components/Dashboard/LMSCourses/ActiveCourse/index.js @@ -0,0 +1,110 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import ActiveCourseChart from "./ActiveCourseChart"; + +const ActiveCourse = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Active Course + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* Live Visits Chart */} + + + + ); +}; + +export default ActiveCourse; diff --git a/components/Dashboard/LMSCourses/CourseCompletion/CourseCompletionList.js b/components/Dashboard/LMSCourses/CourseCompletion/CourseCompletionList.js new file mode 100644 index 0000000..45cb222 --- /dev/null +++ b/components/Dashboard/LMSCourses/CourseCompletion/CourseCompletionList.js @@ -0,0 +1,241 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import Link from "@mui/material/Link"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class CourseCompletionList extends Component { + constructor(props) { + super(props); + this.state = { + series: [25], + series2: [50], + series3: [30], + series4: [50], + options: { + chart: { + offsetX: -8, + }, + plotOptions: { + radialBar: { + hollow: { + size: "50%", + }, + track: { + background: "#A9C8FB", + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 3, + color: "#757FEF", + fontSize: "13px", + fontWeight: "500", + }, + }, + }, + }, + fill: { + colors: ["#757FEF"], + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + {/* Course completion 1 */} + + + + + + + + Data With Python + + + 5 Lessons + + + + + + + + + + + + {/* Course completion 2 */} + + + + + + + + Code Foundation + + + 15 Lessons + + + + + + + + + + + + {/* Course completion 3 */} + + + + + + + + Styling With CSS + + + 13 Lessons + + + + + + + + + + + + {/* Course completion 4 */} + + + + + + + + Code Learn + + + 15 Lessons + + + + + + + + + + + + ); + } +} + +export default CourseCompletionList; diff --git a/components/Dashboard/LMSCourses/CourseCompletion/index.js b/components/Dashboard/LMSCourses/CourseCompletion/index.js new file mode 100644 index 0000000..81a1528 --- /dev/null +++ b/components/Dashboard/LMSCourses/CourseCompletion/index.js @@ -0,0 +1,111 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import CourseCompletionList from "./CourseCompletionList"; + +const CourseCompletion = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Course Completion + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* CourseCompletionList */} + + + + ); +}; + +export default CourseCompletion; diff --git a/components/Dashboard/LMSCourses/Courses/CreatedCourses.js b/components/Dashboard/LMSCourses/Courses/CreatedCourses.js new file mode 100644 index 0000000..b54a4f9 --- /dev/null +++ b/components/Dashboard/LMSCourses/Courses/CreatedCourses.js @@ -0,0 +1,380 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import { Typography } from "@mui/material"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Link from "@mui/material/Link"; + +function CreatedCourse(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +CreatedCourse.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + courseName, + courseLink, + image, + result, + badgeClass, + expirationTime, + endTime +) { + return { + courseName, + courseLink, + image, + result, + badgeClass, + expirationTime, + endTime, + }; +} + +const rows = [ + createData( + "Build an iOS Application in Swift Learn the fundamentals", + "#", + "/images/course-brand3.png", + "Passed", + "successBadge", + "2021-12-19 02:00 PM", + "2021-12-19 04:00 PM" + ), + createData( + "Node.js for Beginners: Go From Zero to Hero with Node.js", + "#", + "/images/course-brand1.png", + "87%", + "primaryBadge", + "2021-12-19 10:00 AM", + "2021-12-19 12:00 PM" + ), + createData( + "Learn the fundamentals of working with Angular and how to create", + "#", + "/images/course-brand2.png", + "Failed", + "dangerBadge", + "2021-12-19 11:00 AM", + "2021-12-19 01:00 PM" + ), + createData( + "Programming Language Become a React Native Developer", + "#", + "/images/course-brand4.png", + "90%", + "primaryBadge", + "2021-12-19 04:00 PM", + "2021-12-19 06:00 PM" + ), + createData( + "Build an iOS Application in Swift Learn the fundamentals", + "#", + "/images/course-brand3.png", + "Passed", + "successBadge", + "2021-12-19 02:00 PM", + "2021-12-19 04:00 PM" + ), + createData( + "Node.js for Beginners: Go From Zero to Hero with Node.js", + "#", + "/images/course-brand1.png", + "87%", + "primaryBadge", + "2021-12-19 10:00 AM", + "2021-12-19 12:00 PM" + ), + createData( + "Learn the fundamentals of working with Angular and how to create", + "#", + "/images/course-brand2.png", + "Failed", + "dangerBadge", + "2021-12-19 11:00 AM", + "2021-12-19 01:00 PM" + ), + createData( + "Programming Language Become a React Native Developer", + "#", + "/images/course-brand4.png", + "90%", + "primaryBadge", + "2021-12-19 04:00 PM", + "2021-12-19 06:00 PM" + ), +].sort((a, b) => (a.courseName < b.courseName ? -1 : 1)); + +export default function CreatedCourses() { + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(6); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + + + Courses + + + + Result + + + + Start Time + + + + End Time + + + + + + {(rowsPerPage > 0 + ? rows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + : rows + ).map((row) => ( + + + + Product Img + + + {row.courseName} + + + + + + + {row.result} + + + + {row.expirationTime} + + + + {row.endTime} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+ + ); +} diff --git a/components/Dashboard/LMSCourses/Courses/EnrolledCourses.js b/components/Dashboard/LMSCourses/Courses/EnrolledCourses.js new file mode 100644 index 0000000..f2747b9 --- /dev/null +++ b/components/Dashboard/LMSCourses/Courses/EnrolledCourses.js @@ -0,0 +1,366 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import { Typography } from "@mui/material"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Link from "@mui/material/Link"; + +function EnrolledCourse(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +EnrolledCourse.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + courseName, + courseLink, + image, + result, + badgeClass, + expirationTime, + endTime +) { + return { + courseName, + courseLink, + image, + result, + badgeClass, + expirationTime, + endTime, + }; +} + +const rows = [ + createData( + "Node.js for Beginners: Go From Zero to Hero with Node.js", + "#", + "/images/course-brand1.png", + "87%", + "primaryBadge", + "2021-12-19 10:00 AM", + "2021-12-19 12:00 PM" + ), + createData( + "Learn the fundamentals of working with Angular and how to create", + "#", + "/images/course-brand2.png", + "Failed", + "dangerBadge", + "2021-12-19 11:00 AM", + "2021-12-19 01:00 PM" + ), + createData( + "Build an iOS Application in Swift Learn the fundamentals", + "#", + "/images/course-brand3.png", + "Passed", + "successBadge", + "2021-12-19 02:00 PM", + "2021-12-19 04:00 PM" + ), + createData( + "Programming Language Become a React Native Developer", + "#", + "/images/course-brand4.png", + "90%", + "primaryBadge", + "2021-12-19 04:00 PM", + "2021-12-19 06:00 PM" + ), + createData( + "Node.js for Beginners Go From Zero to Hero with Node.js", + "#", + "/images/course-brand1.png", + "87%", + "primaryBadge", + "2021-12-19 10:00 AM", + "2021-12-19 12:00 PM" + ), + createData( + "Learn the fundamentals of working with React and how to create", + "#", + "/images/course-brand2.png", + "Failed", + "dangerBadge", + "2021-12-19 11:00 AM", + "2021-12-19 01:00 PM" + ), + createData( + "Build an Android Application in Swift Learn the fundamentals", + "#", + "/images/course-brand3.png", + "Passed", + "successBadge", + "2021-12-19 02:00 PM", + "2021-12-19 04:00 PM" + ), + createData( + "Programming Language Become a React.js Developer", + "#", + "/images/course-brand4.png", + "90%", + "primaryBadge", + "2021-12-19 04:00 PM", + "2021-12-19 06:00 PM" + ), +].sort((a, b) => (a.courseName < b.courseName ? -1 : 1)); + +export default function EnrolledCourses() { + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(6); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + + + Courses + + + + Result + + + + Start Time + + + + End Time + + + + + + {(rowsPerPage > 0 + ? rows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + : rows + ).map((row) => ( + + + + Product Img + + + {row.courseName} + + + + + + + {row.result} + + + + {row.expirationTime} + + + + {row.endTime} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+ + ); +} diff --git a/components/Dashboard/LMSCourses/Courses/Tabs.module.css b/components/Dashboard/LMSCourses/Courses/Tabs.module.css new file mode 100644 index 0000000..848185b --- /dev/null +++ b/components/Dashboard/LMSCourses/Courses/Tabs.module.css @@ -0,0 +1,20 @@ +.tabs ul { + border-bottom: 1px solid #EEF0F7; +} +.tabs ul li { + color: #260944; + font-weight: 500; + font-size: 16px; + background: #F5F7FA; + padding: 8px 25px; + border-radius: 5px 5px 0px 0px; + outline: 0; +} +.tabs ul li:focus:after { + background: transparent; +} + +/* For dark mode */ +[class="dark"] .tabs ul { + border-bottom: 1px solid var(--borderColor); +} \ No newline at end of file diff --git a/components/Dashboard/LMSCourses/Courses/index.js b/components/Dashboard/LMSCourses/Courses/index.js new file mode 100644 index 0000000..0446558 --- /dev/null +++ b/components/Dashboard/LMSCourses/Courses/index.js @@ -0,0 +1,38 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; +import EnrolledCourses from "./EnrolledCourses"; +import CreatedCourses from "./CreatedCourses"; +import styles from '@/components/Dashboard/LMSCourses/Courses/Tabs.module.css'; + +const Courses = () => { + return ( + <> + + + + Enrolled + Created + + + + + + + + + + + + + ); +}; + +export default Courses; diff --git a/components/Dashboard/LMSCourses/CurrentCourses.js b/components/Dashboard/LMSCourses/CurrentCourses.js new file mode 100644 index 0000000..af7247d --- /dev/null +++ b/components/Dashboard/LMSCourses/CurrentCourses.js @@ -0,0 +1,123 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; + +const CurrentCoursesData = [ + { + id: "1", + title: "C++", + subTitle: "It & Software", + image: "/images/c+.png", + score: "4.5 Score", + duration: "37 Days Left", + }, + { + id: "2", + title: "JavaScript", + subTitle: "Web Development", + image: "/images/js.png", + score: "4.5 Score", + duration: "35 Days Left", + }, + { + id: "3", + title: "Haskell", + subTitle: "Programming", + image: "/images/haskell.png", + score: "4.5 Score", + duration: "30 Days Left", + }, +]; + +const CurrentCourses = () => { + return ( + <> + + + + Current Courses + + + + + {CurrentCoursesData.map((course) => ( + + + + + + {course.title} + + + {course.subTitle} + + + + + + + + {course.score} + + + + {course.duration} + + + + + ))} + + + + ); +}; + +export default CurrentCourses; diff --git a/components/Dashboard/LMSCourses/ExperienceIQ.js b/components/Dashboard/LMSCourses/ExperienceIQ.js new file mode 100644 index 0000000..ece24df --- /dev/null +++ b/components/Dashboard/LMSCourses/ExperienceIQ.js @@ -0,0 +1,161 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import Chart from "chart.js/auto"; +import { Bar } from "react-chartjs-2"; + +const options = { + indexAxis: "y", + elements: { + bar: { + // borderWidth: 1, + }, + }, + responsive: true, + plugins: { + legend: { + position: "bottom", + }, + }, +}; + +const labels = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", +]; + +const data = { + labels, + datasets: [ + { + label: "Achivement", + data: [90, 80, 85, 70, 60, 50, 40, 60,], + borderColor: "#F765A3", + backgroundColor: "#FFA5CB", + }, + { + label: "Learning Path", + data: [80, 70, 75, 65, 55, 45, 35, 55,], + borderColor: "#A155B9", + backgroundColor: "#E697FF", + }, + { + label: "IQ Test Score", + data: [70, 60, 70, 60, 50, 40, 30, 50,], + borderColor: "#757FEF", + backgroundColor: "#2DB6F5", + }, + ], +}; + +const ExperienceIQ = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Experience IQ + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + ); +}; + +export default ExperienceIQ; diff --git a/components/Dashboard/LMSCourses/Features.js b/components/Dashboard/LMSCourses/Features.js new file mode 100644 index 0000000..349c3e0 --- /dev/null +++ b/components/Dashboard/LMSCourses/Features.js @@ -0,0 +1,91 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; + +const FeaturesData = [ + { + id: "1", + title: "120", + subTitle: "Enrolled Courses", + image: "/images/icon1.png", + }, + { + id: "2", + title: "17", + subTitle: "Active Courses", + image: "/images/icon2.png", + }, + { + id: "3", + title: "64", + subTitle: "Completed Courses", + image: "/images/icon3.png", + }, + { + id: "4", + title: "2.1M", + subTitle: "Total Students", + image: "/images/icon4.png", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + Icon + + + + + {feature.title} + + + + {feature.subTitle} + + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/LMSCourses/HoursSpent.js b/components/Dashboard/LMSCourses/HoursSpent.js new file mode 100644 index 0000000..94a9202 --- /dev/null +++ b/components/Dashboard/LMSCourses/HoursSpent.js @@ -0,0 +1,156 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const HoursSpent = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "Spent", + data: [21, 22, 10, 28, 16, 20, 25], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#757FEF"], + plotOptions: { + bar: { + columnWidth: "40%", + distributed: true, + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + show: false, + }, + xaxis: { + categories: [ + ["Sat"], + ["Sun"], + ["Mon"], + ["Tue"], + ["Wed"], + ["Thu"], + ["Fri"], + ], + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + }, + yaxis: { + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + axisBorder: { + show: false, + colors: "#f6f6f7", + }, + }, + fill: { + opacity: 1, + }, + tooltip: { + y: { + formatter: function (val) { + return "" + val + " Hours"; + }, + }, + }, + grid: { + show: true, + borderColor: "#EDEFF5", + strokeDashArray: 5, + }, + }; + + return ( + <> + + + + Hours Spent + + + + Select + + + + + + + + + ); +}; + +export default HoursSpent; diff --git a/components/Dashboard/LMSCourses/Messages/Messages.module.css b/components/Dashboard/LMSCourses/Messages/Messages.module.css new file mode 100644 index 0000000..96c589c --- /dev/null +++ b/components/Dashboard/LMSCourses/Messages/Messages.module.css @@ -0,0 +1,24 @@ +.messagesList { + border-bottom: 1px solid #F7FAFF; + border-right: 2px solid transparent; + padding-left: 12px; + padding-right: 12px; + padding-top: 15px; + padding-bottom: 10px; + margin-bottom: 15px; +} +.messagesList:last-child { + margin-bottom: 0; +} +.messagesList:hover { + background: #FAFAFA; + border-right: 2px solid #757FEF; +} + +/* For dark mode */ +[class="dark"] .messagesList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .messagesList:hover { + background: var(--colorBlack); +} \ No newline at end of file diff --git a/components/Dashboard/LMSCourses/Messages/index.js b/components/Dashboard/LMSCourses/Messages/index.js new file mode 100644 index 0000000..918fd22 --- /dev/null +++ b/components/Dashboard/LMSCourses/Messages/index.js @@ -0,0 +1,248 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import Badge from '@mui/material/Badge'; +import styles from "@/components/Dashboard/LMSCourses/Messages/Messages.module.css"; + +const MessagesData = [ + { + id: "1", + name: "Johen Mandel", + text: "Hi, i want make enquiries...", + image: "/images/user15.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "1", + time: "12:55 AM" + }, + { + id: "2", + name: "Thomas Albart", + text: "Hi, i want make enquiries...", + image: "/images/user16.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "2", + time: "6:55 AM" + }, + { + id: "3", + name: "Maical Doe", + text: "Hi, i want make enquiries...", + image: "/images/user17.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "3", + time: "8:00 AM" + }, +]; + +const Messages = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Messages + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + {MessagesData.slice(0, 3).map((message) => ( +
+ + + +
+ User +
+ +
+ + + + {message.name} + + + {message.text} + + +
+ + + + + {message.newTag} + + + + {message.number} + + + + + {message.time} + + +
+
+ ))} +
+
+ + ); +}; + +export default Messages; diff --git a/components/Dashboard/LMSCourses/MyPlanning.js b/components/Dashboard/LMSCourses/MyPlanning.js new file mode 100644 index 0000000..48067fb --- /dev/null +++ b/components/Dashboard/LMSCourses/MyPlanning.js @@ -0,0 +1,166 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; + +const MyPlanningData = [ + { + id: "1", + image: "/images/3d1.png", + title: "Animation Learning", + dateTime: "Dec 14, 08:30 PM", + }, + { + id: "2", + image: "/images/3d2.png", + title: "UI/UX Research", + dateTime: "Dec 15, 09:30 PM", + }, + { + id: "3", + image: "/images/3d3.png", + title: "Machine Learning", + dateTime: "Dec 16, 10:30 PM", + }, + { + id: "4", + image: "/images/3d4.png", + title: "Web Development", + dateTime: "Dec 17, 11:30 PM", + }, +]; + +const MyPlanning = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + My Planning + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {MyPlanningData.map((plan) => ( + + Image + + + + {plan.title} + + + {plan.dateTime} + + + + ))} + + + ); +}; + +export default MyPlanning; diff --git a/components/Dashboard/LMSCourses/TopInstructor.js b/components/Dashboard/LMSCourses/TopInstructor.js new file mode 100644 index 0000000..b52f5ae --- /dev/null +++ b/components/Dashboard/LMSCourses/TopInstructor.js @@ -0,0 +1,174 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import Grid from "@mui/material/Grid"; +import Button from "@mui/material/Button"; + +const TopInstructorData = [ + { + id: "1", + image: "/images/user9.png", + name: "Melanie Grutt", + userName: "@melgrutt", + }, + { + id: "2", + image: "/images/user10.png", + name: "Theron Trump", + userName: "@therontrump", + }, + { + id: "3", + image: "/images/user11.png", + name: "Johen Mark", + userName: "@johenmark", + }, + { + id: "4", + image: "/images/user12.png", + name: "Nicholas Tanner", + userName: "@nilyeager", + }, + { + id: "5", + image: "/images/user13.png", + name: "Tyler Mark", + userName: "@tylemark", + }, + { + id: "6", + image: "/images/user14.png", + name: "Martina Albart", + userName: "@martina", + }, +]; + +const TopInstructor = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Top Instructor + + + + Select + + + + + + + {TopInstructorData.map((instructor) => ( + + + + Image + + + + {instructor.name} + + + {instructor.userName} + + + + + + + + + + ))} + + + + ); +}; + +export default TopInstructor; diff --git a/components/Dashboard/LMSCourses/TopStudents.js b/components/Dashboard/LMSCourses/TopStudents.js new file mode 100644 index 0000000..1611b17 --- /dev/null +++ b/components/Dashboard/LMSCourses/TopStudents.js @@ -0,0 +1,156 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import Grid from "@mui/material/Grid"; + +const TopStudentsData = [ + { + id: "1", + image: "/images/user18.png", + name: "Melanie Grutt", + userName: "@melgrutt", + }, + { + id: "2", + image: "/images/user19.png", + name: "Theron Trump", + userName: "@therontrump", + }, + { + id: "3", + image: "/images/user20.png", + name: "Johen Mark", + userName: "@johenmark", + }, + { + id: "4", + image: "/images/user21.png", + name: "Nicholas Tanner", + userName: "@nilyeager", + }, + { + id: "5", + image: "/images/user22.png", + name: "Tyler Mark", + userName: "@tylemark", + }, + { + id: "6", + image: "/images/user23.png", + name: "Martina Albart", + userName: "@martina", + }, +]; + +const TopStudents = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Top Students + + + + Select + + + + + + + {TopStudentsData.map((student) => ( + + + + Image + + + + {student.name} + + + {student.userName} + + + + + + ))} + + + + ); +}; + +export default TopStudents; diff --git a/components/Dashboard/LMSCourses/TotalWatched/TotalWatched.module.css b/components/Dashboard/LMSCourses/TotalWatched/TotalWatched.module.css new file mode 100644 index 0000000..90fa53f --- /dev/null +++ b/components/Dashboard/LMSCourses/TotalWatched/TotalWatched.module.css @@ -0,0 +1,44 @@ +.box { + background: #757FEF; + border-radius: 10px; + padding: 25px 20px; + margin-bottom: 15px; +} +.boxList { + display: flex; + align-items: center; + justify-content: space-between; + position: relative; + padding-left: 17px; + border-bottom: 1px solid #878fe5; + padding-bottom: 18px; + margin-bottom: 18px; +} +.boxList:last-child { + border-bottom: none; + padding-bottom: 0; + margin-bottom: 0; +} +.boxList::before { + content: ''; + background: linear-gradient(149.1deg, #99B8F3 14.61%, #177FCB 130.18%); + box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25); + width: 10px; + height: 10px; + position: absolute; + left: 0; + top: 5px; + border-radius: 100px; +} +.boxList h4 { + margin: 0; + color: #fff; + font-size: 13px; + font-weight: 500; +} +.boxList p { + margin: 0; + color: #fff; + font-size: 12px; + font-weight: 500; +} \ No newline at end of file diff --git a/components/Dashboard/LMSCourses/TotalWatched/index.js b/components/Dashboard/LMSCourses/TotalWatched/index.js new file mode 100644 index 0000000..54be593 --- /dev/null +++ b/components/Dashboard/LMSCourses/TotalWatched/index.js @@ -0,0 +1,34 @@ +import React from "react"; +import styles from "@/components/Dashboard/LMSCourses/TotalWatched/TotalWatched.module.css"; + +const TotalWatched = () => { + return ( + <> +
+
+

Total Watched

+

+ 66:15h +

+
+ +
+

Assignment Completed

+

81%

+
+ +
+

Monthly Progress

+

81%

+
+ +
+

Overall Pass Percentage

+

81%

+
+
+ + ); +}; + +export default TotalWatched; diff --git a/components/Dashboard/LMSCourses/YourProgress.js b/components/Dashboard/LMSCourses/YourProgress.js new file mode 100644 index 0000000..a32d829 --- /dev/null +++ b/components/Dashboard/LMSCourses/YourProgress.js @@ -0,0 +1,139 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import { + LineChart, + Line, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer +} from "recharts"; + +const data = [ + { + name: "01 Jan", + Practice: 15, + Theory: 10, + }, + { + name: "02 Jan", + Practice: 11, + Theory: 16, + }, + { + name: "03 Jan", + Practice: 17, + Theory: 12, + }, + { + name: "04 Jan", + Practice: 13, + Theory: 18, + }, + { + name: "05 Jan", + Practice: 19, + Theory: 14, + }, + { + name: "06 Jan", + Practice: 15, + Theory: 20, + }, + { + name: "07 Jan", + Practice: 16, + Theory: 22, + }, +]; + +const YourProgress = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Your Progress + + + + Select + + + + + + + + + + + + + + + + + + + ); +}; + +export default YourProgress; diff --git a/components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css b/components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..06272f1 --- /dev/null +++ b/components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css @@ -0,0 +1,56 @@ +.timelineList .tList { + position: relative; + margin-bottom: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #F7FAFF; + display: flex; + align-items: center; + justify-content: space-between; +} +.timelineList .tList:last-child { + border: none; + padding-bottom: 0; + margin-bottom: 0; +} +.timelineList .tList .content { + display: flex; + align-items: center; +} +.timelineList .tList .content img { + margin-right: 10px; + width: 27px; +} +.timelineList .tList .content h5 { + margin: 0; + color: #5B5B98; + font-size: 13px; + font-weight: 500; +} +.timelineList .tList .date { + color: #A9A9C8; + font-size: 12px; + margin: 0; +} + +@media only screen and (min-width: 1800px) { + .timelineList .tList { + margin-bottom: 16.5px; + padding-bottom: 16.5px; + } +} + +[dir="rtl"] .timelineList .tList .content img { + margin-right: 0; + margin-left: 10px; +} + +/* For dark mode */ +[class="dark"] .timelineList .tList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .timelineList .tList:last-child { + border-bottom: none; +} +[class="dark"] .timelineList .tList .content h5 { + color: var(--darkHeadingTextColor); +} \ No newline at end of file diff --git a/components/Dashboard/ProjectManagement/ActivityTimeline/index.js b/components/Dashboard/ProjectManagement/ActivityTimeline/index.js new file mode 100644 index 0000000..927be14 --- /dev/null +++ b/components/Dashboard/ProjectManagement/ActivityTimeline/index.js @@ -0,0 +1,158 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import styles from "../../ProjectManagement/ActivityTimeline/ActivityTimeline.module.css"; + +const ActivityTimelineData = [ + { + id: "1", + image: '/images/pdf-icon.png', + title: "Donald updated the status", + time: "54 min ago", + }, + { + id: "2", + image: '/images/man.png', + title: "Design new UI and check sales", + time: "10 hours ago", + }, + { + id: "3", + title: "James Bangs Client Meeting", + image: '/images/small-product-img.png', + time: "5 min ago", + }, + { + id: "4", + title: "Joseph Rust opened new showcase", + image: '/images/small-product-img2.png', + time: "10 min ago", + }, + { + id: "5", + title: "Brust opened new showcase", + image: '/images/small-product-img3.png', + time: "15 min ago", + }, + { + id: "6", + title: "Create a new project for client", + image: '/images/man.png', + time: "20 min ago", + }, +]; + +const ActivityTimeline = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 6).map((timeline) => ( +
+
+ Icon +
{timeline.title}
+
+

{timeline.time}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/Dashboard/ProjectManagement/AllProjects.js b/components/Dashboard/ProjectManagement/AllProjects.js new file mode 100644 index 0000000..5500592 --- /dev/null +++ b/components/Dashboard/ProjectManagement/AllProjects.js @@ -0,0 +1,570 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import Avatar from "@mui/material/Avatar"; +import AvatarGroup from "@mui/material/AvatarGroup"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const AllProjects = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + All Projects + + + + + Select + + + + + + + + + + + + Project Name + + + + Members + + + + Budget + + + + Status + + + + Completion + + + + Due Date + + + + + + + + + Image + + Product UI/UX Design + + + + + + + + + + + + + + $14,000 + + + + Active + + + + + 70% + + + + + + + 08 Mar 2021 + + + + + + + Image + + Public Beta Release + + + + + + + + + + + + + $14,000 + + + + Complete + + + + + 100% + + + + + + 17 Apr 2021 + + + + + + + Image + + SEO Marketing + + + + + + + + + + + + + $12,000 + + + + Complete + + + + + 100% + + + + + + 10 Sep 2021 + + + + + + + Image + + New Office Building + + + + + + + + + + + + + + $9,000 + + + + Pending + + + + + 0% + + + + + + 06 Aug 2022 + + + + + + + Image + + Product Devlopment + + + + + + + + + + + + + + $16,000 + + + + Active + + + + + 80% + + + + + + 08 Mar 2022 + + + +
+
+
+ + ); +}; + +export default AllProjects; diff --git a/components/Dashboard/ProjectManagement/CompletedTasks.js b/components/Dashboard/ProjectManagement/CompletedTasks.js new file mode 100644 index 0000000..1666f76 --- /dev/null +++ b/components/Dashboard/ProjectManagement/CompletedTasks.js @@ -0,0 +1,250 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const CompletedTasks = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + // Chart + const series = [ + { + name: "Task", + data: [21, 22, 10, 28, 16, 21, 13, 30], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#757FEF"], + plotOptions: { + bar: { + borderRadius: 5, + borderRadiusApplication: 'end', + horizontal: false, + columnWidth: "20%" + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + offsetY: 0, + show: false, + fontSize: "14px", + position: "bottom", + horizontalAlign: "center", + labels: { + colors: '#5B5B98' + } + }, + xaxis: { + categories: [ + ["1 Jan"], + ["2 Jan"], + ["3 Jan"], + ["4 Jan"], + ["5 Jan"], + ["6 Jan"], + ["7 Jan"], + ["8 Jan"], + ], + axisBorder: { + show: false + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: "#a9a9c8", + fontSize: "14px" + } + } + }, + yaxis: { + show: false, + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px" + }, + }, + axisBorder: { + show: false + } + }, + grid: { + show: false, + strokeDashArray: 5, + borderColor: "#EDEFF5" + }, + fill: { + opacity: 1, + }, + }; + + return ( + <> + + + + Completed Tasks + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Target + + + {" "} + 20k + + + + + + Last Week + + + {" "} + 5.50k + + + + + + Last Month + + + {" "} + 50k + + + + + + ); +}; + +export default CompletedTasks; diff --git a/components/Dashboard/ProjectManagement/Features.js b/components/Dashboard/ProjectManagement/Features.js new file mode 100644 index 0000000..8829b31 --- /dev/null +++ b/components/Dashboard/ProjectManagement/Features.js @@ -0,0 +1,150 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; + +const FeaturesData = [ + { + id: "1", + subTitle: "Due Tasks", + title: "41", + iconName: "ri-pie-chart-2-line", + badgeProgress: "5.80%", + badgeClass: "successBadge", + badgeIcon: "ri-arrow-up-s-fill", + growthText: "Completed: 13 Projects this month", + }, + { + id: "2", + subTitle: "Active Projects", + title: "65", + iconName: "ri-briefcase-line", + badgeProgress: "1.04%", + badgeClass: "dangerBadge", + badgeIcon: "ri-arrow-down-s-fill", + growthText: "Projects this month", + }, + { + id: "3", + subTitle: "Total Hours", + title: "599", + iconName: "ri-time-line", + badgeProgress: "5.80%", + badgeClass: "successBadge", + badgeIcon: "ri-arrow-up-s-fill", + growthText: "Projects this month", + }, + { + id: "4", + subTitle: "Total Projects", + title: "24k", + iconName: "ri-shield-check-line", + badgeProgress: "7.80%", + badgeClass: "successBadge", + badgeIcon: "ri-arrow-up-s-fill", + growthText: "Completed: 13 Projects this month", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + + + + + + + {feature.subTitle} + + + {feature.title} + + + + + + + {feature.badgeProgress} + + + + + + + + {feature.icon} + {feature.growthText} + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/ProjectManagement/IssuesSummary/IssuesSummaryChart.js b/components/Dashboard/ProjectManagement/IssuesSummary/IssuesSummaryChart.js new file mode 100644 index 0000000..2a0da8f --- /dev/null +++ b/components/Dashboard/ProjectManagement/IssuesSummary/IssuesSummaryChart.js @@ -0,0 +1,472 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class IssuesSummaryChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [ + [1327359500000, 30.95], + [1327445000000, 31.34], + [1327532400000, 31.18], + [1327618800000, 31.05], + [1327878000000, 31.0], + [1327964400000, 30.95], + [1328050800000, 31.24], + [1328137200000, 31.29], + [1328223500000, 31.85], + [1328482800000, 31.86], + [1328569200000, 32.28], + [1328655500000, 32.1], + [1328742000000, 32.65], + [1328828400000, 32.21], + [1329087500000, 32.35], + [1329174000000, 32.44], + [1329260400000, 32.46], + [1329346800000, 32.86], + [1329433200000, 32.75], + [1329778800000, 32.54], + [1329865200000, 32.33], + [1329951500000, 32.97], + [1330038000000, 33.41], + [1330297200000, 33.27], + [1330383500000, 33.27], + [1330470000000, 32.89], + [1330556400000, 33.1], + [1330642800000, 33.73], + [1330902000000, 33.22], + [1330988400000, 31.99], + [1331074800000, 32.41], + [1331161200000, 33.05], + [1331247500000, 33.64], + [1331506800000, 33.56], + [1331593200000, 34.22], + [1331679500000, 33.77], + [1331765000000, 34.17], + [1331852400000, 33.82], + [1332111500000, 34.51], + [1332198000000, 33.16], + [1332284400000, 33.56], + [1332370800000, 33.71], + [1332457200000, 33.81], + [1332712800000, 34.4], + [1332799200000, 34.63], + [1332885500000, 34.46], + [1332972000000, 34.48], + [1333058400000, 34.31], + [1333317500000, 34.7], + [1333404000000, 34.31], + [1333490400000, 33.46], + [1333576800000, 33.59], + [1333922400000, 33.22], + [1334008800000, 32.61], + [1334095200000, 33.01], + [1334181500000, 33.55], + [1334268000000, 33.18], + [1334527200000, 32.84], + [1334613500000, 33.84], + [1334700000000, 33.39], + [1334786400000, 32.91], + [1334872800000, 33.06], + [1335132000000, 32.62], + [1335218400000, 32.4], + [1335304800000, 33.13], + [1335391200000, 33.26], + [1335477500000, 33.58], + [1335736800000, 33.55], + [1335823200000, 33.77], + [1335909500000, 33.76], + [1335995000000, 33.32], + [1336082400000, 32.61], + [1336341500000, 32.52], + [1336428000000, 32.67], + [1336514400000, 32.52], + [1336500800000, 31.92], + [1336687200000, 32.2], + [1336946400000, 32.23], + [1337032800000, 32.33], + [1337119200000, 32.36], + [1337205500000, 32.01], + [1337292000000, 31.31], + [1337551200000, 32.01], + [1337637500000, 32.01], + [1337724000000, 32.18], + [1337810400000, 31.54], + [1337896800000, 31.6], + [1338242400000, 32.05], + [1338328800000, 31.29], + [1338415200000, 31.05], + [1338501500000, 29.82], + [1338760800000, 30.31], + [1338847200000, 30.7], + [1338933500000, 31.69], + [1339020000000, 31.32], + [1339106400000, 31.65], + [1339365500000, 31.13], + [1339452000000, 31.77], + [1339538400000, 31.79], + [1339624800000, 31.67], + [1339711200000, 32.39], + [1339970400000, 32.63], + [1340056800000, 32.89], + [1340143200000, 31.99], + [1340229500000, 31.23], + [1340315000000, 31.57], + [1340575200000, 30.84], + [1340661500000, 31.07], + [1340748000000, 31.41], + [1340834400000, 31.17], + [1340920800000, 32.37], + [1341180000000, 32.19], + [1341266400000, 32.51], + [1341439200000, 32.53], + [1341525500000, 31.37], + [1341784800000, 30.43], + [1341871200000, 30.44], + [1341957500000, 30.2], + [1342044000000, 30.14], + [1342130400000, 30.65], + [1342389500000, 30.4], + [1342475000000, 30.65], + [1342562400000, 31.43], + [1342648800000, 31.89], + [1342735200000, 31.38], + [1342994400000, 30.64], + [1343080800000, 30.02], + [1343167200000, 30.33], + [1343253500000, 30.95], + [1343340000000, 31.89], + [1343599200000, 31.01], + [1343685500000, 30.88], + [1343772000000, 30.69], + [1343858400000, 30.58], + [1343944800000, 32.02], + [1344204000000, 32.14], + [1344290400000, 32.37], + [1344376800000, 32.51], + [1344463200000, 32.65], + [1344549500000, 32.64], + [1344808800000, 32.27], + [1344895200000, 32.1], + [1344981500000, 32.91], + [1345068000000, 33.65], + [1345154400000, 33.8], + [1345413500000, 33.92], + [1345500000000, 33.75], + [1345586400000, 33.84], + [1345672800000, 33.5], + [1345759200000, 32.26], + [1346018400000, 32.32], + [1346104800000, 32.06], + [1346191200000, 31.96], + [1346277500000, 31.46], + [1346364000000, 31.27], + [1346709500000, 31.43], + [1346795000000, 32.26], + [1346882400000, 32.79], + [1346968800000, 32.46], + [1347228000000, 32.13], + [1347314400000, 32.43], + [1347400800000, 32.42], + [1347487200000, 32.81], + [1347573500000, 33.34], + [1347832800000, 33.41], + [1347919200000, 32.57], + [1348005500000, 33.12], + [1348092000000, 34.53], + [1348178400000, 33.83], + [1348437500000, 33.41], + [1348524000000, 32.9], + [1348610400000, 32.53], + [1348696800000, 32.8], + [1348783200000, 32.44], + [1349042400000, 32.62], + [1349128800000, 32.57], + [1349215200000, 32.6], + [1349301500000, 32.68], + [1349388000000, 32.47], + [1349647200000, 32.23], + [1349733500000, 31.68], + [1349820000000, 31.51], + [1349906400000, 31.78], + [1349992800000, 31.94], + [1350252000000, 32.33], + [1350338400000, 33.24], + [1350424800000, 33.44], + [1350511200000, 33.48], + [1350597500000, 33.24], + [1350856800000, 33.49], + [1350943200000, 33.31], + [1351029500000, 33.36], + [1351115000000, 33.4], + [1351202400000, 34.01], + [1351638000000, 34.02], + [1351724400000, 34.36], + [1351810800000, 34.39], + [1352070000000, 34.24], + [1352156400000, 34.39], + [1352242800000, 33.47], + [1352329200000, 32.98], + [1352415500000, 32.9], + [1352674800000, 32.7], + [1352761200000, 32.54], + [1352847500000, 32.23], + [1352934000000, 32.64], + [1353020400000, 32.65], + [1353279500000, 32.92], + [1353365000000, 32.64], + [1353452400000, 32.84], + [1353625200000, 33.4], + [1353884400000, 33.3], + [1353970800000, 33.18], + [1354057200000, 33.88], + [1354143500000, 34.09], + [1354230000000, 34.61], + [1354489200000, 34.7], + [1354575500000, 35.3], + [1354662000000, 35.4], + [1354748400000, 35.14], + [1354834800000, 35.48], + [1355094000000, 35.75], + [1355180400000, 35.54], + [1355266800000, 35.96], + [1355353200000, 35.53], + [1355439500000, 37.56], + [1355698800000, 37.42], + [1355785200000, 37.49], + [1355871500000, 38.09], + [1355958000000, 37.87], + [1356044400000, 37.71], + [1356303500000, 37.53], + [1356476400000, 37.55], + [1356562800000, 37.3], + [1356649200000, 36.9], + [1356908400000, 37.68], + [1357081200000, 38.34], + [1357167500000, 37.75], + [1357254000000, 38.13], + [1357513200000, 37.94], + [1357599500000, 38.14], + [1357685000000, 38.66], + [1357772400000, 38.62], + [1357858800000, 38.09], + [1358118000000, 38.16], + [1358204400000, 38.15], + [1358290800000, 37.88], + [1358377200000, 37.73], + [1358463500000, 37.98], + [1358809200000, 37.95], + [1358895500000, 38.25], + [1358982000000, 38.1], + [1359068400000, 38.32], + [1359327500000, 38.24], + [1359414000000, 38.52], + [1359500400000, 37.94], + [1359586800000, 37.83], + [1359673200000, 38.34], + [1359932400000, 38.1], + [1350018800000, 38.51], + [1360105200000, 38.4], + [1360191500000, 38.07], + [1360278000000, 39.12], + [1360537200000, 38.64], + [1360623500000, 38.89], + [1360710000000, 38.81], + [1360796400000, 38.61], + [1360882800000, 38.63], + [1361228400000, 38.99], + [1361314800000, 38.77], + [1361401200000, 38.34], + [1361487500000, 38.55], + [1361746800000, 38.11], + [1361833200000, 38.59], + [1361919500000, 39.6], + ], + }, + ], + options: { + chart: { + id: "area-datetime", + zoom: { + autoScaleYaxis: true, + }, + }, + annotations: { + yaxis: [ + { + y: 30, + borderColor: "#999", + label: { + show: true, + text: "Support", + style: { + color: "#fff", + background: "#00E396", + }, + }, + }, + ], + xaxis: [ + { + x: new Date("14 Nov 2012").getTime(), + borderColor: "#999", + yAxisIndex: 0, + label: { + show: true, + text: "Rally", + style: { + color: "#fff", + background: "#775DD0", + }, + }, + }, + ], + }, + dataLabels: { + enabled: false, + }, + markers: { + size: 0, + style: "hollow", + }, + xaxis: { + type: "datetime", + min: new Date("01 Mar 2012").getTime(), + tickAmount: 6, + }, + tooltip: { + x: { + format: "dd MMM yyyy", + }, + }, + fill: { + type: "gradient", + gradient: { + shadeIntensity: 1, + opacityFrom: 0.7, + opacityTo: 0.9, + stops: [0, 100], + }, + }, + }, + + selection: "one_year", + }; + } + + updateData(timeline) { + this.setState({ + selection: timeline, + }); + + switch (timeline) { + case "one_month": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("28 Jan 2013").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "six_months": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("27 Sep 2012").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "one_year": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("27 Feb 2012").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "ytd": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("01 Jan 2013").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "all": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("23 Jan 2012").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + default: + } + } + render() { + return ( + <> +
+
+ +   + +   + +   + +   + +
+ +
+ +
+
+ + ); + } +} + +export default IssuesSummaryChart; diff --git a/components/Dashboard/ProjectManagement/IssuesSummary/index.js b/components/Dashboard/ProjectManagement/IssuesSummary/index.js new file mode 100644 index 0000000..4f3ff54 --- /dev/null +++ b/components/Dashboard/ProjectManagement/IssuesSummary/index.js @@ -0,0 +1,43 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import IssuesSummaryChart from "./IssuesSummaryChart"; + +const IssuesSummary = () => { + return ( + <> + + + + Issues Summary + + + + {/* IssuesSummaryChart */} + + + + ); +}; + +export default IssuesSummary; diff --git a/components/Dashboard/ProjectManagement/MyTasks.js b/components/Dashboard/ProjectManagement/MyTasks.js new file mode 100644 index 0000000..c80290f --- /dev/null +++ b/components/Dashboard/ProjectManagement/MyTasks.js @@ -0,0 +1,402 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import IconButton from "@mui/material/IconButton"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Tooltip from "@mui/material/Tooltip"; +import Checkbox from '@mui/material/Checkbox'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +function MyTask(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +MyTask.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(task, dedline, status, badgeClass, assignee, memberName) { + return { + task, + dedline, + status, + badgeClass, + assignee, + memberName, + }; +} + +const rows = [ + createData( + "Public Beta Release", + "14 Feb 2022", + "On Going", + "successBadge", + "/images/user1.png", + "Wade" + ), + createData( + "Fix Platform Errors", + "15 Mar 2022", + "Completed", + "primaryBadge", + "/images/user2.png", + "Dave" + ), + createData( + "Launch our Mobile App", + "15 Apr 2022", + "On Going", + "successBadge", + "/images/user3.png", + "Liam" + ), + createData( + "Add the New Pricing Page", + "15 May 2022", + "Pending", + "dangerBadge", + "/images/user4.png", + "Nathaniel" + ), + createData( + "Redesign New Online Shop", + "15 Jun 2022", + "On Going", + "successBadge", + "/images/user5.png", + "Lewis" + ), + createData( + "Material Ui Design", + "15 Jul 2022", + "On Going", + "successBadge", + "/images/user6.png", + "Milton" + ), + createData( + "Add Progress Track", + "15 Mar 2022", + "Completed", + "primaryBadge", + "/images/user7.png", + "Claude" + ), + createData( + "Web Design", + "15 Aug 2022", + "On Going", + "successBadge", + "/images/user8.png", + "Harvey" + ), + createData( + "Web Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user9.png", + "Blake" + ), + createData( + "React App Development", + "15 Dec 2022", + "Completed", + "primaryBadge", + "/images/user10.png", + "Antonio" + ), + createData( + "eCommerce Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user11.png", + "Conner" + ), + createData( + "App Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user12.png", + "Shane" + ), +].sort((a, b) => (a.task < b.task ? -1 : 1)); + +const MyTasks = () => { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(6); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + My Tasks + + + + + + + + + Task + + + Dedline + + + Status + + + Assignee + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + {row.task} + + + + {row.dedline} + + + + {row.status} + + + + + Img + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default MyTasks; diff --git a/components/Dashboard/ProjectManagement/TaskDistribution/TaskDistributionChart.js b/components/Dashboard/ProjectManagement/TaskDistribution/TaskDistributionChart.js new file mode 100644 index 0000000..e9f7d52 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TaskDistribution/TaskDistributionChart.js @@ -0,0 +1,50 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class TaskDistributionChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [14, 23, 21, 17], + options: { + labels: ['API', 'Frontend', 'Backend', 'Design'], + colors: ["#B8C8DB", "#A1AADB", "#BA68C8", "#8E72C8"], + fill: { + opacity: 0.9, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default TaskDistributionChart; diff --git a/components/Dashboard/ProjectManagement/TaskDistribution/index.js b/components/Dashboard/ProjectManagement/TaskDistribution/index.js new file mode 100644 index 0000000..eb2fb55 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TaskDistribution/index.js @@ -0,0 +1,76 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import TaskDistributionChart from "./TaskDistributionChart"; + +const TaskDistribution = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Task Distribution + + + + Select + + + + + + {/* TaskDistributionChart */} + + + + ); +}; + +export default TaskDistribution; diff --git a/components/Dashboard/ProjectManagement/TasksPerformance/TasksPerformanceChart.js b/components/Dashboard/ProjectManagement/TasksPerformance/TasksPerformanceChart.js new file mode 100644 index 0000000..36e6b7a --- /dev/null +++ b/components/Dashboard/ProjectManagement/TasksPerformance/TasksPerformanceChart.js @@ -0,0 +1,141 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class TasksPerformanceChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [76, 67, 61, 90], + options: { + plotOptions: { + radialBar: { + offsetY: 0, + startAngle: 0, + endAngle: 270, + hollow: { + margin: 5, + size: "25%", + background: "transparent", + image: undefined, + }, + dataLabels: { + name: { + show: false, + }, + value: { + show: false, + }, + }, + }, + }, + colors: ["#757FEF", "#9EA5F4", "#C8CCF9", "#F1F2FD"], + labels: ["Completed", "Active", "Assigned", "Pending"], + legend: { + show: true, + floating: true, + fontSize: "13px", + position: "left", + offsetY: 0, + labels: { + color: "#5B5B98" + }, + markers: { + size: 0, + }, + formatter: function (seriesName, opts) { + return seriesName + ": " + opts.w.globals.series[opts.seriesIndex]; + }, + itemMargin: { + vertical: 3, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + height: 280 + }, + legend: { + show: false, + }, + }, + }, + ], + fill: { + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 30k + + + + + + Last Week + + + {" "} + 40k + + + + + + Last Month + + + {" "} + 60k + + + + + ); + } +} + +export default TasksPerformanceChart; diff --git a/components/Dashboard/ProjectManagement/TasksPerformance/index.js b/components/Dashboard/ProjectManagement/TasksPerformance/index.js new file mode 100644 index 0000000..3364fb8 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TasksPerformance/index.js @@ -0,0 +1,110 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import TasksPerformanceChart from "./TasksPerformanceChart"; + +const TasksPerformance = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Tasks Performance + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TasksPerformanceChart */} + + + + ); +}; + +export default TasksPerformance; diff --git a/components/Dashboard/ProjectManagement/TeamMembers.js b/components/Dashboard/ProjectManagement/TeamMembers.js new file mode 100644 index 0000000..2cfab79 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TeamMembers.js @@ -0,0 +1,198 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const TeamMembersData = [ + { + id: "1", + image: "/images/user1.png", + name: "Jordan Stevenson", + userName: "@jstevenson5c", + hours: "110h : 150m", + task: "258", + progress: "55", + }, + { + id: "2", + image: "/images/user2.png", + name: "Lydia Reese", + userName: "@lreese3b", + hours: "220h : 58m", + task: "158", + progress: "60", + }, + { + id: "3", + image: "/images/user3.png", + name: "Easin Arafat", + userName: "@jstevenson5c", + hours: "315h : 40m", + task: "250", + progress: "65", + }, + { + id: "4", + image: "/images/user4.png", + name: "Laurent Perrier", + userName: "@laurentperrier", + hours: "90h : 50m", + task: "200", + progress: "75", + }, + { + id: "5", + image: "/images/user5.png", + name: "Laurent Perrier", + userName: "@laurentperrier", + hours: "90h : 50m", + task: "200", + progress: "90", + }, +]; + +const TeamMembers = () => { + return ( + <> + + + + Team Members + + + + + + + + + Member + + + + Hours + + + + Task + + + + Status + + + + + + {TeamMembersData.map((team) => ( + + + + Image + + + {team.name} + + {team.userName} + + + + + + {team.hours} + + + + {team.task} + + + + + {team.progress}% + + + + + + ))} + +
+
+
+ + ); +}; + +export default TeamMembers; diff --git a/components/Dashboard/ProjectManagement/TotalUsers/TotalUsersChart.js b/components/Dashboard/ProjectManagement/TotalUsers/TotalUsersChart.js new file mode 100644 index 0000000..671b720 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TotalUsers/TotalUsersChart.js @@ -0,0 +1,113 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; + +class TotalUsersChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [44, 55, 13], + options: { + labels: ["Target", "Last week", "Last Month"], + stroke: { + width: 0, + show: true + }, + colors: ["#757FEF", "#90C6E0", "#E040FB"], + legend: { + offsetY: 0, + show: false, + position: "bottom", + fontSize: "14px", + labels: { + colors: '#5B5B98', + }, + }, + tooltip: { + y: { + formatter: function (val) { + return "" + val + "k"; + }, + }, + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + height: 280 + } + } + }] + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 18k + + + + + + Last Week + + + {" "} + 5.21k + + + + + + Last Month + + + {" "} + 32k + + + + + ); + } +} + +export default TotalUsersChart; diff --git a/components/Dashboard/ProjectManagement/TotalUsers/index.js b/components/Dashboard/ProjectManagement/TotalUsers/index.js new file mode 100644 index 0000000..5bee2f2 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TotalUsers/index.js @@ -0,0 +1,110 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import TotalUsersChart from "./TotalUsersChart"; + +const TotalUsers = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Total Users + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TotalUsersChart */} + + + + ); +}; + +export default TotalUsers; diff --git a/components/Dashboard/SaasApp/AllProjects.js b/components/Dashboard/SaasApp/AllProjects.js new file mode 100644 index 0000000..3c23ffb --- /dev/null +++ b/components/Dashboard/SaasApp/AllProjects.js @@ -0,0 +1,503 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import Avatar from "@mui/material/Avatar"; +import AvatarGroup from "@mui/material/AvatarGroup"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const AllProjects = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + All Projects + + + + + Select + + + + + + + + + + + + Project Name + + + + Members + + + + Budget + + + + Status + + + + Completion + + + + Due Date + + + + + + + + + Product UI/UX Design + + + + + + + + + + + + + $14,000 + + + + Active + + + + + 70% + + + + + + + 08 Mar 2021 + + + + + + + Public Beta Release + + + + + + + + + + + + $14,000 + + + + Complete + + + + + 100% + + + + + + 17 Apr 2021 + + + + + + + SEO Marketing + + + + + + + + + + + + $12,000 + + + + Complete + + + + + 100% + + + + + + 10 Sep 2021 + + + + + + + New Office Building + + + + + + + + + + + + + $9,000 + + + + Pending + + + + + 0% + + + + + + 06 Aug 2022 + + + + + + + Product Devlopment + + + + + + + + + + + + + $16,000 + + + + Active + + + + + 80% + + + + + + 08 Mar 2022 + + + +
+
+
+ + ); +}; + +export default AllProjects; diff --git a/components/Dashboard/SaasApp/AudienceOverview.js b/components/Dashboard/SaasApp/AudienceOverview.js new file mode 100644 index 0000000..d215e49 --- /dev/null +++ b/components/Dashboard/SaasApp/AudienceOverview.js @@ -0,0 +1,177 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; + +const AudienceOverview = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "New Visitors", + data: [0, 70, 35, 80, 40, 80, 75, 65, 80, 70, 40, 0], + }, + { + name: "Unique Visitors", + data: [0, 55, 80, 30, 50, 60, 32, 40, 60, 60, 40, 10], + }, + { + name: "Previous Visitors", + data: [0, 45, 35, 50, 80, 40, 60, 50, 110, 40, 65, 20], + }, + ]; + const options = { + chart: { + type: "area", + toolbar: { + show: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + }, + colors: ["#E7EBF5", "#8EB0DE", "#90C6E0"], + xaxis: { + axisBorder: { + show: false, + }, + categories: [ + "13 Jan", + "14 Jan", + "15 Jan", + "16 Jan", + "17 Jan", + "18 Jan", + "19 Jan", + "20 Jan", + "21 Jan", + "22 Jan", + "23 Jan", + "24 Jan", + "25 Jan", + ], + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + tickAmount: 6, + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + }, + grid: { + show: true, + strokeDashArray: 5, + borderColor: "#EDEFF5", + }, + tooltip: { + x: { + format: "dd/MM/yy HH:mm", + }, + }, + legend: { + offsetY: 0, + position: "top", + fontSize: "14px", + horizontalAlign: "center", + labels: { + colors: "#5B5B98", + }, + }, + }; + + return ( + <> + + {/* Card Header */} + + + Audience Overview + + + + + Select + + + + + + + + + + ); +}; + +export default AudienceOverview; diff --git a/components/Dashboard/SaasApp/CompletedTasks.js b/components/Dashboard/SaasApp/CompletedTasks.js new file mode 100644 index 0000000..b4a49a1 --- /dev/null +++ b/components/Dashboard/SaasApp/CompletedTasks.js @@ -0,0 +1,250 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const CompletedTasks = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + // Chart + const series = [ + { + name: "Task", + data: [21, 22, 10, 28, 16, 21, 13, 30], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#2DB6F5"], + plotOptions: { + bar: { + borderRadius: 5, + borderRadiusApplication: 'end', + horizontal: false, + columnWidth: "20%" + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + offsetY: 0, + show: false, + fontSize: "14px", + position: "bottom", + horizontalAlign: "center", + labels: { + colors: '#5B5B98' + } + }, + xaxis: { + categories: [ + ["1 Jan"], + ["2 Jan"], + ["3 Jan"], + ["4 Jan"], + ["5 Jan"], + ["6 Jan"], + ["7 Jan"], + ["8 Jan"], + ], + axisBorder: { + show: false + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: "#a9a9c8", + fontSize: "14px" + } + } + }, + yaxis: { + show: false, + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px" + }, + }, + axisBorder: { + show: false + } + }, + grid: { + show: false, + strokeDashArray: 5, + borderColor: "#EDEFF5" + }, + fill: { + opacity: 1, + }, + }; + + return ( + <> + + + + Completed Tasks + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Target + + + {" "} + 20k + + + + + + Last Week + + + {" "} + 5.50k + + + + + + Last Month + + + {" "} + 50k + + + + + + ); +}; + +export default CompletedTasks; diff --git a/components/Dashboard/SaasApp/Features.js b/components/Dashboard/SaasApp/Features.js new file mode 100644 index 0000000..8fba760 --- /dev/null +++ b/components/Dashboard/SaasApp/Features.js @@ -0,0 +1,130 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; + +const FeaturesData = [ + { + id: "1", + subTitle: "Total Orders", + number: "1,452", + icon: "ri-stack-line", + badgeClass: "successBadge", + progress: "4.87%", + progressIcon: "ri-arrow-up-s-line", + helpText: "Leads this month", + }, + { + id: "2", + subTitle: "Overall Revenue", + number: "$28,452", + icon: "ri-pie-chart-line", + badgeClass: "dangerBadge", + progress: "0.50%", + progressIcon: "ri-arrow-down-s-line", + helpText: "Leads this month", + }, + { + id: "3", + subTitle: "Average Price", + number: "$200.5", + icon: "ri-money-cny-box-line", + badgeClass: "successBadge", + progress: "2.22%", + progressIcon: "ri-arrow-up-s-line", + helpText: "Leads this month", + }, + { + id: "4", + subTitle: "Total Clients", + number: "7,805", + icon: "ri-user-follow-line", + badgeClass: "successBadge", + progress: "1.21%", + progressIcon: "ri-arrow-up-s-line", + helpText: "Leads this month", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + + {feature.subTitle} + + + + {feature.number} + + + + + + + + + + + {feature.progress}{" "} + + + + {feature.helpText} + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/SaasApp/IncomeStatus.js b/components/Dashboard/SaasApp/IncomeStatus.js new file mode 100644 index 0000000..a286136 --- /dev/null +++ b/components/Dashboard/SaasApp/IncomeStatus.js @@ -0,0 +1,80 @@ +import React from "react"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const IncomeStatus = () => { + return ( + <> + + + + + + + + + $31,570 + + Income Status + + + + + + + Income Target + + $180548.00 + + + + + + + ); +}; + +export default IncomeStatus; diff --git a/components/Dashboard/SaasApp/Messages/Messages.module.css b/components/Dashboard/SaasApp/Messages/Messages.module.css new file mode 100644 index 0000000..af76347 --- /dev/null +++ b/components/Dashboard/SaasApp/Messages/Messages.module.css @@ -0,0 +1,20 @@ +.messagesList { + border-bottom: 1px solid #F7FAFF; + border-right: 2px solid transparent; + padding-left: 12px; + padding-right: 12px; + padding-top: 15px; + padding-bottom: 10px; +} +.messagesList:hover { + background: #FAFAFA; + border-right: 2px solid #757FEF; +} + +/* For dark mode */ +[class="dark"] .messagesList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .messagesList:hover { + background: var(--colorBlack); +} \ No newline at end of file diff --git a/components/Dashboard/SaasApp/Messages/index.js b/components/Dashboard/SaasApp/Messages/index.js new file mode 100644 index 0000000..09a05a0 --- /dev/null +++ b/components/Dashboard/SaasApp/Messages/index.js @@ -0,0 +1,270 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import Badge from "@mui/material/Badge"; +import styles from "@/components/Dashboard/SaasApp/Messages/Messages.module.css"; + +const MessagesData = [ + { + id: "1", + name: "Johen Mandel", + text: "Hi, i want make enquiries...", + image: "/images/user15.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "1", + time: "12:55 AM", + }, + { + id: "2", + name: "Thomas Albart", + text: "Hi, i want make enquiries...", + image: "/images/user16.png", + badgeBgColor: "#a5a1a1", + newTag: "New", + number: "2", + time: "6:55 AM", + }, + { + id: "3", + name: "Maical Doe", + text: "Hi, i want make enquiries...", + image: "/images/user17.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "3", + time: "8:00 AM", + }, + { + id: "4", + name: "Liyana doe", + text: "Hi, i want make enquiries...", + image: "/images/user18.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "3", + time: "8:00 AM", + }, + { + id: "5", + name: "Liyana doe", + text: "Hi, i want make enquiries...", + image: "/images/user19.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "3", + time: "8:00 AM", + }, +]; + +const Messages = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Messages + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + {MessagesData.slice(0, 5).map((message) => ( +
+ + + +
+ User +
+ +
+ + + + {message.name} + + {message.text} + +
+ + + + + {message.newTag} + + + + {message.number} + + + + + {message.time} + + +
+
+ ))} +
+
+ + ); +}; + +export default Messages; diff --git a/components/Dashboard/SaasApp/MilestonesOverview/MilestonesOverviewChart.js b/components/Dashboard/SaasApp/MilestonesOverview/MilestonesOverviewChart.js new file mode 100644 index 0000000..39df242 --- /dev/null +++ b/components/Dashboard/SaasApp/MilestonesOverview/MilestonesOverviewChart.js @@ -0,0 +1,122 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; + +class MilestonesOverviewChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [44, 55, 13], + options: { + labels: ["Target", "Last week", "Last Month"], + stroke: { + width: 0, + show: true + }, + colors: ["#757FEF", "#90C6E0", "#E040FB"], + legend: { + offsetY: 0, + show: false, + position: "bottom", + fontSize: "14px", + labels: { + colors: '#5B5B98', + }, + }, + dataLabels: { + enabled: false, + style: { + fontSize: '14px' + }, + dropShadow: { + enabled: false + } + }, + tooltip: { + y: { + formatter: function (val) { + return "" + val + "k"; + }, + }, + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + height: 280 + } + } + }] + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 18k + + + + + + Last Week + + + {" "} + 5.21k + + + + + + Last Month + + + {" "} + 32k + + + + + ); + } +} + +export default MilestonesOverviewChart; diff --git a/components/Dashboard/SaasApp/MilestonesOverview/index.js b/components/Dashboard/SaasApp/MilestonesOverview/index.js new file mode 100644 index 0000000..d3a2f62 --- /dev/null +++ b/components/Dashboard/SaasApp/MilestonesOverview/index.js @@ -0,0 +1,110 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import MilestonesOverviewChart from "./MilestonesOverviewChart"; + +const MilestonesOverview = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Total Users + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* MilestonesOverviewChart */} + + + + ); +}; + +export default MilestonesOverview; diff --git a/components/Dashboard/SaasApp/Profile/ImpressionShare.js b/components/Dashboard/SaasApp/Profile/ImpressionShare.js new file mode 100644 index 0000000..224bd6e --- /dev/null +++ b/components/Dashboard/SaasApp/Profile/ImpressionShare.js @@ -0,0 +1,75 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "@/components/Dashboard/SaasApp/Profile/ImpressionShare.module.css"; + +class ImpressionShare extends Component { + constructor(props) { + super(props); + + this.state = { + series: [45], + options: { + chart: { + type: "radialBar", + offsetY: -20, + sparkline: { + enabled: true, + }, + }, + plotOptions: { + radialBar: { + startAngle: -110, + endAngle: 110, + track: { + background: "#e7e7e7", + strokeWidth: "90%", + margin: 5, + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 1, + fontSize: "15px", + fontWeight: "600", + color: "#5B5B98", + }, + }, + }, + }, + grid: { + padding: { + top: -10, + }, + }, + fill: { + colors: ["#2DB6F5"], + }, + labels: ["Average Results"], + }, + }; + } + + render() { + return ( + <> +
+ +

Excellent

+

Impression Share

+
+ + ); + } +} + +export default ImpressionShare; diff --git a/components/Dashboard/SaasApp/Profile/ImpressionShare.module.css b/components/Dashboard/SaasApp/Profile/ImpressionShare.module.css new file mode 100644 index 0000000..67e8c1a --- /dev/null +++ b/components/Dashboard/SaasApp/Profile/ImpressionShare.module.css @@ -0,0 +1,29 @@ +.chartBox { + text-align: center; + top: 12px; + position: relative; +} +.chartBox h3 { + margin: 0; + color: #5B5B98; + font-weight: 500; + font-size: 13px; + position: relative; + bottom: 7px; +} +.chartBox p { + position: absolute; + margin: 0; + left: 0; + right: 0; + bottom: 28px; + font-size: 12px; + font-weight: 500; + color: #2DB6F5; +} + +@media only screen and (max-width: 767px) { + .chartBox h3 { + font-size: 10px; + } +} \ No newline at end of file diff --git a/components/Dashboard/SaasApp/Profile/index.js b/components/Dashboard/SaasApp/Profile/index.js new file mode 100644 index 0000000..fd2bd83 --- /dev/null +++ b/components/Dashboard/SaasApp/Profile/index.js @@ -0,0 +1,42 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import ImpressionShare from "./ImpressionShare"; + +const Profile = () => { + return ( + <> + + + + Profile image + + + Andrew Burns + + + Programmer + + + + + + + + + ); +}; + +export default Profile; diff --git a/components/Dashboard/SaasApp/RevenueSummary.js b/components/Dashboard/SaasApp/RevenueSummary.js new file mode 100644 index 0000000..e1d08e0 --- /dev/null +++ b/components/Dashboard/SaasApp/RevenueSummary.js @@ -0,0 +1,177 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; + +const RevenueSummary = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "Revenue Summary", + data: [2.3, 3, 4.0, 10.5, 5.6, 5, 4, 2.8, 2, 1.3, 0.8, 0.3], + }, + ]; + const options = { + chart: { + type: "bar", + toolbar: { + show: false, + }, + }, + plotOptions: { + bar: { + borderRadius: 9, + columnWidth: "60%", + borderRadiusWhenStacked: "last", + borderRadiusApplication: "around", + dataLabels: { + position: "top", + }, + }, + }, + dataLabels: { + enabled: true, + formatter: function (val) { + return val + "%"; + }, + offsetY: -28, + style: { + colors: ["#5B5B98"], + }, + }, + colors: ["#757fef"], + fill: { + opacity: 1, + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + position: "top", + labels: { + style: { + colors: "#A9A9C8", + fontSize: "14px", + }, + }, + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + labels: { + show: false, + formatter: function (val) { + return val + "%"; + }, + }, + }, + grid: { + show: true, + strokeDashArray: 5, + borderColor: "#EDEFF5", + }, + }; + + return ( + <> + + {/* Card Header */} + + + Revenue Summary + + + + + Select + + + + + + + + + + ); +}; + +export default RevenueSummary; diff --git a/components/Dashboard/SaasApp/SalesAnalytics.js b/components/Dashboard/SaasApp/SalesAnalytics.js new file mode 100644 index 0000000..637661c --- /dev/null +++ b/components/Dashboard/SaasApp/SalesAnalytics.js @@ -0,0 +1,181 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; + +const SalesAnalytics = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + data: [ + { + x: "Operations", + y: [2800, 4500], + }, + { + x: "Customer Success", + y: [3200, 4100], + }, + { + x: "Engineering", + y: [2950, 7800], + }, + { + x: "Marketing", + y: [3000, 4600], + }, + { + x: "Product", + y: [3500, 4100], + }, + { + x: "Data Science", + y: [4500, 6500], + }, + { + x: "Sales", + y: [4100, 5600], + }, + ], + }, + ]; + const options = { + chart: { + type: "rangeBar", + toolbar: { + show: false, + }, + }, + colors: ["#2DB6F5", "#757FEF"], + plotOptions: { + bar: { + horizontal: true, + isDumbbell: true, + dumbbellColors: [["#2DB6F5", "#757FEF"]], + }, + }, + legend: { + show: false, + }, + fill: { + type: "gradient", + gradient: { + gradientToColors: ["#757FEF"], + inverseColors: false, + stops: [0, 100], + }, + }, + grid: { + show: true, + strokeDashArray: 5, + borderColor: "#EDEFF5", + }, + xaxis: { + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + axisBorder: { + show: false, + }, + }, + }; + + return ( + <> + + {/* Card Header */} + + + Sales Analytics + + + + + Select + + + + + + + + + + ); +}; + +export default SalesAnalytics; diff --git a/components/Dashboard/SaasApp/TasksPerformance/TasksPerformanceChart.js b/components/Dashboard/SaasApp/TasksPerformance/TasksPerformanceChart.js new file mode 100644 index 0000000..36e6b7a --- /dev/null +++ b/components/Dashboard/SaasApp/TasksPerformance/TasksPerformanceChart.js @@ -0,0 +1,141 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class TasksPerformanceChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [76, 67, 61, 90], + options: { + plotOptions: { + radialBar: { + offsetY: 0, + startAngle: 0, + endAngle: 270, + hollow: { + margin: 5, + size: "25%", + background: "transparent", + image: undefined, + }, + dataLabels: { + name: { + show: false, + }, + value: { + show: false, + }, + }, + }, + }, + colors: ["#757FEF", "#9EA5F4", "#C8CCF9", "#F1F2FD"], + labels: ["Completed", "Active", "Assigned", "Pending"], + legend: { + show: true, + floating: true, + fontSize: "13px", + position: "left", + offsetY: 0, + labels: { + color: "#5B5B98" + }, + markers: { + size: 0, + }, + formatter: function (seriesName, opts) { + return seriesName + ": " + opts.w.globals.series[opts.seriesIndex]; + }, + itemMargin: { + vertical: 3, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + height: 280 + }, + legend: { + show: false, + }, + }, + }, + ], + fill: { + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 30k + + + + + + Last Week + + + {" "} + 40k + + + + + + Last Month + + + {" "} + 60k + + + + + ); + } +} + +export default TasksPerformanceChart; diff --git a/components/Dashboard/SaasApp/TasksPerformance/index.js b/components/Dashboard/SaasApp/TasksPerformance/index.js new file mode 100644 index 0000000..3364fb8 --- /dev/null +++ b/components/Dashboard/SaasApp/TasksPerformance/index.js @@ -0,0 +1,110 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import TasksPerformanceChart from "./TasksPerformanceChart"; + +const TasksPerformance = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Tasks Performance + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TasksPerformanceChart */} + + + + ); +}; + +export default TasksPerformance; diff --git a/components/Dashboard/SaasApp/TotalOrders.js b/components/Dashboard/SaasApp/TotalOrders.js new file mode 100644 index 0000000..f6d7cb1 --- /dev/null +++ b/components/Dashboard/SaasApp/TotalOrders.js @@ -0,0 +1,80 @@ +import React from "react"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const TotalOrders = () => { + return ( + <> + + + + + + + + + 40,178 + + Total Orders + + + + + + + Order Target + + 30,40548.00 + + + + + + + ); +}; + +export default TotalOrders; diff --git a/components/Dashboard/eCommerce/ActivityTimeline/ActivityTimeline.module.css b/components/Dashboard/eCommerce/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..4d9b43e --- /dev/null +++ b/components/Dashboard/eCommerce/ActivityTimeline/ActivityTimeline.module.css @@ -0,0 +1,92 @@ +.timelineList .tList { + position: relative; + padding-left: 20px; + margin-bottom: 18px; + padding-bottom: 18px; + border-bottom: 1px solid #F7FAFF; +} +.timelineList .tList:last-child { + border: none; + padding-bottom: 0; + margin-bottom: 0; +} +.timelineList .tList::before { + content: ''; + background: linear-gradient(149.1deg, #99B8F3 14.61%, #177FCB 130.18%); + box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25); + width: 10px; + height: 10px; + border-radius: 100%; + position: absolute; + top: 4px; + left: 0; +} +.timelineList .tList::after { + content: ''; + background: #F7FAFF; + width: 3px; + height: 75px; + border-radius: 5px; + position: absolute; + top: 18px; + left: 3px; +} +.timelineList .tList h4 { + font-weight: 500; + font-size: 14px; + margin: 0 0 10px; + font-family: var(--bodyFontFamily) !important; +} +.timelineList .tList .content { + display: flex; + align-items: center; + margin-bottom: 10px; +} +.timelineList .tList .content img { + margin-right: 10px; + width: 27px; +} +.timelineList .tList .content h5 { + margin: 0; + color: #5B5B98; + font-size: 13px; + font-weight: 500; + font-family: var(--bodyFontFamily) !important; +} +.timelineList .tList .date { + color: #A9A9C8; + font-size: 12px; + margin: 0; +} + +/* For RTL Style */ +[dir="rtl"] .timelineList .tList { + padding-left: 0; + padding-right: 20px; +} +[dir="rtl"] .timelineList .tList::before { + left: auto; + right: 0; +} +[dir="rtl"] .timelineList .tList::after { + left: auto; + right: 3px; +} +[dir="rtl"] .timelineList .tList .content img { + margin-right: 0; + margin-left: 10px; +} + +/* For dark mode */ +[class="dark"] .timelineList .tList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .timelineList .tList:last-child { + border-bottom: none; +} +[class="dark"] .timelineList .tList::after { + background: var(--borderColor); +} +[class="dark"] .timelineList .tList .content h5 { + color: var(--darkBodyTextColor) !important; +} \ No newline at end of file diff --git a/components/Dashboard/eCommerce/ActivityTimeline/index.js b/components/Dashboard/eCommerce/ActivityTimeline/index.js new file mode 100644 index 0000000..2179251 --- /dev/null +++ b/components/Dashboard/eCommerce/ActivityTimeline/index.js @@ -0,0 +1,144 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import styles from "../../eCommerce/ActivityTimeline/ActivityTimeline.module.css"; + +const ActivityTimelineData = [ + { + id: "1", + title: "5 Invoices have been paid", + subTitle: "Invoices have been paid to the company.", + icon: "/images/pdf-icon.png", + date: "11:47 PM Wednesday", + }, + { + id: "2", + title: "8 Invoices have been paid", + subTitle: "Create a new project for client Johnson.", + icon: "/images/man.png", + date: "April, 18", + }, + { + id: "3", + title: "Added new style collection", + subTitle: "Product uploaded By Nesta Technologies.", + icon: "/images/small-product-img.png", + date: "02:14 PM Today", + }, +]; + +const ActivityTimeline = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 3).map((timeline) => ( +
+

{timeline.title}

+
+ Icon +
{timeline.subTitle}
+
+

{timeline.date}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/Dashboard/eCommerce/AudienceOverview.js b/components/Dashboard/eCommerce/AudienceOverview.js new file mode 100644 index 0000000..d80a35f --- /dev/null +++ b/components/Dashboard/eCommerce/AudienceOverview.js @@ -0,0 +1,131 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const AudienceOverview = () => { + const series = [ + { + name: "Orders", + data: [44, 55, 57, 56, 61, 58, 63, 60, 66, 70, 75, 80], + }, + { + name: "Net Revenue", + data: [76, 85, 101, 98, 87, 105, 91, 114, 94, 100, 110, 96], + }, + { + name: "Refunds", + data: [35, 41, 36, 26, 45, 48, 52, 53, 41, 55, 45, 60], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: "40%", + endingShape: "rounded", + borderRadius: "4", + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + show: true, + width: 1, + colors: ["transparent"], + }, + colors: ["#757FEF", "#2DB6F5", "#EE368C"], + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + }, + yaxis: { + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + axisBorder: { + show: false, + colors: "#f6f6f7", + }, + }, + fill: { + opacity: 1, + }, + tooltip: { + y: { + formatter: function (val) { + return "$ " + val + " Thousands"; + }, + }, + }, + legend: { + offsetY: 12, + position: "top", + horizontalAlign: "right", + }, + grid: { + show: true, + borderColor: "#f6f6f7", + }, + }; + + return ( + <> + + + Audience Overview + + + + + + ); +}; + +export default AudienceOverview; diff --git a/components/Dashboard/eCommerce/BestSellingProducts.js b/components/Dashboard/eCommerce/BestSellingProducts.js new file mode 100644 index 0000000..3a8ae5e --- /dev/null +++ b/components/Dashboard/eCommerce/BestSellingProducts.js @@ -0,0 +1,251 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; + +function createData( + productName, + productImg, + productId, + price, + stockAvailable, + stockTotal, + stockStatus +) { + return { + productName, + productImg, + productId, + price, + stockAvailable, + stockTotal, + stockStatus, + }; +} + +const rows = [ + createData( + "Admas airpod x-Zon", + "/images/product5.png", + "ID: A3652", + "$289.50", + "450", + "550", + "Stock" + ), + createData( + "Smart watch F8 Pro", + "/images/product6.png", + "ID: A3653", + "$189.50", + "430", + "550", + "Stock" + ), + createData( + "Nord Fold ZL", + "/images/product7.png", + "ID: A3654", + "$280.50", + "410", + "550", + "Stock" + ), + createData( + "Wall Clock Cimbina", + "/images/product8.png", + "ID: A3655", + "$389.50", + "420", + "550", + "Stock" + ), + createData( + "Galaxo T6 Munsun", + "/images/product9.png", + "ID: A3656", + "$289.50", + "440", + "550", + "Stock" + ), + createData( + "Laptop Macos Pro", + "/images/product1.png", + "ID: A3657", + "$489.50", + "340", + "550", + "Stock" + ), +]; + +const BestSellingProducts = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + return ( + <> + + + + Best Selling Products + + + + Select + + + + + + + + + {rows.map((row) => ( + + + + Product Img + + + {row.productName} + + + + {row.productId} + + + + + + + {row.price} + + + + {row.stockAvailable}{" "} + + {row.stockTotal} + + + + + {row.stockStatus} + + + ))} + +
+
+
+ + ); +}; + +export default BestSellingProducts; diff --git a/components/Dashboard/eCommerce/Features.js b/components/Dashboard/eCommerce/Features.js new file mode 100644 index 0000000..688e724 --- /dev/null +++ b/components/Dashboard/eCommerce/Features.js @@ -0,0 +1,115 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import TrendingUpIcon from "@mui/icons-material/TrendingUp"; +import TrendingDownIcon from "@mui/icons-material/TrendingDown"; + +const FeaturesData = [ + { + id: "1", + title: "$25,890", + subTitle: "Total Sales", + image: "/images/graph-icon.png", + icon: , + growthText: "1.3% Up from past week", + color: "successColor", + }, + { + id: "2", + title: "$25,890", + subTitle: "Total Orders", + image: "/images/work-icon.png", + icon: , + growthText: "1.5% Up from past week", + color: "successColor", + }, + { + id: "3", + title: "183.35M", + subTitle: "Total Customers", + image: "/images/users-icon.png", + icon: , + growthText: "1.6% Up from past week", + color: "dangerColor", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + + {feature.title} + + + {feature.subTitle} + + + + + Graph + + + + + + + {feature.icon} + + {feature.growthText} + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/eCommerce/Impressions.js b/components/Dashboard/eCommerce/Impressions.js new file mode 100644 index 0000000..0d61882 --- /dev/null +++ b/components/Dashboard/eCommerce/Impressions.js @@ -0,0 +1,43 @@ +import React from "react"; +import Box from "@mui/material/Box"; +import { Typography } from "@mui/material"; + +const Impressions = () => { + return ( + <> + + + Impressions + + + + $12,875{" "} + + 10% + + + + + Compared to $21,490 last year + + + + ); +}; + +export default Impressions; diff --git a/components/Dashboard/eCommerce/LiveVisitsOnOurSite/LiveVisitsChart.js b/components/Dashboard/eCommerce/LiveVisitsOnOurSite/LiveVisitsChart.js new file mode 100644 index 0000000..a1c1f83 --- /dev/null +++ b/components/Dashboard/eCommerce/LiveVisitsOnOurSite/LiveVisitsChart.js @@ -0,0 +1,62 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class LiveVisitsChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [72, 56], + options: { + chart: { + type: "donut", + }, + labels: ["Domestic", "International"], + colors: ["#757FEF", "#EE368C"], + tooltip: { + y: { + formatter: function (val) { + return "" + val + "%"; + }, + }, + }, + legend: { + offsetY: 2, + position: "bottom", + horizontalAlign: "center", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default LiveVisitsChart; diff --git a/components/Dashboard/eCommerce/LiveVisitsOnOurSite/index.js b/components/Dashboard/eCommerce/LiveVisitsOnOurSite/index.js new file mode 100644 index 0000000..20914ea --- /dev/null +++ b/components/Dashboard/eCommerce/LiveVisitsOnOurSite/index.js @@ -0,0 +1,110 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import LiveVisitsChart from "./LiveVisitsChart"; + +const LiveVisitsOnOurSite = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Live Visits on Our Site + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* Live Visits Chart */} + + + + ); +}; + +export default LiveVisitsOnOurSite; diff --git a/components/Dashboard/eCommerce/NewCustomers/NewCustomers.module.css b/components/Dashboard/eCommerce/NewCustomers/NewCustomers.module.css new file mode 100644 index 0000000..fc6d6e1 --- /dev/null +++ b/components/Dashboard/eCommerce/NewCustomers/NewCustomers.module.css @@ -0,0 +1,68 @@ +.newCustomerList { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #F7FAFF; + padding-bottom: 17px; + margin-bottom: 17px; +} +.newCustomerList:last-child { + border-bottom: none; + padding-bottom: 0; + margin-bottom: 0; +} +.leftContent { + display: flex; + align-items: center; +} +.leftContent img { + border-radius: 100%; + width: 38px; + height: 38px; + margin-right: 10px; +} +.leftContent h3 { + margin: 0; + font-size: 13px; +} +.leftContent p { + margin: 0; + color: #A9A9C8; + font-size: 12px; +} + +.rightContent { + display: flex; + align-items: center; +} +.price { + color: #5B5B98; + font-size: 13px; + margin-right: 10px; +} +.order { + background: rgba(117, 127, 239, 0.1); + border-radius: 13.5px; + color: #757FEF; + font-weight: 500; + font-size: 11px; + padding: 5px 10px; +} + +/* For RTL Style */ +[dir="rtl"] .leftContent img { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .price { + margin-right: 0; + margin-left: 10px; +} + +/* For dark mode */ +[class="dark"] .newCustomerList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .newCustomerList:last-child { + border-bottom: none; +} \ No newline at end of file diff --git a/components/Dashboard/eCommerce/NewCustomers/index.js b/components/Dashboard/eCommerce/NewCustomers/index.js new file mode 100644 index 0000000..c75d6ce --- /dev/null +++ b/components/Dashboard/eCommerce/NewCustomers/index.js @@ -0,0 +1,164 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import styles from "@/components/Dashboard/eCommerce/NewCustomers/NewCustomers.module.css" + +const NewCustomersData = [ + { + id: "1", + image: "/images/user2.png", + name: "Jordan Stevenson", + userName: "@jstevenson5c", + price: "$289.50", + order: "15 Orders", + }, + { + id: "2", + image: "/images/user3.png", + name: "Lydia Reese", + userName: "@lreese3b", + price: "$289.50", + order: "15 Orders", + }, + { + id: "3", + image: "/images/user4.png", + name: "Easin Arafat", + userName: "@jstevenson5c", + price: "$289.50", + order: "15 Orders", + }, + { + id: "4", + image: "/images/user5.png", + name: "Easin Arafat", + userName: "@jstevenson5c", + price: "$289.50", + order: "15 Orders", + } +]; + +const NewCustomers = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + New Customers + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + {NewCustomersData.slice(0, 4).map((customer) => ( +
+
+ user +
+

{customer.name}

+

{customer.userName}

+
+
+
+
+ {customer.price} +
+
+ {customer.order} +
+
+
+ ))} +
+
+ + ); +}; + +export default NewCustomers; diff --git a/components/Dashboard/eCommerce/Ratings/RatingsChart.js b/components/Dashboard/eCommerce/Ratings/RatingsChart.js new file mode 100644 index 0000000..5be2072 --- /dev/null +++ b/components/Dashboard/eCommerce/Ratings/RatingsChart.js @@ -0,0 +1,67 @@ +import React, { Component } from 'react'; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class RatingsChart extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [44, 55, 41, 17, 15], + options: { + chart: { + width: 300, + }, + colors: ["#757FEF", "#00B69B", "#2DB6F5", "#EE368C", "#FFBC2B"], + plotOptions: { + pie: { + startAngle: -90, + endAngle: 270 + } + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'gradient', + }, + legend: { + show: false, + formatter: function(val, opts) { + return val + " - " + opts.w.globals.series[opts.seriesIndex] + } + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + width: 200 + }, + legend: { + position: 'bottom' + } + } + }] + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default RatingsChart; diff --git a/components/Dashboard/eCommerce/Ratings/index.js b/components/Dashboard/eCommerce/Ratings/index.js new file mode 100644 index 0000000..2dc62b8 --- /dev/null +++ b/components/Dashboard/eCommerce/Ratings/index.js @@ -0,0 +1,90 @@ +import React from "react"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import StarBorderIcon from "@mui/icons-material/StarBorder"; +import RatingsChart from "./RatingsChart"; + +const Ratings = () => { + return ( + <> + + + + + Ratings + + + + YEAR OF 2022 + + + + 8.14k{" "} + + Review + + + + + {" "} + 4.5{" "} + + +15.6% + {" "} + From previous period + + + + + + + + + + ); +}; + +export default Ratings; diff --git a/components/Dashboard/eCommerce/RecentOrders.js b/components/Dashboard/eCommerce/RecentOrders.js new file mode 100644 index 0000000..470dfad --- /dev/null +++ b/components/Dashboard/eCommerce/RecentOrders.js @@ -0,0 +1,679 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; + +function RecentOrder(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +RecentOrder.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + orderID, + productImg, + productTitle, + customer, + price, + vendor, + date, + status, + badgeClass, + rating +) { + return { + orderID, + productImg, + productTitle, + customer, + price, + vendor, + date, + status, + badgeClass, + rating, + }; +} + +const rows = [ + createData( + "#SK258", + "/images/product1.png", + "Laptop Macos Pro", + "Colin Firth", + "$289.50", + "Boetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK259", + "/images/product2.png", + "Smart Camera XD6", + "Wade Dave", + "$189.50", + "Aronic Conver", + "2021-12-19", + "Out of Stock", + "dangerBadge", + "5.0 (61 votes)" + ), + createData( + "#SK260", + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "$250.50", + "Lotu Arnich", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK261", + "/images/product4.png", + "Jebble Smart Watch", + "Gilbert Dan", + "$289.50", + "Zoetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK262", + "/images/product5.png", + "Admas Airpod x-Zon", + "Joshua Glen", + "$289.50", + "Airpod", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK263", + "/images/product6.png", + "Smart Satch F8 Pro", + "Lewis Milton", + "$289.50", + "Smart Satch", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK264", + "/images/product7.png", + "Nord Fold ZL", + "Liam Ethan", + "$289.50", + "Nord", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK265", + "/images/product8.png", + "Wall Clock Cimbina", + "Ramon Miles", + "$289.50", + "Clock", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK266", + "/images/product9.png", + "Galaxo T6 Munsun", + "Brian Roberto", + "$289.50", + "Smart Phone", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK267", + "/images/product1.png", + "Laptop Macos Pro", + "Colin Firth", + "$289.50", + "Boetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK268", + "/images/product2.png", + "Smart Camera XD6", + "Wade Dave", + "$189.50", + "Aronic Conver", + "2021-12-19", + "Out of Stock", + "dangerBadge", + "5.0 (61 votes)" + ), + createData( + "#SK269", + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "$250.50", + "Lotu Arnich", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK270", + "/images/product4.png", + "Jebble Smart Watch", + "Gilbert Dan", + "$289.50", + "Zoetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK271", + "/images/product5.png", + "Admas Airpod x-Zon", + "Joshua Glen", + "$289.50", + "Airpod", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK272", + "/images/product6.png", + "Smart Satch F8 Pro", + "Lewis Milton", + "$289.50", + "Smart Satch", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK273", + "/images/product7.png", + "Nord Fold ZL", + "Liam Ethan", + "$289.50", + "Nord", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK274", + "/images/product8.png", + "Wall Clock Cimbina", + "Ramon Miles", + "$289.50", + "Clock", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK275", + "/images/product9.png", + "Galaxo T6 Munsun", + "Brian Roberto", + "$289.50", + "Smart Phone", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), +].sort((a, b) => (a.orderID < b.orderID ? -1 : 1)); + +export default function RecentOrders() { + // Select + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(6); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + Recent Orders + + + + + Select + + + + + + + + + + + + Order ID + + + + Product + + + + Customer + + + + Price + + + + Vendor + + + + Date + + + + Status + + + + Rating + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.orderID} + + + + + Product Img + + {row.productTitle} + + + + + + {row.customer} + + + + {row.price} + + + + {row.vendor} + + + + {row.date} + + + + {row.status} + + + + {row.rating} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Dashboard/eCommerce/RevenuStatus.js b/components/Dashboard/eCommerce/RevenuStatus.js new file mode 100644 index 0000000..9c519d0 --- /dev/null +++ b/components/Dashboard/eCommerce/RevenuStatus.js @@ -0,0 +1,136 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; + +const RevenuStatus = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "income", + data: [50, 48, 47, 48, 50, 48, 50, 48, 50, 48, 48], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + }, + colors: ["#757FEF"], + xaxis: { + categories: [ + "1 Jan", + "2 Jan", + "3 Jan", + "4 Jan", + "5 Jan", + "6 Jan", + "7 Jan", + "8 Jan", + "9 Jan", + "10 Jan", + "11 Jan", + "12 Jan", + ], + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + }, + grid: { + show: true, + borderColor: "#f6f6f7", + }, + tooltip: { + x: { + format: "dd/MM/yy HH:mm", + }, + y: { + formatter: function (val) { + return "$" + val + "k"; + }, + }, + }, + }; + + return ( + <> + + + + Revenu Status + + + + Select + + + + + + + + + ); +}; + +export default RevenuStatus; diff --git a/components/Dashboard/eCommerce/SalesByCountries/SalesByCountriesChart.js b/components/Dashboard/eCommerce/SalesByCountries/SalesByCountriesChart.js new file mode 100644 index 0000000..5097bef --- /dev/null +++ b/components/Dashboard/eCommerce/SalesByCountries/SalesByCountriesChart.js @@ -0,0 +1,59 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class SalesByCountriesChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [75, 40, 65, 80], + options: { + labels: ["Canada", "Russia", "Greenland", "USA"], + colors: ["#757FEF", "#2DB6F5", "#EE368C", "#00B69B"], + tooltip: { + y: { + formatter: function (val) { + return "" + val + "%"; + }, + }, + }, + legend: { + offsetY: 2, + position: "bottom", + horizontalAlign: "center", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default SalesByCountriesChart; diff --git a/components/Dashboard/eCommerce/SalesByCountries/index.js b/components/Dashboard/eCommerce/SalesByCountries/index.js new file mode 100644 index 0000000..9cc6b85 --- /dev/null +++ b/components/Dashboard/eCommerce/SalesByCountries/index.js @@ -0,0 +1,208 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import { styled } from "@mui/material/styles"; +import LinearProgress, { + linearProgressClasses, +} from "@mui/material/LinearProgress"; +import SalesByCountriesChart from "./SalesByCountriesChart"; + +const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ + height: 5, + borderRadius: 5, + [`&.${linearProgressClasses.colorPrimary}`]: { + backgroundColor: + theme.palette.grey[theme.palette.mode === "light" ? 200 : 800], + }, + [`& .${linearProgressClasses.bar}`]: { + borderRadius: 5, + backgroundColor: theme.palette.mode === "light" ? "#757FEF" : "#F7FAFF", + }, +})); + +const SalesByCountries = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Sales by Countries + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* SalesByCountriesChart */} + + + + + + Canada + + 75% + + + + + + + + Russia + + 40% + + + + + + + + Greenland + + 65% + + + + + + + + USA + + 80% + + + + + + ); +}; + +export default SalesByCountries; diff --git a/components/Dashboard/eCommerce/TeamMembersList.js b/components/Dashboard/eCommerce/TeamMembersList.js new file mode 100644 index 0000000..501e15e --- /dev/null +++ b/components/Dashboard/eCommerce/TeamMembersList.js @@ -0,0 +1,448 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; + +function TeamMembersLists(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +TeamMembersLists.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + userImg, + name, + userName, + email, + roleIcon, + role, + status, + badgeClass +) { + return { + userImg, + name, + userName, + email, + roleIcon, + role, + status, + badgeClass, + }; +} + +const rows = [ + createData( + "/images/user1.png", + "Jordan Stevenson", + "@jstevenson5c", + "jordansteven@admash.com", + "ri-macbook-line", + "Admin", + "Active", + "successBadge" + ), + createData( + "/images/user2.png", + "Lucile Young", + "@lyoung4a", + "lucile@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user3.png", + "Francis Frank", + "@ffrank7e", + "frank43@admash.com", + "ri-shield-user-fill", + "Maintainer", + "Inactive", + "dangerBadge" + ), + createData( + "/images/user4.png", + "Phoebe Patterson", + "@ppatterson2g", + "phoebe57@admash.com", + "ri-settings-2-line", + "Author", + "Active", + "successBadge" + ), + createData( + "/images/user5.png", + "Wade Dave", + "@wadedave", + "wadedave1@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user6.png", + "Seth Ivan", + "@sethivan", + "sethivansds@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user7.png", + "Riley", + "@riley", + "riley@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user8.png", + "Gilbert", + "@gilbert", + "gilbert@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user9.png", + "Jorge", + "@jorge", + "jorge@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user10.png", + "Dan Brian", + "@danbrian", + "danbrian@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user11.png", + "Roberto", + "@roberto", + "roberto@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user12.png", + "Ramon", + "@ramon", + "ramon@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user13.png", + "Miles Liam", + "@milesliam", + "milesliam@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user14.png", + "Nathaniel", + "@nathaniel", + "nathaniel@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); +export default function TeamMembersList() { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(5); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + Team Members List + + + + + + + + + User + + + + Email + + + + Role + + + + Status + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + Product Img + + + + {row.name} + + + {row.userName} + + + + + + + {row.email} + + + + {row.role} + + + + {row.status} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Dashboard/eCommerce/VisitsByDay.js b/components/Dashboard/eCommerce/VisitsByDay.js new file mode 100644 index 0000000..a001f89 --- /dev/null +++ b/components/Dashboard/eCommerce/VisitsByDay.js @@ -0,0 +1,102 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const VisitsByDay = () => { + const series = [ + { + name: "Visits This Weak", + data: [80, 50, 30, 40, 100, 20, 50], + }, + { + name: "Visits Last Weak", + data: [20, 30, 40, 80, 20, 80, 100], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + dropShadow: { + enabled: true, + blur: 1, + left: 1, + top: 1, + }, + }, + stroke: { + width: 2, + }, + colors: ["#2DB6F5", "#E289F2"], + fill: { + opacity: 0.1, + }, + markers: { + size: 5, + }, + xaxis: { + categories: [ + "Monday", + "Tuesday", + "Wendsday", + "Thursday", + "Friday", + "Saturday", + "Sunday", + ], + }, + }; + + return ( + <> + + + + Visits by Day + + + + Total 248.5k Visits + + + + + + + ); +}; + +export default VisitsByDay; diff --git a/components/Email/EmailLists.js b/components/Email/EmailLists.js new file mode 100644 index 0000000..a997dba --- /dev/null +++ b/components/Email/EmailLists.js @@ -0,0 +1,474 @@ +import * as React from "react"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import Tooltip from "@mui/material/Tooltip"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import PrintIcon from "@mui/icons-material/Print"; +import DeleteIcon from "@mui/icons-material/Delete"; +import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; +import Checkbox from "@mui/material/Checkbox"; +import StarBorderIcon from "@mui/icons-material/StarBorder"; +import StarIcon from "@mui/icons-material/Star"; +import Link from "next/link"; + +const label = { inputProps: { "aria-label": "Checkbox demo" } }; + +function EmailList(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +EmailList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(name, text, readEmail, date) { + return { name, readEmail, text, date }; +} + +const rows = [ + createData( + "Benthon, me (2)", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "1 Jan 2022" + ), + createData( + "Lucas Kriebel (via Twitter)", + "Last pic over my village – Yeah i'd like that! Do you remember the video som..", + "/email/read-email", + "2 Jan 2022" + ), + createData( + "Andrew Zimmer", + "Mochila Beta: Subscription Confirmed – You've been confirmed! Welcome to ", + "/email/read-email", + "3 Jan 2022" + ), + createData( + "Infinity HR", + "You've been confirmed! Welcome to the ruling class of the inbox. For your ", + "/email/read-email", + "4 Jan 2022" + ), + createData( + "keter (3)", + "For your records, here is a copy of the information you submitted to us...", + "/email/read-email", + "5 Jan 2022" + ), + createData( + "Death to Stock 2", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "6 Jan 2022" + ), + createData( + "Heter (10)", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "7 Jan 2022" + ), + createData( + "Erik, me (15)", + "For your records, here is a copy of the information you submitted to us...", + "/email/read-email", + "8 Jan 2022" + ), + createData( + "Death to Stock 4", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "9 Jan 2022" + ), + createData( + "Erik, me (5)", + "Off on Thursday – Eff that place, you might as well stay here with us inst", + "/email/read-email", + "10 Jan 2022" + ), + createData( + "Benthon, me (3)", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "11 Jan 2022" + ), + createData( + "Google Drive Team", + "This Week's Top Stories – Our top pick for you on Medium this week The", + "/email/read-email", + "12 Jan 2022" + ), + createData( + "Benthon, me (13)", + "Weekend on Revibe – Today's Friday and we thought maybe you want so", + "/email/read-email", + "13 Jan 2022" + ), + createData( + "me, Susanna (11)", + "You can now use your storage in Google Drive – Hey Nicklas Sandell! Tha", + "/email/read-email", + "14 Jan 2022" + ), + createData( + "EnvyTheme Support", + "New Ticket Reply - eDemy - Michel Valenzuela", + "/email/read-email", + "15 Jan 2022" + ), + createData( + "EnvyTheme Support 2", + "New Ticket Reply - Abev - Manos Pappas", + "/email/read-email", + "16 Jan 2022" + ), + createData( + "EnvyTheme Support 3", + "New Ticket Reply - Lofi - Adarsh Raj", + "/email/read-email", + "11 Jan 2022" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +export default function EmailLists() { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Email List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + + + } + checkedIcon={} + /> + + + + + {row.name} + + + + + + {row.text} + + + + + {row.date} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Email/LeftSidebar.js b/components/Email/LeftSidebar.js new file mode 100644 index 0000000..18b4965 --- /dev/null +++ b/components/Email/LeftSidebar.js @@ -0,0 +1,375 @@ +import React from "react"; +import { useRouter } from "next/router"; +import Link from "next/link"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import { Box } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import IconButton from "@mui/material/IconButton"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import ClearIcon from "@mui/icons-material/Clear"; +import SendIcon from "@mui/icons-material/Send"; +import styles from "@/components/Email/LeftSidebar.module.css"; +import Badge from "@mui/material/Badge"; +import { styled } from "@mui/material/styles"; +import Dialog from "@mui/material/Dialog"; +import DialogTitle from "@mui/material/DialogTitle"; +import CloseIcon from "@mui/icons-material/Close"; +import PropTypes from "prop-types"; + +import dynamic from "next/dynamic"; +const RichTextEditor = dynamic(() => import("@mantine/rte"), { + ssr: false, +}); + +// Compose Modal +const BootstrapDialog = styled(Dialog)(({ theme }) => ({ + "& .MuiDialogContent-root": { + padding: theme.spacing(2), + }, + "& .MuiDialogActions-root": { + padding: theme.spacing(1), + }, +})); + +function BootstrapDialogTitle(props) { + const { children, onClose, ...other } = props; + + return ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Compose Modal + +const LeftSidebar = () => { + const router = useRouter(); + + // Compose modal + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + // End Compose Modal + + return ( + <> + + + + + mailbox + + + {/* Nav */} +
    +
  • + + + Inbox + + + +
  • + +
  • + + Important + +
  • + +
  • + + Snooozed + +
  • + +
  • + + Draft + + +
  • + +
  • + + Sent Mail + +
  • + +
  • + + Spam + + +
  • + +
  • + + Trash + +
  • +
+ + + labels + + + {/* Nav */} +
    +
  • + + + Personal + + +
  • + +
  • + + Company + +
  • + +
  • + + Wallet Balance + +
  • + +
  • + + Friends + +
  • + +
  • + + Family + +
  • +
+
+ + {/* Compose Modal */} + + + + + New Message + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default LeftSidebar; diff --git a/components/Email/LeftSidebar.module.css b/components/Email/LeftSidebar.module.css new file mode 100644 index 0000000..2b917cb --- /dev/null +++ b/components/Email/LeftSidebar.module.css @@ -0,0 +1,75 @@ +.leftNav { + padding: 0; + margin: 0 0 30px; + list-style-type: none; +} +.leftNav li { + margin-bottom: 15px; +} +.leftNav li:last-child { + margin-bottom: 0; +} +.leftNav li a { + text-decoration: none; + color: #260944; + font-size: 13px; + font-weight: 500; + display: block; +} +.leftNav li a:hover, .leftNav li a:hover i { + color: var(--primaryColor); +} +.leftNav li.active > a, .leftNav li.active a i { + color: var(--primaryColor) !important; +} +.leftNav li a i { + color: #818093; + font-size: 16px; + position: relative; + top: 3px; + margin-right: 5px; +} + +.leftNav li ul { + padding: 0; + margin: 15px 0 0; + list-style-type: none; +} +.leftNav li ul li { + position: relative; + padding-left: 45px; +} +.leftNav li ul li::before { + content: ""; + background-color: #818093; + width: 6px; + height: 6px; + border-radius: 100%; + position: absolute; + left: 30px; + top: 6px; +} +.leftNav li ul li a { + color: #5B5B98; + font-size: 13.5px; +} + +/* For dark mode */ +[class="dark"] .leftNav li a { + color: var(--darkHeadingTextColor); +} +[class="dark"] .leftNav li a span { + color: var(--darkHeadingTextColor); +} +[class="dark"] .leftNav li a i { + color: var(--darkHeadingTextColor); +} +[class="dark"] .leftNav li ul li a { + color: var(--darkHeadingTextColor); +} +[class="dark"] .leftNav li a:hover, [class="dark"] .leftNav li a:hover i { + color: var(--primaryColor); +} +[class="dark"] .leftNav li.active > a span, [class="dark"] .leftNav li.active a i { + color: var(--primaryColor); +} \ No newline at end of file diff --git a/components/Email/ReadEmailContent.js b/components/Email/ReadEmailContent.js new file mode 100644 index 0000000..cfc3a8f --- /dev/null +++ b/components/Email/ReadEmailContent.js @@ -0,0 +1,262 @@ +import * as React from "react"; +import IconButton from "@mui/material/IconButton"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import Tooltip from "@mui/material/Tooltip"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import PrintIcon from "@mui/icons-material/Print"; +import DeleteIcon from "@mui/icons-material/Delete"; +import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; +import Button from '@mui/material/Button'; +import Stack from '@mui/material/Stack'; +import ReplyIcon from '@mui/icons-material/Reply'; +import ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox'; + +export default function ReadEmailContent() { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + EnvyTheme Support + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + User + + Jordan Stevenson + From: jonathan@domain.com + + + + + Dec 14, 2017, 5:17 AM + + + + + + Hi Coderthemes! + + + + Last pic over my village – Yeah i'd like that! Do you remember the video som.. + + + + Praesent dui ex, dapibus eget mauris ut, finibus vestibulum enim. Quisque arcu leo, facilisis in fringilla id, luctus in tortor. Nunc vestibulum est quis orci varius viverra. Curabitur dictum volutpat massa vulputate molestie. In at felis ac velit maximus convallis. + + + + Sed elementum turpis eu lorem interdum, sed porttitor eros commodo. Nam eu venenatis tortor, id lacinia diam. Sed aliquam in dui et porta. Sed bibendum orci non tincidunt ultrices. Vivamus fringilla, mi lacinia dapibus condimentum, ipsum urna lacinia lacus, vel tincidunt mi nibh sit amet lorem. + + + + Checklists/Sub-tasks + + +
    +
  1. Your design preferences (Color, style, shapes, Fonts, others)
  2. +
  3. Tell me, why is your item different?
  4. +
  5. Do you want to bring up a specific feature of your item? If yes, please tell me
  6. +
  7. Do you have any preference or specific thing you would like to change or improve on your item page?
  8. +
  9. Do you want to include your item's or your provider's logo on the page? if yes, please send it to me in vector format (Ai or EPS)
  10. +
  11. Please provide me with the copy or text to display
  12. +
+ + + Filling in this form with the above information will ensure that they will be able to start work quickly. + + + + You can complete your order by putting your coupon code into the Promotional code box and clicking ‘Apply Coupon’. + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + + + + Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. + + + + At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. + +
+ + + + + + +
+
+ + ); +} diff --git a/components/Forms/AdvancedElements/BasicDatePicker.js b/components/Forms/AdvancedElements/BasicDatePicker.js new file mode 100644 index 0000000..f93bc5e --- /dev/null +++ b/components/Forms/AdvancedElements/BasicDatePicker.js @@ -0,0 +1,43 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import TextField from '@mui/material/TextField'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { DatePicker } from '@mui/x-date-pickers/DatePicker'; + +export default function BasicDatePicker() { + const [value, setValue] = React.useState(null); + + return ( + + + Date Picker + + + + { + setValue(newValue); + }} + renderInput={(params) => } + /> + + + ); +} \ No newline at end of file diff --git a/components/Forms/AdvancedElements/BasicTimePicker.js b/components/Forms/AdvancedElements/BasicTimePicker.js new file mode 100644 index 0000000..3d5ec58 --- /dev/null +++ b/components/Forms/AdvancedElements/BasicTimePicker.js @@ -0,0 +1,44 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import TextField from '@mui/material/TextField'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { TimePicker } from '@mui/x-date-pickers/TimePicker'; + +export default function BasicTimePicker() { + + const [value, setValue] = React.useState(null); + + return ( + + + Time Picker + + + + { + setValue(newValue); + }} + renderInput={(params) => } + /> + + + ); +} \ No newline at end of file diff --git a/components/Forms/AdvancedElements/CountrySelect.js b/components/Forms/AdvancedElements/CountrySelect.js new file mode 100644 index 0000000..6c5812f --- /dev/null +++ b/components/Forms/AdvancedElements/CountrySelect.js @@ -0,0 +1,488 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import TextField from '@mui/material/TextField'; +import Autocomplete from '@mui/material/Autocomplete'; + +export default function CountrySelect() { + return ( + <> + + + Country Select + + + option.label} + renderOption={(props, option) => ( + img': { mr: 2, flexShrink: 0 } }} {...props}> + + {option.label} ({option.code}) +{option.phone} + + )} + renderInput={(params) => ( + + )} + /> + + + ); +} + +// From https://bitbucket.org/atlassian/atlaskit-mk-2/raw/4ad0e56649c3e6c973e226b7efaeb28cb240ccb0/packages/core/select/src/data/countries.js +const countries = [ + { code: 'AD', label: 'Andorra', phone: '376' }, + { + code: 'AE', + label: 'United Arab Emirates', + phone: '971', + }, + { code: 'AF', label: 'Afghanistan', phone: '93' }, + { + code: 'AG', + label: 'Antigua and Barbuda', + phone: '1-268', + }, + { code: 'AI', label: 'Anguilla', phone: '1-264' }, + { code: 'AL', label: 'Albania', phone: '355' }, + { code: 'AM', label: 'Armenia', phone: '374' }, + { code: 'AO', label: 'Angola', phone: '244' }, + { code: 'AQ', label: 'Antarctica', phone: '672' }, + { code: 'AR', label: 'Argentina', phone: '54' }, + { code: 'AS', label: 'American Samoa', phone: '1-684' }, + { code: 'AT', label: 'Austria', phone: '43' }, + { + code: 'AU', + label: 'Australia', + phone: '61', + suggested: true, + }, + { code: 'AW', label: 'Aruba', phone: '297' }, + { code: 'AX', label: 'Alland Islands', phone: '358' }, + { code: 'AZ', label: 'Azerbaijan', phone: '994' }, + { + code: 'BA', + label: 'Bosnia and Herzegovina', + phone: '387', + }, + { code: 'BB', label: 'Barbados', phone: '1-246' }, + { code: 'BD', label: 'Bangladesh', phone: '880' }, + { code: 'BE', label: 'Belgium', phone: '32' }, + { code: 'BF', label: 'Burkina Faso', phone: '226' }, + { code: 'BG', label: 'Bulgaria', phone: '359' }, + { code: 'BH', label: 'Bahrain', phone: '973' }, + { code: 'BI', label: 'Burundi', phone: '257' }, + { code: 'BJ', label: 'Benin', phone: '229' }, + { code: 'BL', label: 'Saint Barthelemy', phone: '590' }, + { code: 'BM', label: 'Bermuda', phone: '1-441' }, + { code: 'BN', label: 'Brunei Darussalam', phone: '673' }, + { code: 'BO', label: 'Bolivia', phone: '591' }, + { code: 'BR', label: 'Brazil', phone: '55' }, + { code: 'BS', label: 'Bahamas', phone: '1-242' }, + { code: 'BT', label: 'Bhutan', phone: '975' }, + { code: 'BV', label: 'Bouvet Island', phone: '47' }, + { code: 'BW', label: 'Botswana', phone: '267' }, + { code: 'BY', label: 'Belarus', phone: '375' }, + { code: 'BZ', label: 'Belize', phone: '501' }, + { + code: 'CA', + label: 'Canada', + phone: '1', + suggested: true, + }, + { + code: 'CC', + label: 'Cocos (Keeling) Islands', + phone: '61', + }, + { + code: 'CD', + label: 'Congo, Democratic Republic of the', + phone: '243', + }, + { + code: 'CF', + label: 'Central African Republic', + phone: '236', + }, + { + code: 'CG', + label: 'Congo, Republic of the', + phone: '242', + }, + { code: 'CH', label: 'Switzerland', phone: '41' }, + { code: 'CI', label: "Cote d'Ivoire", phone: '225' }, + { code: 'CK', label: 'Cook Islands', phone: '682' }, + { code: 'CL', label: 'Chile', phone: '56' }, + { code: 'CM', label: 'Cameroon', phone: '237' }, + { code: 'CN', label: 'China', phone: '86' }, + { code: 'CO', label: 'Colombia', phone: '57' }, + { code: 'CR', label: 'Costa Rica', phone: '506' }, + { code: 'CU', label: 'Cuba', phone: '53' }, + { code: 'CV', label: 'Cape Verde', phone: '238' }, + { code: 'CW', label: 'Curacao', phone: '599' }, + { code: 'CX', label: 'Christmas Island', phone: '61' }, + { code: 'CY', label: 'Cyprus', phone: '357' }, + { code: 'CZ', label: 'Czech Republic', phone: '420' }, + { + code: 'DE', + label: 'Germany', + phone: '49', + suggested: true, + }, + { code: 'DJ', label: 'Djibouti', phone: '253' }, + { code: 'DK', label: 'Denmark', phone: '45' }, + { code: 'DM', label: 'Dominica', phone: '1-767' }, + { + code: 'DO', + label: 'Dominican Republic', + phone: '1-809', + }, + { code: 'DZ', label: 'Algeria', phone: '213' }, + { code: 'EC', label: 'Ecuador', phone: '593' }, + { code: 'EE', label: 'Estonia', phone: '372' }, + { code: 'EG', label: 'Egypt', phone: '20' }, + { code: 'EH', label: 'Western Sahara', phone: '212' }, + { code: 'ER', label: 'Eritrea', phone: '291' }, + { code: 'ES', label: 'Spain', phone: '34' }, + { code: 'ET', label: 'Ethiopia', phone: '251' }, + { code: 'FI', label: 'Finland', phone: '358' }, + { code: 'FJ', label: 'Fiji', phone: '679' }, + { + code: 'FK', + label: 'Falkland Islands (Malvinas)', + phone: '500', + }, + { + code: 'FM', + label: 'Micronesia, Federated States of', + phone: '691', + }, + { code: 'FO', label: 'Faroe Islands', phone: '298' }, + { + code: 'FR', + label: 'France', + phone: '33', + suggested: true, + }, + { code: 'GA', label: 'Gabon', phone: '241' }, + { code: 'GB', label: 'United Kingdom', phone: '44' }, + { code: 'GD', label: 'Grenada', phone: '1-473' }, + { code: 'GE', label: 'Georgia', phone: '995' }, + { code: 'GF', label: 'French Guiana', phone: '594' }, + { code: 'GG', label: 'Guernsey', phone: '44' }, + { code: 'GH', label: 'Ghana', phone: '233' }, + { code: 'GI', label: 'Gibraltar', phone: '350' }, + { code: 'GL', label: 'Greenland', phone: '299' }, + { code: 'GM', label: 'Gambia', phone: '220' }, + { code: 'GN', label: 'Guinea', phone: '224' }, + { code: 'GP', label: 'Guadeloupe', phone: '590' }, + { code: 'GQ', label: 'Equatorial Guinea', phone: '240' }, + { code: 'GR', label: 'Greece', phone: '30' }, + { + code: 'GS', + label: 'South Georgia and the South Sandwich Islands', + phone: '500', + }, + { code: 'GT', label: 'Guatemala', phone: '502' }, + { code: 'GU', label: 'Guam', phone: '1-671' }, + { code: 'GW', label: 'Guinea-Bissau', phone: '245' }, + { code: 'GY', label: 'Guyana', phone: '592' }, + { code: 'HK', label: 'Hong Kong', phone: '852' }, + { + code: 'HM', + label: 'Heard Island and McDonald Islands', + phone: '672', + }, + { code: 'HN', label: 'Honduras', phone: '504' }, + { code: 'HR', label: 'Croatia', phone: '385' }, + { code: 'HT', label: 'Haiti', phone: '509' }, + { code: 'HU', label: 'Hungary', phone: '36' }, + { code: 'ID', label: 'Indonesia', phone: '62' }, + { code: 'IE', label: 'Ireland', phone: '353' }, + { code: 'IL', label: 'Israel', phone: '972' }, + { code: 'IM', label: 'Isle of Man', phone: '44' }, + { code: 'IN', label: 'India', phone: '91' }, + { + code: 'IO', + label: 'British Indian Ocean Territory', + phone: '246', + }, + { code: 'IQ', label: 'Iraq', phone: '964' }, + { + code: 'IR', + label: 'Iran, Islamic Republic of', + phone: '98', + }, + { code: 'IS', label: 'Iceland', phone: '354' }, + { code: 'IT', label: 'Italy', phone: '39' }, + { code: 'JE', label: 'Jersey', phone: '44' }, + { code: 'JM', label: 'Jamaica', phone: '1-876' }, + { code: 'JO', label: 'Jordan', phone: '962' }, + { + code: 'JP', + label: 'Japan', + phone: '81', + suggested: true, + }, + { code: 'KE', label: 'Kenya', phone: '254' }, + { code: 'KG', label: 'Kyrgyzstan', phone: '996' }, + { code: 'KH', label: 'Cambodia', phone: '855' }, + { code: 'KI', label: 'Kiribati', phone: '686' }, + { code: 'KM', label: 'Comoros', phone: '269' }, + { + code: 'KN', + label: 'Saint Kitts and Nevis', + phone: '1-869', + }, + { + code: 'KP', + label: "Korea, Democratic People's Republic of", + phone: '850', + }, + { code: 'KR', label: 'Korea, Republic of', phone: '82' }, + { code: 'KW', label: 'Kuwait', phone: '965' }, + { code: 'KY', label: 'Cayman Islands', phone: '1-345' }, + { code: 'KZ', label: 'Kazakhstan', phone: '7' }, + { + code: 'LA', + label: "Lao People's Democratic Republic", + phone: '856', + }, + { code: 'LB', label: 'Lebanon', phone: '961' }, + { code: 'LC', label: 'Saint Lucia', phone: '1-758' }, + { code: 'LI', label: 'Liechtenstein', phone: '423' }, + { code: 'LK', label: 'Sri Lanka', phone: '94' }, + { code: 'LR', label: 'Liberia', phone: '231' }, + { code: 'LS', label: 'Lesotho', phone: '266' }, + { code: 'LT', label: 'Lithuania', phone: '370' }, + { code: 'LU', label: 'Luxembourg', phone: '352' }, + { code: 'LV', label: 'Latvia', phone: '371' }, + { code: 'LY', label: 'Libya', phone: '218' }, + { code: 'MA', label: 'Morocco', phone: '212' }, + { code: 'MC', label: 'Monaco', phone: '377' }, + { + code: 'MD', + label: 'Moldova, Republic of', + phone: '373', + }, + { code: 'ME', label: 'Montenegro', phone: '382' }, + { + code: 'MF', + label: 'Saint Martin (French part)', + phone: '590', + }, + { code: 'MG', label: 'Madagascar', phone: '261' }, + { code: 'MH', label: 'Marshall Islands', phone: '692' }, + { + code: 'MK', + label: 'Macedonia, the Former Yugoslav Republic of', + phone: '389', + }, + { code: 'ML', label: 'Mali', phone: '223' }, + { code: 'MM', label: 'Myanmar', phone: '95' }, + { code: 'MN', label: 'Mongolia', phone: '976' }, + { code: 'MO', label: 'Macao', phone: '853' }, + { + code: 'MP', + label: 'Northern Mariana Islands', + phone: '1-670', + }, + { code: 'MQ', label: 'Martinique', phone: '596' }, + { code: 'MR', label: 'Mauritania', phone: '222' }, + { code: 'MS', label: 'Montserrat', phone: '1-664' }, + { code: 'MT', label: 'Malta', phone: '356' }, + { code: 'MU', label: 'Mauritius', phone: '230' }, + { code: 'MV', label: 'Maldives', phone: '960' }, + { code: 'MW', label: 'Malawi', phone: '265' }, + { code: 'MX', label: 'Mexico', phone: '52' }, + { code: 'MY', label: 'Malaysia', phone: '60' }, + { code: 'MZ', label: 'Mozambique', phone: '258' }, + { code: 'NA', label: 'Namibia', phone: '264' }, + { code: 'NC', label: 'New Caledonia', phone: '687' }, + { code: 'NE', label: 'Niger', phone: '227' }, + { code: 'NF', label: 'Norfolk Island', phone: '672' }, + { code: 'NG', label: 'Nigeria', phone: '234' }, + { code: 'NI', label: 'Nicaragua', phone: '505' }, + { code: 'NL', label: 'Netherlands', phone: '31' }, + { code: 'NO', label: 'Norway', phone: '47' }, + { code: 'NP', label: 'Nepal', phone: '977' }, + { code: 'NR', label: 'Nauru', phone: '674' }, + { code: 'NU', label: 'Niue', phone: '683' }, + { code: 'NZ', label: 'New Zealand', phone: '64' }, + { code: 'OM', label: 'Oman', phone: '968' }, + { code: 'PA', label: 'Panama', phone: '507' }, + { code: 'PE', label: 'Peru', phone: '51' }, + { code: 'PF', label: 'French Polynesia', phone: '689' }, + { code: 'PG', label: 'Papua New Guinea', phone: '675' }, + { code: 'PH', label: 'Philippines', phone: '63' }, + { code: 'PK', label: 'Pakistan', phone: '92' }, + { code: 'PL', label: 'Poland', phone: '48' }, + { + code: 'PM', + label: 'Saint Pierre and Miquelon', + phone: '508', + }, + { code: 'PN', label: 'Pitcairn', phone: '870' }, + { code: 'PR', label: 'Puerto Rico', phone: '1' }, + { + code: 'PS', + label: 'Palestine, State of', + phone: '970', + }, + { code: 'PT', label: 'Portugal', phone: '351' }, + { code: 'PW', label: 'Palau', phone: '680' }, + { code: 'PY', label: 'Paraguay', phone: '595' }, + { code: 'QA', label: 'Qatar', phone: '974' }, + { code: 'RE', label: 'Reunion', phone: '262' }, + { code: 'RO', label: 'Romania', phone: '40' }, + { code: 'RS', label: 'Serbia', phone: '381' }, + { code: 'RU', label: 'Russian Federation', phone: '7' }, + { code: 'RW', label: 'Rwanda', phone: '250' }, + { code: 'SA', label: 'Saudi Arabia', phone: '966' }, + { code: 'SB', label: 'Solomon Islands', phone: '677' }, + { code: 'SC', label: 'Seychelles', phone: '248' }, + { code: 'SD', label: 'Sudan', phone: '249' }, + { code: 'SE', label: 'Sweden', phone: '46' }, + { code: 'SG', label: 'Singapore', phone: '65' }, + { code: 'SH', label: 'Saint Helena', phone: '290' }, + { code: 'SI', label: 'Slovenia', phone: '386' }, + { + code: 'SJ', + label: 'Svalbard and Jan Mayen', + phone: '47', + }, + { code: 'SK', label: 'Slovakia', phone: '421' }, + { code: 'SL', label: 'Sierra Leone', phone: '232' }, + { code: 'SM', label: 'San Marino', phone: '378' }, + { code: 'SN', label: 'Senegal', phone: '221' }, + { code: 'SO', label: 'Somalia', phone: '252' }, + { code: 'SR', label: 'Suriname', phone: '597' }, + { code: 'SS', label: 'South Sudan', phone: '211' }, + { + code: 'ST', + label: 'Sao Tome and Principe', + phone: '239', + }, + { code: 'SV', label: 'El Salvador', phone: '503' }, + { + code: 'SX', + label: 'Sint Maarten (Dutch part)', + phone: '1-721', + }, + { + code: 'SY', + label: 'Syrian Arab Republic', + phone: '963', + }, + { code: 'SZ', label: 'Swaziland', phone: '268' }, + { + code: 'TC', + label: 'Turks and Caicos Islands', + phone: '1-649', + }, + { code: 'TD', label: 'Chad', phone: '235' }, + { + code: 'TF', + label: 'French Southern Territories', + phone: '262', + }, + { code: 'TG', label: 'Togo', phone: '228' }, + { code: 'TH', label: 'Thailand', phone: '66' }, + { code: 'TJ', label: 'Tajikistan', phone: '992' }, + { code: 'TK', label: 'Tokelau', phone: '690' }, + { code: 'TL', label: 'Timor-Leste', phone: '670' }, + { code: 'TM', label: 'Turkmenistan', phone: '993' }, + { code: 'TN', label: 'Tunisia', phone: '216' }, + { code: 'TO', label: 'Tonga', phone: '676' }, + { code: 'TR', label: 'Turkey', phone: '90' }, + { + code: 'TT', + label: 'Trinidad and Tobago', + phone: '1-868', + }, + { code: 'TV', label: 'Tuvalu', phone: '688' }, + { + code: 'TW', + label: 'Taiwan, Republic of China', + phone: '886', + }, + { + code: 'TZ', + label: 'United Republic of Tanzania', + phone: '255', + }, + { code: 'UA', label: 'Ukraine', phone: '380' }, + { code: 'UG', label: 'Uganda', phone: '256' }, + { + code: 'US', + label: 'United States', + phone: '1', + suggested: true, + }, + { code: 'UY', label: 'Uruguay', phone: '598' }, + { code: 'UZ', label: 'Uzbekistan', phone: '998' }, + { + code: 'VA', + label: 'Holy See (Vatican City State)', + phone: '379', + }, + { + code: 'VC', + label: 'Saint Vincent and the Grenadines', + phone: '1-784', + }, + { code: 'VE', label: 'Venezuela', phone: '58' }, + { + code: 'VG', + label: 'British Virgin Islands', + phone: '1-284', + }, + { + code: 'VI', + label: 'US Virgin Islands', + phone: '1-340', + }, + { code: 'VN', label: 'Vietnam', phone: '84' }, + { code: 'VU', label: 'Vanuatu', phone: '678' }, + { code: 'WF', label: 'Wallis and Futuna', phone: '681' }, + { code: 'WS', label: 'Samoa', phone: '685' }, + { code: 'XK', label: 'Kosovo', phone: '383' }, + { code: 'YE', label: 'Yemen', phone: '967' }, + { code: 'YT', label: 'Mayotte', phone: '262' }, + { code: 'ZA', label: 'South Africa', phone: '27' }, + { code: 'ZM', label: 'Zambia', phone: '260' }, + { code: 'ZW', label: 'Zimbabwe', phone: '263' }, +]; \ No newline at end of file diff --git a/components/Forms/AdvancedElements/DefaultSelect.js b/components/Forms/AdvancedElements/DefaultSelect.js new file mode 100644 index 0000000..5cec2ad --- /dev/null +++ b/components/Forms/AdvancedElements/DefaultSelect.js @@ -0,0 +1,55 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +export default function DefaultSelect() { + + const [age, setAge] = React.useState(''); + + const handleChange = (event) => { + setAge(event.target.value); + }; + + return ( + <> + + + Default Select + + + + Age + + + + + ); +} diff --git a/components/Forms/AdvancedElements/MultiSelect.js b/components/Forms/AdvancedElements/MultiSelect.js new file mode 100644 index 0000000..1d8e270 --- /dev/null +++ b/components/Forms/AdvancedElements/MultiSelect.js @@ -0,0 +1,105 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { useTheme } from '@mui/material/styles'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +export default function MultiSelect() { + + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multi Select + + + + Name + + + + + ); +} diff --git a/components/Forms/AdvancedElements/MultipleSelectChip.js b/components/Forms/AdvancedElements/MultipleSelectChip.js new file mode 100644 index 0000000..25d3af9 --- /dev/null +++ b/components/Forms/AdvancedElements/MultipleSelectChip.js @@ -0,0 +1,113 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; +import Chip from '@mui/material/Chip'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +export default function MultipleSelectChip() { + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multiple Select Chip + + + + Chip + + + + + ); +} diff --git a/components/Forms/EditorArea.js b/components/Forms/EditorArea.js new file mode 100644 index 0000000..d875077 --- /dev/null +++ b/components/Forms/EditorArea.js @@ -0,0 +1,47 @@ +import React from 'react'; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import dynamic from 'next/dynamic' +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const EditorArea = () => { + return ( + <> + + + Editor + + +
+ +
+
+ + ) +} + +export default EditorArea; \ No newline at end of file diff --git a/components/Forms/FileUploader/UploadMultipleFiles.js b/components/Forms/FileUploader/UploadMultipleFiles.js new file mode 100644 index 0000000..1226553 --- /dev/null +++ b/components/Forms/FileUploader/UploadMultipleFiles.js @@ -0,0 +1,163 @@ +import { Fragment, useState } from "react"; +import Box from "@mui/material/Box"; +import Link from "@mui/material/Link"; +import List from "@mui/material/List"; +import Button from "@mui/material/Button"; +import ListItem from "@mui/material/ListItem"; +import { styled } from "@mui/material/styles"; +import IconButton from "@mui/material/IconButton"; +import Typography from "@mui/material/Typography"; +import ClearIcon from "@mui/icons-material/Clear"; +import FileCopyIcon from "@mui/icons-material/FileCopy"; +import Card from "@mui/material/Card"; +import { useDropzone } from "react-dropzone"; +import styles from "@/components/Forms/FileUploader/UploadMultipleFiles.module.css"; + +const FileUploaderMultiple = () => { + // ** State + const [files, setFiles] = useState([]); + + // ** Hooks + const { getRootProps, getInputProps } = useDropzone({ + onDrop: (acceptedFiles) => { + setFiles(acceptedFiles.map((file) => Object.assign(file))); + }, + }); + + const renderFilePreview = (file) => { + if (file.type.startsWith("image")) { + return ( + {file.name} + ); + } else { + return ; + } + }; + + const handleRemoveFile = (file) => { + const uploadedFiles = files; + const filtered = uploadedFiles.filter((i) => i.name !== file.name); + setFiles([...filtered]); + }; + + const fileList = files.map((file) => ( + +
+
+ {renderFilePreview(file)} +
+
+ + {file.name} + +
+
+ handleRemoveFile(file)}> + + +
+ )); + + const handleLinkClick = (event) => { + event.preventDefault(); + }; + + const handleRemoveAllFiles = () => { + setFiles([]); + }; + + return ( + <> + + + Upload Multiple Files + + +
+ + + Upload img + + + Drop files here or click to upload. + + + + Drop files here or click{" "} + + browse + {" "} + thorough your machine + + + +
+ + {files.length ? ( + + {fileList} +
+ +
+
+ ) : null} +
+ + ); +}; + +export default FileUploaderMultiple; diff --git a/components/Forms/FileUploader/UploadMultipleFiles.module.css b/components/Forms/FileUploader/UploadMultipleFiles.module.css new file mode 100644 index 0000000..814a684 --- /dev/null +++ b/components/Forms/FileUploader/UploadMultipleFiles.module.css @@ -0,0 +1,43 @@ +.dropzone { + background: #fdfdfd; + border: 2px dashed #eee; + padding: 20px; + border-radius: 10px; + cursor: pointer; +} +.thumbImage { + margin-right: 30px; +} +.fileDetails { + display: flex; + align-items: center; +} +.filePreview { + margin-right: 10px; +} +.fileName { + font-size: 14px; + font-weight: 500; +} +.buttons { + text-align: end; +} + +@media screen and (max-width: 900px) { + .thumbImage { + margin-right: 0; + margin-bottom: 20px; + } +} + +/* For RTL Style */ +[dir="rtl"] .thumbImage { + margin-right: 0; + margin-left: 30px; +} + +/* For dark mode */ +[class="dark"] .dropzone { + background: #181717; + border: 2px dashed var(--borderColor); +} \ No newline at end of file diff --git a/components/Forms/FormLayouts/BasicForm.js b/components/Forms/FormLayouts/BasicForm.js new file mode 100644 index 0000000..04f1524 --- /dev/null +++ b/components/Forms/FormLayouts/BasicForm.js @@ -0,0 +1,135 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Link from "next/link"; +import Grid from "@mui/material/Grid"; +import { Box } from "@mui/system"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import FormControlLabel from "@mui/material/FormControlLabel"; +import Checkbox from "@mui/material/Checkbox"; +import styles from "@/components/Authentication/Authentication.module.css"; + +export default function BasicForm() { + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + Basic Form + + + + + + + + + + + + + + + + + + + + + + + + + + + Already have an account?{" "} + + Sign In + + + + + + + ); +} diff --git a/components/Forms/FormLayouts/BasicWithIcons.js b/components/Forms/FormLayouts/BasicWithIcons.js new file mode 100644 index 0000000..8d3be9e --- /dev/null +++ b/components/Forms/FormLayouts/BasicWithIcons.js @@ -0,0 +1,144 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Link from "next/link"; +import Grid from "@mui/material/Grid"; +import { Box } from "@mui/system"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import AccountCircle from '@mui/icons-material/AccountCircle'; +import MailOutlineIcon from '@mui/icons-material/MailOutline'; +import LockIcon from '@mui/icons-material/Lock'; + +export default function BasicWithIcons() { + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + Basic With Icons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Already have an account?{" "} + + Sign In + + + + + + ); +} diff --git a/components/Forms/FormLayouts/CustomStyles.js b/components/Forms/FormLayouts/CustomStyles.js new file mode 100644 index 0000000..eb521f4 --- /dev/null +++ b/components/Forms/FormLayouts/CustomStyles.js @@ -0,0 +1,156 @@ +import React from 'react'; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Grid from "@mui/material/Grid"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import SendIcon from '@mui/icons-material/Send'; + +import dynamic from 'next/dynamic' +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const CustomStyles = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Select Priority + const [priority, setPriority] = React.useState(''); + const handleChange = (event) => { + setPriority(event.target.value); + }; + + return ( + <> + + + Custom Styles + + + + + + + First Name + + + + + + + Email Address + + + + + + + Message + + + + + + + + + + + + + ) +} + +export default CustomStyles; \ No newline at end of file diff --git a/components/Forms/FormLayouts/SignInForm.js b/components/Forms/FormLayouts/SignInForm.js new file mode 100644 index 0000000..7a340fa --- /dev/null +++ b/components/Forms/FormLayouts/SignInForm.js @@ -0,0 +1,126 @@ +import * as React from "react"; +import Avatar from "@mui/material/Avatar"; +import Button from "@mui/material/Button"; +import CssBaseline from "@mui/material/CssBaseline"; +import TextField from "@mui/material/TextField"; +import FormControlLabel from "@mui/material/FormControlLabel"; +import Checkbox from "@mui/material/Checkbox"; +import Link from "@mui/material/Link"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import LockOutlinedIcon from "@mui/icons-material/LockOutlined"; +import Typography from "@mui/material/Typography"; +import Container from "@mui/material/Container"; + +import Card from "@mui/material/Card"; + +export default function SignInForm() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + Sign In + + + + + + + + + + + Sign in + + + + + + + + } + label="Remember me" + /> + + + + + + + Forgot password? + + + + + {"Don't have an account? Sign Up"} + + + + + + + + + ); +} diff --git a/components/Forms/FormLayouts/SignUpForm.js b/components/Forms/FormLayouts/SignUpForm.js new file mode 100644 index 0000000..bc01065 --- /dev/null +++ b/components/Forms/FormLayouts/SignUpForm.js @@ -0,0 +1,143 @@ +import * as React from 'react'; +import Avatar from '@mui/material/Avatar'; +import Button from '@mui/material/Button'; +import CssBaseline from '@mui/material/CssBaseline'; +import TextField from '@mui/material/TextField'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import Link from '@mui/material/Link'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import LockOutlinedIcon from '@mui/icons-material/LockOutlined'; +import Typography from '@mui/material/Typography'; +import Container from '@mui/material/Container'; +import Card from "@mui/material/Card"; + +export default function SignUpForm() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get('email'), + password: data.get('password'), + }); + }; + + return ( + <> + + + Sign Up + + + + + + + + + + + Sign up + + + + + + + + + + + + + + + + + + + + + + } + label="I want to receive inspiration, marketing promotions and updates via email." + /> + + + + + + + + + Already have an account? Sign in + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/Notification/NotificationTable.js b/components/Notification/NotificationTable.js new file mode 100644 index 0000000..0da41cb --- /dev/null +++ b/components/Notification/NotificationTable.js @@ -0,0 +1,447 @@ +import * as React from "react"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import Tooltip from "@mui/material/Tooltip"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import PrintIcon from "@mui/icons-material/Print"; +import DeleteIcon from "@mui/icons-material/Delete"; +import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; +import Checkbox from "@mui/material/Checkbox"; +import Link from "next/link"; + +const label = { inputProps: { "aria-label": "Checkbox demo" } }; + +function Notification(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +Notification.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(id, text, readEmail, date) { + return { id, text, readEmail, date }; +} + +const rows = [ + createData( + "1", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "1 Jan 2022" + ), + createData( + "2", + "Last pic over my village – Yeah i'd like that! Do you remember the video som..", + "/email/read-email", + "2 Jan 2022" + ), + createData( + "3", + "Mochila Beta: Subscription Confirmed – You've been confirmed! Welcome to ", + "/email/read-email", + "3 Jan 2022" + ), + createData( + "4", + "You've been confirmed! Welcome to the ruling class of the inbox. For your ", + "/email/read-email", + "4 Jan 2022" + ), + createData( + "5", + "For your records, here is a copy of the information you submitted to us...", + "/email/read-email", + "5 Jan 2022" + ), + createData( + "6", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "6 Jan 2022" + ), + createData( + "7", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "7 Jan 2022" + ), + createData( + "8", + "For your records, here is a copy of the information you submitted to us...", + "/email/read-email", + "8 Jan 2022" + ), + createData( + "9", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "9 Jan 2022" + ), + createData( + "10", + "Off on Thursday – Eff that place, you might as well stay here with us inst", + "/email/read-email", + "10 Jan 2022" + ), + createData( + "11", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "11 Jan 2022" + ), + createData( + "12", + "This Week's Top Stories – Our top pick for you on Medium this week The", + "/email/read-email", + "12 Jan 2022" + ), + createData( + "13", + "Weekend on Revibe – Today's Friday and we thought maybe you want so", + "/email/read-email", + "13 Jan 2022" + ), + createData( + "14", + "You can now use your storage in Google Drive – Hey Nicklas Sandell! Tha", + "/email/read-email", + "14 Jan 2022" + ), + createData( + "15", + "New Ticket Reply - eDemy - Michel Valenzuela", + "/email/read-email", + "15 Jan 2022" + ), + createData( + "16", + "New Ticket Reply - Abev - Manos Pappas", + "/email/read-email", + "16 Jan 2022" + ), + createData( + "17", + "New Ticket Reply - Lofi - Adarsh Raj", + "/email/read-email", + "11 Jan 2022" + ), +]; + +export default function NotificationTable() { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Notification List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + + + + {row.text} + + + + + {row.date} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Pages/Charts/ApexCharts/AreaCharts/BasicAreaCharts.js b/components/Pages/Charts/ApexCharts/AreaCharts/BasicAreaCharts.js new file mode 100644 index 0000000..0801bde --- /dev/null +++ b/components/Pages/Charts/ApexCharts/AreaCharts/BasicAreaCharts.js @@ -0,0 +1,297 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const series = { + monthDataSeries1: { + prices: [ + 8107.85, 8128.0, 8122.9, 8165.5, 8340.7, 8423.7, 8423.5, 8514.3, 8481.85, + 8487.7, 8506.9, 8626.2, 8668.95, 8602.3, 8607.55, 8512.9, 8496.25, + 8500.65, 8881.1, 9340.85, + ], + dates: [ + "13 Nov 2018", + "14 Nov 2018", + "15 Nov 2018", + "16 Nov 2018", + "17 Nov 2018", + "20 Nov 2018", + "21 Nov 2018", + "22 Nov 2018", + "23 Nov 2018", + "24 Nov 2018", + "27 Nov 2018", + "28 Nov 2018", + "29 Nov 2018", + "30 Nov 2018", + "01 Dec 2018", + "04 Dec 2018", + "05 Dec 2018", + "06 Dec 2018", + "07 Dec 2018", + "08 Dec 2018", + ], + }, + monthDataSeries2: { + prices: [ + 8423.7, 8423.5, 8514.3, 8481.85, 8487.7, 8506.9, 8626.2, 8668.95, 8602.3, + 8607.55, 8512.9, 8496.25, 8500.65, 8881.1, 9040.85, 8340.7, 8165.5, + 8122.9, 8107.85, 8128.0, + ], + dates: [ + "13 Nov 2018", + "14 Nov 2018", + "15 Nov 2018", + "16 Nov 2018", + "17 Nov 2018", + "20 Nov 2018", + "21 Nov 2018", + "22 Nov 2018", + "23 Nov 2018", + "24 Nov 2018", + "27 Nov 2018", + "28 Nov 2018", + "29 Nov 2018", + "30 Nov 2018", + "01 Dec 2018", + "04 Dec 2018", + "05 Dec 2018", + "06 Dec 2018", + "07 Dec 2018", + "08 Dec 2018", + ], + }, + monthDataSeries3: { + prices: [ + 7114.25, 7126.6, 7116.95, 7203.7, 7233.75, 7451.0, 7381.15, 7348.95, + 7347.75, 7311.25, 7266.4, 7253.25, 7215.45, 7266.35, 7315.25, 7237.2, + 7191.4, 7238.95, 7222.6, 7217.9, 7359.3, 7371.55, 7371.15, 7469.2, + 7429.25, 7434.65, 7451.1, 7475.25, 7566.25, 7556.8, 7525.55, 7555.45, + 7560.9, 7490.7, 7527.6, 7551.9, 7514.85, 7577.95, 7592.3, 7621.95, + 7707.95, 7859.1, 7815.7, 7739.0, 7778.7, 7839.45, 7756.45, 7669.2, + 7580.45, 7452.85, 7617.25, 7701.6, 7606.8, 7620.05, 7513.85, 7498.45, + 7575.45, 7601.95, 7589.1, 7525.85, 7569.5, 7702.5, 7812.7, 7803.75, + 7816.3, 7851.15, 7912.2, 7972.8, 8145.0, 8161.1, 8121.05, 8071.25, 8088.2, + 8154.45, 8148.3, 8122.05, 8132.65, 8074.55, 7952.8, 7885.55, 7733.9, + 7897.15, 7973.15, 7888.5, 7842.8, 7838.4, 7909.85, 7892.75, 7897.75, + 7820.05, 7904.4, 7872.2, 7847.5, 7849.55, 7789.6, 7736.35, 7819.4, + 7875.35, 7871.8, 8076.5, 8114.8, 8193.55, 8217.1, 8235.05, 8215.3, 8216.4, + 8301.55, 8235.25, 8229.75, 8201.95, 8164.95, 8107.85, 8128.0, 8122.9, + 8165.5, 8340.7, 8423.7, 8423.5, 8514.3, 8481.85, 8487.7, 8506.9, 8626.2, + ], + dates: [ + "02 Jun 2018", + "05 Jun 2018", + "06 Jun 2018", + "07 Jun 2018", + "08 Jun 2018", + "09 Jun 2018", + "12 Jun 2018", + "13 Jun 2018", + "14 Jun 2018", + "15 Jun 2018", + "16 Jun 2018", + "19 Jun 2018", + "20 Jun 2018", + "21 Jun 2018", + "22 Jun 2018", + "23 Jun 2018", + "27 Jun 2018", + "28 Jun 2018", + "29 Jun 2018", + "30 Jun 2018", + "03 Jul 2018", + "04 Jul 2018", + "05 Jul 2018", + "06 Jul 2018", + "07 Jul 2018", + "10 Jul 2018", + "11 Jul 2018", + "12 Jul 2018", + "13 Jul 2018", + "14 Jul 2018", + "17 Jul 2018", + "18 Jul 2018", + "19 Jul 2018", + "20 Jul 2018", + "21 Jul 2018", + "24 Jul 2018", + "25 Jul 2018", + "26 Jul 2018", + "27 Jul 2018", + "28 Jul 2018", + "31 Jul 2018", + "01 Aug 2018", + "02 Aug 2018", + "03 Aug 2018", + "04 Aug 2018", + "07 Aug 2018", + "08 Aug 2018", + "09 Aug 2018", + "10 Aug 2018", + "11 Aug 2018", + "14 Aug 2018", + "16 Aug 2018", + "17 Aug 2018", + "18 Aug 2018", + "21 Aug 2018", + "22 Aug 2018", + "23 Aug 2018", + "24 Aug 2018", + "28 Aug 2018", + "29 Aug 2018", + "30 Aug 2018", + "31 Aug 2018", + "01 Sep 2018", + "04 Sep 2018", + "05 Sep 2018", + "06 Sep 2018", + "07 Sep 2018", + "08 Sep 2018", + "11 Sep 2018", + "12 Sep 2018", + "13 Sep 2018", + "14 Sep 2018", + "15 Sep 2018", + "18 Sep 2018", + "19 Sep 2018", + "20 Sep 2018", + "21 Sep 2018", + "22 Sep 2018", + "25 Sep 2018", + "26 Sep 2018", + "27 Sep 2018", + "28 Sep 2018", + "29 Sep 2018", + "03 Oct 2018", + "04 Oct 2018", + "05 Oct 2018", + "06 Oct 2018", + "09 Oct 2018", + "10 Oct 2018", + "11 Oct 2018", + "12 Oct 2018", + "13 Oct 2018", + "16 Oct 2018", + "17 Oct 2018", + "18 Oct 2018", + "19 Oct 2018", + "23 Oct 2018", + "24 Oct 2018", + "25 Oct 2018", + "26 Oct 2018", + "27 Oct 2018", + "30 Oct 2018", + "31 Oct 2018", + "01 Nov 2018", + "02 Nov 2018", + "03 Nov 2018", + "06 Nov 2018", + "07 Nov 2018", + "08 Nov 2018", + "09 Nov 2018", + "10 Nov 2018", + "13 Nov 2018", + "14 Nov 2018", + "15 Nov 2018", + "16 Nov 2018", + "17 Nov 2018", + "20 Nov 2018", + "21 Nov 2018", + "22 Nov 2018", + "23 Nov 2018", + "24 Nov 2018", + "27 Nov 2018", + "28 Nov 2018", + ], + }, +}; + +class BasicAreaCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "STOCK ABC", + data: series.monthDataSeries1.prices, + }, + ], + options: { + chart: { + zoom: { + enabled: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "straight", + }, + + title: { + text: "Fundamental Analysis of Stocks", + align: "left", + }, + subtitle: { + text: "Price Movements", + align: "left", + }, + labels: series.monthDataSeries1.dates, + xaxis: { + type: "datetime", + }, + yaxis: { + opposite: true, + }, + legend: { + horizontalAlign: "left", + }, + }, + }; + } + + render() { + return ( + <> + + + Basic + + + + + + ); + } +} + +export default BasicAreaCharts; diff --git a/components/Pages/Charts/ApexCharts/AreaCharts/DatetimeXAxis.js b/components/Pages/Charts/ApexCharts/AreaCharts/DatetimeXAxis.js new file mode 100644 index 0000000..fdeef98 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/AreaCharts/DatetimeXAxis.js @@ -0,0 +1,500 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class DatetimeXAxis extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [ + [1327359500000, 30.95], + [1327445000000, 31.34], + [1327532400000, 31.18], + [1327618800000, 31.05], + [1327878000000, 31.0], + [1327964400000, 30.95], + [1328050800000, 31.24], + [1328137200000, 31.29], + [1328223500000, 31.85], + [1328482800000, 31.86], + [1328569200000, 32.28], + [1328655500000, 32.1], + [1328742000000, 32.65], + [1328828400000, 32.21], + [1329087500000, 32.35], + [1329174000000, 32.44], + [1329260400000, 32.46], + [1329346800000, 32.86], + [1329433200000, 32.75], + [1329778800000, 32.54], + [1329865200000, 32.33], + [1329951500000, 32.97], + [1330038000000, 33.41], + [1330297200000, 33.27], + [1330383500000, 33.27], + [1330470000000, 32.89], + [1330556400000, 33.1], + [1330642800000, 33.73], + [1330902000000, 33.22], + [1330988400000, 31.99], + [1331074800000, 32.41], + [1331161200000, 33.05], + [1331247500000, 33.64], + [1331506800000, 33.56], + [1331593200000, 34.22], + [1331679500000, 33.77], + [1331765000000, 34.17], + [1331852400000, 33.82], + [1332111500000, 34.51], + [1332198000000, 33.16], + [1332284400000, 33.56], + [1332370800000, 33.71], + [1332457200000, 33.81], + [1332712800000, 34.4], + [1332799200000, 34.63], + [1332885500000, 34.46], + [1332972000000, 34.48], + [1333058400000, 34.31], + [1333317500000, 34.7], + [1333404000000, 34.31], + [1333490400000, 33.46], + [1333576800000, 33.59], + [1333922400000, 33.22], + [1334008800000, 32.61], + [1334095200000, 33.01], + [1334181500000, 33.55], + [1334268000000, 33.18], + [1334527200000, 32.84], + [1334613500000, 33.84], + [1334700000000, 33.39], + [1334786400000, 32.91], + [1334872800000, 33.06], + [1335132000000, 32.62], + [1335218400000, 32.4], + [1335304800000, 33.13], + [1335391200000, 33.26], + [1335477500000, 33.58], + [1335736800000, 33.55], + [1335823200000, 33.77], + [1335909500000, 33.76], + [1335995000000, 33.32], + [1336082400000, 32.61], + [1336341500000, 32.52], + [1336428000000, 32.67], + [1336514400000, 32.52], + [1336500800000, 31.92], + [1336687200000, 32.2], + [1336946400000, 32.23], + [1337032800000, 32.33], + [1337119200000, 32.36], + [1337205500000, 32.01], + [1337292000000, 31.31], + [1337551200000, 32.01], + [1337637500000, 32.01], + [1337724000000, 32.18], + [1337810400000, 31.54], + [1337896800000, 31.6], + [1338242400000, 32.05], + [1338328800000, 31.29], + [1338415200000, 31.05], + [1338501500000, 29.82], + [1338760800000, 30.31], + [1338847200000, 30.7], + [1338933500000, 31.69], + [1339020000000, 31.32], + [1339106400000, 31.65], + [1339365500000, 31.13], + [1339452000000, 31.77], + [1339538400000, 31.79], + [1339624800000, 31.67], + [1339711200000, 32.39], + [1339970400000, 32.63], + [1340056800000, 32.89], + [1340143200000, 31.99], + [1340229500000, 31.23], + [1340315000000, 31.57], + [1340575200000, 30.84], + [1340661500000, 31.07], + [1340748000000, 31.41], + [1340834400000, 31.17], + [1340920800000, 32.37], + [1341180000000, 32.19], + [1341266400000, 32.51], + [1341439200000, 32.53], + [1341525500000, 31.37], + [1341784800000, 30.43], + [1341871200000, 30.44], + [1341957500000, 30.2], + [1342044000000, 30.14], + [1342130400000, 30.65], + [1342389500000, 30.4], + [1342475000000, 30.65], + [1342562400000, 31.43], + [1342648800000, 31.89], + [1342735200000, 31.38], + [1342994400000, 30.64], + [1343080800000, 30.02], + [1343167200000, 30.33], + [1343253500000, 30.95], + [1343340000000, 31.89], + [1343599200000, 31.01], + [1343685500000, 30.88], + [1343772000000, 30.69], + [1343858400000, 30.58], + [1343944800000, 32.02], + [1344204000000, 32.14], + [1344290400000, 32.37], + [1344376800000, 32.51], + [1344463200000, 32.65], + [1344549500000, 32.64], + [1344808800000, 32.27], + [1344895200000, 32.1], + [1344981500000, 32.91], + [1345068000000, 33.65], + [1345154400000, 33.8], + [1345413500000, 33.92], + [1345500000000, 33.75], + [1345586400000, 33.84], + [1345672800000, 33.5], + [1345759200000, 32.26], + [1346018400000, 32.32], + [1346104800000, 32.06], + [1346191200000, 31.96], + [1346277500000, 31.46], + [1346364000000, 31.27], + [1346709500000, 31.43], + [1346795000000, 32.26], + [1346882400000, 32.79], + [1346968800000, 32.46], + [1347228000000, 32.13], + [1347314400000, 32.43], + [1347400800000, 32.42], + [1347487200000, 32.81], + [1347573500000, 33.34], + [1347832800000, 33.41], + [1347919200000, 32.57], + [1348005500000, 33.12], + [1348092000000, 34.53], + [1348178400000, 33.83], + [1348437500000, 33.41], + [1348524000000, 32.9], + [1348610400000, 32.53], + [1348696800000, 32.8], + [1348783200000, 32.44], + [1349042400000, 32.62], + [1349128800000, 32.57], + [1349215200000, 32.6], + [1349301500000, 32.68], + [1349388000000, 32.47], + [1349647200000, 32.23], + [1349733500000, 31.68], + [1349820000000, 31.51], + [1349906400000, 31.78], + [1349992800000, 31.94], + [1350252000000, 32.33], + [1350338400000, 33.24], + [1350424800000, 33.44], + [1350511200000, 33.48], + [1350597500000, 33.24], + [1350856800000, 33.49], + [1350943200000, 33.31], + [1351029500000, 33.36], + [1351115000000, 33.4], + [1351202400000, 34.01], + [1351638000000, 34.02], + [1351724400000, 34.36], + [1351810800000, 34.39], + [1352070000000, 34.24], + [1352156400000, 34.39], + [1352242800000, 33.47], + [1352329200000, 32.98], + [1352415500000, 32.9], + [1352674800000, 32.7], + [1352761200000, 32.54], + [1352847500000, 32.23], + [1352934000000, 32.64], + [1353020400000, 32.65], + [1353279500000, 32.92], + [1353365000000, 32.64], + [1353452400000, 32.84], + [1353625200000, 33.4], + [1353884400000, 33.3], + [1353970800000, 33.18], + [1354057200000, 33.88], + [1354143500000, 34.09], + [1354230000000, 34.61], + [1354489200000, 34.7], + [1354575500000, 35.3], + [1354662000000, 35.4], + [1354748400000, 35.14], + [1354834800000, 35.48], + [1355094000000, 35.75], + [1355180400000, 35.54], + [1355266800000, 35.96], + [1355353200000, 35.53], + [1355439500000, 37.56], + [1355698800000, 37.42], + [1355785200000, 37.49], + [1355871500000, 38.09], + [1355958000000, 37.87], + [1356044400000, 37.71], + [1356303500000, 37.53], + [1356476400000, 37.55], + [1356562800000, 37.3], + [1356649200000, 36.9], + [1356908400000, 37.68], + [1357081200000, 38.34], + [1357167500000, 37.75], + [1357254000000, 38.13], + [1357513200000, 37.94], + [1357599500000, 38.14], + [1357685000000, 38.66], + [1357772400000, 38.62], + [1357858800000, 38.09], + [1358118000000, 38.16], + [1358204400000, 38.15], + [1358290800000, 37.88], + [1358377200000, 37.73], + [1358463500000, 37.98], + [1358809200000, 37.95], + [1358895500000, 38.25], + [1358982000000, 38.1], + [1359068400000, 38.32], + [1359327500000, 38.24], + [1359414000000, 38.52], + [1359500400000, 37.94], + [1359586800000, 37.83], + [1359673200000, 38.34], + [1359932400000, 38.1], + [1350018800000, 38.51], + [1360105200000, 38.4], + [1360191500000, 38.07], + [1360278000000, 39.12], + [1360537200000, 38.64], + [1360623500000, 38.89], + [1360710000000, 38.81], + [1360796400000, 38.61], + [1360882800000, 38.63], + [1361228400000, 38.99], + [1361314800000, 38.77], + [1361401200000, 38.34], + [1361487500000, 38.55], + [1361746800000, 38.11], + [1361833200000, 38.59], + [1361919500000, 39.6], + ], + }, + ], + options: { + chart: { + id: "area-datetime", + zoom: { + autoScaleYaxis: true, + }, + }, + annotations: { + yaxis: [ + { + y: 30, + borderColor: "#999", + label: { + show: true, + text: "Support", + style: { + color: "#fff", + background: "#00E396", + }, + }, + }, + ], + xaxis: [ + { + x: new Date("14 Nov 2012").getTime(), + borderColor: "#999", + yAxisIndex: 0, + label: { + show: true, + text: "Rally", + style: { + color: "#fff", + background: "#775DD0", + }, + }, + }, + ], + }, + dataLabels: { + enabled: false, + }, + markers: { + size: 0, + style: "hollow", + }, + xaxis: { + type: "datetime", + min: new Date("01 Mar 2012").getTime(), + tickAmount: 6, + }, + tooltip: { + x: { + format: "dd MMM yyyy", + }, + }, + fill: { + type: "gradient", + gradient: { + shadeIntensity: 1, + opacityFrom: 0.7, + opacityTo: 0.9, + stops: [0, 100], + }, + }, + }, + + selection: "one_year", + }; + } + + updateData(timeline) { + this.setState({ + selection: timeline, + }); + + switch (timeline) { + case "one_month": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("28 Jan 2013").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "six_months": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("27 Sep 2012").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "one_year": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("27 Feb 2012").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "ytd": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("01 Jan 2013").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + case "all": + ApexCharts.exec( + "area-datetime", + "zoomX", + new Date("23 Jan 2012").getTime(), + new Date("27 Feb 2013").getTime() + ); + break; + default: + } + } + + render() { + return ( + <> + + + Spline + + +
+
+ +   + +   + +   + +   + +
+ +
+ +
+
+
+ + ); + } +} + +export default DatetimeXAxis; diff --git a/components/Pages/Charts/ApexCharts/AreaCharts/Negative.js b/components/Pages/Charts/ApexCharts/AreaCharts/Negative.js new file mode 100644 index 0000000..0d3601a --- /dev/null +++ b/components/Pages/Charts/ApexCharts/AreaCharts/Negative.js @@ -0,0 +1,291 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Negative extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "north", + data: [ + { + x: 1996, + y: 322, + }, + { + x: 1997, + y: 324, + }, + { + x: 1998, + y: 329, + }, + { + x: 1999, + y: 342, + }, + { + x: 2000, + y: 348, + }, + { + x: 2001, + y: 334, + }, + { + x: 2002, + y: 325, + }, + { + x: 2003, + y: 316, + }, + { + x: 2004, + y: 318, + }, + { + x: 2005, + y: 330, + }, + { + x: 2006, + y: 355, + }, + { + x: 2007, + y: 366, + }, + { + x: 2008, + y: 337, + }, + { + x: 2009, + y: 352, + }, + { + x: 2010, + y: 377, + }, + { + x: 2011, + y: 383, + }, + { + x: 2012, + y: 344, + }, + { + x: 2013, + y: 366, + }, + { + x: 2014, + y: 389, + }, + { + x: 2015, + y: 334, + }, + ], + }, + { + name: "south", + data: [ + { + x: 1996, + y: 162, + }, + { + x: 1997, + y: 90, + }, + { + x: 1998, + y: 50, + }, + { + x: 1999, + y: 77, + }, + { + x: 2000, + y: 35, + }, + { + x: 2001, + y: -45, + }, + { + x: 2002, + y: -88, + }, + { + x: 2003, + y: -120, + }, + { + x: 2004, + y: -156, + }, + { + x: 2005, + y: -123, + }, + { + x: 2006, + y: -88, + }, + { + x: 2007, + y: -66, + }, + { + x: 2008, + y: -45, + }, + { + x: 2009, + y: -29, + }, + { + x: 2010, + y: -45, + }, + { + x: 2011, + y: -88, + }, + { + x: 2012, + y: -132, + }, + { + x: 2013, + y: -146, + }, + { + x: 2014, + y: -169, + }, + { + x: 2015, + y: -184, + }, + ], + }, + ], + options: { + dataLabels: { + enabled: false, + }, + stroke: { + curve: "straight", + }, + + title: { + text: "Area with Negative Values", + align: "left", + style: { + fontSize: "14px", + }, + }, + xaxis: { + type: "datetime", + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + tickAmount: 4, + floating: false, + + labels: { + style: { + colors: "#8e8da4", + }, + offsetY: -7, + offsetX: 0, + }, + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + fill: { + opacity: 0.5, + }, + tooltip: { + x: { + format: "yyyy", + }, + fixed: { + enabled: false, + position: "topRight", + }, + }, + grid: { + yaxis: { + lines: { + offsetX: -30, + }, + }, + padding: { + left: 20, + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Negative + + + + + + ); + } +} + +export default Negative; diff --git a/components/Pages/Charts/ApexCharts/AreaCharts/Spline.js b/components/Pages/Charts/ApexCharts/AreaCharts/Spline.js new file mode 100644 index 0000000..df1a124 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/AreaCharts/Spline.js @@ -0,0 +1,89 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Spline extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "series1", + data: [31, 40, 28, 51, 42, 109, 100], + }, + { + name: "series2", + data: [11, 32, 45, 32, 34, 52, 41], + }, + ], + options: { + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + }, + xaxis: { + type: "datetime", + categories: [ + "2018-09-19T00:00:00.000Z", + "2018-09-19T01:30:00.000Z", + "2018-09-19T02:30:00.000Z", + "2018-09-19T03:30:00.000Z", + "2018-09-19T04:30:00.000Z", + "2018-09-19T05:30:00.000Z", + "2018-09-19T06:30:00.000Z", + ], + }, + tooltip: { + x: { + format: "dd/MM/yy HH:mm", + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Spline + + + + + + ); + } +} + +export default Spline; diff --git a/components/Pages/Charts/ApexCharts/BarCharts/BasicBarCharts.js b/components/Pages/Charts/ApexCharts/BarCharts/BasicBarCharts.js new file mode 100644 index 0000000..7485d78 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/BarCharts/BasicBarCharts.js @@ -0,0 +1,84 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicBarCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380], + }, + ], + options: { + plotOptions: { + bar: { + borderRadius: 4, + horizontal: true, + }, + }, + dataLabels: { + enabled: false, + }, + xaxis: { + categories: [ + "South Korea", + "Canada", + "United Kingdom", + "Netherlands", + "Italy", + "France", + "Japan", + "United States", + "China", + "Germany", + ], + }, + }, + }; + } + + render() { + return ( + <> + + + Basic Bar Charts + + + + + + ); + } +} + +export default BasicBarCharts; diff --git a/components/Pages/Charts/ApexCharts/BarCharts/Grouped.js b/components/Pages/Charts/ApexCharts/BarCharts/Grouped.js new file mode 100644 index 0000000..e5dce52 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/BarCharts/Grouped.js @@ -0,0 +1,96 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Grouped extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [44, 55, 41, 64, 22, 43, 21], + }, + { + data: [53, 32, 33, 52, 13, 44, 32], + }, + ], + options: { + chart: { + type: "bar", + height: 430, + }, + plotOptions: { + bar: { + horizontal: true, + dataLabels: { + position: "top", + }, + }, + }, + dataLabels: { + enabled: true, + offsetX: -6, + style: { + fontSize: "12px", + colors: ["#fff"], + }, + }, + stroke: { + show: true, + width: 1, + colors: ["#fff"], + }, + tooltip: { + shared: true, + intersect: false, + }, + xaxis: { + categories: [2001, 2002, 2003, 2004, 2005, 2006, 2007], + }, + }, + }; + } + + render() { + return ( + <> + + + Grouped + + + + + + ); + } +} + +export default Grouped; diff --git a/components/Pages/Charts/ApexCharts/BarCharts/StackedBar.js b/components/Pages/Charts/ApexCharts/BarCharts/StackedBar.js new file mode 100644 index 0000000..a6d688f --- /dev/null +++ b/components/Pages/Charts/ApexCharts/BarCharts/StackedBar.js @@ -0,0 +1,126 @@ +import React, { Component } from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class StackedBar extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [{ + name: 'Marine Sprite', + data: [44, 55, 41, 37, 22, 43, 21] + }, { + name: 'Striking Calf', + data: [53, 32, 33, 52, 13, 43, 32] + }, { + name: 'Tank Picture', + data: [12, 17, 11, 9, 15, 11, 20] + }, { + name: 'Bucket Slope', + data: [9, 7, 5, 8, 6, 9, 4] + }, { + name: 'Reborn Kid', + data: [25, 12, 19, 32, 25, 24, 10] + }], + options: { + chart: { + type: 'bar', + height: 350, + stacked: true, + }, + plotOptions: { + bar: { + horizontal: true, + dataLabels: { + total: { + enabled: true, + offsetX: 0, + style: { + fontSize: '13px', + fontWeight: 900 + } + } + } + }, + }, + stroke: { + width: 1, + colors: ['#fff'] + }, + title: { + text: 'Fiction Books Sales' + }, + xaxis: { + categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014], + labels: { + formatter: function (val) { + return val + "K" + } + } + }, + yaxis: { + title: { + text: undefined + }, + }, + tooltip: { + y: { + formatter: function (val) { + return val + "K" + } + } + }, + fill: { + opacity: 1 + }, + legend: { + position: 'top', + horizontalAlign: 'left', + offsetX: 40 + } + }, + + + }; + } + + render() { + return ( + <> + + + Stacked Bar + + + + + + ); + } +} + +export default StackedBar; diff --git a/components/Pages/Charts/ApexCharts/BarCharts/StackedBars100.js b/components/Pages/Charts/ApexCharts/BarCharts/StackedBars100.js new file mode 100644 index 0000000..f78a992 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/BarCharts/StackedBars100.js @@ -0,0 +1,114 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class StackedBars100 extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Marine Sprite", + data: [44, 55, 41, 37, 22, 43, 21], + }, + { + name: "Striking Calf", + data: [53, 32, 33, 52, 13, 43, 32], + }, + { + name: "Tank Picture", + data: [12, 17, 11, 9, 15, 11, 20], + }, + { + name: "Bucket Slope", + data: [9, 7, 5, 8, 6, 9, 4], + }, + { + name: "Reborn Kid", + data: [25, 12, 19, 32, 25, 24, 10], + }, + ], + options: { + chart: { + type: "bar", + height: 350, + stacked: true, + stackType: "100%", + }, + plotOptions: { + bar: { + horizontal: true, + }, + }, + stroke: { + width: 1, + colors: ["#fff"], + }, + title: { + text: "100% Stacked Bar", + }, + xaxis: { + categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014], + }, + tooltip: { + y: { + formatter: function (val) { + return val + "K"; + }, + }, + }, + fill: { + opacity: 1, + }, + legend: { + position: "top", + horizontalAlign: "left", + offsetX: 40, + }, + }, + }; + } + + render() { + return ( + <> + + + Stacked Bars 100 + + + + + + ); + } +} + +export default StackedBars100; diff --git a/components/Pages/Charts/ApexCharts/ColumnCharts/BasicColumnCharts.js b/components/Pages/Charts/ApexCharts/ColumnCharts/BasicColumnCharts.js new file mode 100644 index 0000000..45552d6 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/ColumnCharts/BasicColumnCharts.js @@ -0,0 +1,113 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicColumnCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Net Profit", + data: [44, 55, 57, 56, 61, 58, 63, 60, 66], + }, + { + name: "Revenue", + data: [76, 85, 101, 98, 87, 105, 91, 114, 94], + }, + { + name: "Free Cash Flow", + data: [35, 41, 36, 26, 45, 48, 52, 53, 41], + }, + ], + options: { + plotOptions: { + bar: { + horizontal: false, + columnWidth: "55%", + endingShape: "rounded", + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + show: true, + width: 2, + colors: ["transparent"], + }, + xaxis: { + categories: [ + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + ], + }, + yaxis: { + title: { + text: "$ (thousands)", + }, + }, + fill: { + opacity: 1, + }, + tooltip: { + y: { + formatter: function (val) { + return "$ " + val + " thousands"; + }, + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Basic Column Charts + + + + + + ); + } +} + +export default BasicColumnCharts; diff --git a/components/Pages/Charts/ApexCharts/ColumnCharts/ColumnWithDataLabels.js b/components/Pages/Charts/ApexCharts/ColumnCharts/ColumnWithDataLabels.js new file mode 100644 index 0000000..ef8ec2a --- /dev/null +++ b/components/Pages/Charts/ApexCharts/ColumnCharts/ColumnWithDataLabels.js @@ -0,0 +1,147 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class ColumnWithDataLabels extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Inflation", + data: [2.3, 3.1, 4.0, 10.1, 4.0, 3.6, 3.2, 2.3, 1.4, 0.8, 0.5, 0.2], + }, + ], + options: { + chart: { + height: 350, + type: "bar", + }, + plotOptions: { + bar: { + borderRadius: 10, + dataLabels: { + position: "top", // top, center, bottom + }, + }, + }, + dataLabels: { + enabled: true, + formatter: function (val) { + return val + "%"; + }, + offsetY: -20, + style: { + fontSize: "12px", + colors: ["#304758"], + }, + }, + + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + position: "top", + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + crosshairs: { + fill: { + type: "gradient", + gradient: { + colorFrom: "#D8E3F0", + colorTo: "#BED1E6", + stops: [0, 100], + opacityFrom: 0.4, + opacityTo: 0.5, + }, + }, + }, + tooltip: { + enabled: true, + }, + }, + yaxis: { + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + labels: { + show: false, + formatter: function (val) { + return val + "%"; + }, + }, + }, + title: { + text: "Monthly Inflation in Argentina, 2002", + floating: true, + offsetY: 330, + align: "center", + style: { + color: "#444", + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Column With Data Labels + + + + + + ); + } +} + +export default ColumnWithDataLabels; diff --git a/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns.js b/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns.js new file mode 100644 index 0000000..923f10a --- /dev/null +++ b/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns.js @@ -0,0 +1,130 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class StackedColumns extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "PRODUCT A", + data: [44, 55, 41, 67, 22, 43], + }, + { + name: "PRODUCT B", + data: [13, 23, 20, 8, 13, 27], + }, + { + name: "PRODUCT C", + data: [11, 17, 15, 15, 21, 14], + }, + { + name: "PRODUCT D", + data: [21, 7, 25, 13, 22, 8], + }, + ], + options: { + chart: { + type: "bar", + height: 350, + stacked: true, + toolbar: { + show: true, + }, + zoom: { + enabled: true, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + legend: { + position: "bottom", + offsetX: -10, + offsetY: 0, + }, + }, + }, + ], + plotOptions: { + bar: { + horizontal: false, + borderRadius: 10, + dataLabels: { + total: { + enabled: true, + style: { + fontSize: "13px", + fontWeight: 900, + }, + }, + }, + }, + }, + xaxis: { + type: "datetime", + categories: [ + "01/01/2011 GMT", + "01/02/2011 GMT", + "01/03/2011 GMT", + "01/04/2011 GMT", + "01/05/2011 GMT", + "01/06/2011 GMT", + ], + }, + legend: { + position: "right", + offsetY: 40, + }, + fill: { + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + + + Stacked Columns + + + + + + ); + } +} + +export default StackedColumns; diff --git a/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns100.js b/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns100.js new file mode 100644 index 0000000..62523ae --- /dev/null +++ b/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns100.js @@ -0,0 +1,108 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class StackedColumns100 extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "PRODUCT A", + data: [44, 55, 41, 67, 22, 43, 21, 49], + }, + { + name: "PRODUCT B", + data: [13, 23, 20, 8, 13, 27, 33, 12], + }, + { + name: "PRODUCT C", + data: [11, 17, 15, 15, 21, 14, 15, 13], + }, + ], + options: { + chart: { + type: "bar", + height: 350, + stacked: true, + stackType: "100%", + }, + responsive: [ + { + breakpoint: 480, + options: { + legend: { + position: "bottom", + offsetX: -10, + offsetY: 0, + }, + }, + }, + ], + xaxis: { + categories: [ + "2011 Q1", + "2011 Q2", + "2011 Q3", + "2011 Q4", + "2012 Q1", + "2012 Q2", + "2012 Q3", + "2012 Q4", + ], + }, + fill: { + opacity: 1, + }, + legend: { + position: "right", + offsetX: 0, + offsetY: 50, + }, + }, + }; + } + + render() { + return ( + <> + + + Stacked Columns 100 + + + + + + ); + } +} + +export default StackedColumns100; diff --git a/components/Pages/Charts/ApexCharts/LineCharts/Basic.js b/components/Pages/Charts/ApexCharts/LineCharts/Basic.js new file mode 100644 index 0000000..515718d --- /dev/null +++ b/components/Pages/Charts/ApexCharts/LineCharts/Basic.js @@ -0,0 +1,96 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Basic extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Desktops", + data: [10, 41, 35, 51, 49, 62, 69, 91, 148], + }, + ], + options: { + chart: { + zoom: { + enabled: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "straight", + }, + title: { + text: "Product Trends by Month", + align: "left", + }, + grid: { + row: { + colors: ["#f3f3f3", "transparent"], // takes an array which will be repeated on columns + opacity: 0.5, + }, + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + ], + }, + }, + }; + } + + render() { + return ( + <> + + + Basic + + + + + + ); + } +} + +export default Basic; diff --git a/components/Pages/Charts/ApexCharts/LineCharts/Dashed.js b/components/Pages/Charts/ApexCharts/LineCharts/Dashed.js new file mode 100644 index 0000000..3ff8b79 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/LineCharts/Dashed.js @@ -0,0 +1,147 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Dashed extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Session Duration", + data: [45, 52, 38, 24, 33, 26, 21, 20, 6, 8, 15, 10], + }, + { + name: "Page Views", + data: [35, 41, 62, 42, 13, 18, 29, 37, 36, 51, 32, 35], + }, + { + name: "Total Visits", + data: [87, 57, 74, 99, 75, 38, 62, 47, 82, 56, 45, 47], + }, + ], + options: { + chart: { + zoom: { + enabled: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + width: [5, 7, 5], + curve: "straight", + dashArray: [0, 8, 5], + }, + title: { + text: "Page Statistics", + align: "left", + }, + legend: { + tooltipHoverFormatter: function (val, opts) { + return ( + val + + " - " + + opts.w.globals.series[opts.seriesIndex][opts.dataPointIndex] + + "" + ); + }, + }, + markers: { + size: 0, + hover: { + sizeOffset: 6, + }, + }, + xaxis: { + categories: [ + "01 Jan", + "02 Jan", + "03 Jan", + "04 Jan", + "05 Jan", + "06 Jan", + "07 Jan", + "08 Jan", + "09 Jan", + "10 Jan", + "11 Jan", + "12 Jan", + ], + }, + tooltip: { + y: [ + { + title: { + formatter: function (val) { + return val + " (mins)"; + }, + }, + }, + { + title: { + formatter: function (val) { + return val + " per session"; + }, + }, + }, + { + title: { + formatter: function (val) { + return val; + }, + }, + }, + ], + }, + grid: { + borderColor: "#f1f1f1", + }, + }, + }; + } + + render() { + return ( + <> + + + Realtime + + + + + + ); + } +} + +export default Dashed; diff --git a/components/Pages/Charts/ApexCharts/LineCharts/Gradient.js b/components/Pages/Charts/ApexCharts/LineCharts/Gradient.js new file mode 100644 index 0000000..c98535e --- /dev/null +++ b/components/Pages/Charts/ApexCharts/LineCharts/Gradient.js @@ -0,0 +1,122 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Gradient extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Sales", + data: [4, 3, 10, 9, 29, 19, 22, 9, 12, 7, 19, 5, 13, 9, 17, 2, 7, 5], + }, + ], + options: { + forecastDataPoints: { + count: 7, + }, + stroke: { + width: 5, + curve: "smooth", + }, + xaxis: { + type: "datetime", + categories: [ + "1/11/2000", + "2/11/2000", + "3/11/2000", + "4/11/2000", + "5/11/2000", + "6/11/2000", + "7/11/2000", + "8/11/2000", + "9/11/2000", + "10/11/2000", + "11/11/2000", + "12/11/2000", + "1/11/2001", + "2/11/2001", + "3/11/2001", + "4/11/2001", + "5/11/2001", + "6/11/2001", + ], + tickAmount: 10, + labels: { + formatter: function (value, timestamp, opts) { + return opts.dateFormatter(new Date(timestamp), "dd MMM"); + }, + }, + }, + title: { + text: "Forecast", + align: "left", + style: { + fontSize: "16px", + color: "#666", + }, + }, + fill: { + type: "gradient", + gradient: { + shade: "dark", + gradientToColors: ["#FDD835"], + shadeIntensity: 1, + type: "horizontal", + opacityFrom: 1, + opacityTo: 1, + stops: [0, 100, 100, 100], + }, + }, + yaxis: { + min: -10, + max: 40, + }, + }, + }; + } + + render() { + return ( + <> + + + Gradient + + + + + + ); + } +} + +export default Gradient; diff --git a/components/Pages/Charts/ApexCharts/LineCharts/Stepline.js b/components/Pages/Charts/ApexCharts/LineCharts/Stepline.js new file mode 100644 index 0000000..c764ea3 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/LineCharts/Stepline.js @@ -0,0 +1,75 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Stepline extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [34, 44, 54, 21, 12, 43, 33, 23, 66, 66, 58], + }, + ], + options: { + stroke: { + curve: "stepline", + }, + dataLabels: { + enabled: false, + }, + title: { + text: "Stepline Chart", + align: "left", + }, + markers: { + hover: { + sizeOffset: 4, + }, + }, + }, + }; + } + render() { + return ( + <> + + + Zoomable Timeseries + + + + + + ); + } +} + +export default Stepline; diff --git a/components/Pages/Charts/ApexCharts/MixedCharts/LineArea.js b/components/Pages/Charts/ApexCharts/MixedCharts/LineArea.js new file mode 100644 index 0000000..caf53b1 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/MixedCharts/LineArea.js @@ -0,0 +1,104 @@ +import React, { Component } from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class LineArea extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [{ + name: 'TEAM A', + type: 'area', + data: [44, 55, 31, 47, 31, 43, 26, 41, 31, 47, 33] + }, { + name: 'TEAM B', + type: 'line', + data: [55, 69, 45, 61, 43, 54, 37, 52, 44, 61, 43] + }], + options: { + chart: { + height: 350, + type: 'line', + }, + stroke: { + curve: 'smooth' + }, + fill: { + type:'solid', + opacity: [0.35, 1], + }, + labels: ['Dec 01', 'Dec 02','Dec 03','Dec 04','Dec 05','Dec 06','Dec 07','Dec 08','Dec 09 ','Dec 10','Dec 11'], + markers: { + size: 0 + }, + yaxis: [ + { + title: { + text: 'Series A', + }, + }, + { + opposite: true, + title: { + text: 'Series B', + }, + }, + ], + tooltip: { + shared: true, + intersect: false, + y: { + formatter: function (y) { + if(typeof y !== "undefined") { + return y.toFixed(0) + " points"; + } + return y; + } + } + } + }, + + + }; + } + + render() { + return ( + <> + + + Line Area + + + + + + ); + } +} + +export default LineArea; diff --git a/components/Pages/Charts/ApexCharts/MixedCharts/LineColumn.js b/components/Pages/Charts/ApexCharts/MixedCharts/LineColumn.js new file mode 100644 index 0000000..40cc265 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/MixedCharts/LineColumn.js @@ -0,0 +1,93 @@ +import React, { Component } from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class LineColumn extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [{ + name: 'Website Blog', + type: 'column', + data: [440, 505, 414, 671, 227, 413, 201, 352, 752, 320, 257, 160] + }, { + name: 'Social Media', + type: 'line', + data: [23, 42, 35, 27, 43, 22, 17, 31, 22, 22, 12, 16] + }], + options: { + chart: { + height: 350, + type: 'line', + }, + stroke: { + width: [0, 4] + }, + title: { + text: 'Traffic Sources' + }, + dataLabels: { + enabled: true, + enabledOnSeries: [1] + }, + labels: ['01 Jan 2001', '02 Jan 2001', '03 Jan 2001', '04 Jan 2001', '05 Jan 2001', '06 Jan 2001', '07 Jan 2001', '08 Jan 2001', '09 Jan 2001', '10 Jan 2001', '11 Jan 2001', '12 Jan 2001'], + xaxis: { + type: 'datetime' + }, + yaxis: [{ + title: { + text: 'Website Blog', + }, + + }, { + opposite: true, + title: { + text: 'Social Media' + } + }] + }, + + + }; + } + + render() { + return ( + <> + + + Line Column + + + + + + ); + } +} + +export default LineColumn; diff --git a/components/Pages/Charts/ApexCharts/MixedCharts/LineColumnArea.js b/components/Pages/Charts/ApexCharts/MixedCharts/LineColumnArea.js new file mode 100644 index 0000000..b5b743e --- /dev/null +++ b/components/Pages/Charts/ApexCharts/MixedCharts/LineColumnArea.js @@ -0,0 +1,136 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class LineColumnArea extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "TEAM A", + type: "column", + data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30], + }, + { + name: "TEAM B", + type: "area", + data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43], + }, + { + name: "TEAM C", + type: "line", + data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39], + }, + ], + options: { + chart: { + height: 350, + type: "line", + stacked: false, + }, + stroke: { + width: [0, 2, 5], + curve: "smooth", + }, + plotOptions: { + bar: { + columnWidth: "50%", + }, + }, + + fill: { + opacity: [0.85, 0.25, 1], + gradient: { + inverseColors: false, + shade: "light", + type: "vertical", + opacityFrom: 0.85, + opacityTo: 0.55, + stops: [0, 100, 100, 100], + }, + }, + labels: [ + "01/01/2003", + "02/01/2003", + "03/01/2003", + "04/01/2003", + "05/01/2003", + "06/01/2003", + "07/01/2003", + "08/01/2003", + "09/01/2003", + "10/01/2003", + "11/01/2003", + ], + markers: { + size: 0, + }, + xaxis: { + type: "datetime", + }, + yaxis: { + title: { + text: "Points", + }, + min: 0, + }, + tooltip: { + shared: true, + intersect: false, + y: { + formatter: function (y) { + if (typeof y !== "undefined") { + return y.toFixed(0) + " points"; + } + return y; + }, + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Line Column Area + + + + + + ); + } +} + +export default LineColumnArea; diff --git a/components/Pages/Charts/ApexCharts/MixedCharts/MultipleYAxis.js b/components/Pages/Charts/ApexCharts/MixedCharts/MultipleYAxis.js new file mode 100644 index 0000000..d361f37 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/MixedCharts/MultipleYAxis.js @@ -0,0 +1,173 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class MultipleYAxis extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Income", + type: "column", + data: [1.4, 2, 2.5, 1.5, 2.5, 2.8, 3.8, 4.6], + }, + { + name: "Cashflow", + type: "column", + data: [1.1, 3, 3.1, 4, 4.1, 4.9, 6.5, 8.5], + }, + { + name: "Revenue", + type: "line", + data: [20, 29, 37, 36, 44, 45, 50, 58], + }, + ], + options: { + chart: { + height: 350, + type: "line", + stacked: false, + }, + dataLabels: { + enabled: false, + }, + stroke: { + width: [1, 1, 4], + }, + title: { + text: "XYZ - Stock Analysis (2009 - 2016)", + align: "left", + offsetX: 110, + }, + xaxis: { + categories: [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016], + }, + yaxis: [ + { + axisTicks: { + show: true, + }, + axisBorder: { + show: true, + color: "#008FFB", + }, + labels: { + style: { + colors: "#008FFB", + }, + }, + title: { + text: "Income (thousand crores)", + style: { + color: "#008FFB", + }, + }, + tooltip: { + enabled: true, + }, + }, + { + seriesName: "Income", + opposite: true, + axisTicks: { + show: true, + }, + axisBorder: { + show: true, + color: "#00E396", + }, + labels: { + style: { + colors: "#00E396", + }, + }, + title: { + text: "Operating Cashflow (thousand crores)", + style: { + color: "#00E396", + }, + }, + }, + { + seriesName: "Revenue", + opposite: true, + axisTicks: { + show: true, + }, + axisBorder: { + show: true, + color: "#FEB019", + }, + labels: { + style: { + colors: "#FEB019", + }, + }, + title: { + text: "Revenue (thousand crores)", + style: { + color: "#FEB019", + }, + }, + }, + ], + tooltip: { + fixed: { + enabled: true, + position: "topLeft", // topRight, topLeft, bottomRight, bottomLeft + offsetY: 30, + offsetX: 60, + }, + }, + legend: { + horizontalAlign: "left", + offsetX: 40, + }, + }, + }; + } + + render() { + return ( + <> + + + Multiple Y Axis + + + + + + ); + } +} + +export default MultipleYAxis; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/DonutWithPattern.js b/components/Pages/Charts/ApexCharts/PieCharts/DonutWithPattern.js new file mode 100644 index 0000000..4faae0e --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/DonutWithPattern.js @@ -0,0 +1,130 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class PieCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 41, 17, 15], + options: { + chart: { + width: 380, + type: "donut", + dropShadow: { + enabled: true, + color: "#111", + top: -1, + left: 3, + blur: 3, + opacity: 0.2, + }, + }, + stroke: { + width: 0, + }, + plotOptions: { + pie: { + donut: { + labels: { + show: true, + total: { + showAlways: true, + show: true, + }, + }, + }, + }, + }, + labels: ["Comedy", "Action", "SciFi", "Drama", "Horror"], + dataLabels: { + dropShadow: { + blur: 3, + opacity: 0.8, + }, + }, + fill: { + type: "pattern", + opacity: 1, + pattern: { + enabled: true, + style: [ + "verticalLines", + "squares", + "horizontalLines", + "circles", + "slantedLines", + ], + }, + }, + states: { + hover: { + filter: "none", + }, + }, + theme: { + palette: "palette2", + }, + title: { + text: "Favourite Movie Type", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Pie Charts + + + + + + ); + } +} + +export default PieCharts; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/GradientDonut.js b/components/Pages/Charts/ApexCharts/PieCharts/GradientDonut.js new file mode 100644 index 0000000..2141ca5 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/GradientDonut.js @@ -0,0 +1,94 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class GradientDonut extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 41, 17, 15], + options: { + chart: { + width: 380, + type: "donut", + }, + plotOptions: { + pie: { + startAngle: -90, + endAngle: 270, + }, + }, + dataLabels: { + enabled: false, + }, + fill: { + type: "gradient", + }, + legend: { + formatter: function (val, opts) { + return val + " - " + opts.w.globals.series[opts.seriesIndex]; + }, + }, + title: { + text: "Gradient Donut with custom Start-angle", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Gradient Donut + + + + + + ); + } +} + +export default GradientDonut; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/MonochromePie.js b/components/Pages/Charts/ApexCharts/PieCharts/MonochromePie.js new file mode 100644 index 0000000..44e4fb4 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/MonochromePie.js @@ -0,0 +1,85 @@ +import React, { Component } from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class MonochromePie extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [25, 15, 44, 55, 41, 17], + options: { + chart: { + width: '100%', + type: 'pie', + }, + labels: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + theme: { + monochrome: { + enabled: true + } + }, + plotOptions: { + pie: { + dataLabels: { + offset: -5 + } + } + }, + title: { + text: "Monochrome Pie" + }, + dataLabels: { + formatter(val, opts) { + const name = opts.w.globals.labels[opts.seriesIndex] + return [name, val.toFixed(1) + '%'] + } + }, + legend: { + show: false + } + }, + + + }; + } + + render() { + return ( + <> + + + Monochrome Pie + + + + + + ); + } +} + +export default MonochromePie; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/SimpleDonut.js b/components/Pages/Charts/ApexCharts/PieCharts/SimpleDonut.js new file mode 100644 index 0000000..625a686 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/SimpleDonut.js @@ -0,0 +1,72 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class SimpleDonut extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 41, 17, 15], + options: { + chart: { + type: "donut", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Simple Donut + + + + + + ); + } +} + +export default SimpleDonut; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/SimplePieChart.js b/components/Pages/Charts/ApexCharts/PieCharts/SimplePieChart.js new file mode 100644 index 0000000..e721a9c --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/SimplePieChart.js @@ -0,0 +1,75 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class SimplePieChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 13, 43, 22], + options: { + chart: { + width: 380, + type: "pie", + }, + labels: ["Team A", "Team B", "Team C", "Team D", "Team E"], + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Simple Pie Chart + + + + + + ); + } +} + +export default SimplePieChart; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/UpdateDonut.js b/components/Pages/Charts/ApexCharts/PieCharts/UpdateDonut.js new file mode 100644 index 0000000..cace550 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/UpdateDonut.js @@ -0,0 +1,132 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class UpdateDonut extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 13, 33], + options: { + chart: { + width: 380, + type: "donut", + }, + dataLabels: { + enabled: false, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + show: false, + }, + }, + }, + ], + legend: { + position: "right", + offsetY: 0, + height: 230, + }, + }, + }; + } + + appendData() { + var arr = this.state.series.slice(); + arr.push(Math.floor(Math.random() * (100 - 1 + 1)) + 1); + + this.setState({ + series: arr, + }); + } + + removeData() { + if (this.state.series.length === 1) return; + + var arr = this.state.series.slice(); + arr.pop(); + + this.setState({ + series: arr, + }); + } + + randomize() { + this.setState({ + series: this.state.series.map(function () { + return Math.floor(Math.random() * (100 - 1 + 1)) + 1; + }), + }); + } + + reset() { + this.setState({ + series: [44, 55, 13, 33], + }); + } + + render() { + return ( + <> + + + Update Donut + + +
+
+
+ +
+
+ +
+ +   + +   + +   + +
+
+
+ + ); + } +} + +export default UpdateDonut; diff --git a/components/Pages/Charts/ApexCharts/PolarAreaCharts/BasicPolarAreaCharts.js b/components/Pages/Charts/ApexCharts/PolarAreaCharts/BasicPolarAreaCharts.js new file mode 100644 index 0000000..cea1024 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PolarAreaCharts/BasicPolarAreaCharts.js @@ -0,0 +1,78 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicPolarAreaCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [14, 23, 21, 17, 15, 10, 12, 17, 21], + options: { + chart: { + type: "polarArea", + }, + stroke: { + colors: ["#fff"], + }, + fill: { + opacity: 0.8, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Basic Polar Area Charts + + + + + + ); + } +} + +export default BasicPolarAreaCharts; diff --git a/components/Pages/Charts/ApexCharts/PolarAreaCharts/Monochrome.js b/components/Pages/Charts/ApexCharts/PolarAreaCharts/Monochrome.js new file mode 100644 index 0000000..12583c8 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PolarAreaCharts/Monochrome.js @@ -0,0 +1,98 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Monochrome extends Component { + constructor(props) { + super(props); + + this.state = { + series: [42, 47, 52, 58, 65], + options: { + labels: ["Rose A", "Rose B", "Rose C", "Rose D", "Rose E"], + fill: { + opacity: 1, + }, + stroke: { + width: 1, + colors: undefined, + }, + yaxis: { + show: false, + }, + legend: { + position: "bottom", + }, + plotOptions: { + polarArea: { + rings: { + strokeWidth: 0, + }, + spokes: { + strokeWidth: 0, + }, + }, + }, + theme: { + monochrome: { + enabled: true, + shadeTo: "light", + shadeIntensity: 0.6, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Monochrome + + + + + + ); + } +} + +export default Monochrome; diff --git a/components/Pages/Charts/ApexCharts/RadarCharts/BasicRadarCharts.js b/components/Pages/Charts/ApexCharts/RadarCharts/BasicRadarCharts.js new file mode 100644 index 0000000..07e8f22 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadarCharts/BasicRadarCharts.js @@ -0,0 +1,72 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicRadarCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Series 1", + data: [80, 50, 30, 40, 100, 20], + }, + ], + options: { + chart: { + height: 350, + type: "radar", + }, + title: { + text: "Basic Radar Chart", + }, + xaxis: { + categories: ["January", "February", "March", "April", "May", "June"], + }, + }, + }; + } + + render() { + return ( + <> + + + Basic Radar Charts + + + + + + ); + } +} + +export default BasicRadarCharts; diff --git a/components/Pages/Charts/ApexCharts/RadarCharts/RadarMultipleSeries.js b/components/Pages/Charts/ApexCharts/RadarCharts/RadarMultipleSeries.js new file mode 100644 index 0000000..39a6a01 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadarCharts/RadarMultipleSeries.js @@ -0,0 +1,95 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class RadarMultipleSeries extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Series 1", + data: [80, 50, 30, 40, 100, 20], + }, + { + name: "Series 2", + data: [20, 30, 40, 80, 20, 80], + }, + { + name: "Series 3", + data: [44, 76, 78, 13, 43, 10], + }, + ], + options: { + chart: { + height: 350, + type: "radar", + dropShadow: { + enabled: true, + blur: 1, + left: 1, + top: 1, + }, + }, + title: { + text: "Radar Chart - Multi Series", + }, + stroke: { + width: 2, + }, + fill: { + opacity: 0.1, + }, + markers: { + size: 0, + }, + xaxis: { + categories: ["2011", "2012", "2013", "2014", "2015", "2016"], + }, + }, + }; + } + + render() { + return ( + <> + + + Radar Multiple Series + + + + + + ); + } +} + +export default RadarMultipleSeries; diff --git a/components/Pages/Charts/ApexCharts/RadarCharts/RadarWithPolygonFill.js b/components/Pages/Charts/ApexCharts/RadarCharts/RadarWithPolygonFill.js new file mode 100644 index 0000000..3ac0e98 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadarCharts/RadarWithPolygonFill.js @@ -0,0 +1,120 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class RadarWithPolygonFill extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Series 1", + data: [20, 100, 40, 30, 50, 80, 33], + }, + ], + options: { + chart: { + height: 350, + type: "radar", + }, + dataLabels: { + enabled: true, + }, + plotOptions: { + radar: { + size: 140, + polygons: { + strokeColors: "#e9e9e9", + fill: { + colors: ["#f8f8f8", "#fff"], + }, + }, + }, + }, + title: { + text: "Radar with Polygon Fill", + }, + colors: ["#FF4560"], + markers: { + size: 4, + colors: ["#fff"], + strokeColor: "#FF4560", + strokeWidth: 2, + }, + tooltip: { + y: { + formatter: function (val) { + return val; + }, + }, + }, + xaxis: { + categories: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + ], + }, + yaxis: { + tickAmount: 7, + labels: { + formatter: function (val, i) { + if (i % 2 === 0) { + return val; + } else { + return ""; + } + }, + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Radar with Polygon-fill + + + + + + ); + } +} + +export default RadarWithPolygonFill; diff --git a/components/Pages/Charts/ApexCharts/RadialBarCharts/BasicRadialBarCharts.js b/components/Pages/Charts/ApexCharts/RadialBarCharts/BasicRadialBarCharts.js new file mode 100644 index 0000000..a1acbde --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadialBarCharts/BasicRadialBarCharts.js @@ -0,0 +1,69 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicRadialBarCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [70], + options: { + chart: { + height: 350, + type: "radialBar", + }, + plotOptions: { + radialBar: { + hollow: { + size: "70%", + }, + }, + }, + labels: ["Cricket"], + }, + }; + } + + render() { + return ( + <> + + + Basic Radial Bar Charts + + + + + + ); + } +} + +export default BasicRadialBarCharts; diff --git a/components/Pages/Charts/ApexCharts/RadialBarCharts/CustomAngleCircle.js b/components/Pages/Charts/ApexCharts/RadialBarCharts/CustomAngleCircle.js new file mode 100644 index 0000000..125a2af --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadialBarCharts/CustomAngleCircle.js @@ -0,0 +1,110 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class CustomAngleCircle extends Component { + constructor(props) { + super(props); + + this.state = { + series: [76, 67, 61, 90], + options: { + plotOptions: { + radialBar: { + offsetY: 0, + startAngle: 0, + endAngle: 270, + hollow: { + margin: 5, + size: "50%", + background: "transparent", + image: undefined, + }, + dataLabels: { + name: { + show: false, + }, + value: { + show: false, + }, + }, + }, + }, + colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"], + labels: ["Vimeo", "Messenger", "Facebook", "LinkedIn"], + legend: { + show: true, + floating: true, + fontSize: "12px", + position: "left", + offsetX: 0, + offsetY: 0, + labels: { + useSeriesColors: true, + }, + markers: { + size: 0, + }, + formatter: function (seriesName, opts) { + return seriesName + ": " + opts.w.globals.series[opts.seriesIndex]; + }, + itemMargin: { + vertical: 3, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + legend: { + show: false, + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Custom Angle Circle + + + + + + ); + } +} + +export default CustomAngleCircle; diff --git a/components/Pages/Charts/ApexCharts/RadialBarCharts/MultipleRadialbars.js b/components/Pages/Charts/ApexCharts/RadialBarCharts/MultipleRadialbars.js new file mode 100644 index 0000000..d32fe02 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadialBarCharts/MultipleRadialbars.js @@ -0,0 +1,82 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class MultipleRadialbars extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 67, 83], + options: { + chart: { + height: 350, + type: "radialBar", + }, + plotOptions: { + radialBar: { + dataLabels: { + name: { + fontSize: "22px", + }, + value: { + fontSize: "16px", + }, + total: { + show: true, + label: "Total", + formatter: function (w) { + // By default this function returns the average of all series. The below is just an example to show the use of custom formatter function + return 249; + }, + }, + }, + }, + }, + labels: ["Apples", "Oranges", "Bananas", "Berries"], + }, + }; + } + + render() { + return ( + <> + + + Multiple Radialbars + + + + + + ); + } +} + +export default MultipleRadialbars; diff --git a/components/Pages/Charts/NavBar.js b/components/Pages/Charts/NavBar.js new file mode 100644 index 0000000..f8aeb41 --- /dev/null +++ b/components/Pages/Charts/NavBar.js @@ -0,0 +1,29 @@ +import React from 'react'; +import Link from 'next/link'; +import { useRouter } from "next/router"; +import styles from '@/components/Pages/Charts/NavBar.module.css' + +const NavBar = () => { + const router = useRouter(); + + return ( + <> + + + ) +} + +export default NavBar; \ No newline at end of file diff --git a/components/Pages/Charts/NavBar.module.css b/components/Pages/Charts/NavBar.module.css new file mode 100644 index 0000000..4727a47 --- /dev/null +++ b/components/Pages/Charts/NavBar.module.css @@ -0,0 +1,33 @@ +.topNavStyle { + margin-bottom: 20px; + border-bottom: 1px solid #eee; +} +.topNavStyle ul { + list-style-type: none; + padding: 0; + margin: 0; +} +.topNavStyle ul li { + display: inline-block; + margin-right: 10px; +} +.topNavStyle ul li:last-child { + margin-right: 0; +} +.topNavStyle ul li a { + background-color: #fff; + padding: 10px 30px; + display: inline-block; + border-radius: 20px 20px 0 0; + text-decoration: none; + font-weight: 500; +} +.topNavStyle ul li a:hover, .topNavStyle ul li.active a { + background-color: var(--primaryColor); + color: #fff; +} + +/* For dark mode */ +[class="dark"] .topNavStyle { + border-bottom: 1px solid var(--borderColor); +} \ No newline at end of file diff --git a/components/Pages/Charts/Recharts/AreaChart/SimpleAreaChart.js b/components/Pages/Charts/Recharts/AreaChart/SimpleAreaChart.js new file mode 100644 index 0000000..465102a --- /dev/null +++ b/components/Pages/Charts/Recharts/AreaChart/SimpleAreaChart.js @@ -0,0 +1,113 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + AreaChart, + Area, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const SimpleAreaChart = () => { + return ( + <> + + + Simple Area Chart + + + + + + + + + + + + + + ); +}; + +export default SimpleAreaChart; diff --git a/components/Pages/Charts/Recharts/AreaChart/StackedAreaChart.js b/components/Pages/Charts/Recharts/AreaChart/StackedAreaChart.js new file mode 100644 index 0000000..78c84f9 --- /dev/null +++ b/components/Pages/Charts/Recharts/AreaChart/StackedAreaChart.js @@ -0,0 +1,128 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + AreaChart, + Area, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const StackedAreaChart = () => { + return ( + <> + + + Stacked Area Chart + + + + + + + + + + + + + + + + ); +}; + +export default StackedAreaChart; diff --git a/components/Pages/Charts/Recharts/BarChart/SimpleBarChart.js b/components/Pages/Charts/Recharts/BarChart/SimpleBarChart.js new file mode 100644 index 0000000..ecea2e1 --- /dev/null +++ b/components/Pages/Charts/Recharts/BarChart/SimpleBarChart.js @@ -0,0 +1,112 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + BarChart, + Bar, + Cell, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const SimpleBarChart = () => { + return ( + <> + + + Tiny Bar Chart + + + + + + + + + + + + + + + + ); +}; + +export default SimpleBarChart; diff --git a/components/Pages/Charts/Recharts/BarChart/TinyBarChart.js b/components/Pages/Charts/Recharts/BarChart/TinyBarChart.js new file mode 100644 index 0000000..2cd2612 --- /dev/null +++ b/components/Pages/Charts/Recharts/BarChart/TinyBarChart.js @@ -0,0 +1,90 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + BarChart, + Bar, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const TinyBarChart = () => { + return ( + <> + + + Tiny Bar Chart + + + + + + + + + + ); +}; + +export default TinyBarChart; diff --git a/components/Pages/Charts/Recharts/ComposedChart/LineBarAreaComposedChart.js b/components/Pages/Charts/Recharts/ComposedChart/LineBarAreaComposedChart.js new file mode 100644 index 0000000..c30989a --- /dev/null +++ b/components/Pages/Charts/Recharts/ComposedChart/LineBarAreaComposedChart.js @@ -0,0 +1,121 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ComposedChart, + Line, + Area, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + Scatter, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 590, + pv: 800, + amt: 1400, + cnt: 490, + }, + { + name: "Page B", + uv: 868, + pv: 967, + amt: 1506, + cnt: 590, + }, + { + name: "Page C", + uv: 1397, + pv: 1098, + amt: 989, + cnt: 350, + }, + { + name: "Page D", + uv: 1480, + pv: 1200, + amt: 1228, + cnt: 480, + }, + { + name: "Page E", + uv: 1520, + pv: 1108, + amt: 1100, + cnt: 460, + }, + { + name: "Page F", + uv: 1400, + pv: 680, + amt: 1700, + cnt: 380, + }, +]; + +const LineBarAreaComposedChart = () => { + return ( + <> + + + Line Bar Area Composed Chart + + + + + + + + + + + + + + + + + + ); +}; + +export default LineBarAreaComposedChart; diff --git a/components/Pages/Charts/Recharts/ComposedChart/SameDataComposedChart.js b/components/Pages/Charts/Recharts/ComposedChart/SameDataComposedChart.js new file mode 100644 index 0000000..7cace4c --- /dev/null +++ b/components/Pages/Charts/Recharts/ComposedChart/SameDataComposedChart.js @@ -0,0 +1,107 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ComposedChart, + Line, + Area, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from 'recharts'; + +const data = [ + { + name: 'Page A', + uv: 590, + pv: 800, + amt: 1400, + }, + { + name: 'Page B', + uv: 868, + pv: 967, + amt: 1506, + }, + { + name: 'Page C', + uv: 1397, + pv: 1098, + amt: 989, + }, + { + name: 'Page D', + uv: 1480, + pv: 1200, + amt: 1228, + }, + { + name: 'Page E', + uv: 1520, + pv: 1108, + amt: 1100, + }, + { + name: 'Page F', + uv: 1400, + pv: 680, + amt: 1700, + }, +]; + +const SameDataComposedChart = () => { + return ( + <> + + + Same Data Composed Chart + + + + + + + + + + + + + + + + ); +}; + +export default SameDataComposedChart; diff --git a/components/Pages/Charts/Recharts/LineChart/SimpleLineChart.js b/components/Pages/Charts/Recharts/LineChart/SimpleLineChart.js new file mode 100644 index 0000000..58d0414 --- /dev/null +++ b/components/Pages/Charts/Recharts/LineChart/SimpleLineChart.js @@ -0,0 +1,116 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + LineChart, + Line, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const SimpleLineChart = () => { + return ( + <> + + + Simple Line Chart + + + + + + + + + + + + + + + + ); +}; + +export default SimpleLineChart; diff --git a/components/Pages/Charts/Recharts/LineChart/VerticalLineChart.js b/components/Pages/Charts/Recharts/LineChart/VerticalLineChart.js new file mode 100644 index 0000000..b7d6b7b --- /dev/null +++ b/components/Pages/Charts/Recharts/LineChart/VerticalLineChart.js @@ -0,0 +1,112 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + LineChart, + Line, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const VerticalLineChart = () => { + return ( + <> + + + Vertical Line Chart + + + + + + + + + + + + + + + + ); +}; + +export default VerticalLineChart; diff --git a/components/Pages/Charts/Recharts/PieChart/TwoLevelPieChart.js b/components/Pages/Charts/Recharts/PieChart/TwoLevelPieChart.js new file mode 100644 index 0000000..e090583 --- /dev/null +++ b/components/Pages/Charts/Recharts/PieChart/TwoLevelPieChart.js @@ -0,0 +1,78 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { PieChart, Pie, Sector, Cell, ResponsiveContainer } from "recharts"; + +const data01 = [ + { name: "Group A", value: 400 }, + { name: "Group B", value: 300 }, + { name: "Group C", value: 300 }, + { name: "Group D", value: 200 }, +]; +const data02 = [ + { name: "A1", value: 100 }, + { name: "A2", value: 300 }, + { name: "B1", value: 100 }, + { name: "B2", value: 80 }, + { name: "B3", value: 40 }, + { name: "B4", value: 30 }, + { name: "B5", value: 50 }, + { name: "C1", value: 100 }, + { name: "C2", value: 200 }, + { name: "D1", value: 150 }, + { name: "D2", value: 50 }, +]; + +const TwoLevelPieChart = () => { + return ( + <> + + + Two Level Pie Chart + + + + + + + + + + + ); +}; + +export default TwoLevelPieChart; diff --git a/components/Pages/Charts/Recharts/PieChart/TwoSimplePieChart.js b/components/Pages/Charts/Recharts/PieChart/TwoSimplePieChart.js new file mode 100644 index 0000000..6d11bfe --- /dev/null +++ b/components/Pages/Charts/Recharts/PieChart/TwoSimplePieChart.js @@ -0,0 +1,70 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { PieChart, Pie, Tooltip, ResponsiveContainer } from 'recharts'; + +const data01 = [ + { name: 'Group A', value: 400 }, + { name: 'Group B', value: 300 }, + { name: 'Group C', value: 300 }, + { name: 'Group D', value: 200 }, + { name: 'Group E', value: 278 }, + { name: 'Group F', value: 189 }, +]; + +const data02 = [ + { name: 'Group A', value: 2400 }, + { name: 'Group B', value: 4567 }, + { name: 'Group C', value: 1398 }, + { name: 'Group D', value: 9800 }, + { name: 'Group E', value: 3908 }, + { name: 'Group F', value: 4800 }, +]; + +const TwoSimplePieChart = () => { + return ( + <> + + + Two Simple Pie Chart + + + + + + + + + + + + ); +}; + +export default TwoSimplePieChart; diff --git a/components/Pages/Charts/Recharts/RadarChart/SimpleRadarChart.js b/components/Pages/Charts/Recharts/RadarChart/SimpleRadarChart.js new file mode 100644 index 0000000..5c2b8f4 --- /dev/null +++ b/components/Pages/Charts/Recharts/RadarChart/SimpleRadarChart.js @@ -0,0 +1,96 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + Radar, + RadarChart, + PolarGrid, + PolarAngleAxis, + PolarRadiusAxis, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + subject: "Math", + A: 120, + B: 110, + fullMark: 150, + }, + { + subject: "Chinese", + A: 98, + B: 130, + fullMark: 150, + }, + { + subject: "English", + A: 86, + B: 130, + fullMark: 150, + }, + { + subject: "Geography", + A: 99, + B: 100, + fullMark: 150, + }, + { + subject: "Physics", + A: 85, + B: 90, + fullMark: 150, + }, + { + subject: "History", + A: 65, + B: 85, + fullMark: 150, + }, +]; + +const SimpleRadarChart = () => { + return ( + <> + + + Simple Radar Chart + + + + + + + + + + + + + ); +}; + +export default SimpleRadarChart; diff --git a/components/Pages/Charts/Recharts/RadarChart/SpecifiedDomainRadarChart.js b/components/Pages/Charts/Recharts/RadarChart/SpecifiedDomainRadarChart.js new file mode 100644 index 0000000..71e56c8 --- /dev/null +++ b/components/Pages/Charts/Recharts/RadarChart/SpecifiedDomainRadarChart.js @@ -0,0 +1,105 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + Radar, + RadarChart, + PolarGrid, + Legend, + PolarAngleAxis, + PolarRadiusAxis, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + subject: "Math", + A: 120, + B: 110, + fullMark: 150, + }, + { + subject: "Chinese", + A: 98, + B: 130, + fullMark: 150, + }, + { + subject: "English", + A: 86, + B: 130, + fullMark: 150, + }, + { + subject: "Geography", + A: 99, + B: 100, + fullMark: 150, + }, + { + subject: "Physics", + A: 85, + B: 90, + fullMark: 150, + }, + { + subject: "History", + A: 65, + B: 85, + fullMark: 150, + }, +]; + +const SpecifiedDomainRadarChart = () => { + return ( + <> + + + Specified Domain Radar Chart + + + + + + + + + + + + + + + ); +}; + +export default SpecifiedDomainRadarChart; diff --git a/components/Pages/Charts/Recharts/ScatterChart/SimpleScatterChart.js b/components/Pages/Charts/Recharts/ScatterChart/SimpleScatterChart.js new file mode 100644 index 0000000..822a624 --- /dev/null +++ b/components/Pages/Charts/Recharts/ScatterChart/SimpleScatterChart.js @@ -0,0 +1,69 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ScatterChart, + Scatter, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { x: 100, y: 200, z: 200 }, + { x: 120, y: 100, z: 260 }, + { x: 170, y: 300, z: 400 }, + { x: 140, y: 250, z: 280 }, + { x: 150, y: 400, z: 500 }, + { x: 110, y: 280, z: 200 }, +]; + +const SimpleScatterChart = () => { + return ( + <> + + + Simple Scatter Chart + + + + + + + + + + + + + + ); +}; + +export default SimpleScatterChart; diff --git a/components/Pages/Charts/Recharts/ScatterChart/ThreeDimScatterChart.js b/components/Pages/Charts/Recharts/ScatterChart/ThreeDimScatterChart.js new file mode 100644 index 0000000..197a1ec --- /dev/null +++ b/components/Pages/Charts/Recharts/ScatterChart/ThreeDimScatterChart.js @@ -0,0 +1,82 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ScatterChart, + Scatter, + XAxis, + YAxis, + ZAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from 'recharts'; + +const data01 = [ + { x: 100, y: 200, z: 200 }, + { x: 120, y: 100, z: 260 }, + { x: 170, y: 300, z: 400 }, + { x: 140, y: 250, z: 280 }, + { x: 150, y: 400, z: 500 }, + { x: 110, y: 280, z: 200 }, +]; +const data02 = [ + { x: 200, y: 260, z: 240 }, + { x: 240, y: 290, z: 220 }, + { x: 190, y: 290, z: 250 }, + { x: 198, y: 250, z: 210 }, + { x: 180, y: 280, z: 260 }, + { x: 210, y: 220, z: 230 }, +]; + +const ThreeDimScatterChart = () => { + return ( + <> + + + Three Dim Scatter Chart + + + + + + + + + + + + + + + + + ); +}; + +export default ThreeDimScatterChart; diff --git a/components/Pages/Gallery/GalleryContent.js b/components/Pages/Gallery/GalleryContent.js new file mode 100644 index 0000000..2acde00 --- /dev/null +++ b/components/Pages/Gallery/GalleryContent.js @@ -0,0 +1,116 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Paper from '@mui/material/Paper'; +import Masonry from '@mui/lab/Masonry'; +import { styled } from '@mui/material/styles'; + +const Label = styled(Paper)(({ theme }) => ({ + backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff', + ...theme.typography.body2, + padding: theme.spacing(0.5), + textAlign: 'center', + color: theme.palette.text.secondary, + borderBottomLeftRadius: 0, + borderBottomRightRadius: 0, +})); + +export default function GalleryContent() { + return ( + + + {itemData.map((item, index) => ( +
+ + {item.title} +
+ ))} +
+
+ ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + }, + { + img: 'https://images.unsplash.com/photo-1627308595229-7830a5c91f9f', + title: 'Snacks', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + }, + { + img: 'https://images.unsplash.com/photo-1529655683826-aba9b3e77383', + title: 'Tower', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + }, + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + }, + { + img: 'https://images.unsplash.com/photo-1627328715728-7bcc1b5db87d', + title: 'Tree', + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + }, + { + img: 'https://images.unsplash.com/photo-1627000086207-76eabf23aa2e', + title: 'Camping Car', + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + }, + { + img: 'https://images.unsplash.com/photo-1627328561499-a3584d4ee4f7', + title: 'Mountain', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + }, +]; \ No newline at end of file diff --git a/components/Pages/Invoice/InvoiceDetailsContent.js b/components/Pages/Invoice/InvoiceDetailsContent.js new file mode 100644 index 0000000..08b4dc4 --- /dev/null +++ b/components/Pages/Invoice/InvoiceDetailsContent.js @@ -0,0 +1,853 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import Button from "@mui/material/Button"; + +const InvoiceDetailsContent = () => { + return ( + <> + + + {/* Invoice Details */} + + + Invoice Details + + + {/* Billed To: */} + + + Billed To: + + + + Thomas Adison + + + + 32104 Main + + + + Apt. 4c + + + + Springfield ST 54321 + + + + {/* Payment : */} + + + Payment : + + + + Total Due: $12,110.55 + + + + Bank Name: American Bank + + + + Country: United States + + + + IBAN: ETD95476213874685 + + + + SWIFT code: BR91905 + + + + + {/* Invoice id */} + + + Invoice #4987 + + + {/* Shipped To: */} + + + Shipped To: + + + + Thomas Adison + + + + 32104 Main + + + + Apt. 4c + + + + Springfield ST 54321 + + + + {/* Order Date : */} + + + Order Date: + + + + October 14, 2021 + + + + + + {/* Order Summary */} + + Order Summary + + + + + + + + Item + + + + Quantity + + + + Unit Price + + + + Price + + + + + + + + + Product Img + + Laptop Macos Pro + + + + + + 2 + + + + 200 + + + + $400 + + + + + + + Product Img + + Smart Camera XD6 + + + + + + 1 + + + + 1 + + + + $200.00 + + + + + + + Product Img + + Pixi 8 Wireless Airphone + + + + + + 1 + + + + 1 + + + + $120.00 + + + + + + + Product Img + + Jebble Smart Watch + + + + + + 1 + + + + 1 + + + + $120.00 + + + + + + + Product Img + + Airpod + + + + + + 1 + + + + 1 + + + + $120.00 + + + + {/* Sub Total */} + + + Sub Total : + + + + $960.00 + + + + + + Discount : + + + + $60.00 + + + + + + Shipping Charge : + + + + $50.00 + + + + + + Estimated Tax : + + + + $00.00 + + + + + + Total (USD) : + + + + $850.00 + + + + {/* Print & Button Button */} + + + + + + + + +
+
+
+ + ); +}; + +export default InvoiceDetailsContent; diff --git a/components/Pages/Invoice/InvoiceLists.js b/components/Pages/Invoice/InvoiceLists.js new file mode 100644 index 0000000..0b304eb --- /dev/null +++ b/components/Pages/Invoice/InvoiceLists.js @@ -0,0 +1,627 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Checkbox from '@mui/material/Checkbox'; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import RemoveRedEyeIcon from '@mui/icons-material/RemoveRedEye'; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +function InvoiceList(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +InvoiceList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + orderID, + productName, + clientName, + clientImg, + email, + issuedDate, + total, + balance, + badgeClass, +) { + return { + orderID, + productName, + clientName, + clientImg, + email, + issuedDate, + total, + balance, + badgeClass, + }; +} + +const rows = [ + createData( + "#14250", + "Laptop Macos Pro", + "Colin Firth", + "/images/user1.png", + "colinfirth@gmail.com", + "10 Jan 2023", + "$845", + "Paid", + "successBadge", + ), + createData( + "#14251", + "Smart Camera XD6", + "Wade Dave", + "/images/user2.png", + "wadedave@gmail.com", + "11 Jan 2023", + "$189.50", + "Not Paid", + "dangerBadge", + ), + createData( + "#14252", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "/images/user3.png", + "sethriley@gmail.com", + "12 Jan 2023", + "$250.50", + "Paid", + "successBadge", + ), + createData( + "#14253", + "Jebble Smart Watch", + "Gilbert Dan", + "/images/user4.png", + "gilbertdan@gmail.com", + "13 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14254", + "Admas Airpod x-Zon", + "Joshua Glen", + "/images/user5.png", + "joshuaGlen@gmail.com", + "14 Jan 2023", + "$289.50", + "Not Paid", + "dangerBadge", + ), + createData( + "#14255", + "Smart Satch F8 Pro", + "Lewis Milton", + "/images/user6.png", + "lewisMilton@gmail.com", + "15 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14256", + "Nord Fold ZL", + "Liam Ethan", + "/images/user7.png", + "liamEthan@gmail.com", + "16 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14257", + "Wall Clock Cimbina", + "Ramon Miles", + "/images/user8.png", + "ramonMiles@gmail.com", + "17 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14258", + "Galaxo T6 Munsun", + "Brian Roberto", + "/images/user9.png", + "ramonMiles@gmail.com", + "18 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14259", + "Laptop Macos Pro", + "Colin Firth", + "/images/user10.png", + "colinFirth@gmail.com", + "19 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14260", + "Smart Camera XD6", + "Wade Dave", + "/images/user11.png", + "wadeDave@gmail.com", + "20 Jan 2023", + "$189.50", + "Paid", + "successBadge", + ), + createData( + "#14261", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "/images/user12.png", + "wadeDave@gmail.com", + "21 Jan 2023", + "$250.50", + "Paid", + "successBadge", + ), + createData( + "#14262", + "Jebble Smart Watch", + "Gilbert Dan", + "/images/user13.png", + "wadeDave@gmail.com", + "22 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14263", + "Admas Airpod x-Zon", + "Joshua Glen", + "/images/user14.png", + "joshuaGlen@gmail.com", + "23 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14264", + "Smart Satch F8 Pro", + "Lewis Milton", + "/images/user15.png", + "lewisMilton@gmail.com", + "24 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14265", + "Nord Fold ZL", + "Liam Ethan", + "/images/product7.png", + "liamEthan@gmail.com", + "25 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), +].sort((a, b) => (a.orderID < b.orderID ? -1 : 1)); + +export default function InvoiceLists() { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + Invoice Lists + + + + + + + + + # + + + + Product Name + + + + Client Name + + + + Issued Date + + + + Total + + + + Balance + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + {row.orderID} + + + + {row.productName} + + + + + Product Img + + + {row.clientName} + + + {row.email} + + + + + + + {row.issuedDate} + + + + {row.total} + + + + + {row.balance} + + + + + + + + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Pages/Maps/BasicMarkers.js b/components/Pages/Maps/BasicMarkers.js new file mode 100644 index 0000000..b026dcf --- /dev/null +++ b/components/Pages/Maps/BasicMarkers.js @@ -0,0 +1,105 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ComposableMap, + Geographies, + Geography, + Marker +} from "react-simple-maps"; + +const geoUrl = + "https://raw.githubusercontent.com/deldersveld/topojson/master/continents/south-america.json"; + +const markers = [ + { + markerOffset: -30, + name: "Buenos Aires", + coordinates: [-58.3816, -34.6037] + }, + { markerOffset: 15, name: "La Paz", coordinates: [-68.1193, -16.4897] }, + { markerOffset: 15, name: "Brasilia", coordinates: [-47.8825, -15.7942] }, + { markerOffset: 15, name: "Santiago", coordinates: [-70.6693, -33.4489] }, + { markerOffset: 15, name: "Bogota", coordinates: [-74.0721, 4.711] }, + { markerOffset: 15, name: "Quito", coordinates: [-78.4678, -0.1807] }, + { markerOffset: -30, name: "Georgetown", coordinates: [-58.1551, 6.8013] }, + { markerOffset: -30, name: "Asuncion", coordinates: [-57.5759, -25.2637] }, + { markerOffset: 15, name: "Paramaribo", coordinates: [-55.2038, 5.852] }, + { markerOffset: 15, name: "Montevideo", coordinates: [-56.1645, -34.9011] }, + { markerOffset: 15, name: "Caracas", coordinates: [-66.9036, 10.4806] }, + { markerOffset: 15, name: "Lima", coordinates: [-77.0428, -12.0464] } +]; + +const BasicMarkers = () => { + return ( + <> + + + Basic Markers + + + + + {({ geographies }) => + geographies.map((geo) => ( + + )) + } + + {markers.map(({ name, coordinates, markerOffset }) => ( + + + + + + + {name} + + + ))} + + + + ); +}; + +export default BasicMarkers; \ No newline at end of file diff --git a/components/Pages/Maps/EuropeMapWithGraticule.js b/components/Pages/Maps/EuropeMapWithGraticule.js new file mode 100644 index 0000000..ab5ab2e --- /dev/null +++ b/components/Pages/Maps/EuropeMapWithGraticule.js @@ -0,0 +1,67 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ComposableMap, + Geographies, + Geography, + Graticule +} from "react-simple-maps"; + +const geoUrl = + "https://raw.githubusercontent.com/deldersveld/topojson/master/continents/europe.json"; + +const EuropeMapWithGraticule = () => { + return ( + <> + + + Europe Map With Graticule + + + + + + {({ geographies }) => + geographies.map((geo) => ( + + )) + } + + + + + ); +}; + +export default EuropeMapWithGraticule; \ No newline at end of file diff --git a/components/Pages/Maps/GoogleMap.js b/components/Pages/Maps/GoogleMap.js new file mode 100644 index 0000000..a845fd5 --- /dev/null +++ b/components/Pages/Maps/GoogleMap.js @@ -0,0 +1,44 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +const GoogleMap = () => { + return ( + <> + + + Google Map + + + + + + ); +}; + +export default GoogleMap; diff --git a/components/Pages/Pricing/PricingPlanStyle1.js b/components/Pages/Pricing/PricingPlanStyle1.js new file mode 100644 index 0000000..2c6dc88 --- /dev/null +++ b/components/Pages/Pricing/PricingPlanStyle1.js @@ -0,0 +1,209 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import Link from "next/link"; +import styles from "@/components/Pages/Pricing/PricingPlanStyle1.module.css"; + +const priceInfo = [ + { + id: 1, + title: "Basic Plan", + subTitle: "A simple start for everyone", + icon: "ri-shield-check-fill", + price: "50", + duration: "per month", + priceLists: [ + { + title: "Free Live Support", + }, + { + title: "30GB Disk Space", + }, + { + title: "Scalable Bandwith", + }, + { + title: "Free Setup", + }, + ], + }, + { + id: 2, + title: "Professional Plan", + subTitle: "A simple start for everyone", + icon: "ri-pie-chart-2-line", + price: "50", + duration: "per month", + priceLists: [ + { + title: "Free Live Support", + }, + { + title: "35GB Disk Space", + }, + { + title: "Scalable Bandwith", + }, + { + title: "Free Setup", + }, + ], + }, + { + id: 3, + title: "Enterprise Plan", + subTitle: "A simple start for everyone", + icon: "ri-briefcase-line", + price: "150", + duration: "per month", + priceLists: [ + { + title: "Free Live Support", + }, + { + title: "40GB Disk Space", + }, + { + title: "Scalable Bandwith", + }, + { + title: "Free Setup", + }, + ], + }, + { + id: 4, + title: "Unlimited Plan", + subTitle: "A simple start for everyone", + icon: "ri-star-half-line", + price: "200", + duration: "per month", + priceLists: [ + { + title: "Free Live Support", + }, + { + title: "50GB Disk Space", + }, + { + title: "Scalable Bandwith", + }, + { + title: "Free Setup", + }, + ], + }, +]; + +const PricingPlanStyle1 = () => { + return ( + <> + + Pricing Plans - 1 + + + + {priceInfo.map((info) => ( + + + + + + {info.title} + + + + {info.subTitle} + + + +
+ +
+
+ + + ${info.price}/{" "} + {info.duration} + + + + + + + + +
    + {info.priceLists.map((list) => ( +
  • {list.title}
  • + ))} +
+
+
+ ))} +
+ + ); +}; + +export default PricingPlanStyle1; diff --git a/components/Pages/Pricing/PricingPlanStyle1.module.css b/components/Pages/Pricing/PricingPlanStyle1.module.css new file mode 100644 index 0000000..32fd2bf --- /dev/null +++ b/components/Pages/Pricing/PricingPlanStyle1.module.css @@ -0,0 +1,37 @@ +.icon { + color: var(--primaryColor); + font-size: 30px; +} +.priceList { + list-style-type: none; + padding: 0; + margin: 0; +} +.priceList li { + margin-bottom: 15px; + position: relative; + padding-left: 16px; +} +.priceList li:last-child { + margin-bottom: 0; +} +.priceList li:before { + content: ''; + background-color: var(--primaryColor); + position: absolute; + top: 4px; + left: 0; + width: 10px; + height: 10px; + border-radius: 100%; +} + +/* For RTL Style */ +[dir="rtl"] .priceList li { + padding-left: 0; + padding-right: 16px; +} +[dir="rtl"] .priceList li:before { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/components/Pages/Pricing/PricingPlanStyle2.js b/components/Pages/Pricing/PricingPlanStyle2.js new file mode 100644 index 0000000..ccddddc --- /dev/null +++ b/components/Pages/Pricing/PricingPlanStyle2.js @@ -0,0 +1,196 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import Link from "next/link"; +import styles from "@/components/Pages/Pricing/PricingPlanStyle2.module.css"; + +const priceInfo = [ + { + id: 1, + title: "Basic Plan", + subTitle: + "Perfect for an individual or a small team starting to get bigger", + price: "50", + duration: "per month", + priceLists: [ + { + title: "100 Responses a Month", + }, + { + title: "Unlimited Forms and Surveys", + }, + { + title: "Unlimited Fields", + }, + { + title: "Basic Form Creation Tools", + }, + { + title: "Up to 2 Subdomains", + }, + ], + }, + { + id: 2, + title: "Professional Plan", + subTitle: + "Perfect for an individual or a small team starting to get bigger", + price: "50", + duration: "per month", + priceLists: [ + { + title: "120 Responses a Month", + }, + { + title: "Unlimited Forms and Surveys", + }, + { + title: "Unlimited Fields", + }, + { + title: "Basic Form Creation Tools", + }, + { + title: "Up to 5 Subdomains", + }, + ], + }, + { + id: 3, + title: "Enterprise Plan", + subTitle: + "Perfect for an individual or a small team starting to get bigger", + price: "150", + duration: "per month", + priceLists: [ + { + title: "150 Responses a Month", + }, + { + title: "Unlimited Forms and Surveys", + }, + { + title: "Unlimited Fields", + }, + { + title: "Basic Form Creation Tools", + }, + { + title: "Up to 10 Subdomains", + }, + ], + }, +]; + +const PricingPlanStyle2 = () => { + return ( + <> + + Pricing Plans - 2 + + + + {priceInfo.map((info) => ( + + + + + + {info.title} + + + + {info.subTitle} + + + + + + ${info.price}/{" "} + {info.duration} + + + + + + + + +
    + {info.priceLists.map((list) => ( +
  • + {list.title} +
  • + ))} +
+
+
+ ))} +
+ + ); +}; + +export default PricingPlanStyle2; diff --git a/components/Pages/Pricing/PricingPlanStyle2.module.css b/components/Pages/Pricing/PricingPlanStyle2.module.css new file mode 100644 index 0000000..aa08a7f --- /dev/null +++ b/components/Pages/Pricing/PricingPlanStyle2.module.css @@ -0,0 +1,34 @@ +.priceList { + list-style-type: none; + padding: 0; + margin: 0; +} +.priceList li { + margin-bottom: 15px; + position: relative; + padding-left: 30px; +} +.priceList li:last-child { + margin-bottom: 0; +} +.priceList li i { + background-color: rgba(117, 127, 239, 0.1); + position: absolute; + top: 0px; + left: 0; + width: 22px; + height: 22px; + line-height: 22px; + border-radius: 100%; + text-align: center; +} + +/* For RTL Style */ +[dir="rtl"] .priceList li { + padding-left: 0; + padding-right: 30px; +} +[dir="rtl"] .priceList li i { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/components/Pages/Profile/ActivityTimeline/ActivityTimeline.module.css b/components/Pages/Profile/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..5d8b844 --- /dev/null +++ b/components/Pages/Profile/ActivityTimeline/ActivityTimeline.module.css @@ -0,0 +1,40 @@ +.timelineList .tList { + position: relative; + margin-bottom: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #F7FAFF; + display: flex; + align-items: center; + justify-content: space-between; +} +.timelineList .tList:last-child { + border: none; + padding-bottom: 0; + margin-bottom: 0; +} +.timelineList .tList .content { + display: flex; + align-items: center; +} +.timelineList .tList .content img { + margin-right: 10px; + width: 27px; +} +.timelineList .tList .content h5 { + margin: 0; + color: #5B5B98; + font-size: 13px; + font-weight: 500; +} +.timelineList .tList .date { + color: #A9A9C8; + font-size: 12px; + margin: 0; +} + +@media only screen and (min-width: 1800px) { + .timelineList .tList { + margin-bottom: 16.5px; + padding-bottom: 16.5px; + } +} \ No newline at end of file diff --git a/components/Pages/Profile/ActivityTimeline/index.js b/components/Pages/Profile/ActivityTimeline/index.js new file mode 100644 index 0000000..265ecda --- /dev/null +++ b/components/Pages/Profile/ActivityTimeline/index.js @@ -0,0 +1,158 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import styles from "@/components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css"; + +const ActivityTimelineData = [ + { + id: "1", + image: '/images/pdf-icon.png', + title: "Donald updated the status", + time: "54 min ago", + }, + { + id: "2", + image: '/images/man.png', + title: "Design new UI and check sales", + time: "10 hours ago", + }, + { + id: "3", + title: "James Bangs Client Meeting", + image: '/images/small-product-img.png', + time: "5 min ago", + }, + { + id: "4", + title: "Joseph Rust opened new showcase", + image: '/images/small-product-img2.png', + time: "10 min ago", + }, + { + id: "5", + title: "Brust opened new showcase", + image: '/images/small-product-img3.png', + time: "15 min ago", + }, + { + id: "6", + title: "Create a new project for client", + image: '/images/man.png', + time: "20 min ago", + }, +]; + +const ActivityTimeline = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 6).map((timeline) => ( +
+
+ Icon +
{timeline.title}
+
+

{timeline.time}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/Pages/Profile/Features.js b/components/Pages/Profile/Features.js new file mode 100644 index 0000000..d9e2d26 --- /dev/null +++ b/components/Pages/Profile/Features.js @@ -0,0 +1,87 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; + +const FeaturesData = [ + { + id: "1", + subTitle: "Completed Projects", + title: "24k", + image: "/images/users-icon.png", + }, + { + id: "2", + subTitle: "Pending Projects", + title: "17", + image: "/images/graph-icon.png", + }, + { + id: "3", + subTitle: "Total Revenue", + title: "16.2M", + image: "/images/work-icon.png", + } +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + Icon + + + + + {feature.subTitle} + + + {feature.title} + + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Pages/Profile/MyTasks.js b/components/Pages/Profile/MyTasks.js new file mode 100644 index 0000000..7df9c01 --- /dev/null +++ b/components/Pages/Profile/MyTasks.js @@ -0,0 +1,415 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import IconButton from "@mui/material/IconButton"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Tooltip from "@mui/material/Tooltip"; + +function MyTask(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +MyTask.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(name, startDate, endDate, status, badgeClass, budget) { + return { + name, + startDate, + endDate, + status, + badgeClass, + budget + }; +} + +const rows = [ + createData( + "Public Beta Release", + "1 Jan 2022", + "1 Apr 2022", + "Completed", + "successBadge", + "$1250" + ), + createData( + "Fix Platform Errors", + "1 Mar 2022", + "1 May 2022", + "Completed", + "successBadge", + "$1550" + ), + createData( + "Launch our Mobile App", + "15 Apr 2022", + "15 Jun 2022", + "On Going", + "primaryBadge", + "$2500" + ), + createData( + "Add the New Pricing Page", + "15 May 2022", + "15 Jun 2022", + "Pending", + "dangerBadge", + "$100" + ), + createData( + "Redesign New Online Shop", + "15 Jun 2022", + "15 Aug 2022", + "On Going", + "primaryBadge", + "$1000" + ), + createData( + "Material Ui Design", + "15 Jul 2022", + "15 Sep 2022", + "On Going", + "primaryBadge", + "$2200" + ), + createData( + "Add Progress Track", + "15 Mar 2022", + "15 May 2022", + "Completed", + "successBadge", + "$1400" + ), + createData( + "Web Design", + "15 Aug 2022", + "15 Dec 2022", + "On Going", + "primaryBadge", + "$4000" + ), + createData( + "Web Development", + "15 Nov 2022", + "15 Jan 2023", + "On Going", + "primaryBadge", + "$400" + ), + createData( + "React App Development", + "15 Jan 2022", + "15 Mar 2022", + "Completed", + "successBadge", + "$1200" + ), + createData( + "eCommerce Development", + "15 Mar 2022", + "15 May 2022", + "On Going", + "primaryBadge", + "$250" + ), + createData( + "App Development", + "15 May 2022", + "15 Jul 2022", + "On Going", + "primaryBadge", + "$3400" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +const MyTasks = () => { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(8); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + My Tasks + + + + + + + + + Name + + + + Start Date + + + + End Date + + + + Status + + + + Budget + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.name} + + + + {row.startDate} + + + + {row.endDate} + + + + {row.status} + + + + {row.budget} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default MyTasks; diff --git a/components/Pages/Profile/Overview.js b/components/Pages/Profile/Overview.js new file mode 100644 index 0000000..a28187d --- /dev/null +++ b/components/Pages/Profile/Overview.js @@ -0,0 +1,160 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const Overview = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "Income", + data: [20, 35, 20, 40, 40, 50, 25, 25, 35, 30, 25, 40], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#90C6E0"], + plotOptions: { + bar: { + columnWidth: "30%", + distributed: true, + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + show: false, + }, + xaxis: { + categories: [ + ["Jan"], + ["Feb"], + ["Mar"], + ["Api"], + ["May"], + ["Jun"], + ["Jul"], + ["Aug"], + ["Sep"], + ["Oct"], + ["Nov"], + ["Dec"], + ], + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + }, + yaxis: { + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + axisBorder: { + show: false, + colors: "#f6f6f7", + }, + }, + fill: { + opacity: 1, + }, + tooltip: { + y: { + formatter: function (val) { + return "$" + val + "k"; + }, + }, + }, + grid: { + show: true, + borderColor: "#EDEFF5", + strokeDashArray: 5, + }, + }; + + return ( + <> + + + + Overview + + + + Select + + + + + + + + + ); +}; + +export default Overview; diff --git a/components/Pages/Profile/PersonalInformation/index.js b/components/Pages/Profile/PersonalInformation/index.js new file mode 100644 index 0000000..1082306 --- /dev/null +++ b/components/Pages/Profile/PersonalInformation/index.js @@ -0,0 +1,98 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; + +const personalInfo = [ + { + title: 'Full Name :', + text: 'Andrew Burns', + }, + { + title: 'Mobile :', + text: '(123) 123 1234', + }, + { + title: 'Email :', + text: 'andrewburns@gmail.com', + }, + { + title: 'Location : ', + text: 'USA', + }, + { + title: 'Experience : ', + text: 'Back end Developer', + }, +] + +const PersonalInformation = () => { + return ( + <> + + + + Personal Information + + + + + + About Me: + + + Hi I'm Andrew Burns,has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type. + + {personalInfo.map((info) => ( + + + {info.title} + + + {info.text} + + ))} + + + + ); +}; + +export default PersonalInformation; diff --git a/components/Pages/Profile/ProfileContent.js b/components/Pages/Profile/ProfileContent.js new file mode 100644 index 0000000..e2f4b0d --- /dev/null +++ b/components/Pages/Profile/ProfileContent.js @@ -0,0 +1,22 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import styles from "@/components/Dashboard/Analytics/Welcome/Welcome.module.css"; + +const ProfileContent = () => { + return ( + <> +
+
+

Welcome to admash Dashboard!

+

+ You have done 68% 😎 more sales today. Check your new badge in + your profile. +

+
+ shape +
+ + ); +}; + +export default ProfileContent; diff --git a/components/Pages/Search/SearchContent.js b/components/Pages/Search/SearchContent.js new file mode 100644 index 0000000..d7ea71e --- /dev/null +++ b/components/Pages/Search/SearchContent.js @@ -0,0 +1,213 @@ +import * as React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Pagination from '@mui/material/Pagination'; + +export default function SearchContent() { + return ( + <> + + + 120 results found for “Ipsum” + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + {/* Pagination */} + + + + ); +} diff --git a/components/Pages/Support/SupportForm.js b/components/Pages/Support/SupportForm.js new file mode 100644 index 0000000..57a9778 --- /dev/null +++ b/components/Pages/Support/SupportForm.js @@ -0,0 +1,171 @@ +import * as React from "react"; +import Box from '@mui/material/Box'; +import Grid from "@mui/material/Grid"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import { TextareaAutosize } from '@mui/base/TextareaAutosize'; +import Typography from "@mui/material/Typography"; + +export default function SupportForm() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + + + Contact with Us + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + + + Name + + + + + + + Email + + + + + + + Subject + + + + + + + Message + + + + + + + + + + + + + + ); +} diff --git a/components/Pages/TermsConditions/TermsConditionsContent.js b/components/Pages/TermsConditions/TermsConditionsContent.js new file mode 100644 index 0000000..be5e7aa --- /dev/null +++ b/components/Pages/TermsConditions/TermsConditionsContent.js @@ -0,0 +1,47 @@ +import React from 'react'; +import Card from "@mui/material/Card"; +import styles from '@/components/Pages/TermsConditions/TermsConditionsContent.module.css' + +const TermsConditionsContent = () => { + return ( + <> + +
+

Terms & Conditions

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+ +

Privacy Policy

+

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.

+

Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.

+ +

License Usage

+

But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness.

+ +

Media

+

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.

+ +

Product Updates

+

There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.

+ +

Cookies

+

It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English.

+

Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).

+ +

Last update: January 25, 2023

+
+
+ + ) +} + +export default TermsConditionsContent; \ No newline at end of file diff --git a/components/Pages/TermsConditions/TermsConditionsContent.module.css b/components/Pages/TermsConditions/TermsConditionsContent.module.css new file mode 100644 index 0000000..e949fb4 --- /dev/null +++ b/components/Pages/TermsConditions/TermsConditionsContent.module.css @@ -0,0 +1,37 @@ +.termsConditionsContent h1 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h2 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h3 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h4 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h5 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h6 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent p { + margin-top: 0; + margin-bottom: 20px; +} +.termsConditionsContent ul, .termsConditionsContent ol { + margin-bottom: 20px; +} +.termsConditionsContent ul li, .termsConditionsContent ol li { + margin-bottom: 10px; +} +.termsConditionsContent ul li:last-child, .termsConditionsContent ol li:last-child { + margin-bottom: 0; +} \ No newline at end of file diff --git a/components/Pages/Testimonials/TestimonialsOne.js b/components/Pages/Testimonials/TestimonialsOne.js new file mode 100644 index 0000000..3ab0b43 --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsOne.js @@ -0,0 +1,266 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper"; +import styles from "@/components/Pages/Testimonials/TestimonialsOne.module.css"; + +const Feedbacks = [ + { + id: 1, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user1.png", + name: "Roberto", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 2, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user2.png", + name: "Ramon", + designation: 'UI/UX Designer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 3, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user3.png", + name: "Nathaniel", + designation: 'Angular Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 4, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user4.png", + name: "Milton", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 5, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user5.png", + name: "Antonio", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 6, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user6.png", + name: "Julian", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, +] + +const TestimonialsOne = () => { + return ( + <> + + + Testimonials One + + + + {Feedbacks.map((feedback) => ( + +
+
+ + {feedback.feedbackText} + +
+ +
+
+ Client +
+ +
+

{feedback.name}

+

{feedback.designation}

+
    + {feedback.ratings.map((rating) => ( +
  • + +
  • + ))} +
+
+
+
+
+ ))} +
+
+ + ); +}; + +export default TestimonialsOne; diff --git a/components/Pages/Testimonials/TestimonialsOne.module.css b/components/Pages/Testimonials/TestimonialsOne.module.css new file mode 100644 index 0000000..479efd9 --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsOne.module.css @@ -0,0 +1,61 @@ +.feedbackText { + background-color: #f2f1f3; + padding: 30px; + border-radius: 25px 25px 25px 0; + font-size: 16px; + margin-bottom: 20px; +} +.feedbackImg { + display: flex; +} +.feedbackImg img { + width: 50px; + height: 50px; + border-radius: 100%; + margin-right: 10px; +} +.feedbackImg h4 { + margin: 0 0 3px; + font-size: 14px; +} +.feedbackImg p { + margin: 0 0 5px; + font-size: 12px; +} +.feedbackImg ul { + margin: 0; + list-style-type: none; + padding: 0; +} +.feedbackImg ul li { + display: inline-block; + margin-right: 3px; + color: #ffc744; +} +.feedbackImg ul li:last-child { + margin-right: 0; +} + +/* For RTL Style */ +[dir="rtl"] .feedbackText { + border-radius: 25px 25px 0 25px; +} +[dir="rtl"] .feedbackImg img { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .feedbackImg ul li { + margin-right: 0; + margin-left: 3px; +} +[dir="rtl"] .feedbackImg ul li:last-child { + margin-left: 0; +} + +/* For dark mode */ +[class="dark"] .feedbackText { + background-color: var(--colorBlack); +} +[class="dark"] .feedbackText q { + color: var(--darkBodyTextColor); +} \ No newline at end of file diff --git a/components/Pages/Testimonials/TestimonialsThree.js b/components/Pages/Testimonials/TestimonialsThree.js new file mode 100644 index 0000000..8a23bef --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsThree.js @@ -0,0 +1,265 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Pagination } from "swiper"; +import styles from "@/components/Pages/Testimonials/TestimonialsThree.module.css"; + +const Feedbacks = [ + { + id: 1, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member1.png", + name: "Roberto", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 2, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member2.png", + name: "Ramon", + designation: 'UI/UX Designer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 3, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member3.png", + name: "Nathaniel", + designation: 'Angular Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 4, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member4.png", + name: "Milton", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 5, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member5.png", + name: "Antonio", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 6, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member6.png", + name: "Julian", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, +] + +const TestimonialsThree = () => { + return ( + <> + + + Testimonials Three + + + + {Feedbacks.map((feedback) => ( + +
+
+
+
+ Client +
+ +
+

{feedback.name}

+

{feedback.designation}

+
    + {feedback.ratings.map((rating) => ( +
  • + +
  • + ))} +
+
+
+ + + {feedback.feedbackText} + +
+
+
+ ))} +
+
+ + ); +}; + +export default TestimonialsThree; diff --git a/components/Pages/Testimonials/TestimonialsThree.module.css b/components/Pages/Testimonials/TestimonialsThree.module.css new file mode 100644 index 0000000..48f4492 --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsThree.module.css @@ -0,0 +1,48 @@ +.feedbackContent { + text-align: center; +} +.feedbackText { + background-color: #f2f1f3; + padding: 40px 30px; + border-radius: 10px; + font-size: 16px; + margin-bottom: 20px; +} +.feedbackImg { + margin-bottom: 10px; +} +.feedbackImg img { + width: 100px; + height: 100px; + border-radius: 100%; + margin-bottom: 5px; +} +.feedbackImg h4 { + margin: 0 0 3px; + font-size: 18px; +} +.feedbackImg p { + margin: 0 0 5px; + font-size: 13px; +} +.feedbackImg ul { + margin: 0; + list-style-type: none; + padding: 0; +} +.feedbackImg ul li { + display: inline-block; + margin-right: 3px; + color: #ffc744; +} +.feedbackImg ul li:last-child { + margin-right: 0; +} + +/* For dark mode */ +[class="dark"] .feedbackText { + background-color: var(--colorBlack); +} +[class="dark"] .feedbackText q { + color: var(--darkBodyTextColor); +} \ No newline at end of file diff --git a/components/Pages/Testimonials/TestimonialsTwo.js b/components/Pages/Testimonials/TestimonialsTwo.js new file mode 100644 index 0000000..7f2e46e --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsTwo.js @@ -0,0 +1,269 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper"; +import styles from "@/components/Pages/Testimonials/TestimonialsTwo.module.css"; + +const Feedbacks = [ + { + id: 1, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user1.png", + name: "Roberto", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 2, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user2.png", + name: "Ramon", + designation: 'UI/UX Designer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 3, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user3.png", + name: "Nathaniel", + designation: 'Angular Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 4, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user4.png", + name: "Milton", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 5, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user5.png", + name: "Antonio", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 6, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user6.png", + name: "Julian", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, +] + +const TestimonialsTwo = () => { + return ( + <> + + + Testimonials Two + + + + {Feedbacks.map((feedback) => ( + +
+
+
+
+ Client +
+ +
+

{feedback.name}

+

{feedback.designation}

+
    + {feedback.ratings.map((rating) => ( +
  • + +
  • + ))} +
+
+
+ + + {feedback.feedbackText} + +
+
+
+ ))} +
+
+ + ); +}; + +export default TestimonialsTwo; diff --git a/components/Pages/Testimonials/TestimonialsTwo.module.css b/components/Pages/Testimonials/TestimonialsTwo.module.css new file mode 100644 index 0000000..45a51ed --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsTwo.module.css @@ -0,0 +1,59 @@ +.feedbackText { + background-color: #f2f1f3; + padding: 40px 30px; + border-radius: 25px; + font-size: 16px; + margin-bottom: 20px; +} +.feedbackImg { + display: flex; + margin-bottom: 10px; +} +.feedbackImg img { + width: 50px; + height: 50px; + border-radius: 100%; + margin-right: 10px; +} +.feedbackImg h4 { + margin: 0 0 3px; + font-size: 14px; +} +.feedbackImg p { + margin: 0 0 5px; + font-size: 12px; +} +.feedbackImg ul { + margin: 0; + list-style-type: none; + padding: 0; +} +.feedbackImg ul li { + display: inline-block; + margin-right: 3px; + color: #ffc744; +} +.feedbackImg ul li:last-child { + margin-right: 0; +} + +/* For RTL Style */ +[dir="rtl"] .feedbackImg img { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .feedbackImg ul li { + margin-right: 0; + margin-left: 3px; +} +[dir="rtl"] .feedbackImg ul li:last-child { + margin-left: 0; +} + +/* For dark mode */ +[class="dark"] .feedbackText { + background-color: var(--colorBlack); +} +[class="dark"] .feedbackText q { + color: var(--darkBodyTextColor); +} \ No newline at end of file diff --git a/components/Pages/Timeline/TimelineStyle1.js b/components/Pages/Timeline/TimelineStyle1.js new file mode 100644 index 0000000..75b84e0 --- /dev/null +++ b/components/Pages/Timeline/TimelineStyle1.js @@ -0,0 +1,172 @@ +import * as React from "react"; +import Timeline from "@mui/lab/Timeline"; +import TimelineItem from "@mui/lab/TimelineItem"; +import TimelineSeparator from "@mui/lab/TimelineSeparator"; +import TimelineConnector from "@mui/lab/TimelineConnector"; +import TimelineContent from "@mui/lab/TimelineContent"; +import TimelineOppositeContent from "@mui/lab/TimelineOppositeContent"; +import TimelineDot from "@mui/lab/TimelineDot"; +import FastfoodIcon from "@mui/icons-material/Fastfood"; +import LaptopMacIcon from "@mui/icons-material/LaptopMac"; +import HotelIcon from "@mui/icons-material/Hotel"; +import RepeatIcon from "@mui/icons-material/Repeat"; +import Typography from "@mui/material/Typography"; +import Card from "@mui/material/Card"; + +export default function TimelineStyle1() { + return ( + <> + + + Timeline Style 1 + + + + + + 9:30 am + + + + + + + + + + + + + Eat + + + Because you need strength + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + + 10:00 am + + + + + + + + + + + + + Code + + Because it's awesome! + + Sed ut perspiciatis unde omnis iste natus error sit voluptatem + accusantium doloremque laudantium. + + + + + + + 12:30 pm + + + + + + + + + + + + + Sleep + + + Because you need rest + + + But I must explain to you how all this mistaken idea of + denouncing pleasure and praising. + + + + + + + 9:30 am + + + + + + + + + + + + + Repeat + + + + Because this is the life you love! + + + + At vero eos et accusamus et iusto odio dignissimos ducimus qui + blanditiis praesentium! + + + + + + + ); +} diff --git a/components/Pages/Timeline/TimelineStyle2.js b/components/Pages/Timeline/TimelineStyle2.js new file mode 100644 index 0000000..b680914 --- /dev/null +++ b/components/Pages/Timeline/TimelineStyle2.js @@ -0,0 +1,140 @@ +import * as React from "react"; +import Timeline from "@mui/lab/Timeline"; +import TimelineItem from "@mui/lab/TimelineItem"; +import TimelineSeparator from "@mui/lab/TimelineSeparator"; +import TimelineConnector from "@mui/lab/TimelineConnector"; +import TimelineContent from "@mui/lab/TimelineContent"; +import TimelineDot from "@mui/lab/TimelineDot"; +import TimelineOppositeContent, { + timelineOppositeContentClasses, +} from "@mui/lab/TimelineOppositeContent"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function TimelineStyle2() { + return ( + <> + + + Timeline Style 2 + + + + + + Jan 15, 2023 (09:30 am) + + + + + + + + + + First Event + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + + + + + + + Jan 16, 2023 (09:30 am) + + + + + + + + + + Second Event + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + + + + + + + Jan 17, 2023 (09:30 am) + + + + + + + + + + Third Event + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + + + + + + + Jan 18, 2023 (09:30 am) + + + + + + + + + Fourth Event + + + Sed ut perspiciatis unde omnis iste natus error sit voluptatem + accusantium doloremque laudantium, totam rem aperiam, eaque ipsa + quae ab illo inventore veritatis et quasi architecto beatae + vitae dicta sunt explicabo. + + + + + + + ); +} diff --git a/components/Projects/AllProjects/AllProjects.module.css b/components/Projects/AllProjects/AllProjects.module.css new file mode 100644 index 0000000..2a6231c --- /dev/null +++ b/components/Projects/AllProjects/AllProjects.module.css @@ -0,0 +1,10 @@ +.members { + display: flex; + align-items: center; + position: relative; +} +.members img { + border-radius: 100%; + border: 2px solid #fff; + margin-left: -6px; +} \ No newline at end of file diff --git a/components/Projects/AllProjects/index.js b/components/Projects/AllProjects/index.js new file mode 100644 index 0000000..a0db625 --- /dev/null +++ b/components/Projects/AllProjects/index.js @@ -0,0 +1,1116 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import { styled } from "@mui/material/styles"; +import LinearProgress, { + linearProgressClasses, +} from "@mui/material/LinearProgress"; +import styles from "@/components/Projects/AllProjects/AllProjects.module.css"; + +const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ + height: 5, + borderRadius: 5, + [`&.${linearProgressClasses.colorPrimary}`]: { + backgroundColor: + theme.palette.grey[theme.palette.mode === "light" ? 200 : 800], + }, + [`& .${linearProgressClasses.bar}`]: { + borderRadius: 5, + backgroundColor: theme.palette.mode === "light" ? "#757FEF" : "#308fe8", + }, +})); + +const AllProjects = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + All Projects + + + + + Select + + + + + + + + + + + + Project Name + + + + Members + + + + Budget + + + + Status + + + + Completion + + + + Due Date + + + + + + {/* TableRow 1 */} + + + + Image + + Product UI/UX Design + + + + + +
+ Image + Image + Image +
+
+ + + $14,000 + + + + On Going + + + + + 70% + + + + + + 08 Mar 2021 + +
+ + {/* TableRow 2 */} + + + + Image + + Public Beta Release + + + + + +
+ Image + Image +
+
+ + + $14,000 + + + + On Going + + + + + 60% + + + + + + 17 Apr 2021 + +
+ + {/* TableRow 3 */} + + + + Image + + SEO Marketing + + + + + +
+ Image + Image +
+
+ + + $12,000 + + + + On Going + + + + + 75% + + + + + + 10 Sep 2021 + +
+ + {/* TableRow 4 */} + + + + Image + + New Office Building + + + + + +
+ Image + Image + Image +
+
+ + + $9,000 + + + + Pending + + + + + 0% + + + + + + 06 Aug 2022 + +
+ + {/* TableRow 5 */} + + + + Image + + Product Devlopment + + + + + +
+ Image + Image + Image +
+
+ + + $16,000 + + + + Completed + + + + + 100% + + + + + + 08 Mar 2022 + +
+ + {/* TableRow 6 */} + + + + Image + + Public Beta Release 2 + + + + + +
+ Image + Image + Image +
+
+ + + $6,000 + + + + Complete + + + + + 100% + + + + + + 1 Jan 2022 + +
+ + {/* TableRow 7 */} + + + + Image + + Market and SEO + + + + + +
+ Image + Image +
+
+ + + $5,000 + + + + Complete + + + + + 100% + + + + + + 1 Jan 2021 + +
+ + {/* TableRow 8 */} + + + + Image + + New Office Building + + + + + +
+ Image + Image +
+
+ + + $2,000 + + + + Pending + + + + + 10% + + + + + + 1 Feb 2021 + +
+ + {/* TableRow 9 */} + + + + Image + + Public Beta Release + + + + + +
+ Image + Image +
+
+ + + $7,000 + + + + Complete + + + + + 100% + + + + + + 1 Mar 2021 + +
+ + {/* TableRow 10 */} + + + + Image + + Market and SEO + + + + + +
+ Image + Image +
+
+ + + $1,000 + + + + Complete + + + + + 100% + + + + + + 1 Apr 2021 + +
+ + {/* TableRow 11 */} + + + + Image + + New Office Building + + + + + +
+ Image + Image +
+
+ + + $1500 + + + + Complete + + + + + 100% + + + + + + 1 Mar 2021 + +
+ + {/* TableRow 12 */} + + + + Image + + Product Devlopment + + + + + +
+ Image + Image +
+
+ + + $2500 + + + + Complete + + + + + 100% + + + + + + 1 Apr 2021 + +
+
+
+
+
+ + ); +}; + +export default AllProjects; diff --git a/components/Projects/KanbanBoard/InReview.js b/components/Projects/KanbanBoard/InReview.js new file mode 100644 index 0000000..f124bbb --- /dev/null +++ b/components/Projects/KanbanBoard/InReview.js @@ -0,0 +1,420 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import Checkbox from '@mui/material/Checkbox'; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +const newProjects = [ + { + id: 1, + projectName: "Mobile App Development", + category: "Mobile App", + totalTask: "10/50", + teamMembers: [ + { + id: 1, + image: "/images/member1.png", + }, + { + id: 2, + image: "/images/member2.png", + }, + { + id: 3, + image: "/images/member3.png", + }, + { + id: 4, + image: "/images/member4.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member6.png", + }, + ], + }, + { + id: 2, + projectName: "Web Development", + category: "React JS", + totalTask: "50/100", + teamMembers: [ + { + id: 7, + image: "/images/member5.png", + }, + { + id: 8, + image: "/images/member6.png", + }, + { + id: 9, + image: "/images/member7.png", + }, + { + id: 10, + image: "/images/member8.png", + }, + { + id: 11, + image: "/images/member9.png", + }, + { + id: 12, + image: "/images/member10.png", + }, + ], + }, + { + id: 3, + projectName: "E-Commerce Development", + category: "React JS", + totalTask: "60/100", + teamMembers: [ + { + id: 6, + image: "/images/member1.png", + }, + { + id: 5, + image: "/images/member2.png", + }, + { + id: 4, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member5.png", + }, + { + id: 1, + image: "/images/member6.png", + }, + ], + }, + { + id: 4, + projectName: "Digital Marketing", + category: "SEO", + totalTask: "10/50", + teamMembers: [ + { + id: 5, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member6.png", + }, + { + id: 1, + image: "/images/member12.png", + }, + { + id: 4, + image: "/images/member13.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member3.png", + }, + ], + }, + { + id: 5, + projectName: "WordPress Development", + category: "WordPress", + totalTask: "45/100", + teamMembers: [ + { + id: 1, + image: "/images/member8.png", + }, + { + id: 2, + image: "/images/member9.png", + }, + { + id: 3, + image: "/images/member10.png", + }, + { + id: 4, + image: "/images/member11.png", + }, + { + id: 5, + image: "/images/member12.png", + }, + { + id: 6, + image: "/images/member13.png", + }, + ], + }, +] + +const InReview = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + In Review + + + + + + + + + Create Project + Open Project + Overview + + + + {/* Card */} + + + + + + + + + 55 + + + + Added: 13 Projects this month + + + + + + + 5.80% + + + + + + {/* Card */} + {newProjects.map((project) => ( + + + + + + + + + + + + + + + + + + + + + {project.projectName} + + + + {project.category} + + + + + {project.totalTask} + + + + {project.teamMembers.map((member) => ( + + ))} + + + + ))} + + + ); +}; + +export default InReview; diff --git a/components/Projects/KanbanBoard/NewProjects.js b/components/Projects/KanbanBoard/NewProjects.js new file mode 100644 index 0000000..63ec8d5 --- /dev/null +++ b/components/Projects/KanbanBoard/NewProjects.js @@ -0,0 +1,420 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import Checkbox from '@mui/material/Checkbox'; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +const newProjects = [ + { + id: 1, + projectName: "Mobile App Development", + category: "Mobile App", + totalTask: "10/50", + teamMembers: [ + { + id: 1, + image: "/images/member1.png", + }, + { + id: 2, + image: "/images/member2.png", + }, + { + id: 3, + image: "/images/member3.png", + }, + { + id: 4, + image: "/images/member4.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member6.png", + }, + ], + }, + { + id: 2, + projectName: "Web Development", + category: "React JS", + totalTask: "50/100", + teamMembers: [ + { + id: 7, + image: "/images/member5.png", + }, + { + id: 8, + image: "/images/member6.png", + }, + { + id: 9, + image: "/images/member7.png", + }, + { + id: 10, + image: "/images/member8.png", + }, + { + id: 11, + image: "/images/member9.png", + }, + { + id: 12, + image: "/images/member10.png", + }, + ], + }, + { + id: 3, + projectName: "E-Commerce Development", + category: "React JS", + totalTask: "60/100", + teamMembers: [ + { + id: 6, + image: "/images/member1.png", + }, + { + id: 5, + image: "/images/member2.png", + }, + { + id: 4, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member5.png", + }, + { + id: 1, + image: "/images/member6.png", + }, + ], + }, + { + id: 4, + projectName: "Digital Marketing", + category: "SEO", + totalTask: "10/50", + teamMembers: [ + { + id: 5, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member6.png", + }, + { + id: 1, + image: "/images/member12.png", + }, + { + id: 4, + image: "/images/member13.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member3.png", + }, + ], + }, + { + id: 5, + projectName: "WordPress Development", + category: "WordPress", + totalTask: "45/100", + teamMembers: [ + { + id: 1, + image: "/images/member8.png", + }, + { + id: 2, + image: "/images/member9.png", + }, + { + id: 3, + image: "/images/member10.png", + }, + { + id: 4, + image: "/images/member11.png", + }, + { + id: 5, + image: "/images/member12.png", + }, + { + id: 6, + image: "/images/member13.png", + }, + ], + }, +] + +const NewProjects = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + New Projects + + + + + + + + + Create Project + Open Project + Overview + + + + {/* Card */} + + + + + + + + + 41 + + + + Added: 13 Projects this month + + + + + + + 5.80% + + + + + + {/* Card */} + {newProjects.map((project) => ( + + + + + + + + + + + + + + + + + + + + + {project.projectName} + + + + {project.category} + + + + + {project.totalTask} + + + + {project.teamMembers.map((member) => ( + + ))} + + + + ))} + + + ); +}; + +export default NewProjects; diff --git a/components/Projects/KanbanBoard/ToDo.js b/components/Projects/KanbanBoard/ToDo.js new file mode 100644 index 0000000..e36e4a4 --- /dev/null +++ b/components/Projects/KanbanBoard/ToDo.js @@ -0,0 +1,420 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import Checkbox from '@mui/material/Checkbox'; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +const newProjects = [ + { + id: 1, + projectName: "Mobile App Development", + category: "Mobile App", + totalTask: "10/50", + teamMembers: [ + { + id: 1, + image: "/images/member1.png", + }, + { + id: 2, + image: "/images/member2.png", + }, + { + id: 3, + image: "/images/member3.png", + }, + { + id: 4, + image: "/images/member4.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member6.png", + }, + ], + }, + { + id: 2, + projectName: "Web Development", + category: "React JS", + totalTask: "50/100", + teamMembers: [ + { + id: 7, + image: "/images/member5.png", + }, + { + id: 8, + image: "/images/member6.png", + }, + { + id: 9, + image: "/images/member7.png", + }, + { + id: 10, + image: "/images/member8.png", + }, + { + id: 11, + image: "/images/member9.png", + }, + { + id: 12, + image: "/images/member10.png", + }, + ], + }, + { + id: 3, + projectName: "E-Commerce Development", + category: "React JS", + totalTask: "60/100", + teamMembers: [ + { + id: 6, + image: "/images/member1.png", + }, + { + id: 5, + image: "/images/member2.png", + }, + { + id: 4, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member5.png", + }, + { + id: 1, + image: "/images/member6.png", + }, + ], + }, + { + id: 4, + projectName: "Digital Marketing", + category: "SEO", + totalTask: "10/50", + teamMembers: [ + { + id: 5, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member6.png", + }, + { + id: 1, + image: "/images/member12.png", + }, + { + id: 4, + image: "/images/member13.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member3.png", + }, + ], + }, + { + id: 5, + projectName: "WordPress Development", + category: "WordPress", + totalTask: "45/100", + teamMembers: [ + { + id: 1, + image: "/images/member8.png", + }, + { + id: 2, + image: "/images/member9.png", + }, + { + id: 3, + image: "/images/member10.png", + }, + { + id: 4, + image: "/images/member11.png", + }, + { + id: 5, + image: "/images/member12.png", + }, + { + id: 6, + image: "/images/member13.png", + }, + ], + }, +] + +const ToDo = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + To Do + + + + + + + + + Create Project + Open Project + Overview + + + + {/* Card */} + + + + + + + + + 50 + + + + Added: 13 Projects this month + + + + + + + 5.80% + + + + + + {/* Card */} + {newProjects.map((project) => ( + + + + + + + + + + + + + + + + + + + + + {project.projectName} + + + + {project.category} + + + + + {project.totalTask} + + + + {project.teamMembers.map((member) => ( + + ))} + + + + ))} + + + ); +}; + +export default ToDo; diff --git a/components/Projects/ProjectCreate/CategoriesSelect.js b/components/Projects/ProjectCreate/CategoriesSelect.js new file mode 100644 index 0000000..e8ffa47 --- /dev/null +++ b/components/Projects/ProjectCreate/CategoriesSelect.js @@ -0,0 +1,89 @@ +import * as React from "react"; +import { useTheme } from "@mui/material/styles"; +import Box from "@mui/material/Box"; +import OutlinedInput from "@mui/material/OutlinedInput"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import Chip from "@mui/material/Chip"; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + "UI/UX Design", + "Frontend Development", + "Backend Development", + "React App", + "E-commerce", + "PSD To HTML", +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +const Categories = () => { + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === "string" ? value.split(",") : value + ); + }; + + return ( + <> + + Select + + + + ); +}; + +export default Categories; diff --git a/components/Projects/ProjectCreate/MemberSelect.js b/components/Projects/ProjectCreate/MemberSelect.js new file mode 100644 index 0000000..1c51c15 --- /dev/null +++ b/components/Projects/ProjectCreate/MemberSelect.js @@ -0,0 +1,91 @@ +import * as React from 'react'; +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; +import Chip from '@mui/material/Chip'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +export default function MemberSelect() { + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( +
+ + Select + + +
+ ); +} \ No newline at end of file diff --git a/components/Projects/Task/CompletedTasks.js b/components/Projects/Task/CompletedTasks.js new file mode 100644 index 0000000..7f5fa50 --- /dev/null +++ b/components/Projects/Task/CompletedTasks.js @@ -0,0 +1,224 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const CompletedTasks = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + // Chart + const series = [ + { + name: "Task", + data: [21, 22, 10, 28, 16, 21, 13, 30], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#757FEF"], + plotOptions: { + bar: { + columnWidth: "30%", + distributed: true, + borderRadius: 6, + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + show: false, + }, + xaxis: { + categories: [ + ["1 Jan"], + ["2 Jan"], + ["3 Jan"], + ["4 Jan"], + ["5 Jan"], + ["6 Jan"], + ["7 Jan"], + ["8 Jan"], + ], + labels: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + show: false, + }, + grid: { + show: false, + }, + fill: { + opacity: 1, + }, + }; + + return ( + <> + + + + Completed Tasks + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Target + + + {" "} + 20k + + + + + + Last Week + + + {" "} + 5.50k + + + + + + Last Month + + + {" "} + 50k + + + + + + ); +}; + +export default CompletedTasks; diff --git a/components/Projects/Task/MyTasks.js b/components/Projects/Task/MyTasks.js new file mode 100644 index 0000000..c2acb8b --- /dev/null +++ b/components/Projects/Task/MyTasks.js @@ -0,0 +1,672 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import IconButton from "@mui/material/IconButton"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Tooltip from "@mui/material/Tooltip"; +import Checkbox from '@mui/material/Checkbox'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; +import Grid from "@mui/material/Grid"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; +import { styled } from '@mui/material/styles'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import CloseIcon from '@mui/icons-material/Close'; + +// Add Task modal +const BootstrapDialog = styled(Dialog)(({ theme }) => ({ + '& .MuiDialogContent-root': { + padding: theme.spacing(2), + }, + '& .MuiDialogActions-root': { + padding: theme.spacing(1), + }, +})); + +function BootstrapDialogTitle(props) { + const { children, onClose, ...other } = props; + + return ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Add Task Modal + +function MyTask(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +MyTask.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(task, dedline, status, badgeClass, assignee, memberName) { + return { + task, + dedline, + status, + badgeClass, + assignee, + memberName, + }; +} + +const rows = [ + createData( + "Public Beta Release", + "14 Feb 2022", + "On Going", + "successBadge", + "/images/user1.png", + "Wade" + ), + createData( + "Fix Platform Errors", + "15 Mar 2022", + "Completed", + "primaryBadge", + "/images/user2.png", + "Dave" + ), + createData( + "Launch our Mobile App", + "15 Apr 2022", + "On Going", + "successBadge", + "/images/user3.png", + "Liam" + ), + createData( + "Add the New Pricing Page", + "15 May 2022", + "Pending", + "dangerBadge", + "/images/user4.png", + "Nathaniel" + ), + createData( + "Redesign New Online Shop", + "15 Jun 2022", + "On Going", + "successBadge", + "/images/user5.png", + "Lewis" + ), + createData( + "Material Ui Design", + "15 Jul 2022", + "On Going", + "successBadge", + "/images/user6.png", + "Milton" + ), + createData( + "Add Progress Track", + "15 Mar 2022", + "Completed", + "primaryBadge", + "/images/user7.png", + "Claude" + ), + createData( + "Web Design", + "15 Aug 2022", + "On Going", + "successBadge", + "/images/user8.png", + "Harvey" + ), + createData( + "Web Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user9.png", + "Blake" + ), + createData( + "React App Development", + "15 Dec 2022", + "Completed", + "primaryBadge", + "/images/user10.png", + "Antonio" + ), + createData( + "eCommerce Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user11.png", + "Conner" + ), + createData( + "App Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user12.png", + "Shane" + ), +].sort((a, b) => (a.task < b.task ? -1 : 1)); + +const MyTasks = () => { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(8); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + // Add task modal + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + // End Add Task Modal + + return ( + <> + + + + My Tasks + + + + + + + + + + + Task + + + Dedline + + + Status + + + Assignee + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + {row.task} + + + + {row.dedline} + + + + {row.status} + + + + + {row.memberName} + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + {/* Add task modal */} + + + + + Add Task + + + + + + + + + + + + + Task + + + + + + + + Member + + + + + + + + Dedline + + + + + + + + Status + + + + + + + + + + + + + + ); +}; + +export default MyTasks; diff --git a/components/Projects/Task/TasksPerformance/TasksPerformanceChart.js b/components/Projects/Task/TasksPerformance/TasksPerformanceChart.js new file mode 100644 index 0000000..78b52e0 --- /dev/null +++ b/components/Projects/Task/TasksPerformance/TasksPerformanceChart.js @@ -0,0 +1,141 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class TasksPerformanceChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [76, 67, 61, 90], + options: { + plotOptions: { + radialBar: { + offsetY: 0, + startAngle: 0, + endAngle: 270, + hollow: { + margin: 5, + size: "25%", + background: "transparent", + image: undefined, + }, + dataLabels: { + name: { + show: false, + }, + value: { + show: false, + }, + }, + }, + }, + colors: ["#757FEF", "#9EA5F4", "#C8CCF9", "#F1F2FD"], + labels: ["Completed", "Active", "Assigned", "Pending"], + legend: { + show: true, + floating: true, + fontSize: "14px", + position: "left", + offsetY: 0, + labels: { + color: "#5B5B98" + }, + markers: { + size: 0, + }, + formatter: function (seriesName, opts) { + return seriesName + ": " + opts.w.globals.series[opts.seriesIndex]; + }, + itemMargin: { + vertical: 3, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + legend: { + show: false, + }, + chart: { + height: 270 + }, + }, + }, + ], + fill: { + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 30k + + + + + + Last Week + + + {" "} + 40k + + + + + + Last Month + + + {" "} + 60k + + + + + ); + } +} + +export default TasksPerformanceChart; diff --git a/components/Projects/Task/TasksPerformance/index.js b/components/Projects/Task/TasksPerformance/index.js new file mode 100644 index 0000000..3364fb8 --- /dev/null +++ b/components/Projects/Task/TasksPerformance/index.js @@ -0,0 +1,110 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import TasksPerformanceChart from "./TasksPerformanceChart"; + +const TasksPerformance = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Tasks Performance + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TasksPerformanceChart */} + + + + ); +}; + +export default TasksPerformance; diff --git a/components/Projects/Task/TotalUsers/TotalUsersChart.js b/components/Projects/Task/TotalUsers/TotalUsersChart.js new file mode 100644 index 0000000..88173da --- /dev/null +++ b/components/Projects/Task/TotalUsers/TotalUsersChart.js @@ -0,0 +1,121 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'; +import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'; + +class TotalUsersChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [44, 55, 13], + options: { + labels: ["Target", "Last week", "Last Month"], + colors: ["#757FEF", "#90C6E0", "#E040FB"], + legend: { + show: false, + }, + tooltip: { + y: { + formatter: function (val) { + return "" + val + "k"; + }, + }, + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + height: 270 + }, + } + }] + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + 18k + + + + + + Last Week + + + 5.21k + + + + + + Last Month + + + 32k + + + + + ); + } +} + +export default TotalUsersChart; diff --git a/components/Projects/Task/TotalUsers/index.js b/components/Projects/Task/TotalUsers/index.js new file mode 100644 index 0000000..5bee2f2 --- /dev/null +++ b/components/Projects/Task/TotalUsers/index.js @@ -0,0 +1,110 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import IconButton from "@mui/material/IconButton"; +import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; +import TotalUsersChart from "./TotalUsersChart"; + +const TotalUsers = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Total Users + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TotalUsersChart */} + + + + ); +}; + +export default TotalUsers; diff --git a/components/Settings/Account/ChangePassword.js b/components/Settings/Account/ChangePassword.js new file mode 100644 index 0000000..dd71ad5 --- /dev/null +++ b/components/Settings/Account/ChangePassword.js @@ -0,0 +1,147 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import TextField from '@mui/material/TextField'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; + +export default function ChangePassword() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get('email'), + password: data.get('password'), + }); + }; + + return ( + <> + + + + Security + + + + Update your password here. + + + + + + + + Old Password + + + + + + + New Password + + + + + + + Confirm Password + + + + + + + Email Address + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/Settings/Account/PrivacyPolicyContent.js b/components/Settings/Account/PrivacyPolicyContent.js new file mode 100644 index 0000000..a5eace4 --- /dev/null +++ b/components/Settings/Account/PrivacyPolicyContent.js @@ -0,0 +1,102 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import Button from '@mui/material/Button'; + +export default function PrivacyPolicyContent() { + return ( + <> + + + + Security: + + + + + Two-factor Authentication + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + Secondary Verification + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + Backup Codes + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + Desktop, email, chat, purchase notifications + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + Delete this account : + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/Settings/Account/Profile.js b/components/Settings/Account/Profile.js new file mode 100644 index 0000000..f47b541 --- /dev/null +++ b/components/Settings/Account/Profile.js @@ -0,0 +1,155 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import TextField from '@mui/material/TextField'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; + +export default function Profile() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get('email'), + password: data.get('password'), + }); + }; + + return ( + <> + + + + Profile + + + + Update your photo and personal details here. + + + + + + + + First Name + + + + + + + Last Name + + + + + + + + Email Address + + + + + + + + Upload Image + + + + + + profile + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/Settings/NavBar.js b/components/Settings/NavBar.js new file mode 100644 index 0000000..ef47270 --- /dev/null +++ b/components/Settings/NavBar.js @@ -0,0 +1,34 @@ +import React from 'react'; +import Link from 'next/link'; +import { useRouter } from "next/router"; +import styles from '@/components/Settings/NavBar.module.css' + +const NavBar = () => { + const router = useRouter(); + + return ( + <> + + + ) +} + +export default NavBar; \ No newline at end of file diff --git a/components/Settings/NavBar.module.css b/components/Settings/NavBar.module.css new file mode 100644 index 0000000..255198a --- /dev/null +++ b/components/Settings/NavBar.module.css @@ -0,0 +1,37 @@ +.topNavStyle { + margin-bottom: 10px; +} +.topNavStyle ul { + list-style-type: none; + padding: 0; + margin: 0; +} +.topNavStyle ul li { + display: inline-block; + margin-right: 10px; + margin-bottom: 10px; +} +.topNavStyle ul li:last-child { + margin-right: 0; +} +.topNavStyle ul li a { + background-color: rgba(161, 98, 247, 0.1); + padding: 10px 25px; + display: inline-block; + border-radius: 5px; + text-decoration: none; + font-weight: 500; +} +.topNavStyle ul li a:hover, .topNavStyle ul li.active a { + background-color: var(--primaryColor); + color: #fff; +} + +/* For RTL Style */ +[dir="rtl"] .topNavStyle ul li { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .topNavStyle ul li:last-child { + margin-left: 0; +} \ No newline at end of file diff --git a/components/UIElements/Accordion/BasicAccordion.js b/components/UIElements/Accordion/BasicAccordion.js new file mode 100644 index 0000000..b8c6552 --- /dev/null +++ b/components/UIElements/Accordion/BasicAccordion.js @@ -0,0 +1,75 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Accordion from '@mui/material/Accordion'; +import AccordionSummary from '@mui/material/AccordionSummary'; +import AccordionDetails from '@mui/material/AccordionDetails'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; + +export default function BasicAccordion() { + return ( + <> + + + Basic Accordion + + + + } + aria-controls="panel1a-content" + id="panel1a-header" + > + Accordion 1 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. + + + + + + } + aria-controls="panel2a-content" + id="panel2a-header" + > + Accordion 2 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. + + + + + + } + aria-controls="panel3a-content" + id="panel3a-header" + > + Disabled Accordion + + + + + ); +} diff --git a/components/UIElements/Accordion/ControlledAccordion.js b/components/UIElements/Accordion/ControlledAccordion.js new file mode 100644 index 0000000..abd53ae --- /dev/null +++ b/components/UIElements/Accordion/ControlledAccordion.js @@ -0,0 +1,141 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Accordion from "@mui/material/Accordion"; +import AccordionDetails from "@mui/material/AccordionDetails"; +import AccordionSummary from "@mui/material/AccordionSummary"; +import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; + +export default function ControlledAccordion() { + const [expanded, setExpanded] = React.useState(false); + + const handleChange = (panel) => (event, isExpanded) => { + setExpanded(isExpanded ? panel : false); + }; + + return ( + <> + + + Controlled Accordion + + + + } + aria-controls="panel1bh-content" + id="panel1bh-header" + > + + General settings + + + I am an accordion + + + + + + Nulla facilisi. Phasellus sollicitudin nulla et quam mattis + feugiat. Aliquam eget maximus est, id dignissim quam. + + + + + + } + aria-controls="panel2bh-content" + id="panel2bh-header" + > + + Users + + + You are currently not an owner + + + + + + Donec placerat, lectus sed mattis semper, neque lectus feugiat + lectus, varius pulvinar diam eros in elit. Pellentesque convallis + laoreet laoreet. + + + + + + } + aria-controls="panel3bh-content" + id="panel3bh-header" + > + + Advanced settings + + + Filtering has been entirely disabled for whole web server + + + + + + Nunc vitae orci ultricies, auctor nunc in, volutpat nisl. Integer + sit amet egestas eros, vitae egestas augue. Duis vel est augue. + + + + + + } + aria-controls="panel4bh-content" + id="panel4bh-header" + > + + Personal data + + + + + + Nunc vitae orci ultricies, auctor nunc in, volutpat nisl. Integer + sit amet egestas eros, vitae egestas augue. Duis vel est augue. + + + + + + ); +} diff --git a/components/UIElements/Accordion/Customization.js b/components/UIElements/Accordion/Customization.js new file mode 100644 index 0000000..3a7941a --- /dev/null +++ b/components/UIElements/Accordion/Customization.js @@ -0,0 +1,133 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from "@mui/material/styles"; +import ArrowForwardIosSharpIcon from "@mui/icons-material/ArrowForwardIosSharp"; +import MuiAccordion from "@mui/material/Accordion"; +import MuiAccordionSummary from "@mui/material/AccordionSummary"; +import MuiAccordionDetails from "@mui/material/AccordionDetails"; + +const Accordion = styled((props) => ( + +))(({ theme }) => ({ + border: `1px solid ${theme.palette.divider}`, + "&:not(:last-child)": { + borderBottom: 0, + }, + "&:before": { + display: "none", + }, +})); + +const AccordionSummary = styled((props) => ( + } + {...props} + /> +))(({ theme }) => ({ + backgroundColor: + theme.palette.mode === "dark" + ? "rgba(255, 255, 255, .05)" + : "rgba(0, 0, 0, .03)", + flexDirection: "row-reverse", + "& .MuiAccordionSummary-expandIconWrapper.Mui-expanded": { + transform: "rotate(90deg)", + }, + "& .MuiAccordionSummary-content": { + marginLeft: theme.spacing(1), + }, +})); + +const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({ + padding: theme.spacing(2), + borderTop: "1px solid rgba(0, 0, 0, .125)", +})); + +export default function Customization() { + const [expanded, setExpanded] = React.useState("panel1"); + + const handleChange = (panel) => (event, newExpanded) => { + setExpanded(newExpanded ? panel : false); + }; + + return ( + <> + + + Customization + + + + + Collapsible Group Item #1 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + + + Collapsible Group Item #2 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + + + Collapsible Group Item #3 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + + ); +} diff --git a/components/UIElements/Alerts/Actions.js b/components/UIElements/Alerts/Actions.js new file mode 100644 index 0000000..263babd --- /dev/null +++ b/components/UIElements/Alerts/Actions.js @@ -0,0 +1,47 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import Stack from "@mui/material/Stack"; +import Button from '@mui/material/Button'; + +const Actions = () => { + return ( + <> + + + Actions + + + + {}}>This is a success alert — check it out! + + UNDO + + } + > + This is a success alert — check it out! + + + + + ); +}; + +export default Actions; diff --git a/components/UIElements/Alerts/BasicAlerts.js b/components/UIElements/Alerts/BasicAlerts.js new file mode 100644 index 0000000..30624b4 --- /dev/null +++ b/components/UIElements/Alerts/BasicAlerts.js @@ -0,0 +1,48 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import Stack from "@mui/material/Stack"; + +const BasicAlerts = () => { + return ( + <> + + + Basic Alerts + + + + This is an error alert — check it out! + + + This is a warning alert — check it out! + + + This is an info alert — check it out! + + + This is a success alert — check it out! + + + + + ); +}; + +export default BasicAlerts; diff --git a/components/UIElements/Alerts/Color.js b/components/UIElements/Alerts/Color.js new file mode 100644 index 0000000..28badad --- /dev/null +++ b/components/UIElements/Alerts/Color.js @@ -0,0 +1,36 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from '@mui/material/Alert'; + +const Color = () => { + return ( + <> + + + Color + + + + This is a success alert — check it out! + + + + ); +}; + +export default Color; diff --git a/components/UIElements/Alerts/DescriptionAlerts.js b/components/UIElements/Alerts/DescriptionAlerts.js new file mode 100644 index 0000000..f5ae92c --- /dev/null +++ b/components/UIElements/Alerts/DescriptionAlerts.js @@ -0,0 +1,56 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import Stack from "@mui/material/Stack"; +import AlertTitle from '@mui/material/AlertTitle'; + +const DescriptionAlerts = () => { + return ( + <> + + + Description Alerts + + + + + Error + This is an error alert — check it out! + + + + Warning + This is a warning alert — check it out! + + + + Info + This is an info alert — check it out! + + + + Success + This is a success alert — check it out! + + + + + ); +}; + +export default DescriptionAlerts; diff --git a/components/UIElements/Alerts/Filled.js b/components/UIElements/Alerts/Filled.js new file mode 100644 index 0000000..aa22cde --- /dev/null +++ b/components/UIElements/Alerts/Filled.js @@ -0,0 +1,48 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from '@mui/material/Alert'; +import Stack from '@mui/material/Stack'; + +const Filled = () => { + return ( + <> + + + Filled + + + + + This is an error alert — check it out! + + + This is a warning alert — check it out! + + + This is an info alert — check it out! + + + This is a success alert — check it out! + + + + + ); +}; + +export default Filled; diff --git a/components/UIElements/Alerts/Icons.js b/components/UIElements/Alerts/Icons.js new file mode 100644 index 0000000..201fb1e --- /dev/null +++ b/components/UIElements/Alerts/Icons.js @@ -0,0 +1,51 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import CheckIcon from '@mui/icons-material/Check'; +import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; +import Stack from '@mui/material/Stack'; + +const Icons = () => { + return ( + <> + + + Icons + + + + } severity="success"> + This is a success alert — check it out! + + , + }} + > + This is a success alert — check it out! + + + This is a success alert — check it out! + + + + + ); +}; + +export default Icons; diff --git a/components/UIElements/Alerts/Transition.js b/components/UIElements/Alerts/Transition.js new file mode 100644 index 0000000..c597ce3 --- /dev/null +++ b/components/UIElements/Alerts/Transition.js @@ -0,0 +1,68 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import IconButton from '@mui/material/IconButton'; +import Collapse from '@mui/material/Collapse'; +import Button from '@mui/material/Button'; +import CloseIcon from '@mui/icons-material/Close'; + +const Transition = () => { + const [open, setOpen] = React.useState(true); + return ( + <> + + + Transition + + + + + { + setOpen(false); + }} + > + + + } + sx={{ mb: 2 }} + > + Close me! + + + + + + + ); +}; + +export default Transition; diff --git a/components/UIElements/Alerts/Variants.js b/components/UIElements/Alerts/Variants.js new file mode 100644 index 0000000..36cf49f --- /dev/null +++ b/components/UIElements/Alerts/Variants.js @@ -0,0 +1,48 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from '@mui/material/Alert'; +import Stack from '@mui/material/Stack'; + +const Variants = () => { + return ( + <> + + + Variants + + + + + This is an error alert — check it out! + + + This is a warning alert — check it out! + + + This is an info alert — check it out! + + + This is a success alert — check it out! + + + + + ); +}; + +export default Variants; diff --git a/components/UIElements/Autocomplete/ComboBox.js b/components/UIElements/Autocomplete/ComboBox.js new file mode 100644 index 0000000..bee2572 --- /dev/null +++ b/components/UIElements/Autocomplete/ComboBox.js @@ -0,0 +1,172 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import TextField from "@mui/material/TextField"; +import Autocomplete from "@mui/material/Autocomplete"; + +const ComboBox = () => { + return ( + <> + + + Combo Box + + + } + /> + + + ); +}; + +export default ComboBox; + +// Top 100 films as rated by IMDb users. http://www.imdb.com/chart/top +const top100Films = [ + { label: "The Shawshank Redemption", year: 1994 }, + { label: "The Godfather", year: 1972 }, + { label: "The Godfather: Part II", year: 1974 }, + { label: "The Dark Knight", year: 2008 }, + { label: "12 Angry Men", year: 1957 }, + { label: "Schindler's List", year: 1993 }, + { label: "Pulp Fiction", year: 1994 }, + { + label: "The Lord of the Rings: The Return of the King", + year: 2003, + }, + { label: "The Good, the Bad and the Ugly", year: 1966 }, + { label: "Fight Club", year: 1999 }, + { + label: "The Lord of the Rings: The Fellowship of the Ring", + year: 2001, + }, + { + label: "Star Wars: Episode V - The Empire Strikes Back", + year: 1980, + }, + { label: "Forrest Gump", year: 1994 }, + { label: "Inception", year: 2010 }, + { + label: "The Lord of the Rings: The Two Towers", + year: 2002, + }, + { label: "One Flew Over the Cuckoo's Nest", year: 1975 }, + { label: "Goodfellas", year: 1990 }, + { label: "The Matrix", year: 1999 }, + { label: "Seven Samurai", year: 1954 }, + { + label: "Star Wars: Episode IV - A New Hope", + year: 1977, + }, + { label: "City of God", year: 2002 }, + { label: "Se7en", year: 1995 }, + { label: "The Silence of the Lambs", year: 1991 }, + { label: "It's a Wonderful Life", year: 1946 }, + { label: "Life Is Beautiful", year: 1997 }, + { label: "The Usual Suspects", year: 1995 }, + { label: "Léon: The Professional", year: 1994 }, + { label: "Spirited Away", year: 2001 }, + { label: "Saving Private Ryan", year: 1998 }, + { label: "Once Upon a Time in the West", year: 1968 }, + { label: "American History X", year: 1998 }, + { label: "Interstellar", year: 2014 }, + { label: "Casablanca", year: 1942 }, + { label: "City Lights", year: 1931 }, + { label: "Psycho", year: 1960 }, + { label: "The Green Mile", year: 1999 }, + { label: "The Intouchables", year: 2011 }, + { label: "Modern Times", year: 1936 }, + { label: "Raiders of the Lost Ark", year: 1981 }, + { label: "Rear Window", year: 1954 }, + { label: "The Pianist", year: 2002 }, + { label: "The Departed", year: 2006 }, + { label: "Terminator 2: Judgment Day", year: 1991 }, + { label: "Back to the Future", year: 1985 }, + { label: "Whiplash", year: 2014 }, + { label: "Gladiator", year: 2000 }, + { label: "Memento", year: 2000 }, + { label: "The Prestige", year: 2006 }, + { label: "The Lion King", year: 1994 }, + { label: "Apocalypse Now", year: 1979 }, + { label: "Alien", year: 1979 }, + { label: "Sunset Boulevard", year: 1950 }, + { + label: + "Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb", + year: 1964, + }, + { label: "The Great Dictator", year: 1940 }, + { label: "Cinema Paradiso", year: 1988 }, + { label: "The Lives of Others", year: 2006 }, + { label: "Grave of the Fireflies", year: 1988 }, + { label: "Paths of Glory", year: 1957 }, + { label: "Django Unchained", year: 2012 }, + { label: "The Shining", year: 1980 }, + { label: "WALL·E", year: 2008 }, + { label: "American Beauty", year: 1999 }, + { label: "The Dark Knight Rises", year: 2012 }, + { label: "Princess Mononoke", year: 1997 }, + { label: "Aliens", year: 1986 }, + { label: "Oldboy", year: 2003 }, + { label: "Once Upon a Time in America", year: 1984 }, + { label: "Witness for the Prosecution", year: 1957 }, + { label: "Das Boot", year: 1981 }, + { label: "Citizen Kane", year: 1941 }, + { label: "North by Northwest", year: 1959 }, + { label: "Vertigo", year: 1958 }, + { + label: "Star Wars: Episode VI - Return of the Jedi", + year: 1983, + }, + { label: "Reservoir Dogs", year: 1992 }, + { label: "Braveheart", year: 1995 }, + { label: "M", year: 1931 }, + { label: "Requiem for a Dream", year: 2000 }, + { label: "Amélie", year: 2001 }, + { label: "A Clockwork Orange", year: 1971 }, + { label: "Like Stars on Earth", year: 2007 }, + { label: "Taxi Driver", year: 1976 }, + { label: "Lawrence of Arabia", year: 1962 }, + { label: "Double Indemnity", year: 1944 }, + { + label: "Eternal Sunshine of the Spotless Mind", + year: 2004, + }, + { label: "Amadeus", year: 1984 }, + { label: "To Kill a Mockingbird", year: 1962 }, + { label: "Toy Story 3", year: 2010 }, + { label: "Logan", year: 2017 }, + { label: "Full Metal Jacket", year: 1987 }, + { label: "Dangal", year: 2016 }, + { label: "The Sting", year: 1973 }, + { label: "2001: A Space Odyssey", year: 1968 }, + { label: "Singin' in the Rain", year: 1952 }, + { label: "Toy Story", year: 1995 }, + { label: "Bicycle Thieves", year: 1948 }, + { label: "The Kid", year: 1921 }, + { label: "Inglourious Basterds", year: 2009 }, + { label: "Snatch", year: 2000 }, + { label: "3 Idiots", year: 2009 }, + { label: "Monty Python and the Holy Grail", year: 1975 }, +]; diff --git a/components/UIElements/Autocomplete/CountrySelect.js b/components/UIElements/Autocomplete/CountrySelect.js new file mode 100644 index 0000000..f3cebfc --- /dev/null +++ b/components/UIElements/Autocomplete/CountrySelect.js @@ -0,0 +1,494 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from "@mui/material/Box"; +import TextField from "@mui/material/TextField"; +import Autocomplete from "@mui/material/Autocomplete"; + +const CountrySelect = () => { + return ( + <> + + + Country Select + + + option.label} + renderOption={(props, option) => ( + img": { mr: 2, flexShrink: 0 } }} + {...props} + > + + {option.label} ({option.code}) +{option.phone} + + )} + renderInput={(params) => ( + + )} + /> + + + ); +}; + +export default CountrySelect; + +// From https://bitbucket.org/atlassian/atlaskit-mk-2/raw/4ad0e56649c3e6c973e226b7efaeb28cb240ccb0/packages/core/select/src/data/countries.js +const countries = [ + { code: "AD", label: "Andorra", phone: "376" }, + { + code: "AE", + label: "United Arab Emirates", + phone: "971", + }, + { code: "AF", label: "Afghanistan", phone: "93" }, + { + code: "AG", + label: "Antigua and Barbuda", + phone: "1-268", + }, + { code: "AI", label: "Anguilla", phone: "1-264" }, + { code: "AL", label: "Albania", phone: "355" }, + { code: "AM", label: "Armenia", phone: "374" }, + { code: "AO", label: "Angola", phone: "244" }, + { code: "AQ", label: "Antarctica", phone: "672" }, + { code: "AR", label: "Argentina", phone: "54" }, + { code: "AS", label: "American Samoa", phone: "1-684" }, + { code: "AT", label: "Austria", phone: "43" }, + { + code: "AU", + label: "Australia", + phone: "61", + suggested: true, + }, + { code: "AW", label: "Aruba", phone: "297" }, + { code: "AX", label: "Alland Islands", phone: "358" }, + { code: "AZ", label: "Azerbaijan", phone: "994" }, + { + code: "BA", + label: "Bosnia and Herzegovina", + phone: "387", + }, + { code: "BB", label: "Barbados", phone: "1-246" }, + { code: "BD", label: "Bangladesh", phone: "880" }, + { code: "BE", label: "Belgium", phone: "32" }, + { code: "BF", label: "Burkina Faso", phone: "226" }, + { code: "BG", label: "Bulgaria", phone: "359" }, + { code: "BH", label: "Bahrain", phone: "973" }, + { code: "BI", label: "Burundi", phone: "257" }, + { code: "BJ", label: "Benin", phone: "229" }, + { code: "BL", label: "Saint Barthelemy", phone: "590" }, + { code: "BM", label: "Bermuda", phone: "1-441" }, + { code: "BN", label: "Brunei Darussalam", phone: "673" }, + { code: "BO", label: "Bolivia", phone: "591" }, + { code: "BR", label: "Brazil", phone: "55" }, + { code: "BS", label: "Bahamas", phone: "1-242" }, + { code: "BT", label: "Bhutan", phone: "975" }, + { code: "BV", label: "Bouvet Island", phone: "47" }, + { code: "BW", label: "Botswana", phone: "267" }, + { code: "BY", label: "Belarus", phone: "375" }, + { code: "BZ", label: "Belize", phone: "501" }, + { + code: "CA", + label: "Canada", + phone: "1", + suggested: true, + }, + { + code: "CC", + label: "Cocos (Keeling) Islands", + phone: "61", + }, + { + code: "CD", + label: "Congo, Democratic Republic of the", + phone: "243", + }, + { + code: "CF", + label: "Central African Republic", + phone: "236", + }, + { + code: "CG", + label: "Congo, Republic of the", + phone: "242", + }, + { code: "CH", label: "Switzerland", phone: "41" }, + { code: "CI", label: "Cote d'Ivoire", phone: "225" }, + { code: "CK", label: "Cook Islands", phone: "682" }, + { code: "CL", label: "Chile", phone: "56" }, + { code: "CM", label: "Cameroon", phone: "237" }, + { code: "CN", label: "China", phone: "86" }, + { code: "CO", label: "Colombia", phone: "57" }, + { code: "CR", label: "Costa Rica", phone: "506" }, + { code: "CU", label: "Cuba", phone: "53" }, + { code: "CV", label: "Cape Verde", phone: "238" }, + { code: "CW", label: "Curacao", phone: "599" }, + { code: "CX", label: "Christmas Island", phone: "61" }, + { code: "CY", label: "Cyprus", phone: "357" }, + { code: "CZ", label: "Czech Republic", phone: "420" }, + { + code: "DE", + label: "Germany", + phone: "49", + suggested: true, + }, + { code: "DJ", label: "Djibouti", phone: "253" }, + { code: "DK", label: "Denmark", phone: "45" }, + { code: "DM", label: "Dominica", phone: "1-767" }, + { + code: "DO", + label: "Dominican Republic", + phone: "1-809", + }, + { code: "DZ", label: "Algeria", phone: "213" }, + { code: "EC", label: "Ecuador", phone: "593" }, + { code: "EE", label: "Estonia", phone: "372" }, + { code: "EG", label: "Egypt", phone: "20" }, + { code: "EH", label: "Western Sahara", phone: "212" }, + { code: "ER", label: "Eritrea", phone: "291" }, + { code: "ES", label: "Spain", phone: "34" }, + { code: "ET", label: "Ethiopia", phone: "251" }, + { code: "FI", label: "Finland", phone: "358" }, + { code: "FJ", label: "Fiji", phone: "679" }, + { + code: "FK", + label: "Falkland Islands (Malvinas)", + phone: "500", + }, + { + code: "FM", + label: "Micronesia, Federated States of", + phone: "691", + }, + { code: "FO", label: "Faroe Islands", phone: "298" }, + { + code: "FR", + label: "France", + phone: "33", + suggested: true, + }, + { code: "GA", label: "Gabon", phone: "241" }, + { code: "GB", label: "United Kingdom", phone: "44" }, + { code: "GD", label: "Grenada", phone: "1-473" }, + { code: "GE", label: "Georgia", phone: "995" }, + { code: "GF", label: "French Guiana", phone: "594" }, + { code: "GG", label: "Guernsey", phone: "44" }, + { code: "GH", label: "Ghana", phone: "233" }, + { code: "GI", label: "Gibraltar", phone: "350" }, + { code: "GL", label: "Greenland", phone: "299" }, + { code: "GM", label: "Gambia", phone: "220" }, + { code: "GN", label: "Guinea", phone: "224" }, + { code: "GP", label: "Guadeloupe", phone: "590" }, + { code: "GQ", label: "Equatorial Guinea", phone: "240" }, + { code: "GR", label: "Greece", phone: "30" }, + { + code: "GS", + label: "South Georgia and the South Sandwich Islands", + phone: "500", + }, + { code: "GT", label: "Guatemala", phone: "502" }, + { code: "GU", label: "Guam", phone: "1-671" }, + { code: "GW", label: "Guinea-Bissau", phone: "245" }, + { code: "GY", label: "Guyana", phone: "592" }, + { code: "HK", label: "Hong Kong", phone: "852" }, + { + code: "HM", + label: "Heard Island and McDonald Islands", + phone: "672", + }, + { code: "HN", label: "Honduras", phone: "504" }, + { code: "HR", label: "Croatia", phone: "385" }, + { code: "HT", label: "Haiti", phone: "509" }, + { code: "HU", label: "Hungary", phone: "36" }, + { code: "ID", label: "Indonesia", phone: "62" }, + { code: "IE", label: "Ireland", phone: "353" }, + { code: "IL", label: "Israel", phone: "972" }, + { code: "IM", label: "Isle of Man", phone: "44" }, + { code: "IN", label: "India", phone: "91" }, + { + code: "IO", + label: "British Indian Ocean Territory", + phone: "246", + }, + { code: "IQ", label: "Iraq", phone: "964" }, + { + code: "IR", + label: "Iran, Islamic Republic of", + phone: "98", + }, + { code: "IS", label: "Iceland", phone: "354" }, + { code: "IT", label: "Italy", phone: "39" }, + { code: "JE", label: "Jersey", phone: "44" }, + { code: "JM", label: "Jamaica", phone: "1-876" }, + { code: "JO", label: "Jordan", phone: "962" }, + { + code: "JP", + label: "Japan", + phone: "81", + suggested: true, + }, + { code: "KE", label: "Kenya", phone: "254" }, + { code: "KG", label: "Kyrgyzstan", phone: "996" }, + { code: "KH", label: "Cambodia", phone: "855" }, + { code: "KI", label: "Kiribati", phone: "686" }, + { code: "KM", label: "Comoros", phone: "269" }, + { + code: "KN", + label: "Saint Kitts and Nevis", + phone: "1-869", + }, + { + code: "KP", + label: "Korea, Democratic People's Republic of", + phone: "850", + }, + { code: "KR", label: "Korea, Republic of", phone: "82" }, + { code: "KW", label: "Kuwait", phone: "965" }, + { code: "KY", label: "Cayman Islands", phone: "1-345" }, + { code: "KZ", label: "Kazakhstan", phone: "7" }, + { + code: "LA", + label: "Lao People's Democratic Republic", + phone: "856", + }, + { code: "LB", label: "Lebanon", phone: "961" }, + { code: "LC", label: "Saint Lucia", phone: "1-758" }, + { code: "LI", label: "Liechtenstein", phone: "423" }, + { code: "LK", label: "Sri Lanka", phone: "94" }, + { code: "LR", label: "Liberia", phone: "231" }, + { code: "LS", label: "Lesotho", phone: "266" }, + { code: "LT", label: "Lithuania", phone: "370" }, + { code: "LU", label: "Luxembourg", phone: "352" }, + { code: "LV", label: "Latvia", phone: "371" }, + { code: "LY", label: "Libya", phone: "218" }, + { code: "MA", label: "Morocco", phone: "212" }, + { code: "MC", label: "Monaco", phone: "377" }, + { + code: "MD", + label: "Moldova, Republic of", + phone: "373", + }, + { code: "ME", label: "Montenegro", phone: "382" }, + { + code: "MF", + label: "Saint Martin (French part)", + phone: "590", + }, + { code: "MG", label: "Madagascar", phone: "261" }, + { code: "MH", label: "Marshall Islands", phone: "692" }, + { + code: "MK", + label: "Macedonia, the Former Yugoslav Republic of", + phone: "389", + }, + { code: "ML", label: "Mali", phone: "223" }, + { code: "MM", label: "Myanmar", phone: "95" }, + { code: "MN", label: "Mongolia", phone: "976" }, + { code: "MO", label: "Macao", phone: "853" }, + { + code: "MP", + label: "Northern Mariana Islands", + phone: "1-670", + }, + { code: "MQ", label: "Martinique", phone: "596" }, + { code: "MR", label: "Mauritania", phone: "222" }, + { code: "MS", label: "Montserrat", phone: "1-664" }, + { code: "MT", label: "Malta", phone: "356" }, + { code: "MU", label: "Mauritius", phone: "230" }, + { code: "MV", label: "Maldives", phone: "960" }, + { code: "MW", label: "Malawi", phone: "265" }, + { code: "MX", label: "Mexico", phone: "52" }, + { code: "MY", label: "Malaysia", phone: "60" }, + { code: "MZ", label: "Mozambique", phone: "258" }, + { code: "NA", label: "Namibia", phone: "264" }, + { code: "NC", label: "New Caledonia", phone: "687" }, + { code: "NE", label: "Niger", phone: "227" }, + { code: "NF", label: "Norfolk Island", phone: "672" }, + { code: "NG", label: "Nigeria", phone: "234" }, + { code: "NI", label: "Nicaragua", phone: "505" }, + { code: "NL", label: "Netherlands", phone: "31" }, + { code: "NO", label: "Norway", phone: "47" }, + { code: "NP", label: "Nepal", phone: "977" }, + { code: "NR", label: "Nauru", phone: "674" }, + { code: "NU", label: "Niue", phone: "683" }, + { code: "NZ", label: "New Zealand", phone: "64" }, + { code: "OM", label: "Oman", phone: "968" }, + { code: "PA", label: "Panama", phone: "507" }, + { code: "PE", label: "Peru", phone: "51" }, + { code: "PF", label: "French Polynesia", phone: "689" }, + { code: "PG", label: "Papua New Guinea", phone: "675" }, + { code: "PH", label: "Philippines", phone: "63" }, + { code: "PK", label: "Pakistan", phone: "92" }, + { code: "PL", label: "Poland", phone: "48" }, + { + code: "PM", + label: "Saint Pierre and Miquelon", + phone: "508", + }, + { code: "PN", label: "Pitcairn", phone: "870" }, + { code: "PR", label: "Puerto Rico", phone: "1" }, + { + code: "PS", + label: "Palestine, State of", + phone: "970", + }, + { code: "PT", label: "Portugal", phone: "351" }, + { code: "PW", label: "Palau", phone: "680" }, + { code: "PY", label: "Paraguay", phone: "595" }, + { code: "QA", label: "Qatar", phone: "974" }, + { code: "RE", label: "Reunion", phone: "262" }, + { code: "RO", label: "Romania", phone: "40" }, + { code: "RS", label: "Serbia", phone: "381" }, + { code: "RU", label: "Russian Federation", phone: "7" }, + { code: "RW", label: "Rwanda", phone: "250" }, + { code: "SA", label: "Saudi Arabia", phone: "966" }, + { code: "SB", label: "Solomon Islands", phone: "677" }, + { code: "SC", label: "Seychelles", phone: "248" }, + { code: "SD", label: "Sudan", phone: "249" }, + { code: "SE", label: "Sweden", phone: "46" }, + { code: "SG", label: "Singapore", phone: "65" }, + { code: "SH", label: "Saint Helena", phone: "290" }, + { code: "SI", label: "Slovenia", phone: "386" }, + { + code: "SJ", + label: "Svalbard and Jan Mayen", + phone: "47", + }, + { code: "SK", label: "Slovakia", phone: "421" }, + { code: "SL", label: "Sierra Leone", phone: "232" }, + { code: "SM", label: "San Marino", phone: "378" }, + { code: "SN", label: "Senegal", phone: "221" }, + { code: "SO", label: "Somalia", phone: "252" }, + { code: "SR", label: "Suriname", phone: "597" }, + { code: "SS", label: "South Sudan", phone: "211" }, + { + code: "ST", + label: "Sao Tome and Principe", + phone: "239", + }, + { code: "SV", label: "El Salvador", phone: "503" }, + { + code: "SX", + label: "Sint Maarten (Dutch part)", + phone: "1-721", + }, + { + code: "SY", + label: "Syrian Arab Republic", + phone: "963", + }, + { code: "SZ", label: "Swaziland", phone: "268" }, + { + code: "TC", + label: "Turks and Caicos Islands", + phone: "1-649", + }, + { code: "TD", label: "Chad", phone: "235" }, + { + code: "TF", + label: "French Southern Territories", + phone: "262", + }, + { code: "TG", label: "Togo", phone: "228" }, + { code: "TH", label: "Thailand", phone: "66" }, + { code: "TJ", label: "Tajikistan", phone: "992" }, + { code: "TK", label: "Tokelau", phone: "690" }, + { code: "TL", label: "Timor-Leste", phone: "670" }, + { code: "TM", label: "Turkmenistan", phone: "993" }, + { code: "TN", label: "Tunisia", phone: "216" }, + { code: "TO", label: "Tonga", phone: "676" }, + { code: "TR", label: "Turkey", phone: "90" }, + { + code: "TT", + label: "Trinidad and Tobago", + phone: "1-868", + }, + { code: "TV", label: "Tuvalu", phone: "688" }, + { + code: "TW", + label: "Taiwan, Republic of China", + phone: "886", + }, + { + code: "TZ", + label: "United Republic of Tanzania", + phone: "255", + }, + { code: "UA", label: "Ukraine", phone: "380" }, + { code: "UG", label: "Uganda", phone: "256" }, + { + code: "US", + label: "United States", + phone: "1", + suggested: true, + }, + { code: "UY", label: "Uruguay", phone: "598" }, + { code: "UZ", label: "Uzbekistan", phone: "998" }, + { + code: "VA", + label: "Holy See (Vatican City State)", + phone: "379", + }, + { + code: "VC", + label: "Saint Vincent and the Grenadines", + phone: "1-784", + }, + { code: "VE", label: "Venezuela", phone: "58" }, + { + code: "VG", + label: "British Virgin Islands", + phone: "1-284", + }, + { + code: "VI", + label: "US Virgin Islands", + phone: "1-340", + }, + { code: "VN", label: "Vietnam", phone: "84" }, + { code: "VU", label: "Vanuatu", phone: "678" }, + { code: "WF", label: "Wallis and Futuna", phone: "681" }, + { code: "WS", label: "Samoa", phone: "685" }, + { code: "XK", label: "Kosovo", phone: "383" }, + { code: "YE", label: "Yemen", phone: "967" }, + { code: "YT", label: "Mayotte", phone: "262" }, + { code: "ZA", label: "South Africa", phone: "27" }, + { code: "ZM", label: "Zambia", phone: "260" }, + { code: "ZW", label: "Zimbabwe", phone: "263" }, +]; diff --git a/components/UIElements/Autocomplete/CustomizeTextareaComponent.js b/components/UIElements/Autocomplete/CustomizeTextareaComponent.js new file mode 100644 index 0000000..17d51e2 --- /dev/null +++ b/components/UIElements/Autocomplete/CustomizeTextareaComponent.js @@ -0,0 +1,46 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { TextareaAutosize } from '@mui/base/TextareaAutosize'; + +const CustomizeTextareaComponent = () => { + return ( + <> + + + Customize Textarea Component + + + + + + ); +}; + +export default CustomizeTextareaComponent; diff --git a/components/UIElements/Autocomplete/CustomizedHook.js b/components/UIElements/Autocomplete/CustomizedHook.js new file mode 100644 index 0000000..5ee77a2 --- /dev/null +++ b/components/UIElements/Autocomplete/CustomizedHook.js @@ -0,0 +1,363 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from "prop-types"; +import { useAutocomplete } from '@mui/base/useAutocomplete'; +import CheckIcon from "@mui/icons-material/Check"; +import CloseIcon from "@mui/icons-material/Close"; +import { styled } from "@mui/material/styles"; +import { autocompleteClasses } from "@mui/material/Autocomplete"; + +const Root = styled("div")( + ({ theme }) => ` + color: ${ + theme.palette.mode === "dark" ? "rgba(255,255,255,0.65)" : "rgba(0,0,0,.85)" + }; + font-size: 14px; +` +); + +const Label = styled("label")` + padding: 0 0 4px; + line-height: 1.5; + display: block; +`; + +const InputWrapper = styled("div")( + ({ theme }) => ` + width: 300px; + border: 1px solid ${theme.palette.mode === "dark" ? "#434343" : "#d9d9d9"}; + background-color: ${theme.palette.mode === "dark" ? "#141414" : "#fff"}; + border-radius: 4px; + padding: 1px; + display: flex; + flex-wrap: wrap; + + &:hover { + border-color: ${theme.palette.mode === "dark" ? "#177ddc" : "#40a9ff"}; + } + + &.focused { + border-color: ${theme.palette.mode === "dark" ? "#177ddc" : "#40a9ff"}; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + } + + & input { + background-color: ${theme.palette.mode === "dark" ? "#141414" : "#fff"}; + color: ${ + theme.palette.mode === "dark" + ? "rgba(255,255,255,0.65)" + : "rgba(0,0,0,.85)" + }; + height: 30px; + box-sizing: border-box; + padding: 4px 6px; + width: 0; + min-width: 30px; + flex-grow: 1; + border: 0; + margin: 0; + outline: 0; + } +` +); + +function Tag(props) { + const { label, onDelete, ...other } = props; + return ( +
+ {label} + +
+ ); +} + +Tag.propTypes = { + label: PropTypes.string.isRequired, + onDelete: PropTypes.func.isRequired, +}; + +const StyledTag = styled(Tag)( + ({ theme }) => ` + display: flex; + align-items: center; + height: 24px; + margin: 2px; + line-height: 22px; + background-color: ${ + theme.palette.mode === "dark" ? "rgba(255,255,255,0.08)" : "#fafafa" + }; + border: 1px solid ${theme.palette.mode === "dark" ? "#303030" : "#e8e8e8"}; + border-radius: 2px; + box-sizing: content-box; + padding: 0 4px 0 10px; + outline: 0; + overflow: hidden; + + &:focus { + border-color: ${theme.palette.mode === "dark" ? "#177ddc" : "#40a9ff"}; + background-color: ${theme.palette.mode === "dark" ? "#003b57" : "#e6f7ff"}; + } + + & span { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + & svg { + font-size: 12px; + cursor: pointer; + padding: 4px; + } +` +); + +const Listbox = styled("ul")( + ({ theme }) => ` + width: 300px; + margin: 2px 0 0; + padding: 0; + position: absolute; + list-style: none; + background-color: ${theme.palette.mode === "dark" ? "#141414" : "#fff"}; + overflow: auto; + max-height: 250px; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + z-index: 1; + + & li { + padding: 5px 12px; + display: flex; + + & span { + flex-grow: 1; + } + + & svg { + color: transparent; + } + } + + & li[aria-selected='true'] { + background-color: ${theme.palette.mode === "dark" ? "#2b2b2b" : "#fafafa"}; + font-weight: 500; + + & svg { + color: #1890ff; + } + } + + & li.${autocompleteClasses.focused} { + background-color: ${theme.palette.mode === "dark" ? "#003b57" : "#e6f7ff"}; + cursor: pointer; + + & svg { + color: currentColor; + } + } +` +); + +const CustomizedHook = () => { + const { + getRootProps, + getInputLabelProps, + getInputProps, + getTagProps, + getListboxProps, + getOptionProps, + groupedOptions, + value, + focused, + setAnchorEl, + } = useAutocomplete({ + id: "customized-hook-demo", + defaultValue: [top100Films[1]], + multiple: true, + options: top100Films, + getOptionLabel: (option) => option.title, + }); + + return ( + <> + + + Customized Hook + + + +
+ + + {value.map((option, index) => ( + + ))} + + + +
+ {groupedOptions.length > 0 ? ( + + {groupedOptions.map((option, index) => ( +
  • + {option.title} + +
  • + ))} +
    + ) : null} +
    +
    + + ); +}; + +export default CustomizedHook; + +// Top 100 films as rated by IMDb users. http://www.imdb.com/chart/top +const top100Films = [ + { title: "The Shawshank Redemption", year: 1994 }, + { title: "The Godfather", year: 1972 }, + { title: "The Godfather: Part II", year: 1974 }, + { title: "The Dark Knight", year: 2008 }, + { title: "12 Angry Men", year: 1957 }, + { title: "Schindler's List", year: 1993 }, + { title: "Pulp Fiction", year: 1994 }, + { + title: "The Lord of the Rings: The Return of the King", + year: 2003, + }, + { title: "The Good, the Bad and the Ugly", year: 1966 }, + { title: "Fight Club", year: 1999 }, + { + title: "The Lord of the Rings: The Fellowship of the Ring", + year: 2001, + }, + { + title: "Star Wars: Episode V - The Empire Strikes Back", + year: 1980, + }, + { title: "Forrest Gump", year: 1994 }, + { title: "Inception", year: 2010 }, + { + title: "The Lord of the Rings: The Two Towers", + year: 2002, + }, + { title: "One Flew Over the Cuckoo's Nest", year: 1975 }, + { title: "Goodfellas", year: 1990 }, + { title: "The Matrix", year: 1999 }, + { title: "Seven Samurai", year: 1954 }, + { + title: "Star Wars: Episode IV - A New Hope", + year: 1977, + }, + { title: "City of God", year: 2002 }, + { title: "Se7en", year: 1995 }, + { title: "The Silence of the Lambs", year: 1991 }, + { title: "It's a Wonderful Life", year: 1946 }, + { title: "Life Is Beautiful", year: 1997 }, + { title: "The Usual Suspects", year: 1995 }, + { title: "Léon: The Professional", year: 1994 }, + { title: "Spirited Away", year: 2001 }, + { title: "Saving Private Ryan", year: 1998 }, + { title: "Once Upon a Time in the West", year: 1968 }, + { title: "American History X", year: 1998 }, + { title: "Interstellar", year: 2014 }, + { title: "Casablanca", year: 1942 }, + { title: "City Lights", year: 1931 }, + { title: "Psycho", year: 1960 }, + { title: "The Green Mile", year: 1999 }, + { title: "The Intouchables", year: 2011 }, + { title: "Modern Times", year: 1936 }, + { title: "Raiders of the Lost Ark", year: 1981 }, + { title: "Rear Window", year: 1954 }, + { title: "The Pianist", year: 2002 }, + { title: "The Departed", year: 2006 }, + { title: "Terminator 2: Judgment Day", year: 1991 }, + { title: "Back to the Future", year: 1985 }, + { title: "Whiplash", year: 2014 }, + { title: "Gladiator", year: 2000 }, + { title: "Memento", year: 2000 }, + { title: "The Prestige", year: 2006 }, + { title: "The Lion King", year: 1994 }, + { title: "Apocalypse Now", year: 1979 }, + { title: "Alien", year: 1979 }, + { title: "Sunset Boulevard", year: 1950 }, + { + title: + "Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb", + year: 1964, + }, + { title: "The Great Dictator", year: 1940 }, + { title: "Cinema Paradiso", year: 1988 }, + { title: "The Lives of Others", year: 2006 }, + { title: "Grave of the Fireflies", year: 1988 }, + { title: "Paths of Glory", year: 1957 }, + { title: "Django Unchained", year: 2012 }, + { title: "The Shining", year: 1980 }, + { title: "WALL·E", year: 2008 }, + { title: "American Beauty", year: 1999 }, + { title: "The Dark Knight Rises", year: 2012 }, + { title: "Princess Mononoke", year: 1997 }, + { title: "Aliens", year: 1986 }, + { title: "Oldboy", year: 2003 }, + { title: "Once Upon a Time in America", year: 1984 }, + { title: "Witness for the Prosecution", year: 1957 }, + { title: "Das Boot", year: 1981 }, + { title: "Citizen Kane", year: 1941 }, + { title: "North by Northwest", year: 1959 }, + { title: "Vertigo", year: 1958 }, + { + title: "Star Wars: Episode VI - Return of the Jedi", + year: 1983, + }, + { title: "Reservoir Dogs", year: 1992 }, + { title: "Braveheart", year: 1995 }, + { title: "M", year: 1931 }, + { title: "Requiem for a Dream", year: 2000 }, + { title: "Amélie", year: 2001 }, + { title: "A Clockwork Orange", year: 1971 }, + { title: "Like Stars on Earth", year: 2007 }, + { title: "Taxi Driver", year: 1976 }, + { title: "Lawrence of Arabia", year: 1962 }, + { title: "Double Indemnity", year: 1944 }, + { + title: "Eternal Sunshine of the Spotless Mind", + year: 2004, + }, + { title: "Amadeus", year: 1984 }, + { title: "To Kill a Mockingbird", year: 1962 }, + { title: "Toy Story 3", year: 2010 }, + { title: "Logan", year: 2017 }, + { title: "Full Metal Jacket", year: 1987 }, + { title: "Dangal", year: 2016 }, + { title: "The Sting", year: 1973 }, + { title: "2001: A Space Odyssey", year: 1968 }, + { title: "Singin' in the Rain", year: 1952 }, + { title: "Toy Story", year: 1995 }, + { title: "Bicycle Thieves", year: 1948 }, + { title: "The Kid", year: 1921 }, + { title: "Inglourious Basterds", year: 2009 }, + { title: "Snatch", year: 2000 }, + { title: "3 Idiots", year: 2009 }, + { title: "Monty Python and the Holy Grail", year: 1975 }, +]; diff --git a/components/UIElements/Autocomplete/LimitTags.js b/components/UIElements/Autocomplete/LimitTags.js new file mode 100644 index 0000000..231fa07 --- /dev/null +++ b/components/UIElements/Autocomplete/LimitTags.js @@ -0,0 +1,174 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Autocomplete from '@mui/material/Autocomplete'; +import TextField from '@mui/material/TextField'; + +const LimitTags= () => { + return ( + <> + + + LimitTags + + + option.title} + defaultValue={[top100Films[13], top100Films[12], top100Films[11]]} + renderInput={(params) => ( + + )} + sx={{ width: '500px' }} + /> + + + ); +}; + +export default LimitTags; + +// Top 100 films as rated by IMDb users. http://www.imdb.com/chart/top +const top100Films = [ + { title: 'The Shawshank Redemption', year: 1994 }, + { title: 'The Godfather', year: 1972 }, + { title: 'The Godfather: Part II', year: 1974 }, + { title: 'The Dark Knight', year: 2008 }, + { title: '12 Angry Men', year: 1957 }, + { title: "Schindler's List", year: 1993 }, + { title: 'Pulp Fiction', year: 1994 }, + { + title: 'The Lord of the Rings: The Return of the King', + year: 2003, + }, + { title: 'The Good, the Bad and the Ugly', year: 1966 }, + { title: 'Fight Club', year: 1999 }, + { + title: 'The Lord of the Rings: The Fellowship of the Ring', + year: 2001, + }, + { + title: 'Star Wars: Episode V - The Empire Strikes Back', + year: 1980, + }, + { title: 'Forrest Gump', year: 1994 }, + { title: 'Inception', year: 2010 }, + { + title: 'The Lord of the Rings: The Two Towers', + year: 2002, + }, + { title: "One Flew Over the Cuckoo's Nest", year: 1975 }, + { title: 'Goodfellas', year: 1990 }, + { title: 'The Matrix', year: 1999 }, + { title: 'Seven Samurai', year: 1954 }, + { + title: 'Star Wars: Episode IV - A New Hope', + year: 1977, + }, + { title: 'City of God', year: 2002 }, + { title: 'Se7en', year: 1995 }, + { title: 'The Silence of the Lambs', year: 1991 }, + { title: "It's a Wonderful Life", year: 1946 }, + { title: 'Life Is Beautiful', year: 1997 }, + { title: 'The Usual Suspects', year: 1995 }, + { title: 'Léon: The Professional', year: 1994 }, + { title: 'Spirited Away', year: 2001 }, + { title: 'Saving Private Ryan', year: 1998 }, + { title: 'Once Upon a Time in the West', year: 1968 }, + { title: 'American History X', year: 1998 }, + { title: 'Interstellar', year: 2014 }, + { title: 'Casablanca', year: 1942 }, + { title: 'City Lights', year: 1931 }, + { title: 'Psycho', year: 1960 }, + { title: 'The Green Mile', year: 1999 }, + { title: 'The Intouchables', year: 2011 }, + { title: 'Modern Times', year: 1936 }, + { title: 'Raiders of the Lost Ark', year: 1981 }, + { title: 'Rear Window', year: 1954 }, + { title: 'The Pianist', year: 2002 }, + { title: 'The Departed', year: 2006 }, + { title: 'Terminator 2: Judgment Day', year: 1991 }, + { title: 'Back to the Future', year: 1985 }, + { title: 'Whiplash', year: 2014 }, + { title: 'Gladiator', year: 2000 }, + { title: 'Memento', year: 2000 }, + { title: 'The Prestige', year: 2006 }, + { title: 'The Lion King', year: 1994 }, + { title: 'Apocalypse Now', year: 1979 }, + { title: 'Alien', year: 1979 }, + { title: 'Sunset Boulevard', year: 1950 }, + { + title: 'Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb', + year: 1964, + }, + { title: 'The Great Dictator', year: 1940 }, + { title: 'Cinema Paradiso', year: 1988 }, + { title: 'The Lives of Others', year: 2006 }, + { title: 'Grave of the Fireflies', year: 1988 }, + { title: 'Paths of Glory', year: 1957 }, + { title: 'Django Unchained', year: 2012 }, + { title: 'The Shining', year: 1980 }, + { title: 'WALL·E', year: 2008 }, + { title: 'American Beauty', year: 1999 }, + { title: 'The Dark Knight Rises', year: 2012 }, + { title: 'Princess Mononoke', year: 1997 }, + { title: 'Aliens', year: 1986 }, + { title: 'Oldboy', year: 2003 }, + { title: 'Once Upon a Time in America', year: 1984 }, + { title: 'Witness for the Prosecution', year: 1957 }, + { title: 'Das Boot', year: 1981 }, + { title: 'Citizen Kane', year: 1941 }, + { title: 'North by Northwest', year: 1959 }, + { title: 'Vertigo', year: 1958 }, + { + title: 'Star Wars: Episode VI - Return of the Jedi', + year: 1983, + }, + { title: 'Reservoir Dogs', year: 1992 }, + { title: 'Braveheart', year: 1995 }, + { title: 'M', year: 1931 }, + { title: 'Requiem for a Dream', year: 2000 }, + { title: 'Amélie', year: 2001 }, + { title: 'A Clockwork Orange', year: 1971 }, + { title: 'Like Stars on Earth', year: 2007 }, + { title: 'Taxi Driver', year: 1976 }, + { title: 'Lawrence of Arabia', year: 1962 }, + { title: 'Double Indemnity', year: 1944 }, + { + title: 'Eternal Sunshine of the Spotless Mind', + year: 2004, + }, + { title: 'Amadeus', year: 1984 }, + { title: 'To Kill a Mockingbird', year: 1962 }, + { title: 'Toy Story 3', year: 2010 }, + { title: 'Logan', year: 2017 }, + { title: 'Full Metal Jacket', year: 1987 }, + { title: 'Dangal', year: 2016 }, + { title: 'The Sting', year: 1973 }, + { title: '2001: A Space Odyssey', year: 1968 }, + { title: "Singin' in the Rain", year: 1952 }, + { title: 'Toy Story', year: 1995 }, + { title: 'Bicycle Thieves', year: 1948 }, + { title: 'The Kid', year: 1921 }, + { title: 'Inglourious Basterds', year: 2009 }, + { title: 'Snatch', year: 2000 }, + { title: '3 Idiots', year: 2009 }, + { title: 'Monty Python and the Holy Grail', year: 1975 }, +]; \ No newline at end of file diff --git a/components/UIElements/Avatar/GroupUserExample.js b/components/UIElements/Avatar/GroupUserExample.js new file mode 100644 index 0000000..a1c1d2a --- /dev/null +++ b/components/UIElements/Avatar/GroupUserExample.js @@ -0,0 +1,64 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +import Button from '@mui/material/Button'; + +const GroupUserExample = () => { + return ( + <> + + + Group User Example + + + + + + + + + + + + + + + + + + + + ); +}; + +export default GroupUserExample; diff --git a/components/UIElements/Avatar/Grouped.js b/components/UIElements/Avatar/Grouped.js new file mode 100644 index 0000000..a0ff0b7 --- /dev/null +++ b/components/UIElements/Avatar/Grouped.js @@ -0,0 +1,43 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; + +const Grouped = () => { + return ( + <> + + + Grouped + + + + + + + + + + + + ); +}; + +export default Grouped; diff --git a/components/UIElements/Avatar/IconAvatars.js b/components/UIElements/Avatar/IconAvatars.js new file mode 100644 index 0000000..1bbb1f7 --- /dev/null +++ b/components/UIElements/Avatar/IconAvatars.js @@ -0,0 +1,61 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { deepOrange, green, pink, red } from '@mui/material/colors'; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; +import FolderIcon from '@mui/icons-material/Folder'; +import PageviewIcon from '@mui/icons-material/Pageview'; +import AssignmentIcon from '@mui/icons-material/Assignment'; +import PersonIcon from '@mui/icons-material/Person'; +import DeleteIcon from '@mui/icons-material/Delete'; + +const IconAvatars = () => { + return ( + <> + + + Icon Avatars + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default IconAvatars; diff --git a/components/UIElements/Avatar/ImageAvatars.js b/components/UIElements/Avatar/ImageAvatars.js new file mode 100644 index 0000000..bb8fbdf --- /dev/null +++ b/components/UIElements/Avatar/ImageAvatars.js @@ -0,0 +1,45 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; + +const ImageAvatars = () => { + return ( + <> + + + Image Avatars + + + + + + + + + + + + ); +}; + +export default ImageAvatars; diff --git a/components/UIElements/Avatar/LetterAvatars.js b/components/UIElements/Avatar/LetterAvatars.js new file mode 100644 index 0000000..0873334 --- /dev/null +++ b/components/UIElements/Avatar/LetterAvatars.js @@ -0,0 +1,68 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; + +function stringToColor(string) { + let hash = 0; + let i; + + /* eslint-disable no-bitwise */ + for (i = 0; i < string.length; i += 1) { + hash = string.charCodeAt(i) + ((hash << 5) - hash); + } + + let color = '#'; + + for (i = 0; i < 3; i += 1) { + const value = (hash >> (i * 8)) & 0xff; + color += `00${value.toString(16)}`.slice(-2); + } + /* eslint-enable no-bitwise */ + + return color; +} + +function stringAvatar(name) { + return { + sx: { + bgcolor: stringToColor(name), + }, + children: `${name.split(' ')[0][0]}${name.split(' ')[1][0]}`, + }; +} + +const LetterAvatars = () => { + return ( + <> + + + Letter Avatars + + + + + + + + + + ); +}; + +export default LetterAvatars; diff --git a/components/UIElements/Avatar/SingleUserExample.js b/components/UIElements/Avatar/SingleUserExample.js new file mode 100644 index 0000000..950a52b --- /dev/null +++ b/components/UIElements/Avatar/SingleUserExample.js @@ -0,0 +1,133 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import IconButton from '@mui/material/IconButton'; +import FacebookIcon from '@mui/icons-material/Facebook'; +import TwitterIcon from '@mui/icons-material/Twitter'; +import LinkedInIcon from '@mui/icons-material/LinkedIn'; +import Stack from '@mui/material/Stack'; + +const SingleUserExample = () => { + return ( + <> + + + Single User Example + + + + + User + + + + Andrew Burns + + + + Programmer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default SingleUserExample; diff --git a/components/UIElements/Avatar/SizesAvatars.js b/components/UIElements/Avatar/SizesAvatars.js new file mode 100644 index 0000000..a84059d --- /dev/null +++ b/components/UIElements/Avatar/SizesAvatars.js @@ -0,0 +1,65 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; + +const SizesAvatars = () => { + return ( + <> + + + Sizes Avatars + + + + + + + + + + + + + + + + ); +}; + +export default SizesAvatars; diff --git a/components/UIElements/Avatar/TotalAvatars.js b/components/UIElements/Avatar/TotalAvatars.js new file mode 100644 index 0000000..6ab8b2b --- /dev/null +++ b/components/UIElements/Avatar/TotalAvatars.js @@ -0,0 +1,40 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; + +const TotalAvatars = () => { + return ( + <> + + + Total Avatars + + + + + + + + + + + ); +}; + +export default TotalAvatars; diff --git a/components/UIElements/Avatar/WithBadge.js b/components/UIElements/Avatar/WithBadge.js new file mode 100644 index 0000000..d5119d3 --- /dev/null +++ b/components/UIElements/Avatar/WithBadge.js @@ -0,0 +1,89 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Badge from '@mui/material/Badge'; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; + +const StyledBadge = styled(Badge)(({ theme }) => ({ + '& .MuiBadge-badge': { + backgroundColor: '#44b700', + color: '#44b700', + boxShadow: `0 0 0 2px ${theme.palette.background.paper}`, + '&::after': { + position: 'absolute', + top: 0, + left: 0, + width: '100%', + height: '100%', + borderRadius: '50%', + animation: 'ripple 1.2s infinite ease-in-out', + border: '1px solid currentColor', + content: '""', + }, + }, + '@keyframes ripple': { + '0%': { + transform: 'scale(.8)', + opacity: 1, + }, + '100%': { + transform: 'scale(2.4)', + opacity: 0, + }, + }, +})); + +const SmallAvatar = styled(Avatar)(({ theme }) => ({ + width: 22, + height: 22, + border: `2px solid ${theme.palette.background.paper}`, +})); + +const WithBadge = () => { + return ( + <> + + + With Badge + + + + + + + + } + > + + + + + + ); +}; + +export default WithBadge; diff --git a/components/UIElements/Badge/Accessibility.js b/components/UIElements/Badge/Accessibility.js new file mode 100644 index 0000000..92eed8e --- /dev/null +++ b/components/UIElements/Badge/Accessibility.js @@ -0,0 +1,50 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import IconButton from '@mui/material/IconButton'; +import Badge from '@mui/material/Badge'; +import MailIcon from '@mui/icons-material/Mail'; + +function notificationsLabel(count) { + if (count === 0) { + return 'no notifications'; + } + if (count > 99) { + return 'more than 99 notifications'; + } + return `${count} notifications`; +} + +const Accessibility = () => { + return ( + <> + + + Accessibility + + + + + + + + + + ); +}; + +export default Accessibility; diff --git a/components/UIElements/Badge/BadgeOverlap.js b/components/UIElements/Badge/BadgeOverlap.js new file mode 100644 index 0000000..eb97ada --- /dev/null +++ b/components/UIElements/Badge/BadgeOverlap.js @@ -0,0 +1,56 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Badge from '@mui/material/Badge'; + +const shapeStyles = { bgcolor: 'primary.main', width: 40, height: 40 }; +const shapeCircleStyles = { borderRadius: '50%' }; +const rectangle = ; +const circle = ( + +); + +const BadgeOverlap = () => { + return ( + <> + + + Badge Overlap + + + + + {rectangle} + + + {rectangle} + + + {circle} + + + {circle} + + + + + ); +}; + +export default BadgeOverlap; diff --git a/components/UIElements/Badge/BasicBadge.js b/components/UIElements/Badge/BasicBadge.js new file mode 100644 index 0000000..6f17153 --- /dev/null +++ b/components/UIElements/Badge/BasicBadge.js @@ -0,0 +1,62 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Badge from '@mui/material/Badge'; +import Stack from '@mui/material/Stack'; +import MailIcon from '@mui/icons-material/Mail'; +import NotificationsIcon from '@mui/icons-material/Notifications'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; + +const BasicBadge = () => { + return ( + <> + + + Basic Badge + + + + + + + + + + + + + + + + + + ); +}; + +export default BasicBadge; diff --git a/components/UIElements/Badge/Dynamic.js b/components/UIElements/Badge/Dynamic.js new file mode 100644 index 0000000..4504292 --- /dev/null +++ b/components/UIElements/Badge/Dynamic.js @@ -0,0 +1,96 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Badge from '@mui/material/Badge'; +import ButtonGroup from '@mui/material/ButtonGroup'; +import Button from '@mui/material/Button'; +import AddIcon from '@mui/icons-material/Add'; +import RemoveIcon from '@mui/icons-material/Remove'; +import MailIcon from '@mui/icons-material/Mail'; +import Switch from '@mui/material/Switch'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const Dynamic = () => { + + const [count, setCount] = React.useState(1); + const [invisible, setInvisible] = React.useState(false); + + const handleBadgeVisibility = () => { + setInvisible(!invisible); + }; + + return ( + <> + + + Dynamic + + + *': { + marginBottom: 2, + }, + }} + > +
    + + + + + + + + +
    + +
    + + + + } + label="Show Badge" + className="mr-4" + /> +
    +
    +
    + + ); +}; + +export default Dynamic; diff --git a/components/UIElements/Badge/MaximumValue.js b/components/UIElements/Badge/MaximumValue.js new file mode 100644 index 0000000..5ac6483 --- /dev/null +++ b/components/UIElements/Badge/MaximumValue.js @@ -0,0 +1,49 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Badge from '@mui/material/Badge'; +import MailIcon from '@mui/icons-material/Mail'; + +const MaximumValue = () => { + return ( + <> + + + Maximum Value + + + + + + + + + + + + + + + + ); +}; + +export default MaximumValue; diff --git a/components/UIElements/Buttons/BasicFAB.js b/components/UIElements/Buttons/BasicFAB.js new file mode 100644 index 0000000..b1e26d8 --- /dev/null +++ b/components/UIElements/Buttons/BasicFAB.js @@ -0,0 +1,58 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Fab from '@mui/material/Fab'; +import AddIcon from '@mui/icons-material/Add'; +import EditIcon from '@mui/icons-material/Edit'; +import FavoriteIcon from '@mui/icons-material/Favorite'; +import NavigationIcon from '@mui/icons-material/Navigation'; + +const BasicFAB = () => { + return ( + <> + + + Basic Favorite + + + :not(style)': { m: 1 } }}> + + + + + + + + + + + Navigate + + + + + + + + + ); +}; + +export default BasicFAB; diff --git a/components/UIElements/Buttons/BlockButtons.js b/components/UIElements/Buttons/BlockButtons.js new file mode 100644 index 0000000..3e9698b --- /dev/null +++ b/components/UIElements/Buttons/BlockButtons.js @@ -0,0 +1,87 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Button from '@mui/material/Button'; + +const BlockButtons = () => { + return ( + <> + + + Block Buttons + + + + + + + + + + ); +}; + +export default BlockButtons; diff --git a/components/UIElements/Buttons/ButtonsWithIcon.js b/components/UIElements/Buttons/ButtonsWithIcon.js new file mode 100644 index 0000000..8fe49f4 --- /dev/null +++ b/components/UIElements/Buttons/ButtonsWithIcon.js @@ -0,0 +1,170 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import AddIcon from '@mui/icons-material/Add'; +import DeleteIcon from '@mui/icons-material/Delete'; +import SendIcon from '@mui/icons-material/Send'; +import PersonIcon from '@mui/icons-material/Person'; +import CheckIcon from '@mui/icons-material/Check'; +import InfoIcon from '@mui/icons-material/Info'; +import WarningIcon from '@mui/icons-material/Warning'; + +const ButtonsWithIcon = () => { + return ( + <> + + + Buttons With Icon + + + + + + + + + + + + + + + + + + + + ); +}; + +export default ButtonsWithIcon; diff --git a/components/UIElements/Buttons/DefaultButtons.js b/components/UIElements/Buttons/DefaultButtons.js new file mode 100644 index 0000000..335f084 --- /dev/null +++ b/components/UIElements/Buttons/DefaultButtons.js @@ -0,0 +1,156 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const DefaultButtons = () => { + return ( + <> + + + Default Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default DefaultButtons; diff --git a/components/UIElements/Buttons/Loading.js b/components/UIElements/Buttons/Loading.js new file mode 100644 index 0000000..96a486b --- /dev/null +++ b/components/UIElements/Buttons/Loading.js @@ -0,0 +1,54 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import LoadingButton from '@mui/lab/LoadingButton'; +import SaveIcon from '@mui/icons-material/Save'; +import Stack from '@mui/material/Stack'; + +const Loading = () => { + return ( + <> + + + Loading + + + + + Submit + + + + Fetch data + + + } + variant="outlined" + className="for-dark-border" + > + Save + + + + + ); +}; + +export default Loading; diff --git a/components/UIElements/Buttons/OutlineButtons.js b/components/UIElements/Buttons/OutlineButtons.js new file mode 100644 index 0000000..01b0903 --- /dev/null +++ b/components/UIElements/Buttons/OutlineButtons.js @@ -0,0 +1,143 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const OutlineButtons = () => { + return ( + <> + + + Outline Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default OutlineButtons; diff --git a/components/UIElements/Buttons/OutlineRoundedButtons.js b/components/UIElements/Buttons/OutlineRoundedButtons.js new file mode 100644 index 0000000..1ccbaff --- /dev/null +++ b/components/UIElements/Buttons/OutlineRoundedButtons.js @@ -0,0 +1,143 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const OutlineRoundedButtons = () => { + return ( + <> + + + Outline Rounded Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default OutlineRoundedButtons; diff --git a/components/UIElements/Buttons/RoundedButtons.js b/components/UIElements/Buttons/RoundedButtons.js new file mode 100644 index 0000000..98bd673 --- /dev/null +++ b/components/UIElements/Buttons/RoundedButtons.js @@ -0,0 +1,156 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const RoundedButtons = () => { + return ( + <> + + + Rounded Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default RoundedButtons; diff --git a/components/UIElements/Buttons/SizesButtons.js b/components/UIElements/Buttons/SizesButtons.js new file mode 100644 index 0000000..9fb6f9b --- /dev/null +++ b/components/UIElements/Buttons/SizesButtons.js @@ -0,0 +1,81 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; + +const SizesButtons = () => { + return ( + <> + + + Sizes + + + +
    + + + +
    + +
    + + + + + +
    + +
    + + + + + +
    +
    +
    + + ); +}; + +export default SizesButtons; diff --git a/components/UIElements/Buttons/SoftButtons.js b/components/UIElements/Buttons/SoftButtons.js new file mode 100644 index 0000000..ad87ec7 --- /dev/null +++ b/components/UIElements/Buttons/SoftButtons.js @@ -0,0 +1,144 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const SoftButtons = () => { + return ( + <> + + + Soft Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default SoftButtons; diff --git a/components/UIElements/Cards/BasicCard.js b/components/UIElements/Cards/BasicCard.js new file mode 100644 index 0000000..6ef859d --- /dev/null +++ b/components/UIElements/Cards/BasicCard.js @@ -0,0 +1,46 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Card from '@mui/material/Card'; +import CardActions from '@mui/material/CardActions'; +import CardContent from '@mui/material/CardContent'; +import Button from '@mui/material/Button'; +import Typography from '@mui/material/Typography'; + +const bull = ( + + • + +); + +export default function BasicCard() { + return ( + + + + Word of the Day + + + + be{bull}nev{bull}o{bull}lent + + + + adjective + + + + well meaning and kindly. +
    + {'"a benevolent smile"'} +
    +
    + + + + +
    + ); +} \ No newline at end of file diff --git a/components/UIElements/Cards/Cards.module.css b/components/UIElements/Cards/Cards.module.css new file mode 100644 index 0000000..459d296 --- /dev/null +++ b/components/UIElements/Cards/Cards.module.css @@ -0,0 +1,18 @@ +.cardWithBgImg { + border-radius: 10px; + padding: 25px 20px; + margin-bottom: 15px; + position: relative; + background-size: cover; + background-position: center center; +} +.cardWithBgImg::before { + content: ''; + position: absolute; + width: 100%; + height: 100%; + bottom: 0; + left: 0; + background-image: linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,1)); + border-radius: 10px; +} \ No newline at end of file diff --git a/components/UIElements/Cards/ComplexInteraction.js b/components/UIElements/Cards/ComplexInteraction.js new file mode 100644 index 0000000..2ae5e15 --- /dev/null +++ b/components/UIElements/Cards/ComplexInteraction.js @@ -0,0 +1,123 @@ +import * as React from "react"; +import { styled } from "@mui/material/styles"; +import Card from "@mui/material/Card"; +import CardHeader from "@mui/material/CardHeader"; +import CardMedia from "@mui/material/CardMedia"; +import CardContent from "@mui/material/CardContent"; +import CardActions from "@mui/material/CardActions"; +import Collapse from "@mui/material/Collapse"; +import Avatar from "@mui/material/Avatar"; +import IconButton from "@mui/material/IconButton"; +import Typography from "@mui/material/Typography"; +import { red } from "@mui/material/colors"; +import FavoriteIcon from "@mui/icons-material/Favorite"; +import ShareIcon from "@mui/icons-material/Share"; +import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; + +const ExpandMore = styled((props) => { + const { expand, ...other } = props; + return ; +})(({ theme, expand }) => ({ + transform: !expand ? "rotate(0deg)" : "rotate(180deg)", + marginLeft: "auto", + transition: theme.transitions.create("transform", { + duration: theme.transitions.duration.shortest, + }), +})); + +export default function ComplexInteraction() { + const [expanded, setExpanded] = React.useState(false); + + const handleExpandClick = () => { + setExpanded(!expanded); + }; + + return ( + + + R + + } + action={ + + + + } + title="Shrimp and Chorizo Paella" + subheader="September 14, 2016" + /> + + + + + This impressive paella is a perfect party dish and a fun meal to cook + together with your guests. Add 1 cup of frozen peas along with the + mussels, if you like. + + + + + + + + + + + + + + + + + + + + Method: + + + Heat 1/2 cup of the broth in a pot until simmering, add saffron and + set aside for 10 minutes. + + + + Heat oil in a (14- to 16-inch) paella pan or a large, deep skillet + over medium-high heat. Add chicken, shrimp and chorizo, and cook, + stirring occasionally until lightly browned, 6 to 8 minutes. + Transfer shrimp to a large plate and set aside, leaving chicken and + chorizo in the pan. Add pimentón, bay leaves, garlic, tomatoes, + onion, salt and pepper, and cook, stirring often until thickened and + fragrant, about 10 minutes. Add saffron broth and remaining 4 1/2 + cups chicken broth; bring to a boil. + + + + Add rice and stir very gently to distribute. Top with artichokes and + peppers, and cook without stirring, until most of the liquid is + absorbed, 15 to 18 minutes. Reduce heat to medium-low, add reserved + shrimp and mussels, tucking them down into the rice, and cook again + without stirring, until mussels have opened and rice is just tender, + 5 to 7 minutes more. (Discard any mussels that don't open.) + + + + Set aside off of the heat to let rest for 10 minutes, and then + serve. + + + + + ); +} diff --git a/components/UIElements/Cards/Media.js b/components/UIElements/Cards/Media.js new file mode 100644 index 0000000..7708e31 --- /dev/null +++ b/components/UIElements/Cards/Media.js @@ -0,0 +1,35 @@ +import * as React from 'react'; +import Card from '@mui/material/Card'; +import CardActions from '@mui/material/CardActions'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import Button from '@mui/material/Button'; +import Typography from '@mui/material/Typography'; + +export default function Media() { + return ( + + + + + + Lizard + + + + Lizards are a widespread group of squamate reptiles, with over 6,000 + species, ranging across all continents except Antarctica + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/UIElements/Cards/UIControls.js b/components/UIElements/Cards/UIControls.js new file mode 100644 index 0000000..4b1e911 --- /dev/null +++ b/components/UIElements/Cards/UIControls.js @@ -0,0 +1,52 @@ +import * as React from 'react'; +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import Card from '@mui/material/Card'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import IconButton from '@mui/material/IconButton'; +import Typography from '@mui/material/Typography'; +import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; +import PlayArrowIcon from '@mui/icons-material/PlayArrow'; +import SkipNextIcon from '@mui/icons-material/SkipNext'; + +export default function UIControls() { + const theme = useTheme(); + + return ( + + + + + Live From Space + + + + Mac Miller + + + + + + {theme.direction === 'rtl' ? : } + + + + + + + + {theme.direction === 'rtl' ? : } + + + + + + + ); +} \ No newline at end of file diff --git a/components/UIElements/Checkbox/Basic.js b/components/UIElements/Checkbox/Basic.js new file mode 100644 index 0000000..f62ef98 --- /dev/null +++ b/components/UIElements/Checkbox/Basic.js @@ -0,0 +1,39 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Checkbox from '@mui/material/Checkbox'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +export default function Basic() { + return ( + <> + + + Basic + + +
    + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Checkbox/Color.js b/components/UIElements/Checkbox/Color.js new file mode 100644 index 0000000..237ee8d --- /dev/null +++ b/components/UIElements/Checkbox/Color.js @@ -0,0 +1,54 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { pink } from '@mui/material/colors'; +import Checkbox from '@mui/material/Checkbox'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +export default function Color() { + return ( + <> + + + Color + + +
    + + + + + + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Checkbox/Controlled.js b/components/UIElements/Checkbox/Controlled.js new file mode 100644 index 0000000..991fcca --- /dev/null +++ b/components/UIElements/Checkbox/Controlled.js @@ -0,0 +1,43 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Checkbox from '@mui/material/Checkbox'; + +export default function Controlled() { + + const [checked, setChecked] = React.useState(true); + + const handleChange = (event) => { + setChecked(event.target.checked); + }; + + return ( + <> + + + Controlled + + + + + + ); +} diff --git a/components/UIElements/Checkbox/Icon.js b/components/UIElements/Checkbox/Icon.js new file mode 100644 index 0000000..d3c491b --- /dev/null +++ b/components/UIElements/Checkbox/Icon.js @@ -0,0 +1,45 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Checkbox from '@mui/material/Checkbox'; +import FavoriteBorder from '@mui/icons-material/FavoriteBorder'; +import Favorite from '@mui/icons-material/Favorite'; +import BookmarkBorderIcon from '@mui/icons-material/BookmarkBorder'; +import BookmarkIcon from '@mui/icons-material/Bookmark'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +export default function Icon() { + return ( + <> + + + Icon + + +
    + } checkedIcon={} /> + } + checkedIcon={} + /> +
    +
    + + ); +} diff --git a/components/UIElements/Checkbox/Label.js b/components/UIElements/Checkbox/Label.js new file mode 100644 index 0000000..2dfd591 --- /dev/null +++ b/components/UIElements/Checkbox/Label.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; + +export default function Label() { + return ( + <> + + + With Label + + + + } label="Label" /> + } label="Disabled" /> + + + + ); +} diff --git a/components/UIElements/Checkbox/Size.js b/components/UIElements/Checkbox/Size.js new file mode 100644 index 0000000..dbd55cf --- /dev/null +++ b/components/UIElements/Checkbox/Size.js @@ -0,0 +1,42 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Checkbox from '@mui/material/Checkbox'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +export default function Size() { + return ( + <> + + + Size + + +
    + + + +
    +
    + + ); +} diff --git a/components/UIElements/Chip/Basic.js b/components/UIElements/Chip/Basic.js new file mode 100644 index 0000000..44ca45d --- /dev/null +++ b/components/UIElements/Chip/Basic.js @@ -0,0 +1,36 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function Basic() { + return ( + <> + + + Basic + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/ChipActions.js b/components/UIElements/Chip/ChipActions.js new file mode 100644 index 0000000..38e275b --- /dev/null +++ b/components/UIElements/Chip/ChipActions.js @@ -0,0 +1,41 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ChipActions() { + + const handleClick = () => { + console.info('You clicked the Chip.'); + }; + + return ( + <> + + + Chip Actions + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/ChipAdornments.js b/components/UIElements/Chip/ChipAdornments.js new file mode 100644 index 0000000..f060a29 --- /dev/null +++ b/components/UIElements/Chip/ChipAdornments.js @@ -0,0 +1,41 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ChipAdornments() { + return ( + <> + + + Chip Adornments + + + + M} label="Avatar" /> + } + label="Avatar" + variant="outlined" + /> + + + + ); +} diff --git a/components/UIElements/Chip/ChipArray.js b/components/UIElements/Chip/ChipArray.js new file mode 100644 index 0000000..5f495e5 --- /dev/null +++ b/components/UIElements/Chip/ChipArray.js @@ -0,0 +1,80 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Chip from '@mui/material/Chip'; +import Paper from '@mui/material/Paper'; +import TagFacesIcon from '@mui/icons-material/TagFaces'; + +const ListItem = styled('li')(({ theme }) => ({ + margin: theme.spacing(0.5), +})); + +export default function ChipArray() { + + const [chipData, setChipData] = React.useState([ + { key: 0, label: 'Angular' }, + { key: 1, label: 'jQuery' }, + { key: 2, label: 'Polymer' }, + { key: 3, label: 'React' }, + { key: 4, label: 'Vue.js' }, + ]); + + const handleDelete = (chipToDelete) => () => { + setChipData((chips) => chips.filter((chip) => chip.key !== chipToDelete.key)); + }; + + return ( + <> + + + Chip Array + + + + {chipData.map((data) => { + let icon; + + if (data.label === 'React') { + icon = ; + } + + return ( + + + + ); + })} + + + + ); +} diff --git a/components/UIElements/Chip/ClickableAndDeletable.js b/components/UIElements/Chip/ClickableAndDeletable.js new file mode 100644 index 0000000..950056f --- /dev/null +++ b/components/UIElements/Chip/ClickableAndDeletable.js @@ -0,0 +1,53 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ClickableAndDeletable() { + const handleClick = () => { + console.info('You clicked the Chip.'); + }; + + const handleDelete = () => { + console.info('You clicked the delete icon.'); + }; + + return ( + <> + + + Clickable And Deletable + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/ClickableLink.js b/components/UIElements/Chip/ClickableLink.js new file mode 100644 index 0000000..5b7dc8a --- /dev/null +++ b/components/UIElements/Chip/ClickableLink.js @@ -0,0 +1,42 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ClickableLink() { + return ( + <> + + + Clickable Link + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/ColorChip.js b/components/UIElements/Chip/ColorChip.js new file mode 100644 index 0000000..c863c13 --- /dev/null +++ b/components/UIElements/Chip/ColorChip.js @@ -0,0 +1,62 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ColorChip() { + return ( + <> + + + Color Chip + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/CustomDeleteIcon.js b/components/UIElements/Chip/CustomDeleteIcon.js new file mode 100644 index 0000000..18717a7 --- /dev/null +++ b/components/UIElements/Chip/CustomDeleteIcon.js @@ -0,0 +1,58 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; +import DoneIcon from '@mui/icons-material/Done'; +import DeleteIcon from '@mui/icons-material/Delete'; + +export default function CustomDeleteIcon() { + + const handleClick = () => { + console.info('You clicked the Chip.'); + }; + + const handleDelete = () => { + console.info('You clicked the delete icon.'); + }; + + return ( + <> + + + Custom Delete Icon + + + + } + /> + } + variant="outlined" + /> + + + + ); +} diff --git a/components/UIElements/Chip/Deletable.js b/components/UIElements/Chip/Deletable.js new file mode 100644 index 0000000..6ddc0d6 --- /dev/null +++ b/components/UIElements/Chip/Deletable.js @@ -0,0 +1,41 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function Deletable() { + + const handleDelete = () => { + console.info('You clicked the delete icon.'); + }; + + return ( + <> + + + Deletable + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/IconChip.js b/components/UIElements/Chip/IconChip.js new file mode 100644 index 0000000..52f68e2 --- /dev/null +++ b/components/UIElements/Chip/IconChip.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; +import FaceIcon from '@mui/icons-material/Face'; + +export default function IconChip() { + return ( + <> + + + Icon Chip + + + + } label="With Icon" /> + } label="With Icon" variant="outlined" /> + + + + ); +} diff --git a/components/UIElements/Chip/SizesChip.js b/components/UIElements/Chip/SizesChip.js new file mode 100644 index 0000000..32251f6 --- /dev/null +++ b/components/UIElements/Chip/SizesChip.js @@ -0,0 +1,36 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function SizesChip() { + return ( + <> + + + Sizes Chip + + + + + + + + + ); +} diff --git a/components/UIElements/ImageList/ImageListWithTitleBars.js b/components/UIElements/ImageList/ImageListWithTitleBars.js new file mode 100644 index 0000000..e4da7dd --- /dev/null +++ b/components/UIElements/ImageList/ImageListWithTitleBars.js @@ -0,0 +1,137 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; +import ImageListItemBar from '@mui/material/ImageListItemBar'; +import ListSubheader from '@mui/material/ListSubheader'; +import IconButton from '@mui/material/IconButton'; +import InfoIcon from '@mui/icons-material/Info'; + +export default function ImageListWithTitleBars() { + return ( + <> + + + Image List With Title Bars + + + + + December + + {itemData.map((item) => ( + + {item.title} + + +
    + } + /> + + ))} + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + author: '@bkristastucchio', + rows: 2, + cols: 2, + featured: true, + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + author: '@rollelflex_graphy726', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + author: '@helloimnik', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + author: '@nolanissac', + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + author: '@hjrc33', + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + author: '@arwinneil', + rows: 2, + cols: 2, + featured: true, + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + author: '@tjdragotta', + }, + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + author: '@katie_wasserman', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + author: '@silverdalex', + rows: 2, + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + author: '@shelleypauls', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + author: '@peterlaster', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + author: '@southside_customs', + cols: 2, + }, +]; \ No newline at end of file diff --git a/components/UIElements/ImageList/MasonryImageList.js b/components/UIElements/ImageList/MasonryImageList.js new file mode 100644 index 0000000..f627e0b --- /dev/null +++ b/components/UIElements/ImageList/MasonryImageList.js @@ -0,0 +1,98 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; + +export default function MasonryImageList() { + return ( + <> + + + Masonry Image List + + + + + {itemData.map((item) => ( + + {item.title} + + ))} + + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1549388604-817d15aa0110', + title: 'Bed', + }, + { + img: 'https://images.unsplash.com/photo-1525097487452-6278ff080c31', + title: 'Books', + }, + { + img: 'https://images.unsplash.com/photo-1523413651479-597eb2da0ad6', + title: 'Sink', + }, + { + img: 'https://images.unsplash.com/photo-1563298723-dcfebaa392e3', + title: 'Kitchen', + }, + { + img: 'https://images.unsplash.com/photo-1588436706487-9d55d73a39e3', + title: 'Blinds', + }, + { + img: 'https://images.unsplash.com/photo-1574180045827-681f8a1a9622', + title: 'Chairs', + }, + { + img: 'https://images.unsplash.com/photo-1530731141654-5993c3016c77', + title: 'Laptop', + }, + { + img: 'https://images.unsplash.com/photo-1481277542470-605612bd2d61', + title: 'Doors', + }, + { + img: 'https://images.unsplash.com/photo-1517487881594-2787fef5ebf7', + title: 'Coffee', + }, + { + img: 'https://images.unsplash.com/photo-1516455207990-7a41ce80f7ee', + title: 'Storage', + }, + { + img: 'https://images.unsplash.com/photo-1597262975002-c5c3b14bbd62', + title: 'Candle', + }, + { + img: 'https://images.unsplash.com/photo-1519710164239-da123dc03ef4', + title: 'Coffee table', + }, +]; \ No newline at end of file diff --git a/components/UIElements/ImageList/QuiltedImageList.js b/components/UIElements/ImageList/QuiltedImageList.js new file mode 100644 index 0000000..da12461 --- /dev/null +++ b/components/UIElements/ImageList/QuiltedImageList.js @@ -0,0 +1,118 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; + +function srcset(image, size, rows = 1, cols = 1) { + return { + src: `${image}?w=${size * cols}&h=${size * rows}&fit=crop&auto=format`, + srcSet: `${image}?w=${size * cols}&h=${ + size * rows + }&fit=crop&auto=format&dpr=2 2x`, + }; +} + +export default function QuiltedImageList() { + return ( + <> + + + Quilted Image List + + + + {itemData.map((item) => ( + + {item.title} + + ))} + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + rows: 2, + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + author: '@arwinneil', + rows: 2, + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + }, + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + rows: 2, + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + cols: 2, + }, +]; \ No newline at end of file diff --git a/components/UIElements/ImageList/StandardImageList.js b/components/UIElements/ImageList/StandardImageList.js new file mode 100644 index 0000000..9408cf9 --- /dev/null +++ b/components/UIElements/ImageList/StandardImageList.js @@ -0,0 +1,95 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + }, + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + }, +]; + +export default function StandardImageList() { + return ( + <> + + + Standard Image List + + + + {itemData.map((item) => ( + + {item.title} + + ))} + + + + ); +} diff --git a/components/UIElements/ImageList/TitleBarBelowImageStandard.js b/components/UIElements/ImageList/TitleBarBelowImageStandard.js new file mode 100644 index 0000000..c669a83 --- /dev/null +++ b/components/UIElements/ImageList/TitleBarBelowImageStandard.js @@ -0,0 +1,113 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; +import ImageListItemBar from '@mui/material/ImageListItemBar'; + +export default function TitleBarBelowImageStandard() { + return ( + <> + + + Title Bar Below Image Standard + + + + {itemData.map((item) => ( + + {item.title} + by: {item.author}} + position="below" + /> + + ))} + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + author: '@bkristastucchio', + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + author: '@rollelflex_graphy726', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + author: '@helloimnik', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + author: '@nolanissac', + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + author: '@hjrc33', + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + author: '@arwinneil', + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + author: '@tjdragotta', + }, + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + author: '@katie_wasserman', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + author: '@silverdalex', + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + author: '@shelleypauls', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + author: '@peterlaster', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + author: '@southside_customs', + }, +]; \ No newline at end of file diff --git a/components/UIElements/ImageList/WovenImageList.js b/components/UIElements/ImageList/WovenImageList.js new file mode 100644 index 0000000..a9a635e --- /dev/null +++ b/components/UIElements/ImageList/WovenImageList.js @@ -0,0 +1,95 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; + +export default function WovenImageList() { + return ( + <> + + + Woven Image List + + + + {itemData.map((item) => ( + + {item.title} + + ))} + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1549388604-817d15aa0110', + title: 'Bed', + }, + { + img: 'https://images.unsplash.com/photo-1563298723-dcfebaa392e3', + title: 'Kitchen', + }, + { + img: 'https://images.unsplash.com/photo-1523413651479-597eb2da0ad6', + title: 'Sink', + }, + { + img: 'https://images.unsplash.com/photo-1525097487452-6278ff080c31', + title: 'Books', + }, + { + img: 'https://images.unsplash.com/photo-1574180045827-681f8a1a9622', + title: 'Chairs', + }, + { + img: 'https://images.unsplash.com/photo-1597262975002-c5c3b14bbd62', + title: 'Candle', + }, + { + img: 'https://images.unsplash.com/photo-1530731141654-5993c3016c77', + title: 'Laptop', + }, + { + img: 'https://images.unsplash.com/photo-1481277542470-605612bd2d61', + title: 'Doors', + }, + { + img: 'https://images.unsplash.com/photo-1517487881594-2787fef5ebf7', + title: 'Coffee', + }, + { + img: 'https://images.unsplash.com/photo-1516455207990-7a41ce80f7ee', + title: 'Storage', + }, + { + img: 'https://images.unsplash.com/photo-1519710164239-da123dc03ef4', + title: 'Coffee table', + }, + { + img: 'https://images.unsplash.com/photo-1588436706487-9d55d73a39e3', + title: 'Blinds', + }, +]; \ No newline at end of file diff --git a/components/UIElements/List/BasicList.js b/components/UIElements/List/BasicList.js new file mode 100644 index 0000000..4dab6af --- /dev/null +++ b/components/UIElements/List/BasicList.js @@ -0,0 +1,82 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import Divider from '@mui/material/Divider'; +import InboxIcon from '@mui/icons-material/Inbox'; +import DraftsIcon from '@mui/icons-material/Drafts'; + +export default function BasicList() { + return ( + <> + + + Basic List + + + + + + + + + + + + ); +} diff --git a/components/UIElements/List/FolderList.js b/components/UIElements/List/FolderList.js new file mode 100644 index 0000000..61a988e --- /dev/null +++ b/components/UIElements/List/FolderList.js @@ -0,0 +1,69 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemText from '@mui/material/ListItemText'; +import ListItemAvatar from '@mui/material/ListItemAvatar'; +import Avatar from '@mui/material/Avatar'; +import ImageIcon from '@mui/icons-material/Image'; +import WorkIcon from '@mui/icons-material/Work'; +import BeachAccessIcon from '@mui/icons-material/BeachAccess'; + +export default function FolderList() { + return ( + <> + + + FolderList + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/List/ListControls.js b/components/UIElements/List/ListControls.js new file mode 100644 index 0000000..666615c --- /dev/null +++ b/components/UIElements/List/ListControls.js @@ -0,0 +1,84 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import Checkbox from '@mui/material/Checkbox'; +import IconButton from '@mui/material/IconButton'; +import CommentIcon from '@mui/icons-material/Comment'; + +export default function ListControls() { + + const [checked, setChecked] = React.useState([0]); + + const handleToggle = (value) => () => { + const currentIndex = checked.indexOf(value); + const newChecked = [...checked]; + + if (currentIndex === -1) { + newChecked.push(value); + } else { + newChecked.splice(currentIndex, 1); + } + + setChecked(newChecked); + }; + + return ( + <> + + + List Controls + + + + {[0, 1, 2, 3].map((value) => { + const labelId = `checkbox-list-label-${value}`; + + return ( + + + + } + disablePadding + > + + + + + + + + ); + })} + + + + ); +} diff --git a/components/UIElements/List/NestedList.js b/components/UIElements/List/NestedList.js new file mode 100644 index 0000000..f9441fa --- /dev/null +++ b/components/UIElements/List/NestedList.js @@ -0,0 +1,92 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ListSubheader from '@mui/material/ListSubheader'; +import List from '@mui/material/List'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import Collapse from '@mui/material/Collapse'; +import InboxIcon from '@mui/icons-material/MoveToInbox'; +import DraftsIcon from '@mui/icons-material/Drafts'; +import SendIcon from '@mui/icons-material/Send'; +import ExpandLess from '@mui/icons-material/ExpandLess'; +import ExpandMore from '@mui/icons-material/ExpandMore'; +import StarBorder from '@mui/icons-material/StarBorder'; + +export default function NestedList() { + const [open, setOpen] = React.useState(true); + + const handleClick = () => { + setOpen(!open); + }; + + return ( + <> + + + Nested List + + + + Nested List Items + + } + className="bg-black" + > + + + + + + + + + + + + + + + + + + + + {open ? : } + + + + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Modal/BasicModal.js b/components/UIElements/Modal/BasicModal.js new file mode 100644 index 0000000..ab9ac11 --- /dev/null +++ b/components/UIElements/Modal/BasicModal.js @@ -0,0 +1,73 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Modal from '@mui/material/Modal'; + +const style = { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: 400, + bgcolor: 'background.paper', + border: '2px solid #000', + boxShadow: 24, + p: 4, +}; + +export default function BasicModal() { + + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + return ( + <> + + + Basic Modal + + + + + + + + Text in a modal + + + Duis mollis, est non commodo luctus, nisi erat porttitor ligula. + + + + + + ); +} diff --git a/components/UIElements/Modal/CustomizationDialog.js b/components/UIElements/Modal/CustomizationDialog.js new file mode 100644 index 0000000..8e89690 --- /dev/null +++ b/components/UIElements/Modal/CustomizationDialog.js @@ -0,0 +1,126 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import Button from '@mui/material/Button'; +import { styled } from '@mui/material/styles'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import DialogContent from '@mui/material/DialogContent'; +import DialogActions from '@mui/material/DialogActions'; +import IconButton from '@mui/material/IconButton'; +import CloseIcon from '@mui/icons-material/Close'; +import Typography from '@mui/material/Typography'; +import Card from "@mui/material/Card"; + +const BootstrapDialog = styled(Dialog)(({ theme }) => ({ + '& .MuiDialogContent-root': { + padding: theme.spacing(2), + }, + '& .MuiDialogActions-root': { + padding: theme.spacing(1), + }, +})); + +function BootstrapDialogTitle(props) { + const { children, onClose, ...other } = props; + + return ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; + +export default function CustomizationDialog() { + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + return ( + <> + + + Customization Dialog + + + + + +
    + + Modal title + + + + + Cras mattis consectetur purus sit amet fermentum. Cras justo odio, + dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac + consectetur ac, vestibulum at eros. + + + + Praesent commodo cursus magna, vel scelerisque nisl consectetur et. + Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. + + + + Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus + magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec + ullamcorper nulla non metus auctor fringilla. + + + + + + +
    +
    +
    + + ); +} \ No newline at end of file diff --git a/components/UIElements/Modal/FullScreenDialogs.js b/components/UIElements/Modal/FullScreenDialogs.js new file mode 100644 index 0000000..6e0898f --- /dev/null +++ b/components/UIElements/Modal/FullScreenDialogs.js @@ -0,0 +1,96 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import ListItemText from '@mui/material/ListItemText'; +import ListItem from '@mui/material/ListItem'; +import List from '@mui/material/List'; +import Divider from '@mui/material/Divider'; +import AppBar from '@mui/material/AppBar'; +import Toolbar from '@mui/material/Toolbar'; +import IconButton from '@mui/material/IconButton'; +import Typography from '@mui/material/Typography'; +import CloseIcon from '@mui/icons-material/Close'; +import Slide from '@mui/material/Slide'; +import Card from "@mui/material/Card"; + +const Transition = React.forwardRef(function Transition(props, ref) { + return ; +}); + +export default function FullScreenDialogs() { + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + return ( + <> + + + Full Screen Dialog + + + + + + + + + + + + Sound + + + + + + + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/UIElements/Modal/NestedModal.js b/components/UIElements/Modal/NestedModal.js new file mode 100644 index 0000000..91395c8 --- /dev/null +++ b/components/UIElements/Modal/NestedModal.js @@ -0,0 +1,103 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Modal from '@mui/material/Modal'; +import Button from '@mui/material/Button'; + +const style = { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: 400, + bgcolor: 'background.paper', + border: '2px solid #000', + boxShadow: 24, + pt: 2, + px: 4, + pb: 3, +}; + +function ChildModal() { + const [open, setOpen] = React.useState(false); + const handleOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + return ( + + + + +

    Text in a child modal

    +

    + Lorem ipsum, dolor sit amet consectetur adipisicing elit. +

    + +
    +
    +
    + ); +} + +export default function NestedModal() { + + const [open, setOpen] = React.useState(false); + const handleOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + return ( + <> + + + Nested Modal + + + + + + +

    Text in a modal

    +

    + Duis mollis, est non commodo luctus, nisi erat porttitor ligula. +

    + +
    +
    +
    + + ); +} diff --git a/components/UIElements/Modal/ScrollingLongContent.js b/components/UIElements/Modal/ScrollingLongContent.js new file mode 100644 index 0000000..230ac40 --- /dev/null +++ b/components/UIElements/Modal/ScrollingLongContent.js @@ -0,0 +1,95 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogContentText from '@mui/material/DialogContentText'; +import DialogTitle from '@mui/material/DialogTitle'; + +export default function ScrollingLongContent() { + const [open, setOpen] = React.useState(false); + const [scroll, setScroll] = React.useState('paper'); + + const handleClickOpen = (scrollType) => () => { + setOpen(true); + setScroll(scrollType); + }; + + const handleClose = () => { + setOpen(false); + }; + + const descriptionElementRef = React.useRef(null); + React.useEffect(() => { + if (open) { + const { current: descriptionElement } = descriptionElementRef; + if (descriptionElement !== null) { + descriptionElement.focus(); + } + } + }, [open]); + + return ( + <> + + + Scrolling Long Content + + + + + + + +
    + Subscribe + + + + {[...new Array(50)] + .map( + () => `Cras mattis consectetur purus sit amet fermentum. + Cras justo odio, dapibus ac facilisis in, egestas eget quam. + Morbi leo risus, porta ac consectetur ac, vestibulum at eros. + Praesent commodo cursus magna, vel scelerisque nisl consectetur et.`, + ) + .join('\n')} + + + + + + + +
    +
    +
    + + ); +} \ No newline at end of file diff --git a/components/UIElements/Modal/Transitions.js b/components/UIElements/Modal/Transitions.js new file mode 100644 index 0000000..8a56c12 --- /dev/null +++ b/components/UIElements/Modal/Transitions.js @@ -0,0 +1,75 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Backdrop from '@mui/material/Backdrop'; +import Box from '@mui/material/Box'; +import Modal from '@mui/material/Modal'; +import Fade from '@mui/material/Fade'; +import Button from '@mui/material/Button'; + +const style = { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: 400, + bgcolor: 'background.paper', + border: '2px solid #000', + boxShadow: 24, + p: 4, +}; + +export default function Transitions() { + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + return ( + <> + + + Transitions + + + + + + + + + Text in a modal + + + Duis mollis, est non commodo luctus, nisi erat porttitor ligula. + + + + + + + ); +} diff --git a/components/UIElements/Modal/TransitionsDialog.js b/components/UIElements/Modal/TransitionsDialog.js new file mode 100644 index 0000000..47a967c --- /dev/null +++ b/components/UIElements/Modal/TransitionsDialog.js @@ -0,0 +1,78 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogContentText from '@mui/material/DialogContentText'; +import DialogTitle from '@mui/material/DialogTitle'; +import Slide from '@mui/material/Slide'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +const Transition = React.forwardRef(function Transition(props, ref) { + return ; +}); + +export default function TransitionsDialog() { + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + return ( + + + Transitions Dialog + + +
    + + + +
    + {"Use Google's location service?"} + + + + Let Google help apps determine location. This means sending anonymous + location data to Google, even when no apps are running. + + + + + + + +
    +
    +
    +
    + ); +} \ No newline at end of file diff --git a/components/UIElements/Pagination/BasicPagination.js b/components/UIElements/Pagination/BasicPagination.js new file mode 100644 index 0000000..69da8e8 --- /dev/null +++ b/components/UIElements/Pagination/BasicPagination.js @@ -0,0 +1,38 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import Stack from '@mui/material/Stack'; + +export default function BasicPagination() { + return ( + <> + + + BasicPagination + + + + + + + + + + + ); +} diff --git a/components/UIElements/Pagination/CustomIcons.js b/components/UIElements/Pagination/CustomIcons.js new file mode 100644 index 0000000..722735f --- /dev/null +++ b/components/UIElements/Pagination/CustomIcons.js @@ -0,0 +1,46 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import PaginationItem from '@mui/material/PaginationItem'; +import Stack from '@mui/material/Stack'; +import ArrowBackIcon from '@mui/icons-material/ArrowBack'; +import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; + +export default function CustomIcons() { + return ( + <> + + + CustomIcons + + + + ( + + )} + /> + + + + ); +} diff --git a/components/UIElements/Pagination/OutlinedPagination.js b/components/UIElements/Pagination/OutlinedPagination.js new file mode 100644 index 0000000..da39b14 --- /dev/null +++ b/components/UIElements/Pagination/OutlinedPagination.js @@ -0,0 +1,38 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import Stack from '@mui/material/Stack'; + +export default function OutlinedPagination() { + return ( + <> + + + Outlined Pagination + + + + + + + + + + + ); +} diff --git a/components/UIElements/Pagination/PaginationSize.js b/components/UIElements/Pagination/PaginationSize.js new file mode 100644 index 0000000..69a1612 --- /dev/null +++ b/components/UIElements/Pagination/PaginationSize.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import Stack from '@mui/material/Stack'; + +export default function PaginationSize() { + return ( + <> + + + PaginationSize + + + + + + + + + + ); +} diff --git a/components/UIElements/Pagination/RoundedPagination.js b/components/UIElements/Pagination/RoundedPagination.js new file mode 100644 index 0000000..667368e --- /dev/null +++ b/components/UIElements/Pagination/RoundedPagination.js @@ -0,0 +1,36 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import Stack from '@mui/material/Stack'; + +export default function RoundedPagination() { + return ( + <> + + + Rounded Pagination + + + + + + + + + ); +} diff --git a/components/UIElements/Progress/Circular.js b/components/UIElements/Progress/Circular.js new file mode 100644 index 0000000..d70d3e2 --- /dev/null +++ b/components/UIElements/Progress/Circular.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import CircularProgress from '@mui/material/CircularProgress'; + +export default function Circular() { + return ( + <> + + + Circular + + + + + + + + + + ); +} diff --git a/components/UIElements/Progress/CircularDeterminate.js b/components/UIElements/Progress/CircularDeterminate.js new file mode 100644 index 0000000..f920abf --- /dev/null +++ b/components/UIElements/Progress/CircularDeterminate.js @@ -0,0 +1,52 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import CircularProgress from '@mui/material/CircularProgress'; + +export default function CircularDeterminate() { + + const [progress, setProgress] = React.useState(0); + + React.useEffect(() => { + const timer = setInterval(() => { + setProgress((prevProgress) => (prevProgress >= 100 ? 0 : prevProgress + 10)); + }, 800); + + return () => { + clearInterval(timer); + }; + }, []); + + return ( + <> + + + Circular Determinate + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Progress/CircularWithLabel.js b/components/UIElements/Progress/CircularWithLabel.js new file mode 100644 index 0000000..f3da4ac --- /dev/null +++ b/components/UIElements/Progress/CircularWithLabel.js @@ -0,0 +1,78 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import CircularProgress from '@mui/material/CircularProgress'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; +import Card from "@mui/material/Card"; + +function CircularProgressWithLabel(props) { + return ( + + + + + {`${Math.round(props.value)}%`} + + + + ); +} + +CircularProgressWithLabel.propTypes = { + /** + * The value of the progress indicator for the determinate variant. + * Value between 0 and 100. + * @default 0 + */ + value: PropTypes.number.isRequired, +}; + +export default function CircularStatic() { + const [progress, setProgress] = React.useState(10); + + React.useEffect(() => { + const timer = setInterval(() => { + setProgress((prevProgress) => (prevProgress >= 100 ? 0 : prevProgress + 10)); + }, 800); + return () => { + clearInterval(timer); + }; + }, []); + + return ( + <> + + + Default + + + + + + ); +} \ No newline at end of file diff --git a/components/UIElements/Progress/Customization.js b/components/UIElements/Progress/Customization.js new file mode 100644 index 0000000..2df1fbf --- /dev/null +++ b/components/UIElements/Progress/Customization.js @@ -0,0 +1,88 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import CircularProgress, { + circularProgressClasses, +} from '@mui/material/CircularProgress'; +import LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress'; + +const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ + height: 10, + borderRadius: 5, + [`&.${linearProgressClasses.colorPrimary}`]: { + backgroundColor: theme.palette.grey[theme.palette.mode === 'light' ? 200 : 800], + }, + [`& .${linearProgressClasses.bar}`]: { + borderRadius: 5, + backgroundColor: theme.palette.mode === 'light' ? '#1a90ff' : '#308fe8', + }, +})); + +// Inspired by the former Facebook spinners. +function FacebookCircularProgress(props) { + return ( + + + theme.palette.grey[theme.palette.mode === 'light' ? 200 : 800], + }} + size={40} + thickness={4} + {...props} + value={100} + /> + (theme.palette.mode === 'light' ? '#1a90ff' : '#308fe8'), + animationDuration: '550ms', + position: 'absolute', + left: 0, + [`& .${circularProgressClasses.circle}`]: { + strokeLinecap: 'round', + }, + }} + size={40} + thickness={4} + {...props} + /> + + ); +} + +export default function Customization() { + return ( + <> + + + Customization + + + + +
    + +
    +
    + + ); +} diff --git a/components/UIElements/Progress/InteractiveIntegration.js b/components/UIElements/Progress/InteractiveIntegration.js new file mode 100644 index 0000000..a706f47 --- /dev/null +++ b/components/UIElements/Progress/InteractiveIntegration.js @@ -0,0 +1,117 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import CircularProgress from '@mui/material/CircularProgress'; +import { green } from '@mui/material/colors'; +import Button from '@mui/material/Button'; +import Fab from '@mui/material/Fab'; +import CheckIcon from '@mui/icons-material/Check'; +import SaveIcon from '@mui/icons-material/Save'; + +export default function InteractiveIntegration() { + + const [loading, setLoading] = React.useState(false); + const [success, setSuccess] = React.useState(false); + const timer = React.useRef(); + + const buttonSx = { + ...(success && { + bgcolor: green[500], + '&:hover': { + bgcolor: green[700], + }, + }), + }; + + React.useEffect(() => { + return () => { + clearTimeout(timer.current); + }; + }, []); + + const handleButtonClick = () => { + if (!loading) { + setSuccess(false); + setLoading(true); + timer.current = window.setTimeout(() => { + setSuccess(true); + setLoading(false); + }, 2000); + } + }; + + return ( + <> + + + Interactive Integration + + + + + + {success ? : } + + {loading && ( + + )} + + + + + {loading && ( + + )} + + + + + ); +} diff --git a/components/UIElements/Progress/LinearIndeterminate.js b/components/UIElements/Progress/LinearIndeterminate.js new file mode 100644 index 0000000..f23a2b8 --- /dev/null +++ b/components/UIElements/Progress/LinearIndeterminate.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import LinearProgress from '@mui/material/LinearProgress'; + +export default function LinearIndeterminate() { + return ( + <> + + + Linear Indeterminate + + + + + + + + + + ); +} diff --git a/components/UIElements/Radio/Color.js b/components/UIElements/Radio/Color.js new file mode 100644 index 0000000..83d724c --- /dev/null +++ b/components/UIElements/Radio/Color.js @@ -0,0 +1,62 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { pink } from '@mui/material/colors'; +import Radio from '@mui/material/Radio'; + +export default function Color() { + + const [selectedValue, setSelectedValue] = React.useState('a'); + + const handleChange = (event) => { + setSelectedValue(event.target.value); + }; + + const controlProps = (item) => ({ + checked: selectedValue === item, + onChange: handleChange, + value: item, + name: 'color-radio-button-demo', + inputProps: { 'aria-label': item }, + }); + + return ( + <> + + + Color + + +
    + + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Radio/Controlled.js b/components/UIElements/Radio/Controlled.js new file mode 100644 index 0000000..1e3ef42 --- /dev/null +++ b/components/UIElements/Radio/Controlled.js @@ -0,0 +1,53 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; + +export default function Controlled() { + const [value, setValue] = React.useState('female'); + + const handleChange = (event) => { + setValue(event.target.value); + }; + + return ( + <> + + + Controlled + + + + Gender + + } label="Female" /> + } label="Male" /> + + + + + ); +} diff --git a/components/UIElements/Radio/Direction.js b/components/UIElements/Radio/Direction.js new file mode 100644 index 0000000..3019ed2 --- /dev/null +++ b/components/UIElements/Radio/Direction.js @@ -0,0 +1,53 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; + +export default function Direction() { + return ( + <> + + + Direction + + + + Gender + + } label="Female" /> + } label="Male" /> + } label="Other" /> + } + label="other" + /> + + + + + ); +} diff --git a/components/UIElements/Radio/Group.js b/components/UIElements/Radio/Group.js new file mode 100644 index 0000000..ccb30a5 --- /dev/null +++ b/components/UIElements/Radio/Group.js @@ -0,0 +1,47 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; + +export default function Group() { + return ( + <> + + + Radio Group + + + + Gender + + } label="Female" /> + } label="Male" /> + } label="Other" /> + + + + + ); +} diff --git a/components/UIElements/Radio/Size.js b/components/UIElements/Radio/Size.js new file mode 100644 index 0000000..0a198d7 --- /dev/null +++ b/components/UIElements/Radio/Size.js @@ -0,0 +1,59 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Radio from '@mui/material/Radio'; + +export default function Size() { + + const [selectedValue, setSelectedValue] = React.useState('a'); + const handleChange = (event) => { + setSelectedValue(event.target.value); + }; + + const controlProps = (item) => ({ + checked: selectedValue === item, + onChange: handleChange, + value: item, + name: 'size-radio-button-demo', + inputProps: { 'aria-label': item }, + }); + + return ( + <> + + + Size + + +
    + + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Rating/Basic.js b/components/UIElements/Rating/Basic.js new file mode 100644 index 0000000..7ad686c --- /dev/null +++ b/components/UIElements/Rating/Basic.js @@ -0,0 +1,57 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Rating from '@mui/material/Rating'; + +export default function Basic() { + const [value, setValue] = React.useState(2); + + return ( + <> + + + Basic + + + legend': { mt: 2 }, + }} + > + Controlled + { + setValue(newValue); + }} + /> + + Read only + + + Disabled + + + No rating given + + + + + ); +} diff --git a/components/UIElements/Rating/Customization.js b/components/UIElements/Rating/Customization.js new file mode 100644 index 0000000..89fde6e --- /dev/null +++ b/components/UIElements/Rating/Customization.js @@ -0,0 +1,61 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import Rating from '@mui/material/Rating'; +import FavoriteIcon from '@mui/icons-material/Favorite'; +import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; + +const StyledRating = styled(Rating)({ + '& .MuiRating-iconFilled': { + color: '#ff6d75', + }, + '& .MuiRating-iconHover': { + color: '#ff3d47', + }, +}); + +export default function Customization() { + return ( + <> + + + Customization + + + legend': { mt: 2 }, + }} + > + Custom icon and color + `${value} Heart${value !== 1 ? 's' : ''}`} + precision={0.5} + icon={} + emptyIcon={} + /> + 10 stars + + + + + ); +} diff --git a/components/UIElements/Rating/HoverFeedback.js b/components/UIElements/Rating/HoverFeedback.js new file mode 100644 index 0000000..53c15ce --- /dev/null +++ b/components/UIElements/Rating/HoverFeedback.js @@ -0,0 +1,82 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Rating from '@mui/material/Rating'; +import Box from '@mui/material/Box'; +import StarIcon from '@mui/icons-material/Star'; + +const labels = { + 0.5: 'Useless', + 1: 'Useless+', + 1.5: 'Poor', + 2: 'Poor+', + 2.5: 'Ok', + 3: 'Ok+', + 3.5: 'Good', + 4: 'Good+', + 4.5: 'Excellent', + 5: 'Excellent+', +}; + +function getLabelText(value) { + return `${value} Star${value !== 1 ? 's' : ''}, ${labels[value]}`; +} + +export default function HoverFeedback() { + + const [value, setValue] = React.useState(2); + const [hover, setHover] = React.useState(-1); + + return ( + <> + + + Hover Feedback + + + + { + setValue(newValue); + }} + onChangeActive={(event, newHover) => { + setHover(newHover); + }} + emptyIcon={} + /> + {value !== null && ( + + {labels[hover !== -1 ? hover : value]} + + )} + + + + ); +} diff --git a/components/UIElements/Rating/RadioGroup.js b/components/UIElements/Rating/RadioGroup.js new file mode 100644 index 0000000..457cded --- /dev/null +++ b/components/UIElements/Rating/RadioGroup.js @@ -0,0 +1,83 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from 'prop-types'; +import { styled } from '@mui/material/styles'; +import Rating from '@mui/material/Rating'; +import SentimentVeryDissatisfiedIcon from '@mui/icons-material/SentimentVeryDissatisfied'; +import SentimentDissatisfiedIcon from '@mui/icons-material/SentimentDissatisfied'; +import SentimentSatisfiedIcon from '@mui/icons-material/SentimentSatisfied'; +import SentimentSatisfiedAltIcon from '@mui/icons-material/SentimentSatisfiedAltOutlined'; +import SentimentVerySatisfiedIcon from '@mui/icons-material/SentimentVerySatisfied'; + +const StyledRating = styled(Rating)(({ theme }) => ({ + '& .MuiRating-iconEmpty .MuiSvgIcon-root': { + color: theme.palette.action.disabled, + }, +})); + +const customIcons = { + 1: { + icon: , + label: 'Very Dissatisfied', + }, + 2: { + icon: , + label: 'Dissatisfied', + }, + 3: { + icon: , + label: 'Neutral', + }, + 4: { + icon: , + label: 'Satisfied', + }, + 5: { + icon: , + label: 'Very Satisfied', + }, +}; + +function IconContainer(props) { + const { value, ...other } = props; + return {customIcons[value].icon}; +} + +IconContainer.propTypes = { + value: PropTypes.number.isRequired, +}; + +export default function RadioGroup() { + return ( + <> + + + Radio Group + + + customIcons[value].label} + highlightSelectedOnly + /> + + + ); +} diff --git a/components/UIElements/Rating/RatingPrecision.js b/components/UIElements/Rating/RatingPrecision.js new file mode 100644 index 0000000..97cf1ac --- /dev/null +++ b/components/UIElements/Rating/RatingPrecision.js @@ -0,0 +1,36 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Rating from '@mui/material/Rating'; +import Stack from '@mui/material/Stack'; + +export default function RatingPrecision() { + return ( + <> + + + Rating Precision + + + + + + + + + ); +} diff --git a/components/UIElements/Rating/Sizes.js b/components/UIElements/Rating/Sizes.js new file mode 100644 index 0000000..c425f3e --- /dev/null +++ b/components/UIElements/Rating/Sizes.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Rating from '@mui/material/Rating'; +import Stack from '@mui/material/Stack'; + +export default function Sizes() { + return ( + <> + + + Sizes + + + + + + + + + + ); +} diff --git a/components/UIElements/Select/AutoWidth.js b/components/UIElements/Select/AutoWidth.js new file mode 100644 index 0000000..3cb5d63 --- /dev/null +++ b/components/UIElements/Select/AutoWidth.js @@ -0,0 +1,61 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +export default function AutoWidth() { + + const [age, setAge] = React.useState(''); + + const handleChange = (event) => { + setAge(event.target.value); + }; + + return ( + <> + + + Auto Width + + +
    + + Age + + +
    +
    + + ); +} diff --git a/components/UIElements/Select/Basic.js b/components/UIElements/Select/Basic.js new file mode 100644 index 0000000..c713d9e --- /dev/null +++ b/components/UIElements/Select/Basic.js @@ -0,0 +1,58 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +export default function Basic() { + + const [age, setAge] = React.useState(''); + + const handleChange = (event) => { + setAge(event.target.value); + }; + + return ( + <> + + + Basic + + + + + Age + + + + + + ); +} diff --git a/components/UIElements/Select/Customization.js b/components/UIElements/Select/Customization.js new file mode 100644 index 0000000..b8743c0 --- /dev/null +++ b/components/UIElements/Select/Customization.js @@ -0,0 +1,115 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; +import NativeSelect from '@mui/material/NativeSelect'; +import InputBase from '@mui/material/InputBase'; + +const BootstrapInput = styled(InputBase)(({ theme }) => ({ + 'label + &': { + marginTop: theme.spacing(3), + }, + '& .MuiInputBase-input': { + borderRadius: 4, + position: 'relative', + backgroundColor: theme.palette.background.paper, + border: '1px solid #ced4da', + fontSize: 16, + padding: '10px 26px 10px 12px', + transition: theme.transitions.create(['border-color', 'box-shadow']), + // Use the system font instead of the default Roboto font. + fontFamily: [ + '-apple-system', + 'BlinkMacSystemFont', + '"Segoe UI"', + 'Roboto', + '"Helvetica Neue"', + 'Arial', + 'sans-serif', + '"Apple Color Emoji"', + '"Segoe UI Emoji"', + '"Segoe UI Symbol"', + ].join(','), + '&:focus': { + borderRadius: 4, + borderColor: '#80bdff', + boxShadow: '0 0 0 0.2rem rgba(0,123,255,.25)', + }, + }, +})); + +export default function Customization() { + + const [age, setAge] = React.useState(''); + const handleChange = (event) => { + setAge(event.target.value); + }; + + return ( + <> + + + Customization + + +
    + + Age + + + + + Age + + + + + Age + } + > + + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Select/MultipleSelectCheckmarks.js b/components/UIElements/Select/MultipleSelectCheckmarks.js new file mode 100644 index 0000000..467b476 --- /dev/null +++ b/components/UIElements/Select/MultipleSelectCheckmarks.js @@ -0,0 +1,96 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import ListItemText from '@mui/material/ListItemText'; +import Select from '@mui/material/Select'; +import Checkbox from '@mui/material/Checkbox'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +export default function MultipleSelectCheckmarks() { + + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multiple Select Checkmarks + + + <> + + Tag + + + + + + ); +} diff --git a/components/UIElements/Select/MultipleSelectChip.js b/components/UIElements/Select/MultipleSelectChip.js new file mode 100644 index 0000000..ddf3bd5 --- /dev/null +++ b/components/UIElements/Select/MultipleSelectChip.js @@ -0,0 +1,115 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; +import Chip from '@mui/material/Chip'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +export default function MultipleSelectChip() { + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multiple Select Chip + + + <> + + Chip + + + + + + ); +} diff --git a/components/UIElements/Select/MultipleSelectDefault.js b/components/UIElements/Select/MultipleSelectDefault.js new file mode 100644 index 0000000..c34c04c --- /dev/null +++ b/components/UIElements/Select/MultipleSelectDefault.js @@ -0,0 +1,108 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { useTheme } from '@mui/material/styles'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + + +export default function MultipleSelectDefault() { + + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multiple Select Default + + +
    + + Name + + +
    +
    + + ); +} diff --git a/components/UIElements/Skeleton/Animations.js b/components/UIElements/Skeleton/Animations.js new file mode 100644 index 0000000..3094467 --- /dev/null +++ b/components/UIElements/Skeleton/Animations.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Skeleton from '@mui/material/Skeleton'; + +export default function Animations() { + return ( + <> + + + Animations + + + + + + + + + + ); +} diff --git a/components/UIElements/Skeleton/PulsateExample.js b/components/UIElements/Skeleton/PulsateExample.js new file mode 100644 index 0000000..ef70126 --- /dev/null +++ b/components/UIElements/Skeleton/PulsateExample.js @@ -0,0 +1,107 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import PropTypes from 'prop-types'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import Skeleton from '@mui/material/Skeleton'; + +const data = [ + { + src: 'https://i.ytimg.com/vi/pLqipJNItIo/hqdefault.jpg?sqp=-oaymwEYCNIBEHZIVfKriqkDCwgBFQAAiEIYAXAB&rs=AOn4CLBkklsyaw9FxDmMKapyBYCn9tbPNQ', + title: 'Don Diablo @ Tomorrowland Main Stage 2019 | Official…', + channel: 'Don Diablo', + views: '396k views', + createdAt: 'a week ago', + }, + { + src: 'https://i.ytimg.com/vi/_Uu12zY01ts/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLCpX6Jan2rxrCAZxJYDXppTP4MoQA', + title: 'Queen - Greatest Hits', + channel: 'Queen Official', + views: '40M views', + createdAt: '3 years ago', + }, + { + src: 'https://i.ytimg.com/vi/kkLk2XWMBf8/hqdefault.jpg?sqp=-oaymwEYCNIBEHZIVfKriqkDCwgBFQAAiEIYAXAB&rs=AOn4CLB4GZTFu1Ju2EPPPXnhMZtFVvYBaw', + title: 'Calvin Harris, Sam Smith - Promises (Official Video)', + channel: 'Calvin Harris', + views: '130M views', + createdAt: '10 months ago', + }, +]; + +function Media(props) { + const { loading = false } = props; + + return ( + + {(loading ? Array.from(new Array(3)) : data).map((item, index) => ( + + {item ? ( + {item.title} + ) : ( + + )} + + {item ? ( + + + {item.title} + + + {item.channel} + + + {`${item.views} • ${item.createdAt}`} + + + ) : ( + + + + + )} + + ))} + + ); +} + +Media.propTypes = { + loading: PropTypes.bool, +}; + +export default function PulsateExample() { + return ( + <> + + + Pulsate Example + + + + + + + + + ); +} diff --git a/components/UIElements/Skeleton/Variants.js b/components/UIElements/Skeleton/Variants.js new file mode 100644 index 0000000..4c59f0a --- /dev/null +++ b/components/UIElements/Skeleton/Variants.js @@ -0,0 +1,43 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Skeleton from '@mui/material/Skeleton'; +import Stack from '@mui/material/Stack'; + +export default function Variants() { + return ( + <> + + + Variants + + + + {/* For variant="text", adjust the height via font-size */} + + + {/* For other variants, adjust the size with `width` and `height` */} + + + + + + + + + ); +} diff --git a/components/UIElements/Skeleton/WaveExample.js b/components/UIElements/Skeleton/WaveExample.js new file mode 100644 index 0000000..990d6a3 --- /dev/null +++ b/components/UIElements/Skeleton/WaveExample.js @@ -0,0 +1,118 @@ +import React from "react"; +import PropTypes from 'prop-types'; +import Card from '@mui/material/Card'; +import CardHeader from '@mui/material/CardHeader'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import Avatar from '@mui/material/Avatar'; +import Typography from '@mui/material/Typography'; +import IconButton from '@mui/material/IconButton'; +import MoreVertIcon from '@mui/icons-material/MoreVert'; +import Skeleton from '@mui/material/Skeleton'; + +function Media(props) { + const { loading = false } = props; + + return ( + + + ) : ( + + ) + } + action={ + loading ? null : ( + + + + ) + } + title={ + loading ? ( + + ) : ( + 'Ted' + ) + } + subheader={ + loading ? ( + + ) : ( + '5 hours ago' + ) + } + /> + {loading ? ( + + ) : ( + + )} + + + {loading ? ( + + + + + ) : ( + + { + "Why First Minister of Scotland Nicola Sturgeon thinks GDP is the wrong measure of a country's success:" + } + + )} + + + ); +} + +Media.propTypes = { + loading: PropTypes.bool, +}; + +export default function WaveExample() { + return ( + <> + + + Wave Example + + + <> + + + + + + ); +} diff --git a/components/UIElements/Slider/Continuous.js b/components/UIElements/Slider/Continuous.js new file mode 100644 index 0000000..f250c44 --- /dev/null +++ b/components/UIElements/Slider/Continuous.js @@ -0,0 +1,50 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Slider from '@mui/material/Slider'; +import VolumeDown from '@mui/icons-material/VolumeDown'; +import VolumeUp from '@mui/icons-material/VolumeUp'; + +export default function Continuous() { + + const [value, setValue] = React.useState(30); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Continuous + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Slider/CustomMarks.js b/components/UIElements/Slider/CustomMarks.js new file mode 100644 index 0000000..3ec83ef --- /dev/null +++ b/components/UIElements/Slider/CustomMarks.js @@ -0,0 +1,65 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +const marks = [ + { + value: 0, + label: '0°C', + }, + { + value: 20, + label: '20°C', + }, + { + value: 37, + label: '37°C', + }, + { + value: 100, + label: '100°C', + }, +]; + +function valuetext(value) { + return `${value}°C`; +} + +export default function CustomMarks() { + return ( + <> + + + Custom Marks + + + + + + + + ); +} diff --git a/components/UIElements/Slider/Discrete.js b/components/UIElements/Slider/Discrete.js new file mode 100644 index 0000000..75d6994 --- /dev/null +++ b/components/UIElements/Slider/Discrete.js @@ -0,0 +1,49 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +function valuetext(value) { + return `${value}°C`; +} + +export default function Discrete() { + return ( + <> + + + Discrete + + + + + + + + + ); +} diff --git a/components/UIElements/Slider/LabelAlwaysVisible.js b/components/UIElements/Slider/LabelAlwaysVisible.js new file mode 100644 index 0000000..47fe862 --- /dev/null +++ b/components/UIElements/Slider/LabelAlwaysVisible.js @@ -0,0 +1,65 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +const marks = [ + { + value: 0, + label: '0°C', + }, + { + value: 20, + label: '20°C', + }, + { + value: 37, + label: '37°C', + }, + { + value: 100, + label: '100°C', + }, +]; + +function valuetext(value) { + return `${value}°C`; +} + +export default function LabelAlwaysVisible() { + return ( + <> + + + Label Always Visible + + + + + + + + ); +} diff --git a/components/UIElements/Slider/RestrictedValues.js b/components/UIElements/Slider/RestrictedValues.js new file mode 100644 index 0000000..5aa158d --- /dev/null +++ b/components/UIElements/Slider/RestrictedValues.js @@ -0,0 +1,70 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +const marks = [ + { + value: 0, + label: '0°C', + }, + { + value: 20, + label: '20°C', + }, + { + value: 37, + label: '37°C', + }, + { + value: 100, + label: '100°C', + }, +]; + +function valuetext(value) { + return `${value}°C`; +} + +function valueLabelFormat(value) { + return marks.findIndex((mark) => mark.value === value) + 1; +} + +export default function RestrictedValues() { + return ( + <> + + + Restricted Values + + + + + + + + ); +} diff --git a/components/UIElements/Slider/Sizes.js b/components/UIElements/Slider/Sizes.js new file mode 100644 index 0000000..88c4a1f --- /dev/null +++ b/components/UIElements/Slider/Sizes.js @@ -0,0 +1,41 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +export default function Sizes() { + return ( + <> + + + Sizes + + + + + + + + + ); +} diff --git a/components/UIElements/Slider/SmallSteps.js b/components/UIElements/Slider/SmallSteps.js new file mode 100644 index 0000000..ead94d0 --- /dev/null +++ b/components/UIElements/Slider/SmallSteps.js @@ -0,0 +1,48 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +function valuetext(value) { + return `${value}°C`; +} + +export default function SmallSteps() { + return ( + <> + + + Small Steps + + + + + + + + ); +} diff --git a/components/UIElements/Snackbar/ComplementaryProjects.js b/components/UIElements/Snackbar/ComplementaryProjects.js new file mode 100644 index 0000000..1345e30 --- /dev/null +++ b/components/UIElements/Snackbar/ComplementaryProjects.js @@ -0,0 +1,55 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Button from '@mui/material/Button'; +import { SnackbarProvider, useSnackbar } from 'notistack'; + +function MyApp() { + const { enqueueSnackbar } = useSnackbar(); + + const handleClick = () => { + enqueueSnackbar('I love snacks.'); + }; + + const handleClickVariant = (variant) => () => { + // variant could be success, error, warning, info, or default + enqueueSnackbar('This is a success message!', { variant }); + }; + + return ( + + + + + ); +} + +export default function ComplementaryProjects() { + return ( + <> + + + Complementary Projects + + + + + + + + ); +} diff --git a/components/UIElements/Snackbar/Customization.js b/components/UIElements/Snackbar/Customization.js new file mode 100644 index 0000000..8a38638 --- /dev/null +++ b/components/UIElements/Snackbar/Customization.js @@ -0,0 +1,72 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import Snackbar from '@mui/material/Snackbar'; +import MuiAlert from '@mui/material/Alert'; + +const Alert = React.forwardRef(function Alert(props, ref) { + return ; +}); + +export default function Customization() { + + const [open, setOpen] = React.useState(false); + + const handleClick = () => { + setOpen(true); + }; + + const handleClose = (event, reason) => { + if (reason === 'clickaway') { + return; + } + + setOpen(false); + }; + + return ( + <> + + + Customization + + + + + + + + This is a success message! + + + + This is an error message! + + This is a warning message! + + This is an information message! + + This is a success message! + + + + ); +} diff --git a/components/UIElements/Snackbar/PositionedSnackbars.js b/components/UIElements/Snackbar/PositionedSnackbars.js new file mode 100644 index 0000000..f9ef58f --- /dev/null +++ b/components/UIElements/Snackbar/PositionedSnackbars.js @@ -0,0 +1,111 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Button from '@mui/material/Button'; +import Snackbar from '@mui/material/Snackbar'; + +export default function PositionedSnackbars() { + + const [state, setState] = React.useState({ + open: false, + vertical: 'top', + horizontal: 'center', + }); + const { vertical, horizontal, open } = state; + + const handleClick = (newState) => () => { + setState({ open: true, ...newState }); + }; + + const handleClose = () => { + setState({ ...state, open: false }); + }; + + const buttons = ( + + + + + + + + + ); + + return ( + <> + + + Positioned Snackbars + + +
    + {buttons} + +
    +
    + + ); +} diff --git a/components/UIElements/Snackbar/SimpleSnackbars.js b/components/UIElements/Snackbar/SimpleSnackbars.js new file mode 100644 index 0000000..27a1134 --- /dev/null +++ b/components/UIElements/Snackbar/SimpleSnackbars.js @@ -0,0 +1,77 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Button from '@mui/material/Button'; +import Snackbar from '@mui/material/Snackbar'; +import IconButton from '@mui/material/IconButton'; +import CloseIcon from '@mui/icons-material/Close'; + +export default function SimpleSnackbars() { + + const [open, setOpen] = React.useState(false); + + const handleClick = () => { + setOpen(true); + }; + + const handleClose = (event, reason) => { + if (reason === 'clickaway') { + return; + } + + setOpen(false); + }; + + const action = ( + + + + + + + ); + + return ( + <> + + + Simple Snackbars + + + <> + + + + + + ); +} diff --git a/components/UIElements/Stepper/AlternativeLabel.js b/components/UIElements/Stepper/AlternativeLabel.js new file mode 100644 index 0000000..bcb189a --- /dev/null +++ b/components/UIElements/Stepper/AlternativeLabel.js @@ -0,0 +1,49 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; + +const steps = [ + 'Select master blaster campaign settings', + 'Create an ad group', + 'Create an ad', +]; + +export default function AlternativeLabel() { + return ( + <> + + + Alternative Label + + + + + {steps.map((label) => ( + + {label} + + ))} + + + + + ); +} diff --git a/components/UIElements/Stepper/CustomizedHorizontalStepper.js b/components/UIElements/Stepper/CustomizedHorizontalStepper.js new file mode 100644 index 0000000..40af482 --- /dev/null +++ b/components/UIElements/Stepper/CustomizedHorizontalStepper.js @@ -0,0 +1,211 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from 'prop-types'; +import { styled } from '@mui/material/styles'; +import Stack from '@mui/material/Stack'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; +import Check from '@mui/icons-material/Check'; +import SettingsIcon from '@mui/icons-material/Settings'; +import GroupAddIcon from '@mui/icons-material/GroupAdd'; +import VideoLabelIcon from '@mui/icons-material/VideoLabel'; +import StepConnector, { stepConnectorClasses } from '@mui/material/StepConnector'; + +const QontoConnector = styled(StepConnector)(({ theme }) => ({ + [`&.${stepConnectorClasses.alternativeLabel}`]: { + top: 10, + left: 'calc(-50% + 16px)', + right: 'calc(50% + 16px)', + }, + [`&.${stepConnectorClasses.active}`]: { + [`& .${stepConnectorClasses.line}`]: { + borderColor: '#784af4', + }, + }, + [`&.${stepConnectorClasses.completed}`]: { + [`& .${stepConnectorClasses.line}`]: { + borderColor: '#784af4', + }, + }, + [`& .${stepConnectorClasses.line}`]: { + borderColor: theme.palette.mode === 'dark' ? theme.palette.grey[800] : '#eaeaf0', + borderTopWidth: 3, + borderRadius: 1, + }, +})); + +const QontoStepIconRoot = styled('div')(({ theme, ownerState }) => ({ + color: theme.palette.mode === 'dark' ? theme.palette.grey[700] : '#eaeaf0', + display: 'flex', + height: 22, + alignItems: 'center', + ...(ownerState.active && { + color: '#784af4', + }), + '& .QontoStepIcon-completedIcon': { + color: '#784af4', + zIndex: 1, + fontSize: 18, + }, + '& .QontoStepIcon-circle': { + width: 8, + height: 8, + borderRadius: '50%', + backgroundColor: 'currentColor', + }, +})); + +function QontoStepIcon(props) { + const { active, completed, className } = props; + + return ( + + {completed ? ( + + ) : ( +
    + )} + + ); +} + +QontoStepIcon.propTypes = { + /** + * Whether this step is active. + * @default false + */ + active: PropTypes.bool, + className: PropTypes.string, + /** + * Mark the step as completed. Is passed to child components. + * @default false + */ + completed: PropTypes.bool, +}; + +const ColorlibConnector = styled(StepConnector)(({ theme }) => ({ + [`&.${stepConnectorClasses.alternativeLabel}`]: { + top: 22, + }, + [`&.${stepConnectorClasses.active}`]: { + [`& .${stepConnectorClasses.line}`]: { + backgroundImage: + 'linear-gradient( 95deg,rgb(242,113,33) 0%,rgb(233,64,87) 50%,rgb(138,35,135) 100%)', + }, + }, + [`&.${stepConnectorClasses.completed}`]: { + [`& .${stepConnectorClasses.line}`]: { + backgroundImage: + 'linear-gradient( 95deg,rgb(242,113,33) 0%,rgb(233,64,87) 50%,rgb(138,35,135) 100%)', + }, + }, + [`& .${stepConnectorClasses.line}`]: { + height: 3, + border: 0, + backgroundColor: + theme.palette.mode === 'dark' ? theme.palette.grey[800] : '#eaeaf0', + borderRadius: 1, + }, +})); + +const ColorlibStepIconRoot = styled('div')(({ theme, ownerState }) => ({ + backgroundColor: theme.palette.mode === 'dark' ? theme.palette.grey[700] : '#ccc', + zIndex: 1, + color: '#fff', + width: 50, + height: 50, + display: 'flex', + borderRadius: '50%', + justifyContent: 'center', + alignItems: 'center', + ...(ownerState.active && { + backgroundImage: + 'linear-gradient( 136deg, rgb(242,113,33) 0%, rgb(233,64,87) 50%, rgb(138,35,135) 100%)', + boxShadow: '0 4px 10px 0 rgba(0,0,0,.25)', + }), + ...(ownerState.completed && { + backgroundImage: + 'linear-gradient( 136deg, rgb(242,113,33) 0%, rgb(233,64,87) 50%, rgb(138,35,135) 100%)', + }), +})); + +function ColorlibStepIcon(props) { + const { active, completed, className } = props; + + const icons = { + 1: , + 2: , + 3: , + }; + + return ( + + {icons[String(props.icon)]} + + ); +} + +ColorlibStepIcon.propTypes = { + /** + * Whether this step is active. + * @default false + */ + active: PropTypes.bool, + className: PropTypes.string, + /** + * Mark the step as completed. Is passed to child components. + * @default false + */ + completed: PropTypes.bool, + /** + * The label displayed in the step icon. + */ + icon: PropTypes.node, +}; + +const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad']; + +export default function CustomizedHorizontalStepper() { + return ( + <> + + + Customized Horizontal Stepper + + + + }> + {steps.map((label) => ( + + {label} + + ))} + + }> + {steps.map((label) => ( + + {label} + + ))} + + + + + ); +} diff --git a/components/UIElements/Stepper/ErrorStep.js b/components/UIElements/Stepper/ErrorStep.js new file mode 100644 index 0000000..e49c61e --- /dev/null +++ b/components/UIElements/Stepper/ErrorStep.js @@ -0,0 +1,62 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; + +const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad']; + +export default function ErrorStep() { + const isStepFailed = (step) => { + return step === 1; + }; + + return ( + <> + + + Error Step + + + + + {steps.map((label, index) => { + const labelProps = {}; + if (isStepFailed(index)) { + labelProps.optional = ( + + Alert message + + ); + + labelProps.error = true; + } + + return ( + + {label} + + ); + })} + + + + + ); +} diff --git a/components/UIElements/Stepper/HorizontalStepper.js b/components/UIElements/Stepper/HorizontalStepper.js new file mode 100644 index 0000000..375d154 --- /dev/null +++ b/components/UIElements/Stepper/HorizontalStepper.js @@ -0,0 +1,139 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; +import Button from '@mui/material/Button'; + +const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad']; + +export default function HorizontalStepper() { + + const [activeStep, setActiveStep] = React.useState(0); + const [skipped, setSkipped] = React.useState(new Set()); + + const isStepOptional = (step) => { + return step === 1; + }; + + const isStepSkipped = (step) => { + return skipped.has(step); + }; + + const handleNext = () => { + let newSkipped = skipped; + if (isStepSkipped(activeStep)) { + newSkipped = new Set(newSkipped.values()); + newSkipped.delete(activeStep); + } + + setActiveStep((prevActiveStep) => prevActiveStep + 1); + setSkipped(newSkipped); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const handleSkip = () => { + if (!isStepOptional(activeStep)) { + // You probably want to guard against something like this, + // it should never occur unless someone's actively trying to break something. + throw new Error("You can't skip a step that isn't optional."); + } + + setActiveStep((prevActiveStep) => prevActiveStep + 1); + setSkipped((prevSkipped) => { + const newSkipped = new Set(prevSkipped.values()); + newSkipped.add(activeStep); + return newSkipped; + }); + }; + + const handleReset = () => { + setActiveStep(0); + }; + + return ( + <> + + + Horizontal Stepper + + + + + {steps.map((label, index) => { + const stepProps = {}; + const labelProps = {}; + if (isStepOptional(index)) { + labelProps.optional = ( + Optional + ); + } + if (isStepSkipped(index)) { + stepProps.completed = false; + } + return ( + + {label} + + ); + })} + + {activeStep === steps.length ? ( + + + All steps completed - you're finished + + + + + + + ) : ( + + Step {activeStep + 1} + + + + {isStepOptional(activeStep) && ( + + )} + + + + + )} + + + + ); +} diff --git a/components/UIElements/Stepper/MobileStepperText.js b/components/UIElements/Stepper/MobileStepperText.js new file mode 100644 index 0000000..1118584 --- /dev/null +++ b/components/UIElements/Stepper/MobileStepperText.js @@ -0,0 +1,122 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import { useTheme } from '@mui/material/styles'; +import MobileStepper from '@mui/material/MobileStepper'; +import Paper from '@mui/material/Paper'; +import Button from '@mui/material/Button'; +import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'; +import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'; + +const steps = [ + { + label: 'Select campaign settings', + description: `For each ad campaign that you create, you can control how much + you're willing to spend on clicks and conversions, which networks + and geographical locations you want your ads to show on, and more.`, + }, + { + label: 'Create an ad group', + description: + 'An ad group contains one or more ads which target a shared set of keywords.', + }, + { + label: 'Create an ad', + description: `Try out different ad text to see what brings in the most customers, + and learn how to enhance your ads using features like ad extensions. + If you run into any problems with your ads, find out how to tell if + they're running and how to resolve approval issues.`, + }, +]; + +export default function MobileStepperText() { + const theme = useTheme(); + const [activeStep, setActiveStep] = React.useState(0); + const maxSteps = steps.length; + + const handleNext = () => { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + return ( + <> + + + Mobile Stepper + + + + + {steps[activeStep].label} + + + + {steps[activeStep].description} + + + + Next + {theme.direction === 'rtl' ? ( + + ) : ( + + )} + + } + backButton={ + + } + className="bg-black" + /> + + + + ); +} diff --git a/components/UIElements/Stepper/NonLinear.js b/components/UIElements/Stepper/NonLinear.js new file mode 100644 index 0000000..6ab4a1f --- /dev/null +++ b/components/UIElements/Stepper/NonLinear.js @@ -0,0 +1,148 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepButton from '@mui/material/StepButton'; +import Button from '@mui/material/Button'; + +const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad']; + +export default function NonLinear() { + + const [activeStep, setActiveStep] = React.useState(0); + const [completed, setCompleted] = React.useState({}); + + const totalSteps = () => { + return steps.length; + }; + + const completedSteps = () => { + return Object.keys(completed).length; + }; + + const isLastStep = () => { + return activeStep === totalSteps() - 1; + }; + + const allStepsCompleted = () => { + return completedSteps() === totalSteps(); + }; + + const handleNext = () => { + const newActiveStep = + isLastStep() && !allStepsCompleted() + ? // It's the last step, but not all steps have been completed, + // find the first step that has been completed + steps.findIndex((step, i) => !(i in completed)) + : activeStep + 1; + setActiveStep(newActiveStep); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const handleStep = (step) => () => { + setActiveStep(step); + }; + + const handleComplete = () => { + const newCompleted = completed; + newCompleted[activeStep] = true; + setCompleted(newCompleted); + handleNext(); + }; + + const handleReset = () => { + setActiveStep(0); + setCompleted({}); + }; + + return ( + <> + + + Non Linear + + + + + {steps.map((label, index) => ( + + + {label} + + + ))} + + +
    + {allStepsCompleted() ? ( + + + All steps completed - you're finished + + + + + + + ) : ( + + + Step {activeStep + 1} + + + + + + + + + + {activeStep !== steps.length && + (completed[activeStep] ? ( + + Step {activeStep + 1} already completed + + ) : ( + + ))} + + + )} +
    +
    +
    + + ); +} diff --git a/components/UIElements/Stepper/VerticalStepper.js b/components/UIElements/Stepper/VerticalStepper.js new file mode 100644 index 0000000..8e7cf35 --- /dev/null +++ b/components/UIElements/Stepper/VerticalStepper.js @@ -0,0 +1,121 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; +import StepContent from '@mui/material/StepContent'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; + +const steps = [ + { + label: 'Select campaign settings', + description: `For each ad campaign that you create, you can control how much + you're willing to spend on clicks and conversions, which networks + and geographical locations you want your ads to show on, and more.`, + }, + { + label: 'Create an ad group', + description: + 'An ad group contains one or more ads which target a shared set of keywords.', + }, + { + label: 'Create an ad', + description: `Try out different ad text to see what brings in the most customers, + and learn how to enhance your ads using features like ad extensions. + If you run into any problems with your ads, find out how to tell if + they're running and how to resolve approval issues.`, + }, +]; + +export default function VerticalStepper() { + + const [activeStep, setActiveStep] = React.useState(0); + + const handleNext = () => { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const handleReset = () => { + setActiveStep(0); + }; + + return ( + <> + + + Vertical Stepper + + + + + {steps.map((step, index) => ( + + Last step + ) : null + } + > + {step.label} + + + {step.description} + +
    + + +
    +
    +
    +
    + ))} +
    + {activeStep === steps.length && ( + + All steps completed - you're finished + + + )} +
    +
    + + ); +} diff --git a/components/UIElements/SwiperSlider/AutoplaySlider.js b/components/UIElements/SwiperSlider/AutoplaySlider.js new file mode 100644 index 0000000..116a6b1 --- /dev/null +++ b/components/UIElements/SwiperSlider/AutoplaySlider.js @@ -0,0 +1,66 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Autoplay, Pagination, Navigation } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function AutoplaySlider() { + return ( + <> + + + Autoplay + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/Default.js b/components/UIElements/SwiperSlider/Default.js new file mode 100644 index 0000000..cd28fde --- /dev/null +++ b/components/UIElements/SwiperSlider/Default.js @@ -0,0 +1,52 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function Default() { + return ( + <> + + + Default + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/NavigationSlider.js b/components/UIElements/SwiperSlider/NavigationSlider.js new file mode 100644 index 0000000..fef10a4 --- /dev/null +++ b/components/UIElements/SwiperSlider/NavigationSlider.js @@ -0,0 +1,57 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function NavigationSlider() { + return ( + <> + + + Navigation + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/PaginationDynamic.js b/components/UIElements/SwiperSlider/PaginationDynamic.js new file mode 100644 index 0000000..159992e --- /dev/null +++ b/components/UIElements/SwiperSlider/PaginationDynamic.js @@ -0,0 +1,59 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Pagination } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function PaginationDynamic() { + return ( + <> + + + Pagination Dynamic + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/PaginationProgress.js b/components/UIElements/SwiperSlider/PaginationProgress.js new file mode 100644 index 0000000..0756f95 --- /dev/null +++ b/components/UIElements/SwiperSlider/PaginationProgress.js @@ -0,0 +1,60 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Pagination, Navigation } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function PaginationProgress() { + return ( + <> + + + Pagination Progress + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/PaginationSlider.js b/components/UIElements/SwiperSlider/PaginationSlider.js new file mode 100644 index 0000000..1070509 --- /dev/null +++ b/components/UIElements/SwiperSlider/PaginationSlider.js @@ -0,0 +1,57 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Pagination } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function PaginationSlider() { + return ( + <> + + + With Pagination Slider + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/Switch/Basic.js b/components/UIElements/Switch/Basic.js new file mode 100644 index 0000000..7a44ac1 --- /dev/null +++ b/components/UIElements/Switch/Basic.js @@ -0,0 +1,39 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Switch from '@mui/material/Switch'; + +const label = { inputProps: { 'aria-label': 'Switch demo' } }; + +export default function Basic() { + return ( + <> + + + Basic + + + <> + + + + + + + + ); +} diff --git a/components/UIElements/Switch/Color.js b/components/UIElements/Switch/Color.js new file mode 100644 index 0000000..73d5130 --- /dev/null +++ b/components/UIElements/Switch/Color.js @@ -0,0 +1,52 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { alpha, styled } from '@mui/material/styles'; +import { pink } from '@mui/material/colors'; +import Switch from '@mui/material/Switch'; + +const GreenSwitch = styled(Switch)(({ theme }) => ({ + '& .MuiSwitch-switchBase.Mui-checked': { + color: pink[500], + '&:hover': { + backgroundColor: alpha(pink[500], theme.palette.action.hoverOpacity), + }, + }, + '& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track': { + backgroundColor: pink[500], + }, +})); + +const label = { inputProps: { 'aria-label': 'Color switch demo' } }; + +export default function Color() { + return ( + <> + + + Color + + + + + + + + + + ); +} diff --git a/components/UIElements/Switch/Controlled.js b/components/UIElements/Switch/Controlled.js new file mode 100644 index 0000000..441eeed --- /dev/null +++ b/components/UIElements/Switch/Controlled.js @@ -0,0 +1,43 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Switch from '@mui/material/Switch'; + +export default function Controlled() { + + const [checked, setChecked] = React.useState(true); + + const handleChange = (event) => { + setChecked(event.target.checked); + }; + + return ( + <> + + + Controlled + + + + + + ); +} diff --git a/components/UIElements/Switch/Label.js b/components/UIElements/Switch/Label.js new file mode 100644 index 0000000..2672abb --- /dev/null +++ b/components/UIElements/Switch/Label.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Switch from '@mui/material/Switch'; + +export default function Label() { + return ( + <> + + + Label + + + + } label="Label" /> + } label="Disabled" /> + + + + ); +} diff --git a/components/UIElements/Switch/Size.js b/components/UIElements/Switch/Size.js new file mode 100644 index 0000000..00c7c28 --- /dev/null +++ b/components/UIElements/Switch/Size.js @@ -0,0 +1,35 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Switch from '@mui/material/Switch'; + +const label = { inputProps: { 'aria-label': 'Size switch demo' } }; + +export default function Size() { + return ( + <> + + + Size + + + + + + + ); +} diff --git a/components/UIElements/Switch/SwitchesWithFormGroup.js b/components/UIElements/Switch/SwitchesWithFormGroup.js new file mode 100644 index 0000000..4fc4011 --- /dev/null +++ b/components/UIElements/Switch/SwitchesWithFormGroup.js @@ -0,0 +1,74 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import FormLabel from '@mui/material/FormLabel'; +import FormControl from '@mui/material/FormControl'; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormHelperText from '@mui/material/FormHelperText'; +import Switch from '@mui/material/Switch'; + +export default function SwitchesWithFormGroup() { + + const [state, setState] = React.useState({ + gilad: true, + jason: false, + antoine: true, + }); + + const handleChange = (event) => { + setState({ + ...state, + [event.target.name]: event.target.checked, + }); + }; + + return ( + <> + + + Switches With Form Group + + + + Assign responsibility + + + } + label="Gilad Gray" + /> + + } + label="Jason Killian" + /> + + } + label="Antoine Llorca" + /> + + Be careful + + + + ); +} diff --git a/components/UIElements/Table/BasicTable.js b/components/UIElements/Table/BasicTable.js new file mode 100644 index 0000000..e780911 --- /dev/null +++ b/components/UIElements/Table/BasicTable.js @@ -0,0 +1,78 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TableRow from '@mui/material/TableRow'; +import Paper from '@mui/material/Paper'; + +function createData(name, calories, fat, carbs, protein) { + return { name, calories, fat, carbs, protein }; +} + +const rows = [ + createData('Frozen yoghurt', 159, 6.0, 24, 4.0), + createData('Ice cream sandwich', 237, 9.0, 37, 4.3), + createData('Eclair', 262, 16.0, 24, 6.0), + createData('Cupcake', 305, 3.7, 67, 4.3), + createData('Gingerbread', 356, 16.0, 49, 3.9), +]; + +export default function BasicTable() { + return ( + <> + + + Basic Table + + + + + + + Dessert (100g serving) + Calories + Fat (g) + Carbs (g) + Protein (g) + + + + {rows.map((row) => ( + + + {row.name} + + {row.calories} + {row.fat} + {row.carbs} + {row.protein} + + ))} + +
    +
    +
    + + ); +} diff --git a/components/UIElements/Table/CustomizationTable.js b/components/UIElements/Table/CustomizationTable.js new file mode 100644 index 0000000..7e1b769 --- /dev/null +++ b/components/UIElements/Table/CustomizationTable.js @@ -0,0 +1,97 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell, { tableCellClasses } from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TableRow from '@mui/material/TableRow'; +import Paper from '@mui/material/Paper'; + +const StyledTableCell = styled(TableCell)(({ theme }) => ({ + [`&.${tableCellClasses.head}`]: { + backgroundColor: theme.palette.common.black, + color: theme.palette.common.white, + }, + [`&.${tableCellClasses.body}`]: { + fontSize: 14, + }, +})); + +const StyledTableRow = styled(TableRow)(({ theme }) => ({ + '&:nth-of-type(odd)': { + backgroundColor: theme.palette.action.hover, + }, + // hide last border + '&:last-child td, &:last-child th': { + border: 0, + }, +})); + +function createData(name, calories, fat, carbs, protein) { + return { name, calories, fat, carbs, protein }; +} + +const rows = [ + createData('Frozen yoghurt', 159, 6.0, 24, 4.0), + createData('Ice cream sandwich', 237, 9.0, 37, 4.3), + createData('Eclair', 262, 16.0, 24, 6.0), + createData('Cupcake', 305, 3.7, 67, 4.3), + createData('Gingerbread', 356, 16.0, 49, 3.9), +]; + +export default function CustomizationTable() { + return ( + <> + + + Customization Table + + + + + + + Dessert (100g serving) + Calories + Fat (g) + Carbs (g) + Protein (g) + + + + + {rows.map((row) => ( + + + {row.name} + + {row.calories} + {row.fat} + {row.carbs} + {row.protein} + + ))} + +
    +
    +
    + + ); +} diff --git a/components/UIElements/Table/DataTable.js b/components/UIElements/Table/DataTable.js new file mode 100644 index 0000000..239bbcc --- /dev/null +++ b/components/UIElements/Table/DataTable.js @@ -0,0 +1,74 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { DataGrid } from '@mui/x-data-grid'; + +const columns = [ + { field: 'id', headerName: 'ID', width: 70 }, + { field: 'firstName', headerName: 'First name', width: 130 }, + { field: 'lastName', headerName: 'Last name', width: 130 }, + { + field: 'age', + headerName: 'Age', + type: 'number', + width: 90, + }, + { + field: 'fullName', + headerName: 'Full name', + description: 'This column has a value getter and is not sortable.', + sortable: false, + width: 160, + valueGetter: (params) => + `${params.row.firstName || ''} ${params.row.lastName || ''}`, + }, +]; + +const rows = [ + { id: 1, lastName: 'Snow', firstName: 'Jon', age: 35 }, + { id: 2, lastName: 'Lannister', firstName: 'Cersei', age: 42 }, + { id: 3, lastName: 'Lannister', firstName: 'Jaime', age: 45 }, + { id: 4, lastName: 'Stark', firstName: 'Arya', age: 16 }, + { id: 5, lastName: 'Targaryen', firstName: 'Daenerys', age: null }, + { id: 6, lastName: 'Melisandre', firstName: null, age: 150 }, + { id: 7, lastName: 'Clifford', firstName: 'Ferrara', age: 44 }, + { id: 8, lastName: 'Frances', firstName: 'Rossini', age: 36 }, + { id: 9, lastName: 'Roxie', firstName: 'Harvey', age: 65 }, +]; + +export default function DataTable() { + return ( + <> + + + Data Table + + +
    + +
    +
    + + ); +} diff --git a/components/UIElements/Table/DenseTable.js b/components/UIElements/Table/DenseTable.js new file mode 100644 index 0000000..c481469 --- /dev/null +++ b/components/UIElements/Table/DenseTable.js @@ -0,0 +1,79 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TableRow from '@mui/material/TableRow'; +import Paper from '@mui/material/Paper'; + +function createData(name, calories, fat, carbs, protein) { + return { name, calories, fat, carbs, protein }; +} + +const rows = [ + createData('Frozen yoghurt', 159, 6.0, 24, 4.0), + createData('Ice cream sandwich', 237, 9.0, 37, 4.3), + createData('Eclair', 262, 16.0, 24, 6.0), + createData('Cupcake', 305, 3.7, 67, 4.3), + createData('Gingerbread', 356, 16.0, 49, 3.9), +]; + +export default function DenseTable() { + return ( + <> + + + Dense Table + + + + + + + Dessert (100g serving) + Calories + Fat (g) + Carbs (g) + Protein (g) + + + + + {rows.map((row) => ( + + + {row.name} + + {row.calories} + {row.fat} + {row.carbs} + {row.protein} + + ))} + +
    +
    +
    + + ); +} diff --git a/components/UIElements/Table/SortingSelectingTable.js b/components/UIElements/Table/SortingSelectingTable.js new file mode 100644 index 0000000..626c6c9 --- /dev/null +++ b/components/UIElements/Table/SortingSelectingTable.js @@ -0,0 +1,402 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import { alpha } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TablePagination from '@mui/material/TablePagination'; +import TableRow from '@mui/material/TableRow'; +import TableSortLabel from '@mui/material/TableSortLabel'; +import Toolbar from '@mui/material/Toolbar'; +import Typography from '@mui/material/Typography'; +import Paper from '@mui/material/Paper'; +import Checkbox from '@mui/material/Checkbox'; +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Switch from '@mui/material/Switch'; +import DeleteIcon from '@mui/icons-material/Delete'; +import FilterListIcon from '@mui/icons-material/FilterList'; +import { visuallyHidden } from '@mui/utils'; +import Card from "@mui/material/Card"; + +function createData(name, calories, fat, carbs, protein) { + return { + name, + calories, + fat, + carbs, + protein, + }; +} + +const rows = [ + createData('Cupcake', 305, 3.7, 67, 4.3), + createData('Donut', 452, 25.0, 51, 4.9), + createData('Eclair', 262, 16.0, 24, 6.0), + createData('Frozen yoghurt', 159, 6.0, 24, 4.0), + createData('Gingerbread', 356, 16.0, 49, 3.9), + createData('Honeycomb', 408, 3.2, 87, 6.5), + createData('Ice cream sandwich', 237, 9.0, 37, 4.3), + createData('Jelly Bean', 375, 0.0, 94, 0.0), + createData('KitKat', 518, 26.0, 65, 7.0), + createData('Lollipop', 392, 0.2, 98, 0.0), + createData('Marshmallow', 318, 0, 81, 2.0), + createData('Nougat', 360, 19.0, 9, 37.0), + createData('Oreo', 437, 18.0, 63, 4.0), +]; + +function descendingComparator(a, b, orderBy) { + if (b[orderBy] < a[orderBy]) { + return -1; + } + if (b[orderBy] > a[orderBy]) { + return 1; + } + return 0; +} + +function getComparator(order, orderBy) { + return order === 'desc' + ? (a, b) => descendingComparator(a, b, orderBy) + : (a, b) => -descendingComparator(a, b, orderBy); +} + +// This method is created for cross-browser compatibility, if you don't +// need to support IE11, you can use Array.prototype.sort() directly +function stableSort(array, comparator) { + const stabilizedThis = array.map((el, index) => [el, index]); + stabilizedThis.sort((a, b) => { + const order = comparator(a[0], b[0]); + if (order !== 0) { + return order; + } + return a[1] - b[1]; + }); + return stabilizedThis.map((el) => el[0]); +} + +const headCells = [ + { + id: 'name', + numeric: false, + disablePadding: true, + label: 'Dessert (100g serving)', + }, + { + id: 'calories', + numeric: true, + disablePadding: false, + label: 'Calories', + }, + { + id: 'fat', + numeric: true, + disablePadding: false, + label: 'Fat (g)', + }, + { + id: 'carbs', + numeric: true, + disablePadding: false, + label: 'Carbs (g)', + }, + { + id: 'protein', + numeric: true, + disablePadding: false, + label: 'Protein (g)', + }, +]; + +function EnhancedTableHead(props) { + const { onSelectAllClick, order, orderBy, numSelected, rowCount, onRequestSort } = + props; + const createSortHandler = (property) => (event) => { + onRequestSort(event, property); + }; + + return ( + + + + 0 && numSelected < rowCount} + checked={rowCount > 0 && numSelected === rowCount} + onChange={onSelectAllClick} + inputProps={{ + 'aria-label': 'select all desserts', + }} + /> + + {headCells.map((headCell) => ( + + + {headCell.label} + {orderBy === headCell.id ? ( + + {order === 'desc' ? 'sorted descending' : 'sorted ascending'} + + ) : null} + + + ))} + + + ); +} + +EnhancedTableHead.propTypes = { + numSelected: PropTypes.number.isRequired, + onRequestSort: PropTypes.func.isRequired, + onSelectAllClick: PropTypes.func.isRequired, + order: PropTypes.oneOf(['asc', 'desc']).isRequired, + orderBy: PropTypes.string.isRequired, + rowCount: PropTypes.number.isRequired, +}; + +function EnhancedTableToolbar(props) { + const { numSelected } = props; + + return ( + 0 && { + bgcolor: (theme) => + alpha(theme.palette.primary.main, theme.palette.action.activatedOpacity), + }), + }} + className='ss-table-toolbar' + > + {numSelected > 0 ? ( + + {numSelected} selected + + ) : ( + + Nutrition + + )} + + {numSelected > 0 ? ( + + + + + + ) : ( + + + + + + )} + + ); +} + +EnhancedTableToolbar.propTypes = { + numSelected: PropTypes.number.isRequired, +}; + +export default function EnhancedTable() { + const [order, setOrder] = React.useState('asc'); + const [orderBy, setOrderBy] = React.useState('calories'); + const [selected, setSelected] = React.useState([]); + const [page, setPage] = React.useState(0); + const [dense, setDense] = React.useState(false); + const [rowsPerPage, setRowsPerPage] = React.useState(5); + + const handleRequestSort = (event, property) => { + const isAsc = orderBy === property && order === 'asc'; + setOrder(isAsc ? 'desc' : 'asc'); + setOrderBy(property); + }; + + const handleSelectAllClick = (event) => { + if (event.target.checked) { + const newSelected = rows.map((n) => n.name); + setSelected(newSelected); + return; + } + setSelected([]); + }; + + const handleClick = (event, name) => { + const selectedIndex = selected.indexOf(name); + let newSelected = []; + + if (selectedIndex === -1) { + newSelected = newSelected.concat(selected, name); + } else if (selectedIndex === 0) { + newSelected = newSelected.concat(selected.slice(1)); + } else if (selectedIndex === selected.length - 1) { + newSelected = newSelected.concat(selected.slice(0, -1)); + } else if (selectedIndex > 0) { + newSelected = newSelected.concat( + selected.slice(0, selectedIndex), + selected.slice(selectedIndex + 1), + ); + } + + setSelected(newSelected); + }; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + const handleChangeDense = (event) => { + setDense(event.target.checked); + }; + + const isSelected = (name) => selected.indexOf(name) !== -1; + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + return ( + + + Sorting & Selecting + + + + + + + + + + {/* if you don't need to support IE11, you can replace the `stableSort` call with: + rows.sort(getComparator(order, orderBy)).slice() */} + {stableSort(rows, getComparator(order, orderBy)) + .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + .map((row, index) => { + const isItemSelected = isSelected(row.name); + const labelId = `enhanced-table-checkbox-${index}`; + + return ( + handleClick(event, row.name)} + role="checkbox" + aria-checked={isItemSelected} + tabIndex={-1} + key={row.name} + selected={isItemSelected} + > + + + + + {row.name} + + {row.calories} + {row.fat} + {row.carbs} + {row.protein} + + ); + })} + {emptyRows > 0 && ( + + + + )} + +
    +
    + + +
    + + } + label="Dense padding" + /> +
    +
    + ); +} \ No newline at end of file diff --git a/components/UIElements/Tabs/BasicTabs.js b/components/UIElements/Tabs/BasicTabs.js new file mode 100644 index 0000000..397afcf --- /dev/null +++ b/components/UIElements/Tabs/BasicTabs.js @@ -0,0 +1,90 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from 'prop-types'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import Box from '@mui/material/Box'; + +function TabPanel(props) { + const { children, value, index, ...other } = props; + + return ( + + ); +} + +TabPanel.propTypes = { + children: PropTypes.node, + index: PropTypes.number.isRequired, + value: PropTypes.number.isRequired, +}; + +function a11yProps(index) { + return { + id: `simple-tab-${index}`, + 'aria-controls': `simple-tabpanel-${index}`, + }; +} + +export default function BasicTabs() { + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + return ( + <> + + + Basic Tabs + + + + + + + + + + + + Item One + + + Item Two + + + Item Three + + + + + ); +} diff --git a/components/UIElements/Tabs/ExperimentalAPI.js b/components/UIElements/Tabs/ExperimentalAPI.js new file mode 100644 index 0000000..de31963 --- /dev/null +++ b/components/UIElements/Tabs/ExperimentalAPI.js @@ -0,0 +1,56 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Tab from '@mui/material/Tab'; +import TabContext from '@mui/lab/TabContext'; +import TabList from '@mui/lab/TabList'; +import TabPanel from '@mui/lab/TabPanel'; + +export default function ExperimentalAPI() { + + const [value, setValue] = React.useState('1'); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Experimental API + + + + + + + + + + + + Item One + Item Two + Item Three + + + + + ); +} diff --git a/components/UIElements/Tabs/IconPosition.js b/components/UIElements/Tabs/IconPosition.js new file mode 100644 index 0000000..b63c45b --- /dev/null +++ b/components/UIElements/Tabs/IconPosition.js @@ -0,0 +1,53 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import PhoneIcon from '@mui/icons-material/Phone'; +import FavoriteIcon from '@mui/icons-material/Favorite'; +import PersonPinIcon from '@mui/icons-material/PersonPin'; +import PhoneMissedIcon from '@mui/icons-material/PhoneMissed'; + +export default function IconPosition() { + + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Icon Position + + + + } label="top" /> + } iconPosition="start" label="start" /> + } iconPosition="end" label="end" /> + } iconPosition="bottom" label="bottom" /> + + + + ); +} diff --git a/components/UIElements/Tabs/IconTabs.js b/components/UIElements/Tabs/IconTabs.js new file mode 100644 index 0000000..1067b3e --- /dev/null +++ b/components/UIElements/Tabs/IconTabs.js @@ -0,0 +1,47 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import PhoneIcon from '@mui/icons-material/Phone'; +import FavoriteIcon from '@mui/icons-material/Favorite'; +import PersonPinIcon from '@mui/icons-material/PersonPin'; + +export default function IconTabs() { + + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Icon Tabs + + + + } aria-label="phone" /> + } aria-label="favorite" /> + } aria-label="person" /> + + + + ); +} diff --git a/components/UIElements/Tabs/VerticalTabs.js b/components/UIElements/Tabs/VerticalTabs.js new file mode 100644 index 0000000..441b317 --- /dev/null +++ b/components/UIElements/Tabs/VerticalTabs.js @@ -0,0 +1,123 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from 'prop-types'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import Box from '@mui/material/Box'; + +function TabPanel(props) { + const { children, value, index, ...other } = props; + + return ( + + ); +} + +TabPanel.propTypes = { + children: PropTypes.node, + index: PropTypes.number.isRequired, + value: PropTypes.number.isRequired, +}; + +function a11yProps(index) { + return { + id: `vertical-tab-${index}`, + 'aria-controls': `vertical-tabpanel-${index}`, + }; +} + +export default function VerticalTabs() { + + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Vertical Tabs + + + + + + + + + + + + + + + Item One + + + + Item Two + + + + Item Three + + + + Item Four + + + + Item Five + + + + Item Six + + + + Item Seven + + + + + ); +} diff --git a/components/UIElements/Tooltip/BasicTooltip.js b/components/UIElements/Tooltip/BasicTooltip.js new file mode 100644 index 0000000..181a5c4 --- /dev/null +++ b/components/UIElements/Tooltip/BasicTooltip.js @@ -0,0 +1,55 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Tooltip from '@mui/material/Tooltip'; +import IconButton from '@mui/material/IconButton'; +import Stack from '@mui/material/Stack'; +import DeleteIcon from '@mui/icons-material/Delete'; +import AlarmIcon from '@mui/icons-material/Alarm'; +import AddShoppingCartIcon from '@mui/icons-material/AddShoppingCart'; + +export default function BasicTooltip() { + return ( + <> + + + Basic Tooltip + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Tooltip/PositionedTooltips.js b/components/UIElements/Tooltip/PositionedTooltips.js new file mode 100644 index 0000000..93c6cec --- /dev/null +++ b/components/UIElements/Tooltip/PositionedTooltips.js @@ -0,0 +1,101 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Grid from '@mui/material/Grid'; +import Button from '@mui/material/Button'; +import Tooltip from '@mui/material/Tooltip'; + +export default function PositionedTooltips() { + return ( + <> + + + Positioned Tooltips + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    + + + View Demo + +
    + + ); +} diff --git a/components/UIElements/Transitions/CollapseTransitions.js b/components/UIElements/Transitions/CollapseTransitions.js new file mode 100644 index 0000000..5e73944 --- /dev/null +++ b/components/UIElements/Transitions/CollapseTransitions.js @@ -0,0 +1,93 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Collapse from '@mui/material/Collapse'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function CollapseTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Collapse + + + + } + label="Show" + /> + :not(style)': { + display: 'flex', + justifyContent: 'space-around', + height: 120, + width: 250, + }, + }} + > +
    + {icon} + + {icon} + +
    +
    + + + {icon} + + + + + {icon} + + +
    +
    +
    +
    + + ); +} diff --git a/components/UIElements/Transitions/FadeTransitions.js b/components/UIElements/Transitions/FadeTransitions.js new file mode 100644 index 0000000..f666c2e --- /dev/null +++ b/components/UIElements/Transitions/FadeTransitions.js @@ -0,0 +1,67 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Fade from '@mui/material/Fade'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function FadeTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Fade + + + + } + label="Show" + /> + + {icon} + + + + + ); +} diff --git a/components/UIElements/Transitions/GrowTransitions.js b/components/UIElements/Transitions/GrowTransitions.js new file mode 100644 index 0000000..8bd30c7 --- /dev/null +++ b/components/UIElements/Transitions/GrowTransitions.js @@ -0,0 +1,75 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Grow from '@mui/material/Grow'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function GrowTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Grow Transitions + + + + } + label="Show" + /> + + {icon} + {/* Conditionally applies the timeout prop to change the entry speed. */} + + {icon} + + + + + + ); +} diff --git a/components/UIElements/Transitions/SlideRelativeToAContainer.js b/components/UIElements/Transitions/SlideRelativeToAContainer.js new file mode 100644 index 0000000..3bf88a2 --- /dev/null +++ b/components/UIElements/Transitions/SlideRelativeToAContainer.js @@ -0,0 +1,82 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Slide from '@mui/material/Slide'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); +export default function SlideRelativeToAContainer() { + + const [checked, setChecked] = React.useState(false); + const containerRef = React.useRef(null); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Slide Relative To A Container + + + + theme.palette.mode === 'light' ? 'grey.100' : 'grey.900', + overflow: 'hidden', + }} + ref={containerRef} + className="bg-black" + > + + } + label="Show from target" + /> + + {icon} + + + + + + ); +} diff --git a/components/UIElements/Transitions/SlideTransitions.js b/components/UIElements/Transitions/SlideTransitions.js new file mode 100644 index 0000000..e672a3a --- /dev/null +++ b/components/UIElements/Transitions/SlideTransitions.js @@ -0,0 +1,69 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Slide from '@mui/material/Slide'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function SlideTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Slide Transitions + + + + + } + label="Show" + /> + + {icon} + + + + + + ); +} diff --git a/components/UIElements/Transitions/ZoomTransitions.js b/components/UIElements/Transitions/ZoomTransitions.js new file mode 100644 index 0000000..91cfdc6 --- /dev/null +++ b/components/UIElements/Transitions/ZoomTransitions.js @@ -0,0 +1,70 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Zoom from '@mui/material/Zoom'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function ZoomTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + ZoomTransitions + + + + } + label="Show" + /> + + {icon} + + {icon} + + + + + + ); +} diff --git a/components/_App/ControlPanelModal/DarkAndLightMode.js b/components/_App/ControlPanelModal/DarkAndLightMode.js new file mode 100644 index 0000000..a7d19b9 --- /dev/null +++ b/components/_App/ControlPanelModal/DarkAndLightMode.js @@ -0,0 +1,54 @@ +import React, { useState, useEffect } from "react"; +import Button from '@mui/material/Button'; +import styles from "@/components/_App/ControlPanelModal/DarkAndLightMode.module.css"; + +const DarkAndLightMode = () => { + // Light/Dark Mode + const [isDarkMode, setIsDarkMode] = useState(false); + + useEffect(() => { + // Retrieve the user's preference from local storage + const storedPreference = localStorage.getItem("theme"); + if (storedPreference === "dark") { + setIsDarkMode(true); + } + }, []); + + const handleToggle = () => { + setIsDarkMode(!isDarkMode); + }; + + useEffect(() => { + // Update the user's preference in local storage + localStorage.setItem("theme", isDarkMode ? "dark" : "light"); + + // Update the class on the element to apply the selected mode + const htmlElement = document.querySelector("html"); + if (isDarkMode) { + htmlElement.classList.add("dark"); + } else { + htmlElement.classList.remove("dark"); + } + }, [isDarkMode]); + + return ( + <> +
    +

    Dark/Light Mode

    + + +
    + + ); +}; + +export default DarkAndLightMode; diff --git a/components/_App/ControlPanelModal/DarkAndLightMode.module.css b/components/_App/ControlPanelModal/DarkAndLightMode.module.css new file mode 100644 index 0000000..5fd83dc --- /dev/null +++ b/components/_App/ControlPanelModal/DarkAndLightMode.module.css @@ -0,0 +1,11 @@ +.darkModeBox { + margin-bottom: 30px; +} +.darkModeBox h3 { + font-weight: 500; + border-bottom: 1px solid #eee !important; + padding-bottom: 5px; + margin: 0 0 15px 0; + font-size: 15px; + color: var(--headingColor) !important; +} \ No newline at end of file diff --git a/components/_App/ControlPanelModal/OnlyLeftSidebarDarkMode.js b/components/_App/ControlPanelModal/OnlyLeftSidebarDarkMode.js new file mode 100644 index 0000000..3780732 --- /dev/null +++ b/components/_App/ControlPanelModal/OnlyLeftSidebarDarkMode.js @@ -0,0 +1,56 @@ +import React, { useState, useEffect } from "react"; +import Button from "@mui/material/Button"; +import styles from "@/components/_App/ControlPanelModal/DarkAndLightMode.module.css"; + +const OnlyLeftSidebarDarkMode = () => { + // Light/Dark Mode + const [isDarkMode, setIsDarkMode] = useState(false); + + useEffect(() => { + // Retrieve the user's preference from local storage + const storedPreference = localStorage.getItem("leftSidebarTheme"); + if (storedPreference === "leftSidebarDark") { + setIsDarkMode(true); + } + }, []); + + const handleToggle = () => { + setIsDarkMode(!isDarkMode); + }; + + useEffect(() => { + // Update the user's preference in local storage + localStorage.setItem( + "leftSidebarTheme", isDarkMode ? "leftSidebarDark" : "light" + ); + + // Update the class on the element to apply the selected mode + const htmlElement = document.querySelector(".leftSidebarDark"); + if (isDarkMode) { + htmlElement.classList.add("dark"); + } else { + htmlElement.classList.remove("dark"); + } + }, [isDarkMode]); + + return ( + <> +
    +

    Only Left Sidebar Dark/Light Mode

    + + +
    + + ); +}; + +export default OnlyLeftSidebarDarkMode; diff --git a/components/_App/ControlPanelModal/OnlyTopNavbarDark.js b/components/_App/ControlPanelModal/OnlyTopNavbarDark.js new file mode 100644 index 0000000..c6aca18 --- /dev/null +++ b/components/_App/ControlPanelModal/OnlyTopNavbarDark.js @@ -0,0 +1,54 @@ +import React, { useState, useEffect } from "react"; +import Button from '@mui/material/Button'; +import styles from "@/components/_App/ControlPanelModal/DarkAndLightMode.module.css"; + +const OnlyTopNavbarDark = () => { + // Light/Dark Mode + const [isDarkMode, setIsDarkMode] = useState(false); + + useEffect(() => { + // Retrieve the user's preference from local storage + const storedPreference = localStorage.getItem("topNavbarDarkTheme"); + if (storedPreference === "TopNavbarDark") { + setIsDarkMode(true); + } + }, []); + + const handleToggle = () => { + setIsDarkMode(!isDarkMode); + }; + + useEffect(() => { + // Update the user's preference in local storage + localStorage.setItem("topNavbarDarkTheme", isDarkMode ? "TopNavbarDark" : "light"); + + // Update the class on the element to apply the selected mode + const htmlElement = document.querySelector(".topNavbarDark"); + if (isDarkMode) { + htmlElement.classList.add("dark"); + } else { + htmlElement.classList.remove("dark"); + } + }, [isDarkMode]); + + return ( + <> +
    +

    Only Top Navbar Dark/Light Mode

    + + +
    + + ); +}; + +export default OnlyTopNavbarDark; diff --git a/components/_App/ControlPanelModal/RTLSwitch.js b/components/_App/ControlPanelModal/RTLSwitch.js new file mode 100644 index 0000000..362b153 --- /dev/null +++ b/components/_App/ControlPanelModal/RTLSwitch.js @@ -0,0 +1,40 @@ +import React from "react"; +import Button from '@mui/material/Button'; +import styles from "@/components/_App/ControlPanelModal/RTLSwitch.module.css"; + +const RTLSwitch = () => { + return ( + <> +
    +

    LTR/RTL Demos

    + +
    + + + +
    +
    + + ); +}; + +export default RTLSwitch; diff --git a/components/_App/ControlPanelModal/RTLSwitch.module.css b/components/_App/ControlPanelModal/RTLSwitch.module.css new file mode 100644 index 0000000..5fd83dc --- /dev/null +++ b/components/_App/ControlPanelModal/RTLSwitch.module.css @@ -0,0 +1,11 @@ +.darkModeBox { + margin-bottom: 30px; +} +.darkModeBox h3 { + font-weight: 500; + border-bottom: 1px solid #eee !important; + padding-bottom: 5px; + margin: 0 0 15px 0; + font-size: 15px; + color: var(--headingColor) !important; +} \ No newline at end of file diff --git a/components/_App/ControlPanelModal/index.js b/components/_App/ControlPanelModal/index.js new file mode 100644 index 0000000..9bdb3db --- /dev/null +++ b/components/_App/ControlPanelModal/index.js @@ -0,0 +1,98 @@ +import React, { useState } from "react"; +import AppBar from '@mui/material/AppBar'; +import Toolbar from '@mui/material/Toolbar'; +import IconButton from '@mui/material/IconButton'; +import Typography from '@mui/material/Typography'; +import CloseIcon from '@mui/icons-material/Close'; +import { Box } from "@mui/material"; +import Tooltip from "@mui/material/Tooltip"; +import Button from "@mui/material/Button"; +import RTLSwitch from '@/components/_App/ControlPanelModal/RTLSwitch'; +import DarkAndLightMode from '@/components/_App/ControlPanelModal/DarkAndLightMode'; +import OnlyLeftSidebarDarkMode from '@/components/_App/ControlPanelModal/OnlyLeftSidebarDarkMode'; +import OnlyTopNavbarDark from '@/components/_App/ControlPanelModal/OnlyTopNavbarDark'; + +export default function ControlPanelModal() { + + const [isActiveSearchModal, setActiveSearchModal] = useState("false"); + const handleToggleSearchModal = () => { + setActiveSearchModal(!isActiveSearchModal); + }; + + return ( + <> +
    + + +
    + +
    +
    + +
    + + + + + + + + Control Panel + + + + + + {/* DarkAndLightMode */} + + + {/* OnlyLeftSidebarDarkMode */} + + + {/* OnlyTopNavbarDark */} + + + {/* RTLSwitch */} + + + +
    + +
    +
    +
    + + ); +} \ No newline at end of file diff --git a/components/_App/Footer.js b/components/_App/Footer.js new file mode 100644 index 0000000..f7f50a7 --- /dev/null +++ b/components/_App/Footer.js @@ -0,0 +1,36 @@ +import React from "react"; +import { Stack, Box, Typography, Link } from "@mui/material"; + +const Footer = () => { + return ( + <> + + + + Copyright {' '} + CMS Client by {' '} + + Works + + + + + + ); +}; + +export default Footer; diff --git a/components/_App/Layout.js b/components/_App/Layout.js new file mode 100644 index 0000000..cee1751 --- /dev/null +++ b/components/_App/Layout.js @@ -0,0 +1,75 @@ +import React, { useState } from "react"; +import Head from "next/head"; +import { useRouter } from "next/router"; +import LeftSidebar from "@/components/_App/LeftSidebar"; +import TopNavbar from "@/components/_App/TopNavbar"; +import Footer from "@/components/_App/Footer"; +import ScrollToTop from "./ScrollToTop"; +import ControlPanelModal from "./ControlPanelModal"; + +const Layout = ({ children }) => { + const router = useRouter(); + + const [active, setActive] = useState(false); + + const toogleActive = () => { + setActive(!active); + }; + + return ( + <> + + + CMC - Client + + + + +
    + {!( + router.pathname === "/authentication/sign-in" || + router.pathname === "/authentication/sign-up" || + router.pathname === "/authentication/forgot-password" || + router.pathname === "/authentication/lock-screen" || + router.pathname === "/authentication/confirm-mail" || + router.pathname === "/authentication/logout" + ) && ( + <> + + + + + )} + +
    + {children} + + {!( + router.pathname === "/authentication/sign-in" || + router.pathname === "/authentication/sign-up" || + router.pathname === "/authentication/forgot-password" || + router.pathname === "/authentication/lock-screen" || + router.pathname === "/authentication/confirm-mail" || + router.pathname === "/authentication/logout" + ) &&
    } +
    +
    + + {/* ScrollToTop */} + + + {!( + router.pathname === "/authentication/sign-in" || + router.pathname === "/authentication/sign-up" || + router.pathname === "/authentication/forgot-password" || + router.pathname === "/authentication/lock-screen" || + router.pathname === "/authentication/confirm-mail" || + router.pathname === "/authentication/logout" + ) && + + } + + ); +}; + +export default Layout; diff --git a/components/_App/LeftSidebar/SidebarData.js b/components/_App/LeftSidebar/SidebarData.js new file mode 100644 index 0000000..69434c0 --- /dev/null +++ b/components/_App/LeftSidebar/SidebarData.js @@ -0,0 +1,516 @@ +import React from "react"; +import KeyboardArrowRightIcon from "@mui/icons-material/KeyboardArrowRight"; +import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; +import GridViewIcon from "@mui/icons-material/GridView"; +import LayersIcon from "@mui/icons-material/Layers"; +import CheckBoxOutlineBlankIcon from "@mui/icons-material/CheckBoxOutlineBlank"; +import ContentCopyIcon from "@mui/icons-material/ContentCopy"; +import LockIcon from "@mui/icons-material/Lock"; +import SettingsIcon from "@mui/icons-material/Settings"; +import PostAddIcon from "@mui/icons-material/PostAdd"; +import MailOutlineIcon from "@mui/icons-material/MailOutline"; +import AddchartIcon from "@mui/icons-material/Addchart"; +import CopyAllIcon from "@mui/icons-material/CopyAll"; +import ShoppingCartCheckoutIcon from "@mui/icons-material/ShoppingCartCheckout"; +import ViewQuiltIcon from "@mui/icons-material/ViewQuilt"; +import NotificationsNoneIcon from "@mui/icons-material/NotificationsNone"; + +export const SidebarData = [ + { + title: "Dashboard", + path: "/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "eCommerce", + path: "/ecommerce/", + }, + { + title: "Analytics", + path: "/analytics/", + }, + { + title: "Project Management", + path: "/project-management/", + }, + { + title: "LMS Courses", + path: "/lms-courses/", + }, + { + title: "Crypto", + path: "/crypto/", + }, + { + title: "Help/Support Desk", + path: "/help-desk/", + }, + { + title: "SaaS App", + path: "/saas-app/", + }, + ], + }, + { + title: "Apps", + path: "/apps/file-manager/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "File Manager", + path: "/apps/file-manager/", + }, + { + title: "Chat", + path: "/apps/chat/", + }, + { + title: "To Do", + path: "/apps/to-do/", + }, + { + title: "Calendar", + path: "/apps/calendar/", + }, + ], + }, + { + title: "Email", + path: "/email/inbox/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Inbox", + path: "/email/inbox/", + }, + { + title: "Read Email", + path: "/email/read-email/", + }, + ], + }, + { + title: "Contact List", + path: "/contact-list/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Contact List", + path: "/contact-list/", + }, + { + title: "Members Grid", + path: "/contact-list/contact-list2/", + }, + { + title: "Members List", + path: "/contact-list/members-list/", + }, + { + title: "Profile", + path: "/contact-list/profile/", + }, + ], + }, + { + title: "Projects", + path: "/projects/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Projects", + path: "/projects/", + }, + { + title: "Project Create", + path: "/projects/project-create/", + }, + { + title: "Clients", + path: "/projects/clients/", + }, + { + title: "Team", + path: "/projects/team/", + }, + { + title: "Task", + path: "/projects/task/", + }, + { + title: "User", + path: "/projects/user/", + }, + { + title: "Kanban board", + path: "/projects/kanban-board/", + }, + ], + }, + { + title: "Analytics", + path: "/analytics/customers/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Customers", + path: "/analytics/customers/", + }, + { + title: "Reports", + path: "/analytics/reports/", + }, + ], + }, + { + title: "eCommerce", + path: "/ecommerce/products/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Products", + path: "/ecommerce/products/", + }, + { + title: "Product Details", + path: "/ecommerce/product-details/", + }, + { + title: "Create Product", + path: "/ecommerce/create-product/", + }, + { + title: "Orders List", + path: "/ecommerce/orders-list/", + }, + { + title: "Order Details", + path: "/ecommerce/order-details/", + }, + { + title: "Customers", + path: "/ecommerce/customers/", + }, + { + title: "Cart", + path: "/ecommerce/cart/", + }, + { + title: "Checkout", + path: "/ecommerce/checkout/", + }, + { + title: "Sellers", + path: "/ecommerce/sellers/", + }, + ], + }, + { + title: "UI Elements", + path: "/ui-elements/alerts/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Alerts", + path: "/ui-elements/alerts/", + }, + { + title: "Autocomplete", + path: "/ui-elements/autocomplete/", + }, + { + title: "Avatar", + path: "/ui-elements/avatar/", + }, + { + title: "Badge", + path: "/ui-elements/badge/", + }, + { + title: "Buttons", + path: "/ui-elements/buttons/", + }, + { + title: "Cards", + path: "/ui-elements/cards/", + }, + { + title: "Checkbox", + path: "/ui-elements/checkbox/", + }, + { + title: "Swiper Slider", + path: "/ui-elements/swiper-slider/", + }, + { + title: "Radio", + path: "/ui-elements/radio/", + }, + { + title: "Rating", + path: "/ui-elements/rating/", + }, + { + title: "Select", + path: "/ui-elements/select/", + }, + { + title: "Slider", + path: "/ui-elements/slider/", + }, + { + title: "Switch", + path: "/ui-elements/switch/", + }, + { + title: "Chip", + path: "/ui-elements/chip/", + }, + { + title: "List", + path: "/ui-elements/list/", + }, + { + title: "Modal", + path: "/ui-elements/modal/", + }, + { + title: "Table", + path: "/ui-elements/table/", + }, + { + title: "Tooltip", + path: "/ui-elements/tooltip/", + }, + { + title: "Progress", + path: "/ui-elements/progress/", + }, + { + title: "Skeleton", + path: "/ui-elements/skeleton/", + }, + { + title: "Snackbar", + path: "/ui-elements/snackbar/", + }, + { + title: "Accordion", + path: "/ui-elements/accordion/", + }, + { + title: "Pagination", + path: "/ui-elements/pagination/", + }, + { + title: "Stepper", + path: "/ui-elements/stepper/", + }, + { + title: "Tabs", + path: "/ui-elements/tabs/", + }, + { + title: "Image List", + path: "/ui-elements/image-list/", + }, + { + title: "Transitions", + path: "/ui-elements/transitions/", + }, + ], + }, + { + title: "Forms", + path: "/forms/form-layouts/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Basic Elements", + path: "/forms/form-layouts/", + }, + { + title: "Advanced Elements", + path: "/forms/advanced-elements/", + }, + { + title: "Editors", + path: "/forms/editors/", + }, + { + title: "File Uploader", + path: "/forms/file-uploader/", + }, + ], + }, + { + title: "Pages", + path: "/pages/invoice/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Invoice", + path: "/pages/invoice/", + }, + { + title: "Invoice Details", + path: "/pages/invoice-details/", + }, + { + title: "ApexCharts", + path: "/pages/apexcharts/", + }, + { + title: "Recharts", + path: "/pages/recharts/", + }, + { + title: "Profile", + path: "/pages/profile/", + }, + { + title: "Pricing", + path: "/pages/pricing/", + }, + { + title: "Testimonials", + path: "/pages/testimonials/", + }, + { + title: "Timeline", + path: "/pages/timeline/", + }, + { + title: "FAQ", + path: "/pages/faq/", + }, + { + title: "Gallery", + path: "/pages/gallery/", + }, + { + title: "Support", + path: "/pages/support/", + }, + { + title: "Search", + path: "/pages/search/", + }, + { + title: "Material Icons", + path: "/pages/material-icons/", + }, + { + title: "Remixicon", + path: "/pages/remixicon/", + }, + { + title: "Maps", + path: "/pages/maps/", + }, + { + title: "404 Error Page", + path: "/404/", + }, + { + title: "Terms & Conditions", + path: "/pages/terms-conditions/", + }, + ], + }, + { + title: "Authentication", + path: "/authentication/sign-in/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Sign Up", + path: "/authentication/sign-up/", + }, + { + title: "Forgot Password", + path: "/authentication/forgot-password/", + }, + { + title: "Lock Screen", + path: "/authentication/lock-screen/", + }, + { + title: "Confirm Mail", + path: "/authentication/confirm-mail/", + }, + { + title: "Logout", + path: "/authentication/logout/", + }, + ], + }, + { + title: "Notification", + path: "/notification/", + icon: , + }, + { + title: "Settings", + path: "/settings/account/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Account", + path: "/settings/account/", + }, + { + title: "Security", + path: "/settings/security/", + }, + { + title: "Privacy Policy", + path: "/settings/privacy-policy/", + }, + { + title: "Terms & Conditions", + path: "/pages/terms-conditions/", + }, + { + title: "Logout", + path: "/authentication/logout/", + }, + ], + }, +]; diff --git a/components/_App/LeftSidebar/SubMenu.js b/components/_App/LeftSidebar/SubMenu.js new file mode 100644 index 0000000..d1013e2 --- /dev/null +++ b/components/_App/LeftSidebar/SubMenu.js @@ -0,0 +1,63 @@ +import React, { useState, useEffect } from "react"; +import { styled } from "@mui/material/styles"; +import Link from "next/link"; +import styles from "@/components/_App/LeftSidebar/SubMenu.module.css"; +import { useRouter } from "next/router"; + +const SidebarLabel = styled("span")(({ theme }) => ({ + position: "relative", + top: "-3px", +})); + +const SubMenu = ({ item }) => { + const [subnav, setSubnav] = useState(false); + const showSubnav = () => setSubnav(!subnav); + const [currentPath, setCurrentPath] = useState(""); + const router = useRouter(); + // console.log(router.asPath) + + useEffect(() => { + setCurrentPath(router.asPath); + }, [router]); + + return ( + <> + +
    + {item.icon} + {item.title} +
    +
    + {item.subNav && subnav + ? item.iconOpened + : item.subNav + ? item.iconClosed + : null} +
    + + {subnav && + item.subNav.map((item, index) => { + return ( + + {item.icon} + {item.title} + + ); + })} + + ); +}; + +export default SubMenu; diff --git a/components/_App/LeftSidebar/SubMenu.module.css b/components/_App/LeftSidebar/SubMenu.module.css new file mode 100644 index 0000000..4c456af --- /dev/null +++ b/components/_App/LeftSidebar/SubMenu.module.css @@ -0,0 +1,92 @@ +.sidebarLink { + display: flex; + color: #260944; + justify-content: space-between; + align-items: center; + padding: 9px 20px; + text-decoration: none; + font-size: 14.5px; + border-radius: 5px; + font-weight: 500; + margin-top: 3px; + margin-bottom: 3px; +} +.sidebarLink svg { + fill: #818093; + position: relative; + top: 2px; +} +.sidebarLink:hover { + background: linear-gradient(90deg, rgba(172, 169, 255, 0.6) 0%, rgba(172, 169, 255, 0.37) 91.25%); +} +.sidebarLink2 { + display: block; + color: #5B5B98; + justify-content: space-between; + align-items: center; + padding: 9px 20px 9px 50px; + text-decoration: none; + font-size: 14px; + border-radius: 5px; + font-weight: 500; + position: relative; +} +.sidebarLink2::before { + content: ""; + background-color: #818093; + width: 6px; + height: 6px; + border-radius: 100%; + position: absolute; + left: 30px; + top: 16px; +} +.sidebarLink2:hover::before { + background-color: #fff; +} +.sidebarLink2:hover { + background: #757FEF; + color: #fff; +} + +/* For RTL Style */ +[dir=rtl] .sidebarLink2 { + padding: 9px 50px 9px 20px; +} +[dir=rtl] .sidebarLink2::before { + left: auto; + right: 30px; +} + +/* For dark mode */ +[class="dark"] .sidebarLink, [class="leftSidebarDark dark"] .sidebarLink { + color: #f3f3f3; +} +[class="dark"] .sidebarLink svg, [class="leftSidebarDark dark"] .sidebarLink svg { + fill: #f3f3f3; +} +[class="dark"] .sidebarLink span, [class="leftSidebarDark dark"] .sidebarLink svg { + color: #f3f3f3; +} +[class="dark"] .sidebarLink:hover, [class="leftSidebarDark dark"] .sidebarLink svg { + color: #fff; +} +[class="dark"] .sidebarLink:hover span, [class="leftSidebarDark dark"] .sidebarLink svg { + color: #fff; +} +[class="dark"] .sidebarLink:hover svg, [class="leftSidebarDark dark"] .sidebarLink svg { + fill: #fff; +} + +[class="dark"] .sidebarLink2, [class="leftSidebarDark dark"] .sidebarLink2 { + color: var(--darkHeadingTextColor); +} +[class="dark"] .sidebarLink2 span, [class="leftSidebarDark dark"] .sidebarLink2 { + color: var(--darkHeadingTextColor); +} +[class="dark"] .sidebarLink2:hover, [class="leftSidebarDark dark"] .sidebarLink2 { + color: #fff; +} +[class="dark"] .sidebarLink2:hover span, [class="leftSidebarDark dark"] .sidebarLink2 { + color: #fff; +} \ No newline at end of file diff --git a/components/_App/LeftSidebar/index.js b/components/_App/LeftSidebar/index.js new file mode 100644 index 0000000..2726187 --- /dev/null +++ b/components/_App/LeftSidebar/index.js @@ -0,0 +1,82 @@ +import React from 'react'; +import { + Box +} from "@mui/material"; +import { styled } from "@mui/material/styles"; +import { SidebarData } from './SidebarData'; +import SubMenu from './SubMenu'; +import Link from 'next/link'; +import ClearIcon from '@mui/icons-material/Clear'; +import IconButton from '@mui/material/IconButton'; + +const SidebarNav = styled("nav")(({ theme }) => ({ + background: '#fff', + boxShadow: "0px 4px 20px rgba(47, 143, 232, 0.07)", + width: '300px', + padding: '30px 10px', + height: '100vh', + display: 'flex', + justifyContent: 'center', + position: 'fixed', + top: 0, + left: 0, + transition: '350ms', + zIndex: '10', + overflowY: 'auto' +})); + +const SidebarWrap = styled("div")(({ theme }) => ({ + width: '100%' +})); + +const Sidebar = ({ toogleActive }) => { + return ( + <> +
    + + + + + Logo + + {/* For Dark Variation */} + Logo + + + + + + + + {SidebarData.map((item, index) => { + return ; + })} + + +
    + + ); +}; + +export default Sidebar; diff --git a/components/_App/ScrollToTop.js b/components/_App/ScrollToTop.js new file mode 100644 index 0000000..0f0b429 --- /dev/null +++ b/components/_App/ScrollToTop.js @@ -0,0 +1,40 @@ +import React, { useState, useEffect } from "react"; + +const ScrollToTop = () => { + const [showScroll, setShowScroll] = useState(false); + + useEffect(() => { + window.addEventListener("scroll", checkScrollTop); + return function cleanup() { + window.removeEventListener("scroll", checkScrollTop); + }; + }); + + const checkScrollTop = () => { + if (!showScroll && window.pageYOffset > 100) { + setShowScroll(true); + } else if (showScroll && window.pageYOffset <= 100) { + setShowScroll(false); + } + }; + + const scrollTop = () => { + window.scrollTo({ top: 0, behavior: "smooth" }); + }; + + return ( + <> +
    + +
    + + ); +}; + +export default ScrollToTop; diff --git a/components/_App/TopNavbar/CurrentDate.js b/components/_App/TopNavbar/CurrentDate.js new file mode 100644 index 0000000..74fda3d --- /dev/null +++ b/components/_App/TopNavbar/CurrentDate.js @@ -0,0 +1,24 @@ +import React, { useState, useEffect } from 'react'; +import styles from "@/components/_App/TopNavbar/CurrentDate.module.css"; + +function CurrentDate() { + const [currentDate, setCurrentDate] = useState(''); + + useEffect(() => { + const options = { day: '2-digit', month: 'long', year: 'numeric' }; + const formatter = new Intl.DateTimeFormat('en-US', options); + const date = new Date(); + setCurrentDate(formatter.format(date)); + }, []); + + return ( + <> +
    + + {currentDate} +
    + + ); +} + +export default CurrentDate; diff --git a/components/_App/TopNavbar/CurrentDate.module.css b/components/_App/TopNavbar/CurrentDate.module.css new file mode 100644 index 0000000..8892a2c --- /dev/null +++ b/components/_App/TopNavbar/CurrentDate.module.css @@ -0,0 +1,31 @@ +.currentDate { + border: 1px solid #E2E8F0; + border-radius: 4px; + display: flex; + align-items: center; + color: var(--primaryColor); + padding: 10px 20px 10px 50px; + font-weight: 500; + font-size: 14px; + position: relative; +} +.currentDate i { + margin-right: 10px; + font-size: 20px; + position: absolute; + left: 20px; +} + +@media only screen and (max-width: 767px) { + .currentDate { + display: none; + } +} + +/* For dark mode */ +[class="dark"] .currentDate { + border: 1px solid #373a40; +} +[class="topNavbarDark dark"] .currentDate { + border: 1px solid #373a40; +} \ No newline at end of file diff --git a/components/_App/TopNavbar/Email.js b/components/_App/TopNavbar/Email.js new file mode 100644 index 0000000..553c9af --- /dev/null +++ b/components/_App/TopNavbar/Email.js @@ -0,0 +1,225 @@ +import * as React from "react"; +import styles from "@/components/_App/TopNavbar/Email.module.css"; +import { + IconButton, + Button, + Typography, + Tooltip, + Menu, + Link, +} from "@mui/material"; +import MailOutlineIcon from "@mui/icons-material/MailOutline"; + +const Email = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + return ( + <> + + + + + + + +
    + Emails + +
    + +
    +
    +
    + User + + + Invoices have been paid + + + Lorem ipsum dolor sit amet, consectetur... + + +
    + + + 1 min ago + +
    + +
    +
    + User + + + Allow users to like products + + + Sed ut perspiciatis unde omnis iste natus... + + +
    + + + 2 min ago + +
    + +
    +
    + User + + + Sales report + + + At vero eos et accusamus et iusto odio... + + +
    + + + 3 min ago + +
    + + + + View All{" "} + + + + + +
    +
    + + ); +}; + +export default Email; diff --git a/components/_App/TopNavbar/Email.module.css b/components/_App/TopNavbar/Email.module.css new file mode 100644 index 0000000..b51d293 --- /dev/null +++ b/components/_App/TopNavbar/Email.module.css @@ -0,0 +1,41 @@ +.header { + border-bottom: 1px solid #eee; + display: flex; + align-items: center; + justify-content: space-between; +} +.header h4 { + font-size: 16px; + color: #030229; + font-weight: 500; +} +.header button { + text-transform: capitalize; +} +.notificationList { + padding-top: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #EEF0F7; + max-width: 300px; + width: 100%; + cursor: pointer; +} +.notificationListContent { + display: flex; + align-items: center; +} +.rightArrow { + position: relative; + top: 2px; +} + +/* For Dark Mode */ +[class="dark"] .header { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .header h4 { + color: var(--darkHeadingTextColor); +} +[class="dark"] .notificationList { + border-bottom: 1px solid var(--borderColor); +} \ No newline at end of file diff --git a/components/_App/TopNavbar/Notification.js b/components/_App/TopNavbar/Notification.js new file mode 100644 index 0000000..c36f452 --- /dev/null +++ b/components/_App/TopNavbar/Notification.js @@ -0,0 +1,179 @@ +import * as React from "react"; +import styles from "@/components/_App/TopNavbar/Notification.module.css"; +import { + IconButton, + Button, + Typography, + Tooltip, + Menu, + Link, + Badge, +} from "@mui/material"; +import NotificationsActiveIcon from "@mui/icons-material/NotificationsActive"; + +const Notification = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + return ( + <> + + + + + + + + + +
    + Notifications + +
    +
    +
    + + 8 Invoices have been paid + + +
    + PDF Icon + + Invoices have been paid to the company. + +
    + + + 11:47 PM Wednesday + +
    + +
    + + Create a new project for client + + +
    + avatar Img + + Allow users to like products in your WooCommerce + +
    + + + 2:00 PM Wednesday + +
    + + + + View All{" "} + + + + + +
    +
    + + ); +}; + +export default Notification; diff --git a/components/_App/TopNavbar/Notification.module.css b/components/_App/TopNavbar/Notification.module.css new file mode 100644 index 0000000..f4cff4a --- /dev/null +++ b/components/_App/TopNavbar/Notification.module.css @@ -0,0 +1,64 @@ +.header { + border-bottom: 1px solid #eee; + display: flex; + align-items: center; + justify-content: space-between; +} +.header h4 { + font-size: 16px; + color: #030229; + font-weight: 500; +} +.header button { + text-transform: capitalize; +} +.notificationList { + position: relative; + padding-left: 20px; + padding-top: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #EEF0F7; + max-width: 255px; + width: 100%; + cursor: pointer; +} +.notificationList::before { + content: ''; + position: absolute; + left: 0; + top: 17px; + background: linear-gradient(149.1deg, #99B8F3 14.61%, #177FCB 130.18%); + box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25); + width: 10px; + height: 10px; + border-radius: 100%; +} +.notificationListContent { + display: flex; + align-items: center; +} +.rightArrow { + position: relative; + top: 2px; +} + +/* For RTL Style */ +[dir=rtl] .notificationList { + padding-left: 0; + padding-right: 20px; +} +[dir=rtl] .notificationList::before { + left: auto; + right: 0; +} + +/* For Dark Mode */ +[class="dark"] .header { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .header h4 { + color: var(--darkHeadingTextColor); +} +[class="dark"] .notificationList { + border-bottom: 1px solid var(--borderColor); +} \ No newline at end of file diff --git a/components/_App/TopNavbar/Profile.js b/components/_App/TopNavbar/Profile.js new file mode 100644 index 0000000..e3a28fa --- /dev/null +++ b/components/_App/TopNavbar/Profile.js @@ -0,0 +1,199 @@ +import * as React from "react"; +import { + IconButton, + Typography, + Box, + Tooltip, + Avatar, + Menu, + MenuItem, + Link, + ListItemIcon, + Divider, +} from "@mui/material"; +import PersonIcon from "@mui/icons-material/Person"; +import Settings from "@mui/icons-material/Settings"; +import MailOutlineIcon from "@mui/icons-material/MailOutline"; +import ChatBubbleOutlineIcon from "@mui/icons-material/ChatBubbleOutline"; +import AttachMoneyIcon from "@mui/icons-material/AttachMoney"; +import Logout from "@mui/icons-material/Logout"; + +const Profile = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + return ( + <> + + + + + + + + + + + + Admin + + + Adison Jeck + + + + + + + + + + + + Profile + + + + + + + + + Inbox + + + + + + + + + Chat + + + + + + + + + Settings + + + + + + + + + Pricing + + + + + + + + + + + + Logout + + + + + ); +}; + +export default Profile; diff --git a/components/_App/TopNavbar/SearchForm.js b/components/_App/TopNavbar/SearchForm.js new file mode 100644 index 0000000..f412fa7 --- /dev/null +++ b/components/_App/TopNavbar/SearchForm.js @@ -0,0 +1,69 @@ +import * as React from "react"; +import { styled, alpha } from "@mui/material/styles"; +import InputBase from "@mui/material/InputBase"; +import SearchIcon from "@mui/icons-material/Search"; + +const Search = styled("div")(({ theme }) => ({ + position: "relative", + borderRadius: 100, + backgroundColor: alpha(theme.palette.common.white, 0.15), + "&:hover": { + backgroundColor: alpha(theme.palette.common.white, 0.25), + }, + marginRight: 0, + marginLeft: "15px", + width: "100%", + [theme.breakpoints.up("sm")]: { + marginRight: theme.spacing(1), + width: "auto", + }, +})); + +const SearchIconWrapper = styled("div")(({ theme }) => ({ + color: "#757FEF", + padding: theme.spacing(0, 2), + height: "100%", + position: "absolute", + right: "0", + pointerEvents: "none", + display: "flex", + alignItems: "center", + justifyContent: "center", + zIndex: "5", +})); + +const StyledInputBase = styled(InputBase)(({ theme }) => ({ + color: "inherit", + "& .MuiInputBase-input": { + backgroundColor: "#F5F7FA", + borderRadius: "30px", + padding: theme.spacing(1.4, 0, 1.4, 2), + // vertical padding + font size from searchIcon + paddingRight: `calc(1em + ${theme.spacing(4)})`, + transition: theme.transitions.create("width"), + width: "100%", + [theme.breakpoints.up("sm")]: { + width: "260px", + "&:focus": { + width: "280px", + }, + }, + }, +})); + +export default function SearchForm() { + return ( + <> + + + + + + + + + ); +} diff --git a/components/_App/TopNavbar/TopNavbar.module.css b/components/_App/TopNavbar/TopNavbar.module.css new file mode 100644 index 0000000..e69de29 diff --git a/components/_App/TopNavbar/index.js b/components/_App/TopNavbar/index.js new file mode 100644 index 0000000..5b893ab --- /dev/null +++ b/components/_App/TopNavbar/index.js @@ -0,0 +1,62 @@ +import * as React from "react"; +import { AppBar, Toolbar, IconButton, Stack, Typography } from "@mui/material"; +import SearchForm from "./SearchForm"; +import Email from "./Email"; +import Notification from "./Notification"; +import Profile from "./Profile"; +import Tooltip from "@mui/material/Tooltip"; +import CurrentDate from "./CurrentDate"; + +const TopNavbar = ({ toogleActive }) => { + return ( + <> +
    + + + + + + + + + {/* Search form */} + + + + + + {/* CurrentDate */} + + + {/* Notification */} + + + {/* Notification */} + + + {/* Profile */} + + + + +
    + + ); +}; + +export default TopNavbar; diff --git a/components/eCommerce/Cart/HaveAPromoCode.js b/components/eCommerce/Cart/HaveAPromoCode.js new file mode 100644 index 0000000..ee76683 --- /dev/null +++ b/components/eCommerce/Cart/HaveAPromoCode.js @@ -0,0 +1,78 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; + +const HaveAPromoCode = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + Have a Promo Code? + + + + + + + + + + ); +}; + +export default HaveAPromoCode; diff --git a/components/eCommerce/Cart/OrderSummary.js b/components/eCommerce/Cart/OrderSummary.js new file mode 100644 index 0000000..abec661 --- /dev/null +++ b/components/eCommerce/Cart/OrderSummary.js @@ -0,0 +1,188 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import AddIcon from "@mui/icons-material/Add"; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TableRow from '@mui/material/TableRow'; +import Paper from '@mui/material/Paper'; + +const OrderSummary = () => { + return ( + <> + + + Order Summary + + + + + + + + Sub Total : + + + + $760.00 + + + + + + Discount : + + + + $60.00 + + + + + + Shipping Charge : + + + + $50.00 + + + + + + Estimated Tax : + + + + $00.00 + + + + + + Total (USD) : + + + + $750.00 + + + +
    +
    +
    + + ) +} + +export default OrderSummary; \ No newline at end of file diff --git a/components/eCommerce/Cart/ShoppingCart.js b/components/eCommerce/Cart/ShoppingCart.js new file mode 100644 index 0000000..2c6df9c --- /dev/null +++ b/components/eCommerce/Cart/ShoppingCart.js @@ -0,0 +1,562 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TableRow from '@mui/material/TableRow'; +import Paper from '@mui/material/Paper'; +import IconButton from '@mui/material/IconButton'; +import DeleteIcon from '@mui/icons-material/Delete'; +import { TextareaAutosize } from '@mui/base/TextareaAutosize'; +import Button from '@mui/material/Button'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import Tooltip from '@mui/material/Tooltip'; +import Link from 'next/link'; + +const ShoppingCart = () => { + return ( + <> + + + Shopping Cart + + + + + + + + Product + + + + Price + + + + Quantity + + + + Total Amount + + + + Action + + + + + + + + + Product Img + + Laptop Macos Pro + + + + + + $100.00 + + + + 02 + + + + $200 + + + + + + + + + + + + + + + Product Img + + Smart Camera XD6 + + + + + + $200.00 + + + + 01 + + + + $200 + + + + + + + + + + + + + + + Product Img + + Pixi 8 Wireless Airphone + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + + + + + + + + + Product Img + + Jebble Smart Watch + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + + + + + + + + + Product Img + + Airpod + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + + + + + +
    +
    + + + Add a Note: + + + + + + + + +
    + + ) +} + +export default ShoppingCart; \ No newline at end of file diff --git a/components/eCommerce/Checkout/BillingInformation.js b/components/eCommerce/Checkout/BillingInformation.js new file mode 100644 index 0000000..6d56a4d --- /dev/null +++ b/components/eCommerce/Checkout/BillingInformation.js @@ -0,0 +1,334 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +import dynamic from 'next/dynamic' +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const BillingInformation = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Select dropdown + const [countrySelect, setCountrySelect] = React.useState(''); + const handleChange = (event) => { + setCountrySelect(event.target.value); + }; + + return ( + <> + + + + Billing Information + + + + + + First Name + + + + + + + + Last Name + + + + + + + + Email Address + + + + + + + + Phone + + + + + + + + Address + + + + + + + + Country + + + + Select + + + + + + + Town/City + + + + + + + + + State + + + + + + + + Zip Code + + + + + + + + Order Notes : + + + + + + + + + + + + + ) +} + +export default BillingInformation; \ No newline at end of file diff --git a/components/eCommerce/Checkout/ShoppingCart.js b/components/eCommerce/Checkout/ShoppingCart.js new file mode 100644 index 0000000..b6aaf00 --- /dev/null +++ b/components/eCommerce/Checkout/ShoppingCart.js @@ -0,0 +1,440 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; + +const ShoppingCart = () => { + return ( + <> + + + Shopping Cart + + + + + + + + Product + + + + Price + + + + + + + + + Product Img + + Laptop Macos Pro + + + + + + $100.00 + + + + + + + Product Img + + Smart Camera XD6 + + + + + + $200.00 + + + + + + + Product Img + + Pixi 8 Wireless Airphone + + + + + + $120.00 + + + + + + + Product Img + + Jebble Smart Watch + + + + + + $120.00 + + + + + + + Product Img + + Airpod + + + + + + $120.00 + + + + + + Sub Total : + + + + $760.00 + + + + + + Discount : + + + + $60.00 + + + + + + Shipping Charge : + + + + $50.00 + + + + + + Estimated Tax : + + + + $00.00 + + + + + + Total (USD) : + + + + $750.00 + + + +
    +
    +
    + + ); +}; + +export default ShoppingCart; diff --git a/components/eCommerce/Customers/CustomersLists.js b/components/eCommerce/Customers/CustomersLists.js new file mode 100644 index 0000000..8cdbef1 --- /dev/null +++ b/components/eCommerce/Customers/CustomersLists.js @@ -0,0 +1,965 @@ +import * as React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Grid from "@mui/material/Grid"; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; +import Checkbox from '@mui/material/Checkbox'; +import { styled } from '@mui/material/styles'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import CloseIcon from '@mui/icons-material/Close'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +// Create new Modal +const BootstrapDialog = styled(Dialog)(({ theme }) => ({ + '& .MuiDialogContent-root': { + padding: theme.spacing(2), + }, + '& .MuiDialogActions-root': { + padding: theme.spacing(1), + }, +})); + +function BootstrapDialogTitle(props) { + const { children, onClose, ...other } = props; + + return ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Create new Modal + +function CustomersList(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +CustomersList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(name, image, userName, email, phone, balance, orders, status, badgeClass, joiningDate, projects) { + return { + name, + image, + userName, + email, + phone, + balance, + orders, + status, + badgeClass, + joiningDate, + projects, + }; +} + +const rows = [ + createData( + "Evangelina Mcclain", + "/images/user1.png", + "@jstevenson5c", + "jordansteve@gmail.com", + "0018 5054 8877", + "$3365.12", + "165", + "Active", + "successBadge", + "Jan 1, 2023", + ), + createData( + "Candice Munoz", + "/images/user2.png", + "@candice3unoz", + "candicemunoz@gmail.com", + "0018 5054 7532", + "$3550", + "112", + "Active", + "successBadge", + "Jan 2, 2023", + ), + createData( + "Mike Mcclain", + "/images/user3.png", + "@mike4mcclain", + "mikemcclain@gmail.com", + "0018 3567 8422", + "$3928", + "240", + "Deactivate", + "dangerBadge", + "Jan 3, 2023", + ), + createData( + "Bernard Langley", + "/images/user4.png", + "@bernardlangley", + "bernardlangley@gmail.com", + "0018 9382 4820", + "$4932", + "350", + "Active", + "successBadge", + "Jan 4, 2023", + ), + createData( + "Kristie Hall", + "/images/user5.png", + "@kristie7hall", + "kristiehall@gmail.com", + "0018 4663 5732", + "$4922", + "384", + "Active", + "successBadge", + "Jan 5, 2023", + ), + createData( + "Bolton Obrien", + "/images/user6.png", + "@bolton4obrien", + "boltonobrien@gmail.com", + "0018 5743 5657", + "$4663.12", + "145", + "Active", + "successBadge", + "Jan 6, 2023", + ), + createData( + "Dee Alvarado", + "/images/user7.png", + "@dee3alvarado", + "deealvarado@gmail.com", + "0018 4532 6666", + "$2343.12", + "435", + "Active", + "successBadge", + "Jan 7, 2023", + ), + createData( + "Cervantes Kramer", + "/images/user8.png", + "@cervantes4kramer", + "cervantes4kramer@gmail.com", + "0018 54545 7878", + "$345", + "24", + "Active", + "successBadge", + "Jan 8, 2023", + ), + createData( + "Dejesus Michael", + "/images/user9.png", + "@dejesus1michael", + "dejesusmichael@gmail.com", + "0018 3552 6678", + "$3365.12", + "56", + "Active", + "successBadge", + "Jan 9, 2023", + ), + createData( + "Alissa Nelson", + "/images/user10.png", + "@alissa1nelson", + "alissa1nelson@gmail.com", + "0018 3354 6822", + "$3522.12", + "165", + "Active", + "successBadge", + "Jan 10, 2023", + ), + createData( + "Milton", + "/images/user11.png", + "@milton", + "milton@gmail.com", + "0018 366 2232", + "$3434", + "222", + "Active", + "successBadge", + "Jan 11, 2023", + ), + createData( + "Claude", + "/images/user12.png", + "@claude", + "claude@gmail.com", + "0018 4614 23211", + "$4554.12", + "673", + "Active", + "successBadge", + "Jan 12, 2023", + ), + createData( + "Joshua", + "/images/user13.png", + "@joshua", + "joshua@gmail.com", + "0018 3354 2532", + "$2434.12", + "463", + "Active", + "successBadge", + "Jan 13, 2023", + ), + createData( + "Harvey", + "/images/user14.png", + "@harvey", + "harvey@gmail.com", + "0018 3331 2224", + "$453.12", + "445", + "Active", + "successBadge", + "Jan 14, 2023", + ), + createData( + "Antonio", + "/images/user15.png", + "@antonio", + "antonio@gmail.com", + "0018 3354 6822", + "$3522.12", + "165", + "Active", + "successBadge", + "Jan 15, 2023", + ), + createData( + "Julian", + "/images/user16.png", + "@julian", + "julian@gmail.com", + "0018 4322 1231", + "$455.12", + "165", + "Active", + "successBadge", + "Jan 16, 2023", + ), + createData( + "Harold", + "/images/user17.png", + "@harold", + "harold@gmail.com", + "0018 455 3323", + "$3422.12", + "564", + "Active", + "successBadge", + "Jan 17, 2023", + ), + createData( + "Kingston", + "/images/user18.png", + "@kingston", + "kingston@info.com", + "0018 3453 4325", + "$442.12", + "6776", + "Active", + "successBadge", + "Jan 18, 2023", + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +export default function CustomersLists() { + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + // Create new modal + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + // End Create new Modal + + return ( + <> + + + + Customers Lists + + + + + + + + + + + Name + + + + Email + + + + Phone + + + + Balance + + + + Orders + + + + Status + + + + Joining Date + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + User + + + {row.name} + + + + {row.userName} + + + + + + + {row.email} + + + + {row.phone} + + + + {row.balance} + + + + {row.orders} + + + + {row.status} + + + + {row.joiningDate} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + {/* Create new modal */} + + + + + Create New + + + + + + + + + + + + + Image + + + + + + + Name + + + + + + + User Name + + + + + + + Email + + + + + + + Phone Number + + + + + + + Balance + + + + + + + + + + + + + + ); +} diff --git a/components/eCommerce/OrderDetails/TrackOrder/OrderTable.js b/components/eCommerce/OrderDetails/TrackOrder/OrderTable.js new file mode 100644 index 0000000..a1ac749 --- /dev/null +++ b/components/eCommerce/OrderDetails/TrackOrder/OrderTable.js @@ -0,0 +1,612 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import AddIcon from "@mui/icons-material/Add"; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TableRow from '@mui/material/TableRow'; +import Paper from '@mui/material/Paper'; + +const OrderTable = () => { + return ( + <> + + + + Order #VL2667 + + + + + + + + + + + Product + + + + Price + + + + Quantity + + + + Total Amount + + + + + + + + + Product Img + + Laptop Macos Pro + + + + + + $100.00 + + + + 02 + + + + $200 + + + + + + + Product Img + + Smart Camera XD6 + + + + + + $200.00 + + + + 01 + + + + $200 + + + + + + + Product Img + + Pixi 8 Wireless Airphone + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + Product Img + + Jebble Smart Watch + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + Product Img + + Airpod + + + + + + $120.00 + + + + 01 + + + + $120 + + + + {/* For Total Amount */} + + + Sub Total : + + + + $760.00 + + + + + + Discount : + + + + $60.00 + + + + + + Shipping Charge : + + + + $50.00 + + + + + + Estimated Tax : + + + + $00.00 + + + + + + Total (USD) : + + + + $750.00 + + + +
    +
    +
    + + ) +} + +export default OrderTable; \ No newline at end of file diff --git a/components/eCommerce/OrderDetails/TrackOrder/TrackOrder.module.css b/components/eCommerce/OrderDetails/TrackOrder/TrackOrder.module.css new file mode 100644 index 0000000..79b79ac --- /dev/null +++ b/components/eCommerce/OrderDetails/TrackOrder/TrackOrder.module.css @@ -0,0 +1,73 @@ +.timelineList .tList { + position: relative; + padding-left: 20px; + margin-bottom: 16px; + padding-bottom: 16px; + border-bottom: 1px solid #F7FAFF; +} +.timelineList .tList:last-child { + border: none; + padding-bottom: 0; + margin-bottom: 0; +} +.timelineList .tList::before { + content: ''; + background: linear-gradient(149.1deg, #99B8F3 14.61%, #177FCB 130.18%); + box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25); + width: 10px; + height: 10px; + border-radius: 100%; + position: absolute; + top: 4px; + left: 0; +} +.timelineList .tList::after { + content: ''; + background: #F7FAFF; + width: 3px; + height: 75px; + border-radius: 5px; + position: absolute; + top: 18px; + left: 3px; +} +.timelineList .tList h4 { + font-weight: 500; + font-size: 14px; + margin: 0 0 10px; +} +.timelineList .tList .date { + color: #A9A9C8; + font-size: 12px; + margin: 0; +} +.timelineList .tList .text { + margin: 10px 0 0; + font-size: 13px; +} + + +/* For RTL Style */ +[dir="rtl"] .timelineList .tList { + padding-left: 0; + padding-right: 20px; +} +[dir="rtl"] .timelineList .tList::before { + left: auto; + right: 0; +} +[dir="rtl"] .timelineList .tList::after { + left: auto; + right: 3px; +} + +/* For dark mode */ +[class="dark"] .timelineList .tList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .timelineList .tList:last-child { + border-bottom: none; +} +.timelineList .tList::after { + background: var(--borderColor); +} \ No newline at end of file diff --git a/components/eCommerce/OrderDetails/TrackOrder/index.js b/components/eCommerce/OrderDetails/TrackOrder/index.js new file mode 100644 index 0000000..a8ad578 --- /dev/null +++ b/components/eCommerce/OrderDetails/TrackOrder/index.js @@ -0,0 +1,124 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import styles from "@/components/eCommerce/OrderDetails/TrackOrder/TrackOrder.module.css"; + +const ActivityTimelineData = [ + { + id: "1", + title: "Order Placed", + date: "April 21 2019 07:22 AM", + text: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered.", + }, + { + id: "2", + title: "Packed", + date: "April 22 2019 12:16 AM", + text: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered.", + }, + { + id: "3", + title: "Shipped", + date: "April 22 2019 05:16 PM", + text: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered.", + }, + { + id: "4", + title: "Delivered", + date: "Estimated Delivery Within 3 Days", + text: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered.", + }, +]; + +const TrackOrder = () => { + return ( + <> + + + Track Order + + + + + + Order ID: + + + + #VL2667 + + + + + + Tracking ID: + + + + 1004152012012 + + + + +
    + {ActivityTimelineData.slice(0, 4).map((timeline) => ( +
    +

    {timeline.title}

    +

    {timeline.date}

    +

    + {timeline.text} +

    +
    + ))} +
    +
    + + ); +}; + +export default TrackOrder; diff --git a/components/eCommerce/OrdersList/Features.js b/components/eCommerce/OrdersList/Features.js new file mode 100644 index 0000000..eb0090c --- /dev/null +++ b/components/eCommerce/OrdersList/Features.js @@ -0,0 +1,170 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; + +const featuresData = [ + { + id: 1, + iconName: "ri-money-dollar-circle-line", + progress: "1.3%", + title: "Up from past week", + lists: [ + { + id: 1, + title: "All Orders", + number: "18k", + }, + { + id: 2, + title: "Pending Orders", + number: "5k", + }, + { + id: 3, + title: "Complited Orders", + number: "13k", + } + ] + }, + { + id: 2, + iconName: "ri-bar-chart-line", + progress: "50%", + title: "Up from past week", + lists: [ + { + id: 1, + title: "Canceled", + number: "2k", + }, + { + id: 2, + title: "Orders Returned", + number: "3k", + }, + { + id: 3, + title: "Damaged", + number: "1k", + } + ] + }, + { + id: 3, + iconName: "ri-star-fill", + progress: "70%", + title: "Up from past week", + lists: [ + { + id: 1, + title: "Abandoned Cart", + number: "5k", + }, + { + id: 2, + title: "Customers", + number: "10k", + }, + { + id: 3, + title: "In Progress", + number: "16k", + } + ] + }, +] + +const Features = () => { + return ( + <> + + {featuresData.map((feature) => ( + + + + + + + + + {feature.progress} {feature.title} + + + + + {feature.lists.map((list) => ( + + + {list.title} + + + + {list.number} + + + ))} + + + + ))} + + + ) +} + +export default Features; \ No newline at end of file diff --git a/components/eCommerce/OrdersList/OrdersLists.js b/components/eCommerce/OrdersList/OrdersLists.js new file mode 100644 index 0000000..df76bf2 --- /dev/null +++ b/components/eCommerce/OrdersList/OrdersLists.js @@ -0,0 +1,679 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; + +function OrdersList(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +OrdersList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + orderID, + productImg, + productTitle, + customer, + price, + vendor, + date, + status, + badgeClass, + rating +) { + return { + orderID, + productImg, + productTitle, + customer, + price, + vendor, + date, + status, + badgeClass, + rating, + }; +} + +const rows = [ + createData( + "#SK258", + "/images/product1.png", + "Laptop Macos Pro", + "Colin Firth", + "$289.50", + "Boetic Fashion", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK259", + "/images/product2.png", + "Smart Camera XD6", + "Wade Dave", + "$189.50", + "Aronic Conver", + "2021-12-19", + "Out of Stock", + "dangerBadge", + "5.0 (61 votes)" + ), + createData( + "#SK260", + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "$250.50", + "Lotu Arnich", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK261", + "/images/product4.png", + "Jebble Smart Watch", + "Gilbert Dan", + "$289.50", + "Zoetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK262", + "/images/product5.png", + "Admas Airpod x-Zon", + "Joshua Glen", + "$289.50", + "Airpod", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK263", + "/images/product6.png", + "Smart Satch F8 Pro", + "Lewis Milton", + "$289.50", + "Smart Satch", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK264", + "/images/product7.png", + "Nord Fold ZL", + "Liam Ethan", + "$289.50", + "Nord", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK265", + "/images/product8.png", + "Wall Clock Cimbina", + "Ramon Miles", + "$289.50", + "Clock", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK266", + "/images/product9.png", + "Galaxo T6 Munsun", + "Brian Roberto", + "$289.50", + "Smart Phone", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK267", + "/images/product1.png", + "Laptop Macos Pro", + "Colin Firth", + "$289.50", + "Boetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK268", + "/images/product2.png", + "Smart Camera XD6", + "Wade Dave", + "$189.50", + "Aronic Conver", + "2021-12-19", + "Out of Stock", + "dangerBadge", + "5.0 (61 votes)" + ), + createData( + "#SK269", + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "$250.50", + "Lotu Arnich", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK270", + "/images/product4.png", + "Jebble Smart Watch", + "Gilbert Dan", + "$289.50", + "Zoetic Fashion", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK271", + "/images/product5.png", + "Admas Airpod x-Zon", + "Joshua Glen", + "$289.50", + "Airpod", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK272", + "/images/product6.png", + "Smart Satch F8 Pro", + "Lewis Milton", + "$289.50", + "Smart Satch", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK273", + "/images/product7.png", + "Nord Fold ZL", + "Liam Ethan", + "$289.50", + "Nord", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK274", + "/images/product8.png", + "Wall Clock Cimbina", + "Ramon Miles", + "$289.50", + "Clock", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK275", + "/images/product9.png", + "Galaxo T6 Munsun", + "Brian Roberto", + "$289.50", + "Smart Phone", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), +].sort((a, b) => (a.orderID < b.orderID ? -1 : 1)); + +export default function OrdersLists() { + // Select + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + <> + + + + Recent Orders + + + + + + Select + + + + + + + + + + + + Order ID + + + + Product + + + + Customer + + + + Price + + + + Vendor + + + + Date + + + + Status + + + + Rating + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.orderID} + + + + + Product Img + + {row.productTitle} + + + + + + {row.customer} + + + + {row.price} + + + + {row.vendor} + + + + {row.date} + + + + {row.status} + + + + {row.rating} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + ); +} diff --git a/components/eCommerce/ProductDetails/ProductDescription.js b/components/eCommerce/ProductDetails/ProductDescription.js new file mode 100644 index 0000000..c63b399 --- /dev/null +++ b/components/eCommerce/ProductDetails/ProductDescription.js @@ -0,0 +1,23 @@ +import React from 'react'; + +const ProductDescription = () => { + return ( + <> +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    + +
      +
    • Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
    • + +
    • Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
    • +
    + +

    At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio.

    + +

    On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain.

    +
    + + ) +} + +export default ProductDescription; \ No newline at end of file diff --git a/components/eCommerce/ProductDetails/ProductDetailsContent.js b/components/eCommerce/ProductDetails/ProductDetailsContent.js new file mode 100644 index 0000000..ed62096 --- /dev/null +++ b/components/eCommerce/ProductDetails/ProductDetailsContent.js @@ -0,0 +1,177 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import StarIcon from "@mui/icons-material/Star"; +import Button from "@mui/material/Button"; +import ShoppingCartIcon from "@mui/icons-material/ShoppingCart"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper"; +import { Tab, Tabs, TabList, TabPanel } from "react-tabs"; +import styles from "@/components/eCommerce/ProductDetails/ProductDetailsContent.module.css"; +import ProductDescription from "./ProductDescription"; +import ProductReviews from "./ProductReviews"; + +const ProductDetailsContent = () => { + return ( + <> + + + + + + product + + + + product + + + + product + + + + + + + + Black T-Shirt Sleeve + + + + + + + + + + + 5.0 (61 votes) + + + + + Price:{" "} + + $200 + {" "} + $150 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim adlino minim veniam, quis nostrud exercitation ullamco + laboris nisi ut aliquip ex ea commodo consequat. + + +
      +
    • + Category : T-Shirt +
    • +
    • + Availability : In Stock 10 Items +
    • +
    + + + + +
    +
    +
    + + + + + Description + Reviews (3) + + + + {/* ProductDescription */} + + + + + {/* ProductReviews */} + + + + +
    + + ); +}; + +export default ProductDetailsContent; diff --git a/components/eCommerce/ProductDetails/ProductDetailsContent.module.css b/components/eCommerce/ProductDetails/ProductDetailsContent.module.css new file mode 100644 index 0000000..4103ddf --- /dev/null +++ b/components/eCommerce/ProductDetails/ProductDetailsContent.module.css @@ -0,0 +1,57 @@ +.metaTagList { + list-style-type: none; + margin: 0 0 15px; + padding: 0; +} +.metaTagList li { + margin-bottom: 10px; +} +.metaTagList li:last-child { + margin-bottom: 0; +} +.metaTagList li span { + font-weight: 500; + width: 100px; + display: inline-block; +} + +.socialLink { + list-style-type: none; + margin: 0 0 25px; + padding: 0; +} +.socialLink li { + display: inline-block; + margin-right: 10px; +} +.socialLink li:last-child { + margin-right: 0; +} +.socialLink li span { + font-weight: 500; +} +.socialLink li a { + text-decoration: none; + background: #EDEFF5; + border-radius: 10px; + color: var(--primaryColor); + display: inline-block; + width: 33px; + height: 33px; + line-height: 33px; + border-radius: 100%; + text-align: center; +} +.socialLink li a:hover { + background-color: var(--primaryColor); + color: #fff; +} + +/* For RTL Style */ +[dir="rtl"] .socialLink li { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .socialLink li:last-child { + margin-left: 0; +} \ No newline at end of file diff --git a/components/eCommerce/ProductDetails/ProductReviews.js b/components/eCommerce/ProductDetails/ProductReviews.js new file mode 100644 index 0000000..cb027db --- /dev/null +++ b/components/eCommerce/ProductDetails/ProductReviews.js @@ -0,0 +1,83 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; + +const ProductReviews = () => { + return ( + <> + + +
    +
    +
    + + + + + +
    + +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit.

    + + down-arrow +
    +
    + User +

    Alvarado Turner

    +
    +
    +
    + + +
    +
    +
    + + + + + +
    + +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit.

    + + down-arrow +
    +
    + User +

    Riley Dave

    +
    +
    +
    + + +
    +
    +
    + + + + + +
    + +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit.

    + + down-arrow +
    +
    + User +

    Ivan Dan

    +
    +
    +
    +
    + + ) +} + +export default ProductReviews; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..80e8f1e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3' +services: + cms-client: + build: + context: . + dockerfile: docker/Dockerfile + #dockerfile: Dockerfile + restart: unless-stopped + # image: registry.chiefsoft.net/wrenchboardmainsite_wrenchboard-www:latest + ports: + - 50015:3000 + extra_hosts: + - backend.wrenchboard.api.live:10.10.33.15 + - backend.wrenchboard.api.test:10.10.33.15 + # #- backend.wrenchboard.api.live:172.31.4.27 + # #- backend.wrenchboard.api.test:10.20.30.27 + - apigateway.wrenchboard.app.dev.fluxtra.net:10.20.30.19 + - apigateway.wrenchboard.app.lotus.fluxtra.net:172.31.4.19 + environment: + - CHOKIDAR_USEPOLLING=true +volumes: + src: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..c742827 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +# Run command with node if the first argument contains a "-" or is not a system command. The last +# part inside the "{}" is a workaround for the following bug in ash/dash: +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=874264 +if [ "${1#-}" != "${1}" ] || [ -z "$(command -v "${1}")" ] || { [ -f "${1}" ] && ! [ -x "${1}" ]; }; then + set -- node "$@" +fi + +exec "$@" \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..8940cf1 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,127 @@ +FROM alpine:3.14 + +ENV NODE_VERSION 16.15.1 + +RUN addgroup -g 1000 node \ + && adduser -u 1000 -G node -s /bin/sh -D node \ + && apk add --no-cache \ + libstdc++ \ + && apk add --no-cache --virtual .build-deps \ + curl \ + && ARCH= && alpineArch="$(apk --print-arch)" \ + && case "${alpineArch##*-}" in \ + x86_64) \ + ARCH='x64' \ + CHECKSUM="3acef00c21ca044a74710a56492c40d715ea5a707ce8629d6df2415f3cf89fec" \ + ;; \ + *) ;; \ + esac \ + && if [ -n "${CHECKSUM}" ]; then \ + set -eu; \ + curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \ + echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \ + && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ + && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \ + else \ + echo "Building from source" \ + # backup build + && apk add --no-cache --virtual .build-deps-full \ + binutils-gold \ + g++ \ + gcc \ + gnupg \ + libgcc \ + linux-headers \ + make \ + python3 \ + # gpg keys listed at https://github.com/nodejs/node#release-keys + && for key in \ + 4ED778F539E3634C779C87C6D7062848A1AB005C \ + 141F07595B7B3FFE74309A937405533BE57C7D57 \ + 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ + 74F12602B6F1C4E913FAA37AD3A89613643B6201 \ + 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ + 61FC681DFB92A079F1685E77973F295594EC4689 \ + 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ + C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ + 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 \ + C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \ + DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ + A48C2BEE680E841632CD4E44F07496B3EB3C1762 \ + 108F52B48DB57BB0CC439B2997B01419BD92F80A \ + B9E2F5981AA6E0CD28160D9FF13993A75599653C \ + ; do \ + gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ + && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ + && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ + && tar -xf "node-v$NODE_VERSION.tar.xz" \ + && cd "node-v$NODE_VERSION" \ + && ./configure \ + && make -j$(getconf _NPROCESSORS_ONLN) V= \ + && make install \ + && apk del .build-deps-full \ + && cd .. \ + && rm -Rf "node-v$NODE_VERSION" \ + && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \ + fi \ + && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \ + && apk del .build-deps \ + # smoke tests + && node --version \ + && npm --version + +ENV YARN_VERSION 1.22.19 + +RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \ + && for key in \ + 6A010C5166006599AA17F08146C2130DFD2497F5 \ + ; do \ + gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ + && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ + && mkdir -p /opt \ + && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ + && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ + && apk del .build-deps-yarn \ + # smoke test + && yarn --version + +COPY docker-entrypoint.sh /usr/local/bin/ +ENTRYPOINT ["docker-entrypoint.sh"] +# COPY docker-entrypoint.sh /usr/local/bin/ +# ENTRYPOINT ["docker-entrypoint.sh"] + +# set working directory +WORKDIR /app + +# add `/app/node_modules/.bin` to $PATH +ENV PATH /app/node_modules/.bin:$PATH + +# install app dependencies +COPY package.json ./ +#COPY package-lock.json ./ +# RUN npm install --silent +RUN npm install +RUN npm install react-scripts@3.4.1 -g --silent +RUN npm install -g serve + +# add app +COPY . ./ + +# build app +# RUN npm run-script build + +# start app +# CMD ["serve", "-s", "build"] + +# CMD ["npm", "start"] +CMD ["npm", "run", "dev"] diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh new file mode 100644 index 0000000..c742827 --- /dev/null +++ b/docker/docker-entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +# Run command with node if the first argument contains a "-" or is not a system command. The last +# part inside the "{}" is a workaround for the following bug in ash/dash: +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=874264 +if [ "${1#-}" != "${1}" ] || [ -z "$(command -v "${1}")" ] || { [ -f "${1}" ] && ! [ -x "${1}" ]; }; then + set -- node "$@" +fi + +exec "$@" \ No newline at end of file diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..ae165f5 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/components/*": ["components/*"], + "@/public/*": ["public/*"], + "@/utils/*": ["utils/*"], + "@/styles/*": ["styles/*"] + } + } +} \ No newline at end of file diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..c538366 --- /dev/null +++ b/next.config.js @@ -0,0 +1,20 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + trailingSlash: true, + eslint: { + // Warning: This allows production builds to successfully complete even if + // your project has ESLint errors. + ignoreDuringBuilds: true, + }, + images: { + unoptimized: true + }, + optimizeFonts: false, + i18n: { + locales: ['en', 'ar'], + defaultLocale: 'en', + } +} + +module.exports = nextConfig diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..427ce87 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5603 @@ +{ + "name": "cms-client", + "version": "1.6.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "admash", + "version": "1.6.0", + "dependencies": { + "@emotion/react": "^11.11.0", + "@emotion/styled": "^11.10.5", + "@fullcalendar/core": "^6.0.2", + "@fullcalendar/daygrid": "^6.0.2", + "@fullcalendar/react": "^6.0.2", + "@mantine/core": "^5.10.5", + "@mantine/hooks": "^5.10.5", + "@mantine/rte": "^5.10.5", + "@mui/base": "^5.0.0-beta.10", + "@mui/icons-material": "^5.10.15", + "@mui/lab": "^5.0.0-alpha.115", + "@mui/material": "^5.11.4", + "@mui/x-data-grid": "^5.17.17", + "@mui/x-date-pickers": "^5.0.12", + "@ramonak/react-progress-bar": "^5.0.3", + "apexcharts": "^3.36.3", + "chart.js": "^4.3.0", + "dayjs": "^1.11.7", + "eslint": "8.28.0", + "eslint-config-next": "13.0.5", + "next": "^13.3.0", + "notistack": "^2.0.8", + "react": "^18.2.0", + "react-apexcharts": "^1.4.0", + "react-chartjs-2": "^5.0.1", + "react-dom": "^18.2.0", + "react-dropzone": "^14.2.3", + "react-router-dom": "^6.4.3", + "react-simple-maps": "^3.0.0", + "react-tabs": "^6.0.0", + "recharts": "^2.2.0", + "swiper": "^8.4.5" + }, + "devDependencies": { + "sass": "^1.57.1" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz", + "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==", + "dependencies": { + "@babel/highlight": "^7.22.10", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz", + "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.10.tgz", + "integrity": "sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@date-io/core": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.17.0.tgz", + "integrity": "sha512-+EQE8xZhRM/hsY0CDTVyayMDDY5ihc4MqXCrPxooKw19yAzUIC6uUqsZeaOFNL9YKTNxYKrJP5DFgE8o5xRCOw==" + }, + "node_modules/@date-io/date-fns": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.17.0.tgz", + "integrity": "sha512-L0hWZ/mTpy3Gx/xXJ5tq5CzHo0L7ry6KEO9/w/JWiFWFLZgiNVo3ex92gOl3zmzjHqY/3Ev+5sehAr8UnGLEng==", + "dependencies": { + "@date-io/core": "^2.17.0" + }, + "peerDependencies": { + "date-fns": "^2.0.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + } + } + }, + "node_modules/@date-io/dayjs": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.17.0.tgz", + "integrity": "sha512-Iq1wjY5XzBh0lheFA0it6Dsyv94e8mTiNR8vuTai+KopxDkreL3YjwTmZHxkgB7/vd0RMIACStzVgWvPATnDCA==", + "dependencies": { + "@date-io/core": "^2.17.0" + }, + "peerDependencies": { + "dayjs": "^1.8.17" + }, + "peerDependenciesMeta": { + "dayjs": { + "optional": true + } + } + }, + "node_modules/@date-io/luxon": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.17.0.tgz", + "integrity": "sha512-l712Vdm/uTddD2XWt9TlQloZUiTiRQtY5TCOG45MQ/8u0tu8M17BD6QYHar/3OrnkGybALAMPzCy1r5D7+0HBg==", + "dependencies": { + "@date-io/core": "^2.17.0" + }, + "peerDependencies": { + "luxon": "^1.21.3 || ^2.x || ^3.x" + }, + "peerDependenciesMeta": { + "luxon": { + "optional": true + } + } + }, + "node_modules/@date-io/moment": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.17.0.tgz", + "integrity": "sha512-e4nb4CDZU4k0WRVhz1Wvl7d+hFsedObSauDHKtZwU9kt7gdYEAzKgnrSCTHsEaXrDumdrkCYTeZ0Tmyk7uV4tw==", + "dependencies": { + "@date-io/core": "^2.17.0" + }, + "peerDependencies": { + "moment": "^2.24.0" + }, + "peerDependenciesMeta": { + "moment": { + "optional": true + } + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", + "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", + "dependencies": { + "@floating-ui/utils": "^0.1.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz", + "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==", + "dependencies": { + "@floating-ui/core": "^1.4.1", + "@floating-ui/utils": "^0.1.1" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.19.2.tgz", + "integrity": "sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==", + "dependencies": { + "@floating-ui/react-dom": "^1.3.0", + "aria-hidden": "^1.1.3", + "tabbable": "^6.0.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-1.3.0.tgz", + "integrity": "sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==", + "dependencies": { + "@floating-ui/dom": "^1.2.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz", + "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==" + }, + "node_modules/@fullcalendar/core": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.8.tgz", + "integrity": "sha512-i8JBIvZCWGO9dsMEDcx9bnsQZ9PtGSJdOXGgWbhLaGq2iq41OBdp9g9gM4b/Otv2oK8bL5Gl6CsMmb/HkDtA6Q==", + "dependencies": { + "preact": "~10.12.1" + } + }, + "node_modules/@fullcalendar/daygrid": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.8.tgz", + "integrity": "sha512-kCZxQFKb9Vqa3CZRX0v7rMSJ2mlTt4gDpyLfiNJKxUAq7W51uKurPaFZWicaXy1ESHVBxKNlbx5uNjBpyu50JQ==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.8" + } + }, + "node_modules/@fullcalendar/react": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/@fullcalendar/react/-/react-6.1.8.tgz", + "integrity": "sha512-E8GQSQyZHkjpwxQW5Vci7iZgN7f33ntuRcvfGii4Fn35t9VHGz2SEyKAWXpVf38elcKTZKVgajU9ipStd+1LEg==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.8", + "react": "^16.7.0 || ^17 || ^18", + "react-dom": "^16.7.0 || ^17 || ^18" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, + "node_modules/@mantine/core": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/core/-/core-5.10.5.tgz", + "integrity": "sha512-F4tqHSEVM9D6/iSqHfPda+Xl5XgSEPHAAkT01Zwzj4Jnbd10qGrlqr/SFUop2CIcuKYnmra9XltUahUPXBC2BQ==", + "dependencies": { + "@floating-ui/react": "^0.19.1", + "@mantine/styles": "5.10.5", + "@mantine/utils": "5.10.5", + "@radix-ui/react-scroll-area": "1.0.2", + "react-textarea-autosize": "8.3.4" + }, + "peerDependencies": { + "@mantine/hooks": "5.10.5", + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@mantine/hooks": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-5.10.5.tgz", + "integrity": "sha512-hFQp71QZDfivPzfIUOQZfMKLiOL/Cn2EnzacRlbUr55myteTfzYN8YMt+nzniE/6c4IRopFHEAdbKEtfyQc6kg==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@mantine/rte": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/rte/-/rte-5.10.5.tgz", + "integrity": "sha512-UEBVsuSM1Q1ymZLp/mSCbFMxGaC7z/5gwUYFFmkWJoO5fM/B5ZOaBKMuOHTVWhkwG5K3dgLjyXwaScSrLABiHA==", + "dependencies": { + "@tabler/icons": "^1.119.0", + "quill-mention": "^3.0.8", + "react-quill": "2.0.0" + }, + "peerDependencies": { + "@mantine/core": "5.10.5", + "@mantine/hooks": "5.10.5", + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@mantine/styles": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/styles/-/styles-5.10.5.tgz", + "integrity": "sha512-0NXk8c/XGzuTUkZc6KceF2NaTCMEu5mHR4ru0x+ttb9DGnLpHuGWduTHjSfr4hl6eAJgedD0zauO+VAhDzO9zA==", + "dependencies": { + "clsx": "1.1.1", + "csstype": "3.0.9" + }, + "peerDependencies": { + "@emotion/react": ">=11.9.0", + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@mantine/styles/node_modules/csstype": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", + "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" + }, + "node_modules/@mantine/utils": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/utils/-/utils-5.10.5.tgz", + "integrity": "sha512-FGMq4dGs5HhDAtI0z46uzxzKKPmZ3h5uKUyKg1ZHoFR1mBtcUMbB6FylFmHqKFRWlJ5IXqX9dwmiVrLYUOfTmA==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.10", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.10.tgz", + "integrity": "sha512-moTAhGwFfQffj7hsu61FnqcGqVcd53A1CrOhnskM9TF0Uh2rnLDMCuar4JRUWWpaJofAfQEbQBBFPadFQLI4PA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@emotion/is-prop-valid": "^1.2.1", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.4.tgz", + "integrity": "sha512-pW2XghSi3hpYKX57Wu0SCWMTSpzvXZmmucj3TcOJWaCiFt4xr05w2gcwBZi36dAp9uvd9//9N51qbblmnD+GPg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.14.3", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.3.tgz", + "integrity": "sha512-XkxWPhageu1OPUm2LWjo5XqeQ0t2xfGe8EiLkRW9oz2LHMMZmijvCxulhgquUVTF1DnoSh+3KoDLSsoAFtVNVw==", + "dependencies": { + "@babel/runtime": "^7.22.6" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/lab": { + "version": "5.0.0-alpha.139", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.139.tgz", + "integrity": "sha512-YlKKELtGZEpd3Hj9cUo6ekwB6RSDzGBw+LlaCBntudhVb4aRn5mQYFej3BYn6fOYz5335jkTgvBt0sEwlSo4qA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/base": "5.0.0-beta.10", + "@mui/system": "^5.14.4", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/lab/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/material": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.4.tgz", + "integrity": "sha512-2XUV3KyRC07BQPPzEgd+ss3x/ezXtHeKtOGCMCNmx3MauZojPYUpSwFkE0fYgYCD9dMQMVG4DY/VF38P0KShsg==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/base": "5.0.0-beta.10", + "@mui/core-downloads-tracker": "^5.14.4", + "@mui/system": "^5.14.4", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "@types/react-transition-group": "^4.4.6", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/private-theming": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.4.tgz", + "integrity": "sha512-ISXsHDiQ3z1XA4IuKn+iXDWvDjcz/UcQBiFZqtdoIsEBt8CB7wgdQf3LwcwqO81dl5ofg/vNQBEnXuKfZHrnYA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/utils": "^5.14.4", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz", + "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.4.tgz", + "integrity": "sha512-oPgfWS97QNfHcDBapdkZIs4G5i85BJt69Hp6wbXF6s7vi3Evcmhdk8AbCRW6n0sX4vTj8oe0mh0RIm1G2A1KDA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/private-theming": "^5.14.4", + "@mui/styled-engine": "^5.13.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/types": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", + "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.4.tgz", + "integrity": "sha512-4ANV0txPD3x0IcTCSEHKDWnsutg1K3m6Vz5IckkbLXVYu17oOZCVUdOKsb/txUmaCd0v0PmSRe5PW+Mlvns5dQ==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^18.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@mui/x-data-grid": { + "version": "5.17.26", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-5.17.26.tgz", + "integrity": "sha512-eGJq9J0g9cDGLFfMmugOadZx0mJeOd/yQpHwEa5gUXyONS6qF0OhXSWyDOhDdA3l2TOoQzotMN5dY/T4Wl1KYA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@mui/utils": "^5.10.3", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "reselect": "^4.1.6" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.4.1", + "@mui/system": "^5.4.1", + "react": "^17.0.2 || ^18.0.0", + "react-dom": "^17.0.2 || ^18.0.0" + } + }, + "node_modules/@mui/x-data-grid/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/x-date-pickers": { + "version": "5.0.20", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz", + "integrity": "sha512-ERukSeHIoNLbI1C2XRhF9wRhqfsr+Q4B1SAw2ZlU7CWgcG8UBOxgqRKDEOVAIoSWL+DWT6GRuQjOKvj6UXZceA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@date-io/core": "^2.15.0", + "@date-io/date-fns": "^2.15.0", + "@date-io/dayjs": "^2.15.0", + "@date-io/luxon": "^2.15.0", + "@date-io/moment": "^2.15.0", + "@mui/utils": "^5.10.3", + "@types/react-transition-group": "^4.4.5", + "clsx": "^1.2.1", + "prop-types": "^15.7.2", + "react-transition-group": "^4.4.5", + "rifm": "^0.12.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.4.1", + "@mui/system": "^5.4.1", + "date-fns": "^2.25.0", + "dayjs": "^1.10.7", + "luxon": "^1.28.0 || ^2.0.0 || ^3.0.0", + "moment": "^2.29.1", + "react": "^17.0.2 || ^18.0.0", + "react-dom": "^17.0.2 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/@mui/x-date-pickers/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@next/env": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.13.tgz", + "integrity": "sha512-fwz2QgVg08v7ZL7KmbQBLF2PubR/6zQdKBgmHEl3BCyWTEDsAQEijjw2gbFhI1tcKfLdOOJUXntz5vZ4S0Polg==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.0.5.tgz", + "integrity": "sha512-H9U9B1dFnCDmylDZ6/dYt95Ie1Iu+SLBMcO6rkIGIDcj5UK+DNyMiWm83xWBZ1gREM8cfp5Srv1g6wqf8pM4lw==", + "dependencies": { + "glob": "7.1.7" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.13.tgz", + "integrity": "sha512-ZptVhHjzUuivnXMNCJ6lER33HN7lC+rZ01z+PM10Ows21NHFYMvGhi5iXkGtBDk6VmtzsbqnAjnx4Oz5um0FjA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.13.tgz", + "integrity": "sha512-t9nTiWCLApw8W4G1kqJyYP7y6/7lyal3PftmRturIxAIBlZss9wrtVN8nci50StDHmIlIDxfguYIEGVr9DbFTg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.13.tgz", + "integrity": "sha512-xEHUqC8eqR5DHe8SOmMnDU1K3ggrJ28uIKltrQAwqFSSSmzjnN/XMocZkcVhuncuxYrpbri0iMQstRyRVdQVWg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.13.tgz", + "integrity": "sha512-sNf3MnLAm8rquSSAoeD9nVcdaDeRYOeey4stOWOyWIgbBDtP+C93amSgH/LPTDoUV7gNiU6f+ghepTjTjRgIUQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.13.tgz", + "integrity": "sha512-WhcRaJJSHyx9OWmKjjz+OWHumiPZWRqmM/09Bt7Up4UqUJFFhGExeztR4trtv3rflvULatu9IH/nTV8fUUgaMA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.13.tgz", + "integrity": "sha512-+Y4LLhOWWZQIDKVwr2R17lq2KSN0F1c30QVgGIWfnjjHpH8nrIWHEndhqYU+iFuW8It78CiJjQKTw4f51HD7jA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.13.tgz", + "integrity": "sha512-rWurdOR20uxjfqd1X9vDAgv0Jb26KjyL8akF9CBeFqX8rVaBAnW/Wf6A2gYEwyYY4Bai3T7p1kro6DFrsvBAAw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.13.tgz", + "integrity": "sha512-E8bSPwRuY5ibJ3CzLQmJEt8qaWrPYuUTwnrwygPUEWoLzD5YRx9SD37oXRdU81TgGwDzCxpl7z5Nqlfk50xAog==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.13.tgz", + "integrity": "sha512-4KlyC6jWRubPnppgfYsNTPeWfGCxtWLh5vaOAW/kdzAk9widqho8Qb5S4K2vHmal1tsURi7Onk2MMCV1phvyqA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz", + "integrity": "sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", + "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", + "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz", + "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz", + "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz", + "integrity": "sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.0", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", + "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@ramonak/react-progress-bar": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ramonak/react-progress-bar/-/react-progress-bar-5.0.3.tgz", + "integrity": "sha512-VxXGKN74q94jYoeYuFNJm3xvWhVz9dy+alFZ8S4ZmTTr/05CCq9PjwthT8JB27UdAvn8pHvKBmemV8JU2cZi6A==", + "peerDependencies": { + "react": "^16.0.0 || ^17 || ^18", + "react-dom": "^16.0.0 || ^17 || ^18" + } + }, + "node_modules/@remix-run/router": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", + "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", + "integrity": "sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", + "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tabler/icons": { + "version": "1.119.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-1.119.0.tgz", + "integrity": "sha512-Fk3Qq4w2SXcTjc/n1cuL5bccPkylrOMo7cYpQIf/yw6zP76LQV9dtLcHQUjFiUnaYuswR645CnURIhlafyAh9g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + }, + "peerDependencies": { + "react": "^16.x || 17.x || 18.x", + "react-dom": "^16.x || 17.x || 18.x" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@types/d3-array": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.5.tgz", + "integrity": "sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", + "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz", + "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/quill": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@types/quill/-/quill-1.3.10.tgz", + "integrity": "sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw==", + "dependencies": { + "parchment": "^1.1.2" + } + }, + "node_modules/@types/react": { + "version": "18.2.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.20.tgz", + "integrity": "sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-is": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.1.tgz", + "integrity": "sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "devOptional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apexcharts": { + "version": "3.41.1", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.41.1.tgz", + "integrity": "sha512-kta8fhXrfZYqW7K9kF7FqZ6imQaC6moyRgcUZjwIky/oeHVVISSN/2rjUIvZXnwxWHiSdDHMqLy+TqJhB4DXFA==", + "dependencies": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz", + "integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" + }, + "node_modules/attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", + "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chart.js": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.3.3.tgz", + "integrity": "sha512-aTk7pBw+x6sQYhon/NR3ikfUJuym/LdgpTlgZRe2PaEhjUMKBKyNaFCMVRAyTEWYFNO7qRu7iQVqOw/OqzxZxQ==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=7" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-unit-converter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==" + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "node_modules/d3-drag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", + "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-selection": "2" + } + }, + "node_modules/d3-ease": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", + "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", + "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "dependencies": { + "d3-array": "^2.5.0" + } + }, + "node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", + "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + }, + "node_modules/d3-transition": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", + "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", + "dependencies": { + "d3-color": "1 - 2", + "d3-dispatch": "1 - 2", + "d3-ease": "1 - 2", + "d3-interpolate": "1 - 2", + "d3-timer": "1 - 2" + }, + "peerDependencies": { + "d3-selection": "2" + } + }, + "node_modules/d3-zoom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", + "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-drag": "2", + "d3-interpolate": "1 - 2", + "d3-selection": "2", + "d3-transition": "2" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + }, + "node_modules/dayjs": { + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom7": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.6.tgz", + "integrity": "sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==", + "dependencies": { + "ssr-window": "^4.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", + "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.0.5.tgz", + "integrity": "sha512-lge94W7ME6kNCO96eCykq5GbKbllzmcDNDhh1/llMCRgNPl0+GIQ8dOoM0I7uRQVW56VmTXFybJFXgow11a5pg==", + "dependencies": { + "@next/eslint-plugin-next": "13.0.5", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.42.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "^4.5.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz", + "integrity": "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==", + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz", + "integrity": "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.12.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "resolve": "^1.22.3", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.1.tgz", + "integrity": "sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.0.tgz", + "integrity": "sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", + "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", + "devOptional": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/next": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/next/-/next-13.4.13.tgz", + "integrity": "sha512-A3YVbVDNeXLhWsZ8Nf6IkxmNlmTNz0yVg186NJ97tGZqPDdPzTrHotJ+A1cuJm2XfuWPrKOUZILl5iBQkIf8Jw==", + "dependencies": { + "@next/env": "13.4.13", + "@swc/helpers": "0.5.1", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.14", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0", + "zod": "3.21.4" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=16.8.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "13.4.13", + "@next/swc-darwin-x64": "13.4.13", + "@next/swc-linux-arm64-gnu": "13.4.13", + "@next/swc-linux-arm64-musl": "13.4.13", + "@next/swc-linux-x64-gnu": "13.4.13", + "@next/swc-linux-x64-musl": "13.4.13", + "@next/swc-win32-arm64-msvc": "13.4.13", + "@next/swc-win32-ia32-msvc": "13.4.13", + "@next/swc-win32-x64-msvc": "13.4.13" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/notistack": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/notistack/-/notistack-2.0.8.tgz", + "integrity": "sha512-/IY14wkFp5qjPgKNvAdfL5Jp6q90+MjgKTPh4c81r/lW70KeuX6b9pE/4f8L4FG31cNudbN9siiFS5ql1aSLRw==", + "dependencies": { + "clsx": "^1.1.0", + "hoist-non-react-statics": "^3.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/notistack" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@mui/material": "^5.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz", + "integrity": "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.21.2", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/preact": { + "version": "10.12.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "dependencies": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + } + }, + "node_modules/quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "dependencies": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/quill-mention": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/quill-mention/-/quill-mention-3.4.0.tgz", + "integrity": "sha512-Ztc/60xujIBDfjf2xTmAkdsGF6ol2sSasWE0EDquZHtz6yWgrXzScU8Ovvb5ZyDpgTMQnOIIzH6pxwGunq0evQ==", + "dependencies": { + "quill": "^1.3.7" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-apexcharts": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.4.1.tgz", + "integrity": "sha512-G14nVaD64Bnbgy8tYxkjuXEUp/7h30Q0U33xc3AwtGFijJB9nHqOt1a6eG0WBn055RgRg+NwqbKGtqPxy15d0Q==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "apexcharts": "^3.41.0", + "react": ">=0.13" + } + }, + "node_modules/react-chartjs-2": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz", + "integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==", + "peerDependencies": { + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-quill": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-quill/-/react-quill-2.0.0.tgz", + "integrity": "sha512-4qQtv1FtCfLgoD3PXAur5RyxuUbPXQGOHgTlFie3jtxp43mXDtzCKaOgQ3mLyZfi1PUlyjycfivKelFhy13QUg==", + "dependencies": { + "@types/quill": "^1.3.10", + "lodash": "^4.17.4", + "quill": "^1.3.7" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, + "node_modules/react-resize-detector": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-8.1.0.tgz", + "integrity": "sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-router": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.2.tgz", + "integrity": "sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==", + "dependencies": { + "@remix-run/router": "1.7.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.2.tgz", + "integrity": "sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==", + "dependencies": { + "@remix-run/router": "1.7.2", + "react-router": "6.14.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-simple-maps": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-simple-maps/-/react-simple-maps-3.0.0.tgz", + "integrity": "sha512-vKNFrvpPG8Vyfdjnz5Ne1N56rZlDfHXv5THNXOVZMqbX1rWZA48zQuYT03mx6PAKanqarJu/PDLgshIZAfHHqw==", + "dependencies": { + "d3-geo": "^2.0.2", + "d3-selection": "^2.0.0", + "d3-zoom": "^2.0.0", + "topojson-client": "^3.1.0" + }, + "peerDependencies": { + "prop-types": "^15.7.2", + "react": "^16.8.0 || 17.x || 18.x", + "react-dom": "^16.8.0 || 17.x || 18.x" + } + }, + "node_modules/react-smooth": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.3.tgz", + "integrity": "sha512-yl4y3XiMorss7ayF5QnBiSprig0+qFHui8uh7Hgg46QX5O+aRMRKlfGGNGLHno35JkQSvSYY8eCWkBfHfrSHfg==", + "dependencies": { + "fast-equals": "^5.0.0", + "react-transition-group": "2.9.0" + }, + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-smooth/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/react-smooth/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/react-tabs": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-6.0.2.tgz", + "integrity": "sha512-aQXTKolnM28k3KguGDBSAbJvcowOQr23A+CUJdzJtOSDOtTwzEaJA+1U4KwhNL9+Obe+jFS7geuvA7ICQPXOnQ==", + "dependencies": { + "clsx": "^2.0.0", + "prop-types": "^15.5.0" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/react-tabs/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz", + "integrity": "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==", + "dependencies": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recharts": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.7.3.tgz", + "integrity": "sha512-cKoO9jUZRQavn06H6Ih2EcG82zUNdQH3OEGWVCmluSDyp3d7fIpDAsbMTd8hE8+T+MD8P76iicv/J4pJspDP7A==", + "dependencies": { + "classnames": "^2.2.5", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.19", + "react-is": "^16.10.2", + "react-resize-detector": "^8.0.4", + "react-smooth": "^2.0.2", + "recharts-scale": "^0.4.4", + "reduce-css-calc": "^2.1.8", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/recharts/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/reduce-css-calc": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", + "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", + "dependencies": { + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rifm": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", + "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sass": { + "version": "1.65.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.65.1.tgz", + "integrity": "sha512-9DINwtHmA41SEd36eVPQ9BJKpn7eKDQmUHmpI0y5Zv2Rcorrh0zS+cFrt050hdNbmmCNKTW3hV5mWfuegNRsEA==", + "devOptional": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssr-window": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", + "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/swiper": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.7.tgz", + "integrity": "sha512-VwO/KU3i9IV2Sf+W2NqyzwWob4yX9Qdedq6vBtS0rFqJ6Fa5iLUJwxQkuD4I38w0WDJwmFl8ojkdcRFPHWD+2g==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "hasInstallScript": true, + "dependencies": { + "dom7": "^4.0.4", + "ssr-window": "^4.0.2" + }, + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "dependencies": { + "commander": "2" + }, + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/victory-vendor": { + "version": "36.6.11", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.6.11.tgz", + "integrity": "sha512-nT8kCiJp8dQh8g991J/R5w5eE2KnO8EAIP0xocWlh9l2okngMWglOPoMZzJvek8Q1KUc4XE/mJxTZnvOB1sTYg==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/victory-vendor/node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/victory-vendor/node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/victory-vendor/node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/victory-vendor/node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8bdeb0d --- /dev/null +++ b/package.json @@ -0,0 +1,48 @@ +{ + "name": "cms-client", + "version": "2.1.1", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@emotion/react": "^11.11.0", + "@emotion/styled": "^11.10.5", + "@fullcalendar/core": "^6.0.2", + "@fullcalendar/daygrid": "^6.0.2", + "@fullcalendar/react": "^6.0.2", + "@mantine/core": "^5.10.5", + "@mantine/hooks": "^5.10.5", + "@mantine/rte": "^5.10.5", + "@mui/base": "^5.0.0-beta.10", + "@mui/icons-material": "^5.10.15", + "@mui/lab": "^5.0.0-alpha.115", + "@mui/material": "^5.11.4", + "@mui/x-data-grid": "^5.17.17", + "@mui/x-date-pickers": "^5.0.12", + "@ramonak/react-progress-bar": "^5.0.3", + "apexcharts": "^3.36.3", + "chart.js": "^4.3.0", + "dayjs": "^1.11.7", + "eslint": "8.28.0", + "eslint-config-next": "13.0.5", + "next": "^13.3.0", + "notistack": "^2.0.8", + "react": "^18.2.0", + "react-apexcharts": "^1.4.0", + "react-chartjs-2": "^5.0.1", + "react-dom": "^18.2.0", + "react-dropzone": "^14.2.3", + "react-router-dom": "^6.4.3", + "react-simple-maps": "^3.0.0", + "react-tabs": "^6.0.0", + "recharts": "^2.2.0", + "swiper": "^8.4.5" + }, + "devDependencies": { + "sass": "^1.57.1" + } +} diff --git a/pages/404.js b/pages/404.js new file mode 100644 index 0000000..1098e4b --- /dev/null +++ b/pages/404.js @@ -0,0 +1,54 @@ +import React from 'react'; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Link from 'next/link'; +import Button from "@mui/material/Button"; + +export default function ErrorPage() { + return ( + <> + + error + + + Oops!! The page you are looking for doesn't exist! + + + + The page you are looking for might have been removed had its name changed or is temporarily unavailable. + + + + + + + + ); +} diff --git a/pages/_app.js b/pages/_app.js new file mode 100644 index 0000000..779b3c8 --- /dev/null +++ b/pages/_app.js @@ -0,0 +1,34 @@ +import React from 'react'; +import '../styles/remixicon.css' +import 'react-tabs/style/react-tabs.css'; +import "swiper/css"; +import "swiper/css/bundle"; + +// Chat Styles +import '../styles/chat.css' +// Globals Styles +import '../styles/globals.css' +// Rtl Styles +import '../styles/rtl.css' +// Dark Mode Styles +import '../styles/dark.css' +// Theme Styles +import theme from '../styles/theme' + +import { ThemeProvider, CssBaseline } from "@mui/material"; +import Layout from "@/components/_App/Layout"; + +function MyApp({ Component, pageProps }) { + return ( + <> + + + + + + + + ); +} + +export default MyApp diff --git a/pages/_document.js b/pages/_document.js new file mode 100644 index 0000000..0473ec7 --- /dev/null +++ b/pages/_document.js @@ -0,0 +1,25 @@ +import Document, { Html, Head, Main, NextScript } from "next/document"; + +class MyDocument extends Document { + render() { + const { locale } = this.props.__NEXT_DATA__; + const dir = locale === "ar" ? "rtl" : "ltr"; + return ( + + + + + + +
    + + + + ); + } +} + +export default MyDocument; diff --git a/pages/analytics.js b/pages/analytics.js new file mode 100644 index 0000000..d889ca3 --- /dev/null +++ b/pages/analytics.js @@ -0,0 +1,128 @@ +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from "@/components/Dashboard/Analytics/Features"; +import Welcome from "@/components/Dashboard/Analytics/Welcome"; +import AudienceOverview from "@/components/Dashboard/Analytics/AudienceOverview"; +import VisitsByDayAndNetIncome from "@/components/Dashboard/Analytics/VisitsByDayAndNetIncome"; +import SalesAnalytics from "@/components/Dashboard/Analytics/SalesAnalytics"; +import TotalRevenue from "@/components/Dashboard/Analytics/TotalRevenue"; +import ActivityTimeline from "@/components/Dashboard/Analytics/ActivityTimeline"; +import RevenueReport from "@/components/Dashboard/Analytics/RevenueReport"; +import SessionsByCountries from "@/components/Dashboard/Analytics/SessionsByCountries"; +import TotalTransactions from "@/components/Dashboard/Analytics/TotalTransactions"; +import BrowserUsedTrafficReports from "@/components/Dashboard/Analytics/BrowserUsedTrafficReports"; +import Terminals from "@/components/Dashboard/Analytics/Terminals"; +import NewReturning from "@/components/Dashboard/Analytics/NewReturning"; +import Gender from "@/components/Dashboard/Analytics/Gender"; +import VisitorsAge from "@/components/Dashboard/Analytics/VisitorsAge"; +import SessionsDevice from "@/components/Dashboard/Analytics/SessionsDevice"; +import ImpressionGoalConversions from "@/components/Dashboard/Analytics/ImpressionGoalConversions"; + +export default function Analytics() { + return ( + <> + {/* Page title */} +
    +

    Analytics

    +
      +
    • + Dashboard +
    • +
    • + Analytics +
    • +
    +
    + + + + {/* Welcome */} + + + {/* ImpressionGoalConversions */} + + + {/* VisitsByDayAndNetIncome */} + + + + + {/* Features */} + + + {/* AudienceOverview */} + + + + + + + + + {/* SalesAnalytics */} + + + {/* RevenueRepor */} + + + + + {/* TotalRevenue */} + + + {/* ActivityTimelin */} + + + + + + + {/* SessionsByCountries */} + + + {/* TotalTransactions */} + + + + + + + {/* BrowserUsedTrafficReports */} + + + + + {/* Terminals */} + + + + + + + {/* SessionsDevice */} + + + + + {/* NewReturning */} + + + + + {/* Gender */} + + + + + {/* VisitorsAge */} + + + + + ); +} diff --git a/pages/analytics/customers.js b/pages/analytics/customers.js new file mode 100644 index 0000000..d4360e8 --- /dev/null +++ b/pages/analytics/customers.js @@ -0,0 +1,50 @@ +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import AudienceOverview from '@/components/Dashboard/Analytics/AudienceOverview'; +import VisitsByDay from "@/components/Analytics/Customers/VisitsByDay"; +import NetIncome from "@/components/Analytics/Customers/NetIncome"; +import NewSessions from "@/components/Analytics/Customers/NewSessions"; +import CustomersDetails from "@/components/Analytics/Customers/CustomersDetails"; + +export default function Customers() { + return ( + <> + {/* Page title */} +
    +

    Customers

    +
      +
    • + Dashboard +
    • +
    • Customers
    • +
    +
    + + {/* AudienceOverview */} + + + + + + + + + + + + + + + + + {/* CustomersDetails */} + + + ); +} diff --git a/pages/analytics/reports.js b/pages/analytics/reports.js new file mode 100644 index 0000000..d6dff08 --- /dev/null +++ b/pages/analytics/reports.js @@ -0,0 +1,44 @@ +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import RevenueReport from "@/components/Dashboard/Analytics/RevenueReport"; +import AvarageReport from "@/components/Analytics/Reports/AvarageReport"; +import SessionsByCountries from "@/components/Dashboard/Analytics/SessionsByCountries"; +import BrowserUsedAndTrafficReports from "@/components/Analytics/Reports/BrowserUsedAndTrafficReports"; + +export default function Reports() { + return ( + <> + {/* Page title */} +
    +

    Reports

    +
      +
    • + Dashboard +
    • +
    • Reports
    • +
    +
    + + + + + + + + + + + + + + + + + + ); +} diff --git a/pages/apps/calendar.js b/pages/apps/calendar.js new file mode 100644 index 0000000..60e6ad9 --- /dev/null +++ b/pages/apps/calendar.js @@ -0,0 +1,269 @@ +import React from "react"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import FullCalendar from "@fullcalendar/react"; +import dayGridPlugin from "@fullcalendar/daygrid"; +import events from "@/components/Apps/Calendar/Events"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import IconButton from "@mui/material/IconButton"; +import Grid from "@mui/material/Grid"; +import Backdrop from "@mui/material/Backdrop"; +import Button from "@mui/material/Button"; +import Fade from "@mui/material/Fade"; +import Modal from "@mui/material/Modal"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; +import dayjs from "dayjs"; +import Stack from "@mui/material/Stack"; +import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; +import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; +import { DateTimePicker } from "@mui/x-date-pickers/DateTimePicker"; + +// Add event modal style +const style = { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + maxWidth: 500, + width: '100%', + bgcolor: "background.paper", + boxShadow: 24, + borderRadius: "8px", +}; + +const Calendar = () => { + // Add event modal + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Date & Time ickers + const [value, setValue] = React.useState(dayjs("2023-01-01T21:11:54")); + + const handleChange = (newValue) => { + setValue(newValue); + }; + + return ( + <> + {/* Page title */} +
    +

    Calendar

    +
      +
    • + Dashboard +
    • +
    • Calendar
    • +
    +
    + + + + + Calendar + + + + + + + + + {/* Add event modal */} + + + + + + Add New Event + + + + + + + + + + + + + Event Name + + + + + + + + Date & Time + + + + + } + /> + + + + + + + + + + + + + + + ); +}; + +export default Calendar; diff --git a/pages/apps/chat/index.js b/pages/apps/chat/index.js new file mode 100644 index 0000000..a585e4c --- /dev/null +++ b/pages/apps/chat/index.js @@ -0,0 +1,716 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import { styled, alpha } from "@mui/material/styles"; +import InputBase from "@mui/material/InputBase"; +import SearchIcon from "@mui/icons-material/Search"; +import Badge from "@mui/material/Badge"; +import { Tab, Tabs, TabList, TabPanel } from "react-tabs"; +import ChatBox from "@/components/Apps/Chat/ChatBox"; +import ChatBoxTwo from "@/components/Apps/Chat/ChatBoxTwo"; +import ChatBoxThree from "@/components/Apps/Chat/ChatBoxThree"; + +// Search field style +const Search = styled("div")(({ theme }) => ({ + position: "relative", + borderRadius: 100, + backgroundColor: alpha(theme.palette.common.white, 0.15), + "&:hover": { + backgroundColor: alpha(theme.palette.common.white, 0.25), + }, + marginRight: 0, + marginLeft: 0, + marginBottom: 20, + width: "100%", + [theme.breakpoints.up("xs")]: { + marginRight: theme.spacing(1), + width: "auto", + }, +})); + +const SearchIconWrapper = styled("div")(({ theme }) => ({ + color: "#757FEF", + padding: theme.spacing(0, 2), + height: "100%", + position: "absolute", + right: "0", + pointerEvents: "none", + display: "flex", + alignItems: "center", + justifyContent: "center", + zIndex: "5", +})); + +const StyledInputBase = styled(InputBase)(({ theme }) => ({ + color: "inherit", + width: "100%", + "& .MuiInputBase-input": { + backgroundColor: "#F5F7FA", + borderRadius: "30px", + padding: theme.spacing(1.4, 0, 1.4, 2), + }, +})); + +export default function Chat() { + return ( + <> + {/* Page title */} +
    +

    Chat

    +
      +
    • + Dashboard +
    • +
    • + Chat +
    • +
    +
    + + + + + + + Messages + + + {/* Search */} + + + + + + + + {/* All Messages */} + + ALL MESSAGES + + + + {/* Tab 1 */} + + + + + User + + + + + + Laurent Perrier + + Typing... + + + + + + 4:30 PM + + + + + + + + + + {/* Tab 2 */} + + + + + User + + + + + + Nunez Faulkner + + + Hello everyone ... + + + + + + + 9.36 AM + + + + + + + + + + {/* Tab 3 */} + + + + + User + + + + + + Bernard Langley + + + That cool, go for it... + + + + + + + 7.18 PM + + + + + + {/* Tab 4 */} + + + + + User + + + + + + Edwards Mckenz + + Great ! 🔥 + + + + + + 08:30 PM + + + + + + {/* Tab 5 */} + + + + + User + + + + + + Elsie Melendez + + Typing... + + + + + + 2:30 PM + + + + + + + + + + {/* Tab 6 */} + + + + + User + + + + + + Mcleod Wagner + + What are you... + + + + + + 1:30 PM + + + + + + {/* Tab 7 */} + + + + + User + + + + + Joseph Strickland + + Hello Joseph!! + + + + + + 7:30 PM + + + + + + {/* Tab 8 */} + + + + + User + + + + + Joseph Strickland + + How are you? + + + + + + 5:30 PM + + + + + + {/* Tab 9 */} + + + + + User + + + + + Silva Foster + + Cool! 🔥 + + + + + + 8:30 PM + + + + + + + + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + + + + ); +} diff --git a/pages/apps/file-manager/assets.js b/pages/apps/file-manager/assets.js new file mode 100644 index 0000000..2cafcd6 --- /dev/null +++ b/pages/apps/file-manager/assets.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import AllAssets from '@/components/Apps/FileManager/AllAssets'; + +export default function Assets() { + return ( + <> + {/* Page title */} +
    +

    Assets

    +
      +
    • + Dashboard +
    • +
    • Assets
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* AllAssets */} + + + + + ); +} diff --git a/pages/apps/file-manager/documents.js b/pages/apps/file-manager/documents.js new file mode 100644 index 0000000..b979b27 --- /dev/null +++ b/pages/apps/file-manager/documents.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import DocumentsFiles from '@/components/Apps/FileManager/DocumentsFiles'; + +export default function Documents() { + return ( + <> + {/* Page title */} +
    +

    Documents

    +
      +
    • + Dashboard +
    • +
    • Documents
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* DocumentsFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/important.js b/pages/apps/file-manager/important.js new file mode 100644 index 0000000..43191ef --- /dev/null +++ b/pages/apps/file-manager/important.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import ImportantFiles from '@/components/Apps/FileManager/ImportantFiles'; + +export default function Important() { + return ( + <> + {/* Page title */} +
    +

    Important

    +
      +
    • + Dashboard +
    • +
    • Important
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* ImportantFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/index.js b/pages/apps/file-manager/index.js new file mode 100644 index 0000000..bd2d486 --- /dev/null +++ b/pages/apps/file-manager/index.js @@ -0,0 +1,49 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Grid from "@mui/material/Grid"; +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import MyDrive from '@/components/Apps/FileManager/MyDrive'; +import RecentFiles from '@/components/Apps/FileManager/RecentFiles'; +import Files from '@/components/Apps/FileManager/Files'; + +export default function FileManager() { + return ( + <> + {/* Page title */} +
    +

    File Manager

    +
      +
    • + Dashboard +
    • +
    • + File Manager +
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* MyDrive */} + + + {/* RecentFiles */} + + + {/* Files */} + + + + + ); +} diff --git a/pages/apps/file-manager/media.js b/pages/apps/file-manager/media.js new file mode 100644 index 0000000..85d6008 --- /dev/null +++ b/pages/apps/file-manager/media.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import MediaFiles from '@/components/Apps/FileManager/MediaFiles'; + +export default function Media() { + return ( + <> + {/* Page title */} +
    +

    Media

    +
      +
    • + Dashboard +
    • +
    • Media
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* MediaFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/personal.js b/pages/apps/file-manager/personal.js new file mode 100644 index 0000000..f2f1408 --- /dev/null +++ b/pages/apps/file-manager/personal.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import PersonalFiles from '@/components/Apps/FileManager/PersonalFiles'; + +export default function Personal() { + return ( + <> + {/* Page title */} +
    +

    Personal

    +
      +
    • + Dashboard +
    • +
    • Personal
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* PersonalFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/projects.js b/pages/apps/file-manager/projects.js new file mode 100644 index 0000000..e41bf04 --- /dev/null +++ b/pages/apps/file-manager/projects.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import AllProjects from '@/components/Apps/FileManager/AllProjects'; + +export default function Projects() { + return ( + <> + {/* Page title */} +
    +

    Projects

    +
      +
    • + Dashboard +
    • +
    • Projects
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* AllProjects */} + + + + + ); +} diff --git a/pages/apps/file-manager/recents.js b/pages/apps/file-manager/recents.js new file mode 100644 index 0000000..5d7bdfc --- /dev/null +++ b/pages/apps/file-manager/recents.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import AllRecentFiles from '@/components/Apps/FileManager/AllRecentFiles'; + +export default function Recents() { + return ( + <> + {/* Page title */} +
    +

    Recents

    +
      +
    • + Dashboard +
    • +
    • Recents
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* AllRecentFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/templates.js b/pages/apps/file-manager/templates.js new file mode 100644 index 0000000..45d2d18 --- /dev/null +++ b/pages/apps/file-manager/templates.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import TemplateFiles from '@/components/Apps/FileManager/TemplateFiles'; + +export default function Templates() { + return ( + <> + {/* Page title */} +
    +

    Templates

    +
      +
    • + Dashboard +
    • +
    • Templates
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* TemplateFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/trash.js b/pages/apps/file-manager/trash.js new file mode 100644 index 0000000..1844b34 --- /dev/null +++ b/pages/apps/file-manager/trash.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import TrashFiles from '@/components/Apps/FileManager/TrashFiles'; + +export default function Trash() { + return ( + <> + {/* Page title */} +
    +

    Trash

    +
      +
    • + Dashboard +
    • +
    • Trash
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* TrashFiles */} + + + + + ); +} diff --git a/pages/apps/to-do.js b/pages/apps/to-do.js new file mode 100644 index 0000000..1b29051 --- /dev/null +++ b/pages/apps/to-do.js @@ -0,0 +1,23 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import ToDoLists from '@/components/Apps/ToDoLists' + +export default function ToDo() { + return ( + <> + {/* Page title */} +
    +

    To Do

    +
      +
    • + Dashboard +
    • +
    • To Do
    • +
    +
    + + + + ); +} diff --git a/pages/authentication/confirm-mail.js b/pages/authentication/confirm-mail.js new file mode 100644 index 0000000..29f68c4 --- /dev/null +++ b/pages/authentication/confirm-mail.js @@ -0,0 +1,72 @@ +import { Typography } from "@mui/material"; +import { Box } from "@mui/system"; +import Button from "@mui/material/Button"; + +export default function ConfirmMail() { + return ( + <> +
    + + + + Black logo + White logo + + + + Message + + + + Success! + + + A email has been send to{" "} + + envytheme@info.com + + . Please check for an email from company and click on the included + link to reset your password. + + + + + +
    + + ); +} diff --git a/pages/authentication/forgot-password.js b/pages/authentication/forgot-password.js new file mode 100644 index 0000000..2d3c5b7 --- /dev/null +++ b/pages/authentication/forgot-password.js @@ -0,0 +1,9 @@ +import ForgotPasswordForm from '@/components/Authentication/ForgotPasswordForm'; + +export default function SignIn() { + return ( + <> + + + ); +} diff --git a/pages/authentication/lock-screen.js b/pages/authentication/lock-screen.js new file mode 100644 index 0000000..c7659ed --- /dev/null +++ b/pages/authentication/lock-screen.js @@ -0,0 +1,9 @@ +import LockScreenForm from '@/components/Authentication/LockScreenForm'; + +export default function LockScreen() { + return ( + <> + + + ); +} diff --git a/pages/authentication/logout.js b/pages/authentication/logout.js new file mode 100644 index 0000000..64e6fd9 --- /dev/null +++ b/pages/authentication/logout.js @@ -0,0 +1,74 @@ +import { Typography } from "@mui/material"; +import { Box } from "@mui/system"; +import Button from "@mui/material/Button"; + +export default function Logout() { + return ( + <> +
    + + + + Black logo + + White logo + + + + Coffee + + + + You are Logged Out + + + + Thank you for using Admash admin template + + + + + +
    + + ); +} diff --git a/pages/authentication/sign-in.js b/pages/authentication/sign-in.js new file mode 100644 index 0000000..392f744 --- /dev/null +++ b/pages/authentication/sign-in.js @@ -0,0 +1,9 @@ +import SignInForm from '@/components/Authentication/SignInForm'; + +export default function SignIn() { + return ( + <> + + + ); +} diff --git a/pages/authentication/sign-up.js b/pages/authentication/sign-up.js new file mode 100644 index 0000000..bca462f --- /dev/null +++ b/pages/authentication/sign-up.js @@ -0,0 +1,9 @@ +import SignUpForm from '@/components/Authentication/SignUpForm'; + +export default function SignUp() { + return ( + <> + + + ); +} diff --git a/pages/contact-list/contact-list2.js b/pages/contact-list/contact-list2.js new file mode 100644 index 0000000..e5644f2 --- /dev/null +++ b/pages/contact-list/contact-list2.js @@ -0,0 +1,227 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import CallIcon from '@mui/icons-material/Call'; +import MailOutlineIcon from '@mui/icons-material/MailOutline'; +import Stack from '@mui/material/Stack'; +import IconButton from '@mui/material/IconButton'; +import DeleteIcon from '@mui/icons-material/Delete'; +import EditIcon from '@mui/icons-material/Edit'; +import Tooltip from '@mui/material/Tooltip'; +import styles from '@/styles/PageTitle.module.css' +import Link from 'next/link'; + +const contactLists = [ + { + image: '/images/member1.png', + name: 'Alvarado Turner', + designation: 'React Developer', + phonNumber: '+9003526765', + email: 'alvarado@gmail.com', + }, + { + image: '/images/member2.png', + name: 'Evangelina Mcclain', + designation: 'Angular Developer', + phonNumber: '+9003526765', + email: 'evangelina@gmail.com', + }, + { + image: '/images/member3.png', + name: 'Candice Munoz', + designation: 'Vue Developer', + phonNumber: '+9003526766', + email: 'candice@gmail.com', + }, + { + image: '/images/member4.png', + name: 'Bernard Langley', + designation: 'UI/UX Designer', + phonNumber: '+9003526767', + email: 'bernard@gmail.com', + }, + { + image: '/images/member5.png', + name: 'Kristie Hall', + designation: 'Software Analyst', + phonNumber: '+9003526846', + email: 'kristie@gmail.com', + }, + { + image: '/images/member6.png', + name: 'Bolton Obrien', + designation: 'Support Engineer', + phonNumber: '+9003526865', + email: 'bolton@gmail.com', + }, + { + image: '/images/member7.png', + name: 'Dee Alvarado', + designation: 'SEO Specialist', + phonNumber: '+9003526456', + email: 'alvarado@gmail.com', + }, + { + image: '/images/member8.png', + name: 'Cervantes Kramer', + designation: 'Product Designer', + phonNumber: '+9003526456', + email: 'cervantes@gmail.com', + }, + { + image: '/images/member9.png', + name: 'Dejesus Michael', + designation: 'Content Writer', + email: 'dejesus@gmail.com', + phonNumber: '+9003526456', + }, + { + image: '/images/member10.png', + name: 'Alissa Nelson', + designation: 'Theme Developer', + email: 'alissa@gmail.com', + phonNumber: '+9003526355', + }, + { + image: '/images/member11.png', + name: 'English Haney', + designation: 'Digital Marketing Executive', + email: 'english@gmail.com', + phonNumber: '+9003526456', + }, + { + image: '/images/member12.png', + name: 'Edwards Mckenzie', + designation: 'Support Engineer', + email: 'edwards@gmail.com', + phonNumber: '+9003526456', + }, +]; + +export default function ContactList2() { + return ( + <> + {/* Page title */} +
    +

    Contact List

    +
      +
    • + Dashboard +
    • +
    • Contact List
    • +
    +
    + + + {contactLists.map((contactList) => ( + + + + + + + + + + + + + + + + + + + Member + + {contactList.name} + + + + {contactList.designation} + + + + + + + {contactList.phonNumber} + + + + + + + {contactList.email} + + + + + + ))} + + + ); +} diff --git a/pages/contact-list/index.js b/pages/contact-list/index.js new file mode 100644 index 0000000..56cc3c4 --- /dev/null +++ b/pages/contact-list/index.js @@ -0,0 +1,265 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import Button from '@mui/material/Button'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const contactLists = [ + { + image: '/images/member1.png', + name: 'Alvarado Turner', + userName: '@alvaradoTurner', + email: 'alvaradoTurner@gmail.com', + projectUrl: '#', + post: '18k', + followers: '5.21k', + followings: '32k', + }, + { + image: '/images/member2.png', + name: 'Evangelina Mcclain', + userName: '@evangelinaMcclain', + email: 'evangelinaMcclain@gmail.com', + projectUrl: '#', + post: '10k', + followers: '4.20k', + followings: '15k', + }, + { + image: '/images/member3.png', + name: 'Candice Munoz', + userName: '@candiceMunoz', + email: 'candiceMunoz@gmail.com', + projectUrl: '#', + post: '5k', + followers: '2.20k', + followings: '12k', + }, + { + image: '/images/member4.png', + name: 'Bernard Langley', + userName: '@bernardLangley', + email: 'bernardLangley@gmail.com', + projectUrl: '#', + post: '19k', + followers: '10.20k', + followings: '30k', + }, + { + image: '/images/member5.png', + name: 'Kristie Hall', + userName: '@kristieHall', + email: 'kristieHall@gmail.com', + projectUrl: '#', + post: '14k', + followers: '9.20k', + followings: '40k', + }, + { + image: '/images/member6.png', + name: 'Bolton Obrien', + userName: '@boltonObrien', + email: 'boltonObrien@gmail.com', + projectUrl: '#', + post: '20k', + followers: '19.20k', + followings: '50k', + }, + { + image: '/images/member7.png', + name: 'Dee Alvarado', + userName: '@deeAlvarado', + email: 'deeAlvarado@gmail.com', + projectUrl: '#', + post: '22k', + followers: '30.20k', + followings: '50k', + }, + { + image: '/images/member8.png', + name: 'Cervantes Kramer', + userName: '@cervantesKramer', + email: 'cervantesKramer@gmail.com', + projectUrl: '#', + post: '25k', + followers: '35.20k', + followings: '10k', + }, + { + image: '/images/member9.png', + name: 'Dejesus Michael', + userName: '@dejesusMichael', + email: 'dejesusMichael@gmail.com', + projectUrl: '#', + post: '16k', + followers: '20.20k', + followings: '5k', + }, + { + image: '/images/member10.png', + name: 'Alissa Nelson', + userName: '@alissaNelson', + email: 'alissaNelson@gmail.com', + projectUrl: '#', + post: '13k', + followers: '20.20k', + followings: '250', + }, + { + image: '/images/member11.png', + name: 'English Haney', + userName: '@englishHaney', + email: 'englishHaney@gmail.com', + projectUrl: '#', + post: '12k', + followers: '12.20k', + followings: '1205', + }, + { + image: '/images/member12.png', + name: 'Edwards Mckenzie', + userName: '@edwardsMckenzie', + email: 'edwardsMckenzie@gmail.com', + projectUrl: '#', + post: '11k', + followers: '30.20k', + followings: '5k', + }, +]; + +export default function ContactList() { + return ( + <> + {/* Page title */} +
    +

    Contact List

    +
      +
    • + Dashboard +
    • +
    • Contact List
    • +
    +
    + + + {contactLists.map((contactList) => ( + + + Member + + {contactList.name} + + + + {contactList.userName} + + + + + + + + + + + + + + + + Post + + + {contactList.post} + + + + + + Followers + + + {contactList.followers} + + + + + + Followings + + + {contactList.followings} + + + + + + ))} + + + ); +} diff --git a/pages/contact-list/members-list.js b/pages/contact-list/members-list.js new file mode 100644 index 0000000..02e7ca3 --- /dev/null +++ b/pages/contact-list/members-list.js @@ -0,0 +1,883 @@ +import * as React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Grid from "@mui/material/Grid"; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Backdrop from "@mui/material/Backdrop"; +import Button from "@mui/material/Button"; +import Fade from "@mui/material/Fade"; +import Modal from "@mui/material/Modal"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; +import Checkbox from '@mui/material/Checkbox'; +import styles from '@/styles/PageTitle.module.css' +import Link from 'next/link'; +import { styled } from '@mui/material/styles'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import CloseIcon from '@mui/icons-material/Close'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +// Create new user Modal +const BootstrapDialog = styled(Dialog)(({ theme }) => ({ + '& .MuiDialogContent-root': { + padding: theme.spacing(2), + }, + '& .MuiDialogActions-root': { + padding: theme.spacing(1), + }, +})); + +function BootstrapDialogTitle(props) { + const { children, onClose, ...other } = props; + + return ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Create new user Modal + +function MembersLists(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +MembersLists.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(name, image, userName, email, tags, projects) { + return { + name, + image, + userName, + email, + tags, + projects, + }; +} + +const rows = [ + createData( + "Evangelina Mcclain", + "/images/user1.png", + "@jstevenson5c", + "jordansteve@gmail.com", + "HTML, CSS & JS", + "165" + ), + createData( + "Candice Munoz", + "/images/user2.png", + "@candice3unoz", + "candicemunoz@gmail.com", + "React, Next.js", + "120" + ), + createData( + "Mike Mcclain", + "/images/user3.png", + "@mike4mcclain", + "mikemcclain@gmail.com", + "Angular, Gatsby", + "220" + ), + createData( + "Bernard Langley", + "/images/user4.png", + "@bernardlangley", + "bernardlangley@gmail.com", + "HTML, React & Sass", + "122" + ), + createData( + "Kristie Hall", + "/images/user5.png", + "@kristie7hall", + "kristiehall@gmail.com", + "React, Next.js & Sass", + "360" + ), + createData( + "Bolton Obrien", + "/images/user6.png", + "@bolton4obrien", + "boltonobrien@gmail.com", + "Angular, HTML & Sass", + "250" + ), + createData( + "Dee Alvarado", + "/images/user7.png", + "@dee3alvarado", + "deealvarado@gmail.com", + "React, Next.js & Sass", + "140" + ), + createData( + "Cervantes Kramer", + "/images/user8.png", + "@cervantes4kramer", + "cervantes4kramer@gmail.com", + "Gatsby, React & Sass", + "345" + ), + createData( + "Dejesus Michael", + "/images/user9.png", + "@dejesus1michael", + "dejesusmichael@gmail.com", + "React, Gatsby & Sass", + "323" + ), + createData( + "Alissa Nelson", + "/images/user10.png", + "@alissa1nelson", + "alissa1nelson@gmail.com", + "React, Gatsby & Sass", + "451" + ), + createData( + "Milton", + "/images/user11.png", + "@milton", + "milton@gmail.com", + "React, HTML & Sass", + "432" + ), + createData( + "Claude", + "/images/user12.png", + "@claude", + "claude@gmail.com", + "React, Gatsby & Sass", + "543" + ), + createData( + "Joshua", + "/images/user13.png", + "@joshua", + "joshua@gmail.com", + "React, Gatsby & Sass", + "543" + ), + createData( + "Harvey", + "/images/user14.png", + "@harvey", + "harvey@gmail.com", + "React, Gatsby & Sass", + "432" + ), + createData( + "Antonio", + "/images/user15.png", + "@antonio", + "antonio@gmail.com", + "React, Gatsby & Sass", + "765" + ), + createData( + "Julian", + "/images/user16.png", + "@julian", + "julian@gmail.com", + "React, Gatsby & Sass", + "678" + ), + createData( + "Harold", + "/images/user17.png", + "@harold", + "harold@gmail.com", + "React, Gatsby & Sass", + "165" + ), + createData( + "Kingston", + "/images/user18.png", + "@kingston", + "kingston@info.com", + "React, Gatsby & Sass", + "165" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +export default function MembersList() { + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + // Create new user modal + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + // End Add Task Modal + + return ( + <> + {/* Page title */} +
    +

    Member List

    +
      +
    • + Dashboard +
    • +
    • Member List
    • +
    +
    + + + + + Users List + + + + + + + + + + + Name + + + + Email + + + + Tags + + + + Projects + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + User + + + {row.name} + + + + {row.userName} + + + + + + + {row.email} + + + + {row.tags} + + + + {row.projects} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + {/* Create new user modal */} + + + + + Create New User + + + + + + + + + + + + + Image + + + + + + + + Name + + + + + + + + User Name + + + + + + + + Email + + + + + + + + Tags + + + + + + + + Projects + + + + + + + + + + + + + + + + + ); +} diff --git a/pages/contact-list/profile.js b/pages/contact-list/profile.js new file mode 100644 index 0000000..0439d48 --- /dev/null +++ b/pages/contact-list/profile.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import ProfileInfo from '@/components/ContactList/ProfileInfo'; +import Features from '@/components/ContactList/Features'; +import PersonalInformation from '@/components/ContactList/PersonalInformation'; +import ActivityTimeline from '@/components/ContactList/ActivityTimeline'; +import Overview from '@/components/ContactList/Overview'; +import MyTasks from '@/components/ContactList/MyTasks'; +import ImpressionGoalConversions from "@/components/Dashboard/Analytics/ImpressionGoalConversions"; +import styles from '@/styles/PageTitle.module.css' +import Link from 'next/link'; + +export default function Profile() { + return ( + <> + {/* Page title */} +
    +

    Profile

    +
      +
    • + Dashboard +
    • +
    • Profile
    • +
    +
    + + + + {/* ProfileInfo */} + + + {/* ImpressionGoalConversions */} + + + {/* Personal Information */} + + + {/* ActivityTimeline */} + + + + + {/* Features */} + + + {/* Overview */} + + + {/* MyTasks */} + + + + + ); +} diff --git a/pages/crypto.js b/pages/crypto.js new file mode 100644 index 0000000..f2a83f7 --- /dev/null +++ b/pages/crypto.js @@ -0,0 +1,65 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Link from "next/link"; +import styles from "@/styles/PageTitle.module.css"; +import Features from "@/components/Dashboard/Crypto/Features"; +import MarketGraph from "@/components/Dashboard/Crypto/MarketGraph"; +import CurrentRate from "@/components/Dashboard/Crypto/CurrentRate"; +import MyProfile from "@/components/Dashboard/Crypto/MyProfile"; +import UserActivities from "@/components/Dashboard/Crypto/UserActivities"; +import OrdersActivities from "@/components/Dashboard/Crypto/OrdersActivities"; +import MyCurrencies from "@/components/Dashboard/Crypto/MyCurrencies"; +import Trading from "@/components/Dashboard/Crypto/Trading"; + +export default function Crypto() { + return ( + <> + {/* Page title */} +
    +

    Crypto

    +
      +
    • + Dashboard +
    • +
    • Crypto
    • +
    +
    + + + + {/* Features */} + + + {/* MarketGraph */} + + + {/* CurrentRate */} + + + + + {/* MyProfile */} + + + {/* UserActivities */} + + + + + {/* OrdersActivities */} + + + + + {/* MyCurrencies */} + + + + + {/* Trading */} + + + + + ); +} diff --git a/pages/ecommerce.js b/pages/ecommerce.js new file mode 100644 index 0000000..54720af --- /dev/null +++ b/pages/ecommerce.js @@ -0,0 +1,102 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from "@/components/Dashboard/eCommerce/Features"; +import Ratings from "@/components/Dashboard/eCommerce/Ratings"; +import AudienceOverview from "@/components/Dashboard/eCommerce/AudienceOverview"; +import VisitsByDay from "@/components/Dashboard/eCommerce/VisitsByDay"; +import Impressions from "@/components/Dashboard/eCommerce/Impressions"; +import ActivityTimeline from "@/components/Dashboard/eCommerce/ActivityTimeline"; +import RevenuStatus from "@/components/Dashboard/eCommerce/RevenuStatus"; +import SalesByCountries from "@/components/Dashboard/eCommerce/SalesByCountries"; +import NewCustomers from "@/components/Dashboard/eCommerce/NewCustomers"; +import RecentOrders from "@/components/Dashboard/eCommerce/RecentOrders"; +import TeamMembersList from "@/components/Dashboard/eCommerce/TeamMembersList"; +import BestSellingProducts from "@/components/Dashboard/eCommerce/BestSellingProducts"; +import LiveVisitsOnOurSite from "@/components/Dashboard/eCommerce/LiveVisitsOnOurSite"; + +export default function eCommerce() { + return ( + <> + {/* Page title */} +
    +

    eCommerce

    +
      +
    • + Dashboard +
    • +
    • + eCommerce +
    • +
    +
    + + + + {/* Features */} + + + {/* AudienceOverview */} + + + + + {/* VisitsByDay */} + + + + + {/* Impressions */} + + + {/* ActivityTimeline */} + + + + + {/* RevenuStatus */} + + + + + + + {/* Ratings */} + + + {/* LiveVisitsOnOurSite */} + + + {/* SalesByLocations */} + + + {/* NewCustomers */} + + + + + {/* Recent Orders */} + + + + + {/* TeamMembersList */} + + + + + {/* BestSellingProducts */} + + + + + ); +} diff --git a/pages/ecommerce/cart.js b/pages/ecommerce/cart.js new file mode 100644 index 0000000..a479b5a --- /dev/null +++ b/pages/ecommerce/cart.js @@ -0,0 +1,45 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import ShoppingCart from '@/components/eCommerce/Cart/ShoppingCart'; +import OrderSummary from '@/components/eCommerce/Cart/OrderSummary'; +import HaveAPromoCode from '@/components/eCommerce/Cart/HaveAPromoCode'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const Cart = () => { + return ( + <> + {/* Page title */} +
    +

    Cart

    +
      +
    • + Dashboard +
    • +
    • Cart
    • +
    +
    + + + + {/* ShoppingCart */} + + + + + {/* OrderSummary */} + + + {/* HaveAPromoCode */} + + + + + ) +} + +export default Cart; \ No newline at end of file diff --git a/pages/ecommerce/checkout.js b/pages/ecommerce/checkout.js new file mode 100644 index 0000000..cb99b39 --- /dev/null +++ b/pages/ecommerce/checkout.js @@ -0,0 +1,41 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import ShoppingCart from '@/components/eCommerce/Checkout/ShoppingCart'; +import BillingInformation from '@/components/eCommerce/Checkout/BillingInformation'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const Checkout = () => { + return ( + <> + {/* Page title */} +
    +

    Checkout

    +
      +
    • + Dashboard +
    • +
    • Checkout
    • +
    +
    + + + + {/* ShoppingCart */} + + + + + {/* BillingInformation */} + + + + + ) +} + +export default Checkout; \ No newline at end of file diff --git a/pages/ecommerce/create-product.js b/pages/ecommerce/create-product.js new file mode 100644 index 0000000..9fba186 --- /dev/null +++ b/pages/ecommerce/create-product.js @@ -0,0 +1,384 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +import dynamic from 'next/dynamic' +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const CreateProduct = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Select dropdown + const [categorySelect, setCategorySelect] = React.useState(''); + const handleChange = (event) => { + setCategorySelect(event.target.value); + }; + + return ( + <> + {/* Page title */} +
    +

    Create Product

    +
      +
    • + Dashboard +
    • +
    • Create Product
    • +
    +
    + + + + + Create Product + + + + + + Product Name + + + + + + + Short Description + + + + + + + Category + + + + Select + + + + + + + Price + + + + + + + Discount Price + + + + + + + Stock + + + + + + + Product Description + + + + + + + + Meta Title + + + + + + + Meta Keywords + + + + + + + Meta Description + + + + + + + + Product Image + + + + + product + + + + + + + + + + + ) +} + +export default CreateProduct; \ No newline at end of file diff --git a/pages/ecommerce/customers.js b/pages/ecommerce/customers.js new file mode 100644 index 0000000..99fd6d2 --- /dev/null +++ b/pages/ecommerce/customers.js @@ -0,0 +1,25 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import CustomersLists from '@/components/eCommerce/Customers/CustomersLists'; + +const Customers = () => { + return ( + <> + {/* Page title */} +
    +

    Customers

    +
      +
    • + Dashboard +
    • +
    • Customers
    • +
    +
    + + + + ) +} + +export default Customers; \ No newline at end of file diff --git a/pages/ecommerce/order-details.js b/pages/ecommerce/order-details.js new file mode 100644 index 0000000..ff6998e --- /dev/null +++ b/pages/ecommerce/order-details.js @@ -0,0 +1,344 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import TrackOrder from "@/components/eCommerce/OrderDetails/TrackOrder"; +import OrderTable from "@/components/eCommerce/OrderDetails/TrackOrder/OrderTable"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const OrderDetails = () => { + return ( + <> + {/* Page title */} +
    +

    Order Details

    +
      +
    • + Dashboard +
    • +
    • Order Details
    • +
    +
    + + + + {/* TrackOrder */} + + + + + {/* OrderTable */} + + + + + + + + + Shipping Information + + + + Thomas Adison + + + + + + Address: + + 3559 Roosevelt Wilson Lane San Bernardino, CA 92405 + + + + + Phone: + + (123) 456-7890 + + + + + Email: + + contact@gmail.com + + + + + + + + + Billing Information + + + + Thomas Adison + + + + + + Payment Type: + + Credit Card + + + + + Provider: + + Visa ending in 2851 + + + + + Valid Date: + + April 22 2019 + + + + + CVV: + + xxx + + + + + + + + + Delivery Info + + + + UPS Delivery + + + + + + Order ID : + + xxxx235 + + + + + Payment Mode : + + COD + + + + + Email: + + info@contact.com + + + + + + + ); +}; + +export default OrderDetails; diff --git a/pages/ecommerce/orders-list.js b/pages/ecommerce/orders-list.js new file mode 100644 index 0000000..514620d --- /dev/null +++ b/pages/ecommerce/orders-list.js @@ -0,0 +1,30 @@ +import React from 'react'; +import OrdersLists from '@/components/eCommerce/OrdersList/OrdersLists'; +import Features from '@/components/eCommerce/OrdersList/Features'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const OrdersList = () => { + return ( + <> + {/* Page title */} +
    +

    Orders List

    +
      +
    • + Dashboard +
    • +
    • Orders List
    • +
    +
    + + {/* Features */} + + + {/* OrdersLists */} + + + ) +} + +export default OrdersList; \ No newline at end of file diff --git a/pages/ecommerce/product-details.js b/pages/ecommerce/product-details.js new file mode 100644 index 0000000..121a220 --- /dev/null +++ b/pages/ecommerce/product-details.js @@ -0,0 +1,23 @@ +import React from 'react'; +import ProductDetailsContent from "@/components/eCommerce/ProductDetails/ProductDetailsContent"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function ProductDetails() { + return ( + <> + {/* Page title */} +
    +

    Product Details

    +
      +
    • + Dashboard +
    • +
    • Product Details
    • +
    +
    + + + + ); +} diff --git a/pages/ecommerce/products.js b/pages/ecommerce/products.js new file mode 100644 index 0000000..8cc5f55 --- /dev/null +++ b/pages/ecommerce/products.js @@ -0,0 +1,1017 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import VisibilityIcon from '@mui/icons-material/Visibility'; +import Backdrop from "@mui/material/Backdrop"; +import Button from "@mui/material/Button"; +import Fade from "@mui/material/Fade"; +import Modal from "@mui/material/Modal"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +import dynamic from 'next/dynamic' +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +// Create Product Modal Style +const style = { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + height: "100%", + maxWidth: '700px', + width: '100%', + overflow: "auto", + bgcolor: "background.paper", + boxShadow: 24, + borderRadius: "8px", +}; + +function Product(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +Product.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + productImg, + productTitle, + category, + price, + orders, + stock, + rating, +) { + return { + productImg, + productTitle, + category, + price, + orders, + stock, + rating, + }; +} + +const rows = [ + createData( + "/images/product1.png", + "Laptop Macos Pro", + "Laptop", + "$289.50", + "46", + "12", + "5.0 (61 votes)", + ), + createData( + "/images/product2.png", + "Smart Camera XD6", + "Camera", + "$189.50", + "50", + "Out of Stock", + "5.0 (40 votes)" + ), + createData( + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Phone", + "$250.50", + "45", + "400", + "5.0 (15 votes)" + ), + createData( + "/images/product4.png", + "Jebble Smart Watch", + "Watch", + "$289.50", + "100", + "200", + "5.0 (99 votes)" + ), + createData( + "/images/product5.png", + "Admas Airpod x-Zon", + "Airpod", + "$289.50", + "120", + "Out of Stock", + "5.0 (150 votes)" + ), + createData( + "/images/product6.png", + "Smart Watch F8 Pro", + "Watch", + "$289.50", + "20", + "100", + "5.0 (5 votes)" + ), + createData( + "/images/product7.png", + "Nord Fold ZL", + "Pone", + "$289.50", + "55", + "108", + "5.0 (11 votes)" + ), + createData( + "/images/product8.png", + "Wall Clock Cimbina", + "Clock", + "$289.50", + "40", + "100", + "5.0 (4 votes)" + ), + createData( + "/images/product9.png", + "Galaxo T6 Munsun", + "Smart Phone", + "$289.50", + "50", + "130", + "5.0 (55 votes)" + ), + createData( + "/images/product1.png", + "Macbook Pro", + "Laptop", + "$1,299.00", + "120", + "1500", + "5.0 (150 votes)" + ), + createData( + "/images/product2.png", + "iphone 14 pro max", + "Phone", + "$1029", + "200", + "599", + "5.0 (200 votes)" + ), + createData( + "/images/product3.png", + "HeadPhone", + "HeadPhone", + "$100.50", + "25", + "50", + "5.0 (61 votes)" + ), + createData( + "/images/product4.png", + "Superstar shoes", + "shoes", + "$59.50", + "45", + "50", + "5.0 (45 votes)" + ), + createData( + "/images/product5.png", + "Nike shirts", + "Shirts", + "$30.50", + "32", + "40", + "5.0 (22 votes)" + ), + createData( + "/images/product6.png", + "Nike caps", + "Caps", + "$15.50", + "33", + "50", + "5.0 (3 votes)" + ), + createData( + "/images/product7.png", + "Hoodie (Blue)", + "Hoodie", + "$59.50", + "30", + "55", + "5.0 (44 votes)" + ), + createData( + "/images/product8.png", + "Wall Clock China", + "Clock", + "$100.50", + "30", + "230", + "5.0 (45 votes)" + ), + createData( + "/images/product9.png", + "Galaxo T6 Munsun 2", + "Phone", + "$220.50", + "22", + "50", + "5.0 (24 votes)" + ), +].sort((a, b) => (a.productTitle < b.productTitle ? -1 : 1)); + +export default function Products() { + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + // Create Product Modal & Form + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Select dropdown + const [categorySelect, setCategorySelect] = React.useState(''); + const handleChange = (event) => { + setCategorySelect(event.target.value); + }; + + return ( + <> + {/* Page title */} +
    +

    Products

    +
      +
    • + Dashboard +
    • +
    • Products
    • +
    +
    + + + + + Products + + + + + + + + + + + Product Name + + + + Category + + + + Price + + + + Orders + + + + Stock + + + + Rating + + + + Actions + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + Product Img + + {row.productTitle} + + + + + + {row.category} + + + + {row.price} + + + + {row.orders} + + + + {row.stock} + + + + {row.rating} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + {/* Create Product Modal */} + + + + + + Create Product + + + + + + + + + + + + + Product Name + + + + + + + Short Description + + + + + + + Category + + + + Select + + + + + + + Price + + + + + + + + Discount Price + + + + + + + + Stock + + + + + + + + Product Description + + + + + + + + Product Image + + + + + + product + + + + + + + + + + + + + + + + ); +} diff --git a/pages/ecommerce/sellers.js b/pages/ecommerce/sellers.js new file mode 100644 index 0000000..7d01631 --- /dev/null +++ b/pages/ecommerce/sellers.js @@ -0,0 +1,207 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Button from "@mui/material/Button"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; +import Tooltip from "@mui/material/Tooltip"; +import BorderColorIcon from "@mui/icons-material/BorderColor"; +import Link from "next/link"; +import styles from '@/styles/PageTitle.module.css' + +const sellerLists = [ + { + id: 1, + brandLogo: "/images/seller1.png", + brandName: "Nesta Technologies", + sellersName: "Katia Stapleton", + itemStock: "12,0558", + walletBalance: "$48,450.00", + viewUrl: "#", + }, + { + id: 2, + brandLogo: "/images/seller2.png", + brandName: "Force Medicines", + sellersName: "Wade Dave", + itemStock: "10,500", + walletBalance: "$50,500.00", + viewUrl: "#", + }, + { + id: 3, + brandLogo: "/images/seller3.png", + brandName: "Metelgo Sys", + sellersName: "Gilbert Dan", + itemStock: "8,450", + walletBalance: "$60,450.00", + viewUrl: "#", + }, + { + id: 4, + brandLogo: "/images/seller4.png", + brandName: "Digito Galatoxy", + sellersName: "Roberto Ramon", + itemStock: "15,0587", + walletBalance: "$78,450.00", + viewUrl: "#", + }, + { + id: 5, + brandLogo: "/images/seller5.png", + brandName: "Micro Technology", + sellersName: "Nathaniel Liam", + itemStock: "18,0558", + walletBalance: "$65,450.00", + viewUrl: "#", + }, + { + id: 6, + brandLogo: "/images/seller6.png", + brandName: "iTest Factory", + sellersName: "Ethan Milton", + itemStock: "19,0558", + walletBalance: "$76,450.00", + viewUrl: "#", + }, + { + id: 7, + brandLogo: "/images/seller7.png", + brandName: "Syntech Service", + sellersName: "Joshua Harvey", + itemStock: "20,0558", + walletBalance: "$56,450.00", + viewUrl: "#", + }, + { + id: 8, + brandLogo: "/images/seller8.png", + brandName: "Zotic Mentex", + sellersName: "Antonio Connor", + itemStock: "22,0558", + walletBalance: "$90,450.00", + viewUrl: "#", + }, +]; + +const Sellers = () => { + return ( + <> + {/* Page title */} +
    +

    Sellers

    +
      +
    • + Dashboard +
    • +
    • Sellers
    • +
    +
    + + + {sellerLists.map((seller) => ( + + + Seller + + + {seller.brandName} + + + {seller.sellersName} + + + + + + + + Item Stock + + + {seller.itemStock} + + + + + Wallet Balance + + + {seller.walletBalance} + + + + + {/* Edit & Delete Button */} + + + + + + + + + + + + + + + + ))} + + + ); +}; + +export default Sellers; diff --git a/pages/email/inbox.js b/pages/email/inbox.js new file mode 100644 index 0000000..0daaa48 --- /dev/null +++ b/pages/email/inbox.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Email/LeftSidebar'; +import EmailLists from '@/components/Email/EmailLists'; + +export default function Inbox() { + return ( + <> + {/* Page title */} +
    +

    Email

    +
      +
    • + Dashboard +
    • +
    • Email
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* EmailList */} + + + + + ); +} diff --git a/pages/email/read-email.js b/pages/email/read-email.js new file mode 100644 index 0000000..e98fe0a --- /dev/null +++ b/pages/email/read-email.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Email/LeftSidebar'; +import ReadEmailContent from '@/components/Email/ReadEmailContent'; + +export default function ReadEmail() { + return ( + <> + {/* Page title */} +
    +

    Read Email

    +
      +
    • + Dashboard +
    • +
    • Read Email
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* ReadEmailContent */} + + + + + ); +} diff --git a/pages/forms/advanced-elements.js b/pages/forms/advanced-elements.js new file mode 100644 index 0000000..77d799e --- /dev/null +++ b/pages/forms/advanced-elements.js @@ -0,0 +1,57 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import DefaultSelect from '@/components/Forms/AdvancedElements/DefaultSelect'; +import MultiSelect from '@/components/Forms/AdvancedElements/MultiSelect'; +import MultipleSelectChip from '@/components/Forms/AdvancedElements/MultipleSelectChip'; +import CountrySelect from '@/components/Forms/AdvancedElements/CountrySelect'; +import BasicDatePicker from '@/components/Forms/AdvancedElements/BasicDatePicker'; +import BasicTimePicker from '@/components/Forms/AdvancedElements/BasicTimePicker'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function AdvancedElements() { + return ( + <> + {/* Page title */} +
    +

    Advanced Elements

    +
      +
    • + Dashboard +
    • +
    • Advanced Elements
    • +
    +
    + + + + {/* DefaultSelect */} + + + + + {/* MultiSelect */} + + + + + {/* MultipleSelectChip */} + + + + + {/* CountrySelect */} + + + {/* BasicTimePicker */} + + + {/* BasicDatePicker */} + + + ); +} diff --git a/pages/forms/editors.js b/pages/forms/editors.js new file mode 100644 index 0000000..2e5ba3b --- /dev/null +++ b/pages/forms/editors.js @@ -0,0 +1,23 @@ +import React from 'react'; +import EditorArea from '@/components/Forms/EditorArea'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function Editors() { + return ( + <> + {/* Page title */} +
    +

    Editors

    +
      +
    • + Dashboard +
    • +
    • Editors
    • +
    +
    + + + + ); +} diff --git a/pages/forms/file-uploader.js b/pages/forms/file-uploader.js new file mode 100644 index 0000000..1693d85 --- /dev/null +++ b/pages/forms/file-uploader.js @@ -0,0 +1,23 @@ +import React from 'react'; +import UploadMultipleFiles from '@/components/Forms/FileUploader/UploadMultipleFiles'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function FileUploader() { + return ( + <> + {/* Page title */} +
    +

    File Uploader

    +
      +
    • + Dashboard +
    • +
    • File Uploader
    • +
    +
    + + + + ); +} diff --git a/pages/forms/form-layouts.js b/pages/forms/form-layouts.js new file mode 100644 index 0000000..55aad24 --- /dev/null +++ b/pages/forms/form-layouts.js @@ -0,0 +1,50 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicForm from '@/components/Forms/FormLayouts/BasicForm'; +import BasicWithIcons from '@/components/Forms/FormLayouts/BasicWithIcons'; +import SignInForm from '@/components/Forms/FormLayouts/SignInForm'; +import SignUpForm from '@/components/Forms/FormLayouts/SignUpForm'; +import CustomStyles from '@/components/Forms/FormLayouts/CustomStyles'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function FormLayouts() { + return ( + <> + {/* Page title */} +
    +

    Form Layouts

    +
      +
    • + Dashboard +
    • +
    • Form Layouts
    • +
    +
    + + + + {/* BasicForm */} + + + {/* SignIn */} + + + + + {/* BasicWithIcons */} + + + {/* SignUpForm */} + + + + + + + ); +} diff --git a/pages/help-desk.js b/pages/help-desk.js new file mode 100644 index 0000000..3ce09dc --- /dev/null +++ b/pages/help-desk.js @@ -0,0 +1,74 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Link from "next/link"; +import styles from "@/styles/PageTitle.module.css"; +import Features from "@/components/Dashboard/HelpDesk/Features"; +import TicketsStatus from "@/components/Dashboard/HelpDesk/TicketsStatus"; +import CustomerSatisfaction from "@/components/Dashboard/HelpDesk/CustomerSatisfaction"; +import SupportStatus from "@/components/Dashboard/HelpDesk/SupportStatus"; +import AverageSpeedOfAnswer from "@/components/Dashboard/HelpDesk/AverageSpeedOfAnswer"; +import AgentPerformance from "@/components/Dashboard/HelpDesk/AgentPerformance"; +import TimeToResolveComplaint from "@/components/Dashboard/HelpDesk/TimeToResolveComplaint"; +import Activity from "@/components/Dashboard/HelpDesk/Activity"; + +export default function HelpDesk() { + return ( + <> + {/* Page title */} +
    +

    Help/Support Desk

    +
      +
    • + Dashboard +
    • +
    • Help or Support Desk
    • +
    +
    + + {/* Features */} + + + + + {/* TicketsStatus */} + + + + + {/* CustomerSatisfaction */} + + + + + + + + + {/* AverageSpeedOfAnswer */} + + + {/* TimeToResolveComplaint */} + + + + + {/* SupportStatus */} + + + + + + + {/* Activity */} + + + + + {/* AgentPerformance */} + + + ); +} diff --git a/pages/index.js b/pages/index.js new file mode 100644 index 0000000..54720af --- /dev/null +++ b/pages/index.js @@ -0,0 +1,102 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from "@/components/Dashboard/eCommerce/Features"; +import Ratings from "@/components/Dashboard/eCommerce/Ratings"; +import AudienceOverview from "@/components/Dashboard/eCommerce/AudienceOverview"; +import VisitsByDay from "@/components/Dashboard/eCommerce/VisitsByDay"; +import Impressions from "@/components/Dashboard/eCommerce/Impressions"; +import ActivityTimeline from "@/components/Dashboard/eCommerce/ActivityTimeline"; +import RevenuStatus from "@/components/Dashboard/eCommerce/RevenuStatus"; +import SalesByCountries from "@/components/Dashboard/eCommerce/SalesByCountries"; +import NewCustomers from "@/components/Dashboard/eCommerce/NewCustomers"; +import RecentOrders from "@/components/Dashboard/eCommerce/RecentOrders"; +import TeamMembersList from "@/components/Dashboard/eCommerce/TeamMembersList"; +import BestSellingProducts from "@/components/Dashboard/eCommerce/BestSellingProducts"; +import LiveVisitsOnOurSite from "@/components/Dashboard/eCommerce/LiveVisitsOnOurSite"; + +export default function eCommerce() { + return ( + <> + {/* Page title */} +
    +

    eCommerce

    +
      +
    • + Dashboard +
    • +
    • + eCommerce +
    • +
    +
    + + + + {/* Features */} + + + {/* AudienceOverview */} + + + + + {/* VisitsByDay */} + + + + + {/* Impressions */} + + + {/* ActivityTimeline */} + + + + + {/* RevenuStatus */} + + + + + + + {/* Ratings */} + + + {/* LiveVisitsOnOurSite */} + + + {/* SalesByLocations */} + + + {/* NewCustomers */} + + + + + {/* Recent Orders */} + + + + + {/* TeamMembersList */} + + + + + {/* BestSellingProducts */} + + + + + ); +} diff --git a/pages/lms-courses.js b/pages/lms-courses.js new file mode 100644 index 0000000..276ee25 --- /dev/null +++ b/pages/lms-courses.js @@ -0,0 +1,87 @@ +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from '@/components/Dashboard/LMSCourses/Features'; +import YourProgress from "@/components/Dashboard/LMSCourses/YourProgress"; +import ExperienceIQ from "@/components/Dashboard/LMSCourses/ExperienceIQ"; +import HoursSpent from "@/components/Dashboard/LMSCourses/HoursSpent"; +import MyPlanning from "@/components/Dashboard/LMSCourses/MyPlanning"; +import TopInstructor from "@/components/Dashboard/LMSCourses/TopInstructor"; +import TotalWatched from "@/components/Dashboard/LMSCourses/TotalWatched"; +import CurrentCourses from "@/components/Dashboard/LMSCourses/CurrentCourses"; +import Courses from "@/components/Dashboard/LMSCourses/Courses"; +import ActiveCourse from "@/components/Dashboard/LMSCourses/ActiveCourse"; +import CourseCompletion from "@/components/Dashboard/LMSCourses/CourseCompletion"; +import Messages from "@/components/Dashboard/LMSCourses/Messages"; +import TopStudents from "@/components/Dashboard/LMSCourses/TopStudents"; + +export default function LMSCourses() { + return ( + <> + {/* Page title */} +
    +

    LMS Courses

    +
      +
    • + Dashboard +
    • +
    • + LMS Courses +
    • +
    +
    + + {/* Features */} + + + + + {/* YourProgress */} + + + + + {/* HoursSpent */} + + + {/* TopInstructor */} + + + + + {/* MyPlanning */} + + + {/* TotalWatched */} + + + + + {/* CurrentCourse */} + + + {/* Courses */} + + + + + {/* ExperienceIQ */} + + + {/* ActiveCourse */} + + + {/* CourseCompletion */} + + + {/* Messages */} + + + {/* TopStudents */} + + + + + + ); +} diff --git a/pages/notification.js b/pages/notification.js new file mode 100644 index 0000000..8a36811 --- /dev/null +++ b/pages/notification.js @@ -0,0 +1,22 @@ +import NotificationTable from '@/components/Notification/NotificationTable'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Notification() { + return ( + <> + {/* Page title */} +
    +

    Notification

    +
      +
    • + Dashboard +
    • +
    • Notification
    • +
    +
    + + + + ); +} diff --git a/pages/pages/apexcharts.js b/pages/pages/apexcharts.js new file mode 100644 index 0000000..216b059 --- /dev/null +++ b/pages/pages/apexcharts.js @@ -0,0 +1,399 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import Basic from '@/components/Pages/Charts/ApexCharts/LineCharts/Basic'; +import Stepline from '@/components/Pages/Charts/ApexCharts/LineCharts/Stepline'; +import Gradient from '@/components/Pages/Charts/ApexCharts/LineCharts/Gradient'; +import Dashed from '@/components/Pages/Charts/ApexCharts/LineCharts/Dashed'; +import BasicAreaCharts from '@/components/Pages/Charts/ApexCharts/AreaCharts/BasicAreaCharts'; +import Spline from '@/components/Pages/Charts/ApexCharts/AreaCharts/Spline'; +import DatetimeXAxis from '@/components/Pages/Charts/ApexCharts/AreaCharts/DatetimeXAxis'; +import Negative from '@/components/Pages/Charts/ApexCharts/AreaCharts/Negative'; +import BasicColumnCharts from '@/components/Pages/Charts/ApexCharts/ColumnCharts/BasicColumnCharts'; +import ColumnWithDataLabels from '@/components/Pages/Charts/ApexCharts/ColumnCharts/ColumnWithDataLabels'; +import StackedColumns from '@/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns'; +import StackedColumns100 from '@/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns100'; +import BasicBarCharts from '@/components/Pages/Charts/ApexCharts/BarCharts/BasicBarCharts'; +import Grouped from '@/components/Pages/Charts/ApexCharts/BarCharts/Grouped'; +import StackedBar from '@/components/Pages/Charts/ApexCharts/BarCharts/StackedBar'; +import StackedBars100 from '@/components/Pages/Charts/ApexCharts/BarCharts/StackedBars100'; +import LineColumn from '@/components/Pages/Charts/ApexCharts/MixedCharts/LineColumn'; +import MultipleYAxis from '@/components/Pages/Charts/ApexCharts/MixedCharts/MultipleYAxis'; +import LineArea from '@/components/Pages/Charts/ApexCharts/MixedCharts/LineArea'; +import LineColumnArea from '@/components/Pages/Charts/ApexCharts/MixedCharts/LineColumnArea'; +import BasicPolarAreaCharts from '@/components/Pages/Charts/ApexCharts/PolarAreaCharts/BasicPolarAreaCharts'; +import Monochrome from '@/components/Pages/Charts/ApexCharts/PolarAreaCharts/Monochrome'; +import BasicRadarCharts from '@/components/Pages/Charts/ApexCharts/RadarCharts/BasicRadarCharts'; +import RadarMultipleSeries from '@/components/Pages/Charts/ApexCharts/RadarCharts/RadarMultipleSeries'; +import RadarWithPolygonFill from '@/components/Pages/Charts/ApexCharts/RadarCharts/RadarWithPolygonFill'; +import BasicRadialBarCharts from '@/components/Pages/Charts/ApexCharts/RadialBarCharts/BasicRadialBarCharts'; +import MultipleRadialbars from '@/components/Pages/Charts/ApexCharts/RadialBarCharts/MultipleRadialbars'; +import CustomAngleCircle from '@/components/Pages/Charts/ApexCharts/RadialBarCharts/CustomAngleCircle'; +import SimplePieChart from '@/components/Pages/Charts/ApexCharts/PieCharts/SimplePieChart'; +import SimpleDonut from '@/components/Pages/Charts/ApexCharts/PieCharts/SimpleDonut'; +import UpdateDonut from '@/components/Pages/Charts/ApexCharts/PieCharts/UpdateDonut'; +import MonochromePie from '@/components/Pages/Charts/ApexCharts/PieCharts/MonochromePie'; +import GradientDonut from '@/components/Pages/Charts/ApexCharts/PieCharts/GradientDonut'; +import PieCharts from '@/components/Pages/Charts/ApexCharts/PieCharts/DonutWithPattern'; +import NavBar from '@/components/Pages/Charts/NavBar'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function Charts() { + return ( + <> + {/* Page title */} +
    +

    Charts

    +
      +
    • + Dashboard +
    • +
    • Charts
    • +
    +
    + + {/* Nav */} + + + {/* Line Charts */} + + Line Charts + + + + + {/* Basic */} + + + {/* Gradient */} + + + + + {/* Stepline */} + + + {/* Dashed */} + + + + + {/* Area Charts */} + + Area Charts + + + + + {/* BasicAreaCharts */} + + + {/* DatetimeXAxis */} + + + + + {/* Spline */} + + + {/* Negative */} + + + + + {/* Column Charts */} + + Column Charts + + + + + {/* BasicColumnCharts */} + + + {/* StackedColumns */} + + + + + {/* ColumnWithDataLabels */} + + + {/* StackedColumns100 */} + + + + + {/* Bar Charts */} + + Bar Charts + + + + + {/* BasicBarCharts */} + + + {/* StackedBar */} + + + + + {/* Grouped */} + + + {/* StackedBars100 */} + + + + + {/* Mixed Charts */} + + Mixed Charts + + + + + {/* LineColumn */} + + + {/* LineArea */} + + + + + {/* MultipleYAxis */} + + + {/* LineColumnArea */} + + + + + {/* Polar Area Charts */} + + Polar Area Charts + + + + + {/* BasicPolarAreaCharts */} + + + + + {/* Monochrome */} + + + + + {/* Radar Charts */} + + Radar Charts + + + + + {/* BasicRadarCharts */} + + + + + {/* RadarMultipleSeries */} + + + + + {/* RadarWithPolygonFill */} + + + + + {/* RadialBar Charts */} + + RadialBar Charts + + + + + {/* BasicRadialBarCharts */} + + + + + {/* MultipleRadialbars */} + + + + + {/* CustomAngleCircle */} + + + + + {/* PieCharts */} + + Pie Charts + + + + + {/* SimplePieChart */} + + + {/* UpdateDonut */} + + + {/* MonochromePie */} + + + + + {/* SimpleDonut */} + + + {/* GradientDonut */} + + + {/* PieCharts */} + + + + + ); +} diff --git a/pages/pages/faq.js b/pages/pages/faq.js new file mode 100644 index 0000000..9e55ab8 --- /dev/null +++ b/pages/pages/faq.js @@ -0,0 +1,32 @@ +import React from 'react'; +import BasicAccordion from '@/components/UIElements/Accordion/BasicAccordion'; +import ControlledAccordion from '@/components/UIElements/Accordion/ControlledAccordion'; +import Customization from '@/components/UIElements/Accordion/Customization'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function FAQ() { + return ( + <> + {/* Page title */} +
    +

    FAQ

    +
      +
    • + Dashboard +
    • +
    • FAQ
    • +
    +
    + + {/* BasicAccordion */} + + + {/* ControlledAccordion */} + + + {/* Customization */} + + + ); +} diff --git a/pages/pages/gallery.js b/pages/pages/gallery.js new file mode 100644 index 0000000..21f1a2b --- /dev/null +++ b/pages/pages/gallery.js @@ -0,0 +1,23 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import GalleryContent from '@/components/Pages/Gallery/GalleryContent'; + +export default function Gallery() { + return ( + <> + {/* Page title */} +
    +

    Gallery

    +
      +
    • + Dashboard +
    • +
    • Gallery
    • +
    +
    + + + + ); +} diff --git a/pages/pages/invoice-details.js b/pages/pages/invoice-details.js new file mode 100644 index 0000000..0c770ad --- /dev/null +++ b/pages/pages/invoice-details.js @@ -0,0 +1,23 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import InvoiceDetailsContent from '@/components/Pages/Invoice/InvoiceDetailsContent' + +export default function InvoiceDetails() { + return ( + <> + {/* Page title */} +
    +

    Invoice Details

    +
      +
    • + Dashboard +
    • +
    • Invoice Details
    • +
    +
    + + + + ); +} diff --git a/pages/pages/invoice.js b/pages/pages/invoice.js new file mode 100644 index 0000000..814811c --- /dev/null +++ b/pages/pages/invoice.js @@ -0,0 +1,23 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import InvoiceLists from '@/components/Pages/Invoice/InvoiceLists'; + +export default function Invoice() { + return ( + <> + {/* Page title */} +
    +

    Invoice

    +
      +
    • + Dashboard +
    • +
    • Invoice
    • +
    +
    + + + + ); +} diff --git a/pages/pages/maps.js b/pages/pages/maps.js new file mode 100644 index 0000000..fc72744 --- /dev/null +++ b/pages/pages/maps.js @@ -0,0 +1,32 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import GoogleMap from '@/components/Pages/Maps/GoogleMap'; +import BasicMarkers from '@/components/Pages/Maps/BasicMarkers'; +import EuropeMapWithGraticule from '@/components/Pages/Maps/EuropeMapWithGraticule'; + +export default function Maps() { + return ( + <> + {/* Page title */} +
    +

    Maps

    +
      +
    • + Dashboard +
    • +
    • Maps
    • +
    +
    + + {/* GoogleMap */} + + + {/* BasicMarkers */} + + + {/* EuropeMapWithGraticule */} + + + ); +} diff --git a/pages/pages/material-icons.js b/pages/pages/material-icons.js new file mode 100644 index 0000000..a3cc13e --- /dev/null +++ b/pages/pages/material-icons.js @@ -0,0 +1,558 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import AbcIcon from '@mui/icons-material/Abc'; +import AcUnitIcon from '@mui/icons-material/AcUnit'; +import AccessAlarmIcon from '@mui/icons-material/AccessAlarm'; +import AccessAlarmsIcon from '@mui/icons-material/AccessAlarms'; +import AccessTimeIcon from '@mui/icons-material/AccessTime'; +import AccessTimeFilledIcon from '@mui/icons-material/AccessTimeFilled'; +import AccessibilityIcon from '@mui/icons-material/Accessibility'; +import AccessibilityNewIcon from '@mui/icons-material/AccessibilityNew'; +import AccessibleIcon from '@mui/icons-material/Accessible'; +import AccessibleForwardIcon from '@mui/icons-material/AccessibleForward'; +import AccountBalanceIcon from '@mui/icons-material/AccountBalance'; +import AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet'; +import AccountBoxIcon from '@mui/icons-material/AccountBox'; +import AccountCircleIcon from '@mui/icons-material/AccountCircle'; +import AccountTreeIcon from '@mui/icons-material/AccountTree'; +import AdUnitsIcon from '@mui/icons-material/AdUnits'; +import AdbIcon from '@mui/icons-material/Adb'; +import AddIcon from '@mui/icons-material/Add'; +import AddAPhotoIcon from '@mui/icons-material/AddAPhoto'; +import AddAlarmIcon from '@mui/icons-material/AddAlarm'; +import AddAlertIcon from '@mui/icons-material/AddAlert'; +import AddBoxIcon from '@mui/icons-material/AddBox'; +import AddBusinessIcon from '@mui/icons-material/AddBusiness'; +import AddCardIcon from '@mui/icons-material/AddCard'; +import AddCircleIcon from '@mui/icons-material/AddCircle'; +import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'; +import AddToQueueIcon from '@mui/icons-material/AddToQueue'; +import AlbumIcon from '@mui/icons-material/Album'; +import AlignVerticalBottomIcon from '@mui/icons-material/AlignVerticalBottom'; +import AllInboxIcon from '@mui/icons-material/AllInbox'; +import Button from '@mui/material/Button'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function MaterialIcons() { + return ( + <> + {/* Page title */} +
    +

    Material Icons

    +
      +
    • + Dashboard +
    • +
    • Material Icons
    • +
    +
    + + + + Material Icons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/pages/pages/pricing.js b/pages/pages/pricing.js new file mode 100644 index 0000000..3783134 --- /dev/null +++ b/pages/pages/pricing.js @@ -0,0 +1,26 @@ +import React from 'react'; +import PricingPlanStyle1 from '@/components/Pages/Pricing/PricingPlanStyle1'; +import PricingPlanStyle2 from '@/components/Pages/Pricing/PricingPlanStyle2'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Pricing() { + return ( + <> + {/* Page title */} +
    +

    Pricing

    +
      +
    • + Dashboard +
    • +
    • Pricing
    • +
    +
    + + + + + + ); +} diff --git a/pages/pages/profile.js b/pages/pages/profile.js new file mode 100644 index 0000000..cb5a6fd --- /dev/null +++ b/pages/pages/profile.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Features from '@/components/Pages/Profile/Features'; +import PersonalInformation from '@/components/Pages/Profile/PersonalInformation'; +import ActivityTimeline from '@/components/Pages/Profile/ActivityTimeline'; +import Overview from '@/components/Pages/Profile/Overview'; +import MyTasks from '@/components/Pages/Profile/MyTasks'; +import ProfileContent from '@/components/Pages/Profile/ProfileContent'; +import ImpressionGoalConversions from "@/components/Dashboard/Analytics/ImpressionGoalConversions"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Profile() { + return ( + <> + {/* Page title */} +
    +

    Profile

    +
      +
    • + Dashboard +
    • +
    • Profile
    • +
    +
    + + + + {/* ProfileContent */} + + + {/* ImpressionGoalConversions */} + + + {/* Personal Information */} + + + {/* ActivityTimeline */} + + + + + {/* Features */} + + + {/* Overview */} + + + {/* MyTasks */} + + + + + ); +} diff --git a/pages/pages/recharts.js b/pages/pages/recharts.js new file mode 100644 index 0000000..30da6b8 --- /dev/null +++ b/pages/pages/recharts.js @@ -0,0 +1,151 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import NavBar from '@/components/Pages/Charts/NavBar'; +import SimpleLineChart from '@/components/Pages/Charts/Recharts/LineChart/SimpleLineChart'; +import VerticalLineChart from '@/components/Pages/Charts/Recharts/LineChart/VerticalLineChart'; +import SimpleAreaChart from '@/components/Pages/Charts/Recharts/AreaChart/SimpleAreaChart'; +import StackedAreaChart from '@/components/Pages/Charts/Recharts/AreaChart/StackedAreaChart'; +import TinyBarChart from '@/components/Pages/Charts/Recharts/BarChart/TinyBarChart'; +import SimpleBarChart from '@/components/Pages/Charts/Recharts/BarChart/SimpleBarChart'; +import LineBarAreaComposedChart from '@/components/Pages/Charts/Recharts/ComposedChart/LineBarAreaComposedChart'; +import SameDataComposedChart from '@/components/Pages/Charts/Recharts/ComposedChart/SameDataComposedChart'; +import SimpleScatterChart from '@/components/Pages/Charts/Recharts/ScatterChart/SimpleScatterChart'; +import ThreeDimScatterChart from '@/components/Pages/Charts/Recharts/ScatterChart/ThreeDimScatterChart'; +import TwoLevelPieChart from './../../components/Pages/Charts/Recharts/PieChart/TwoLevelPieChart'; +import TwoSimplePieChart from '@/components/Pages/Charts/Recharts/PieChart/TwoSimplePieChart'; +import SimpleRadarChart from '@/components/Pages/Charts/Recharts/RadarChart/SimpleRadarChart'; +import SpecifiedDomainRadarChart from '@/components/Pages/Charts/Recharts/RadarChart/SpecifiedDomainRadarChart'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Recharts() { + return ( + <> + {/* Page title */} +
    +

    Recharts

    +
      +
    • + Dashboard +
    • +
    • Recharts
    • +
    +
    + + {/* Nav */} + + + + + {/* SimpleLineChart */} + + + + + {/* VerticalLineChart */} + + + + + + + {/* SimpleAreaChart */} + + + + + {/* StackedAreaChart */} + + + + + + + {/* TinyBarChart */} + + + + + {/* SimpleBarChart */} + + + + + + + {/* LineBarAreaComposedChart */} + + + + + {/* SameDataComposedChart */} + + + + + + + {/* SimpleScatterChart */} + + + + + {/* ThreeDimScatterChart */} + + + + + + + {/* TwoLevelPieChart */} + + + + + {/* TwoSimplePieChart */} + + + + + + + {/* SimpleRadarChart */} + + + + + {/* SpecifiedDomainRadarChart */} + + + + + ); +} diff --git a/pages/pages/remixicon.js b/pages/pages/remixicon.js new file mode 100644 index 0000000..e09fe0e --- /dev/null +++ b/pages/pages/remixicon.js @@ -0,0 +1,528 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import Button from '@mui/material/Button'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Remixicon() { + return ( + <> + {/* Page title */} +
    +

    Remixicon

    +
      +
    • + Dashboard +
    • +
    • Remixicon
    • +
    +
    + + + + Remixicon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/pages/pages/search.js b/pages/pages/search.js new file mode 100644 index 0000000..5264c63 --- /dev/null +++ b/pages/pages/search.js @@ -0,0 +1,23 @@ +import React from 'react'; +import SearchContent from '@/components/Pages/Search/SearchContent'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Search() { + return ( + <> + {/* Page title */} +
    +

    Search

    +
      +
    • + Dashboard +
    • +
    • Search
    • +
    +
    + + + + ); +} diff --git a/pages/pages/support.js b/pages/pages/support.js new file mode 100644 index 0000000..062b6d8 --- /dev/null +++ b/pages/pages/support.js @@ -0,0 +1,24 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; +import SupportForm from '@/components/Pages/Support/SupportForm'; + +export default function Support() { + return ( + <> + {/* Page title */} +
    +

    Support

    +
      +
    • + Dashboard +
    • +
    • Support
    • +
    +
    + + {/* SupportForm */} + + + ); +} diff --git a/pages/pages/terms-conditions.js b/pages/pages/terms-conditions.js new file mode 100644 index 0000000..b3c8e1d --- /dev/null +++ b/pages/pages/terms-conditions.js @@ -0,0 +1,23 @@ +import React from 'react'; +import TermsConditionsContent from '@/components/Pages/TermsConditions/TermsConditionsContent'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function TermsConditions() { + return ( + <> + {/* Page title */} +
    +

    Terms & Conditions

    +
      +
    • + Dashboard +
    • +
    • Terms & Conditions
    • +
    +
    + + + + ); +} diff --git a/pages/pages/testimonials.js b/pages/pages/testimonials.js new file mode 100644 index 0000000..bc037ac --- /dev/null +++ b/pages/pages/testimonials.js @@ -0,0 +1,29 @@ +import React from 'react'; +import TestimonialsOne from '@/components/Pages/Testimonials/TestimonialsOne'; +import TestimonialsTwo from '@/components/Pages/Testimonials/TestimonialsTwo'; +import TestimonialsThree from '@/components/Pages/Testimonials/TestimonialsThree'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Testimonials() { + return ( + <> + {/* Page title */} +
    +

    Testimonials

    +
      +
    • + Dashboard +
    • +
    • Testimonials
    • +
    +
    + + + + + + + + ); +} diff --git a/pages/pages/timeline.js b/pages/pages/timeline.js new file mode 100644 index 0000000..e19b636 --- /dev/null +++ b/pages/pages/timeline.js @@ -0,0 +1,26 @@ +import React from 'react'; +import TimelineStyle1 from '@/components/Pages/Timeline/TimelineStyle1'; +import TimelineStyle2 from '@/components/Pages/Timeline/TimelineStyle2'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Timeline() { + return ( + <> + {/* Page title */} +
    +

    Timeline

    +
      +
    • + Dashboard +
    • +
    • Timeline
    • +
    +
    + + + + + + ); +} diff --git a/pages/project-management.js b/pages/project-management.js new file mode 100644 index 0000000..4f07b24 --- /dev/null +++ b/pages/project-management.js @@ -0,0 +1,95 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from '@/components/Dashboard/ProjectManagement/Features'; +import TaskDistribution from '@/components/Dashboard/ProjectManagement/TaskDistribution'; +import MyTasks from '@/components/Dashboard/ProjectManagement/MyTasks'; +import TotalUsers from '@/components/Dashboard/ProjectManagement/TotalUsers'; +import CompletedTasks from '@/components/Dashboard/ProjectManagement/CompletedTasks'; +import TasksPerformance from '@/components/Dashboard/ProjectManagement/TasksPerformance'; +import IssuesSummary from '@/components/Dashboard/ProjectManagement/IssuesSummary'; +import AllProjects from '@/components/Dashboard/ProjectManagement/AllProjects'; +import TeamMembers from '@/components/Dashboard/ProjectManagement/TeamMembers'; +import ActivityTimeline from '@/components/Dashboard/ProjectManagement/ActivityTimeline'; + +export default function ProjectManagement() { + return ( + <> + {/* Page title */} +
    +

    Project Management

    +
      +
    • + Dashboard +
    • +
    • + Project Management +
    • +
    +
    + + {/* Features */} + + + + + {/* TaskDistribution */} + + + + + {/* MyTasks */} + + + + + + + {/* TotalUsers */} + + + + + {/* CompletedTasks */} + + + + + {/* TasksPerformance */} + + + + + + + {/* IssuesSummary */} + + + {/* AllProjects */} + + + + + {/* TeamMembers */} + + + {/* ActivityTimeline */} + + + + + ); +} diff --git a/pages/projects/clients.js b/pages/projects/clients.js new file mode 100644 index 0000000..ea439d0 --- /dev/null +++ b/pages/projects/clients.js @@ -0,0 +1,245 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import Button from '@mui/material/Button'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +const clientsLists = [ + { + image: '/images/member1.png', + name: 'Alvarado Turner', + userName: '@alvaradoTurner', + email: 'alvaradoturner@gmail.com', + projectsUrl: '#', + location: 'New York, USA', + phone: '+1 123 456 789', + }, + { + image: '/images/member2.png', + name: 'Evangelina Mcclain', + userName: '@evangelinaMcclain', + email: 'evangelina@gmail.com', + projectsUrl: '#', + location: 'Switzerland', + phone: '+1 123 468 789', + }, + { + image: '/images/member3.png', + name: 'Candice Munoz', + userName: '@candiceMunoz', + email: 'candiceMunoz@gmail.com', + projectsUrl: '#', + location: 'Germany', + phone: '+1 123 456 842', + }, + { + image: '/images/member4.png', + name: 'Bernard Langley', + userName: '@bernardLangley', + email: 'bernardLangley@gmail.com', + projectsUrl: '#', + location: 'Canada', + phone: '+1 123 256 789', + }, + { + image: '/images/member5.png', + name: 'Kristie Hall', + userName: '@kristieHall', + email: 'kristieHall@gmail.com', + projectsUrl: '#', + location: 'United States', + phone: '+1 123 456 742', + }, + { + image: '/images/member6.png', + name: 'Bolton Obrien', + userName: '@boltonObrien', + email: 'boltonObrien@gmail.com', + projectsUrl: '#', + location: 'Sweden', + phone: '+1 123 346 789', + }, + { + image: '/images/member7.png', + name: 'Dee Alvarado', + userName: '@deeAlvarado', + email: 'deeAlvarado@gmail.com', + projectsUrl: '#', + location: 'Japan', + phone: '+1 123 456 953', + }, + { + image: '/images/member8.png', + name: 'Cervantes Kramer', + userName: '@cervantesKramer', + email: 'cervantesKramer@gmail.com', + projectsUrl: '#', + location: 'Australia', + phone: '+1 123 368 789', + }, + { + image: '/images/member9.png', + name: 'Dejesus Michael', + userName: '@dejesusMichael', + email: 'dejesusMichael@gmail.com', + projectsUrl: '#', + location: 'United Kingdom', + phone: '+1 123 456 742', + }, + { + image: '/images/member10.png', + name: 'Alissa Nelson', + userName: '@alissaNelson', + email: 'alissaNelson@gmail.com', + projectsUrl: '#', + location: 'France', + phone: '+1 123 356 789', + }, + { + image: '/images/member11.png', + name: 'English Haney', + userName: '@englishHaney', + email: 'englishHaney@gmail.com', + projectsUrl: '#', + location: 'Denmark', + phone: '+1 123 456 566', + }, + { + image: '/images/member12.png', + name: 'Edwards Mckenzie', + userName: '@edwardsMckenzie', + email: 'edwardsMckenzie@gmail.com', + projectsUrl: '#', + location: 'New Zealand', + phone: '+1 123 357 789', + }, +]; + +export default function Clients() { + return ( + <> + {/* Page title */} +
    +

    Clients

    +
      +
    • + Dashboard +
    • +
    • Clients
    • +
    +
    + + + {clientsLists.map((client) => ( + + + Member + + {client.name} + + + + {client.userName} + + + + + + + + + + + + + + + + Location + + + {client.location} + + + + + + Phone + + + {client.phone} + + + + + + ))} + + + ); +} diff --git a/pages/projects/index.js b/pages/projects/index.js new file mode 100644 index 0000000..2253a2e --- /dev/null +++ b/pages/projects/index.js @@ -0,0 +1,25 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import AllProjects from '@/components/Projects/AllProjects'; + +const Projects = () => { + return ( + <> + {/* Page title */} +
    +

    Projects

    +
      +
    • + Dashboard +
    • +
    • Projects
    • +
    +
    + + + + ) +} + +export default Projects; \ No newline at end of file diff --git a/pages/projects/kanban-board.js b/pages/projects/kanban-board.js new file mode 100644 index 0000000..5a6bea6 --- /dev/null +++ b/pages/projects/kanban-board.js @@ -0,0 +1,48 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import NewProjects from "@/components/Projects/KanbanBoard/NewProjects"; +import ToDo from "@/components/Projects/KanbanBoard/ToDo"; +import InReview from "@/components/Projects/KanbanBoard/InReview"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +const KanbanBoard = () => { + return ( + <> + {/* Page title */} +
    +

    Kanban Board

    +
      +
    • + Dashboard +
    • +
    • Kanban Board
    • +
    +
    + + + + {/* NewProjects */} + + + + + {/* ToDo */} + + + + + {/* InReview */} + + + + + ); +}; + +export default KanbanBoard; diff --git a/pages/projects/project-create.js b/pages/projects/project-create.js new file mode 100644 index 0000000..3883c97 --- /dev/null +++ b/pages/projects/project-create.js @@ -0,0 +1,286 @@ +import React from 'react'; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Grid from "@mui/material/Grid"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; +import CategoriesSelect from '@/components/Projects/ProjectCreate/CategoriesSelect'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +import dynamic from 'next/dynamic' +import MemberSelect from '@/components/Projects/ProjectCreate/MemberSelect'; +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const ProjectCreate = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Select Priority + const [priority, setPriority] = React.useState(''); + const handleChange = (event) => { + setPriority(event.target.value); + }; + + return ( + <> + {/* Page title */} +
    +

    Project Create

    +
      +
    • + Dashboard +
    • +
    • Project Create
    • +
    +
    + + + + Create Project + + + + + + + Project Name + + + + + + + Start Date + + + + + + + End Date + + + + + + + Project Description + + + + + + + + Budget + + + + + + + Priority Status + + + + Priority + + + + + + + Categories + + + {/* CategoriesSelect */} + + + + + + Members + + + {/* MemberSelect */} + + + + + + + + + + + ) +} + +export default ProjectCreate; \ No newline at end of file diff --git a/pages/projects/task.js b/pages/projects/task.js new file mode 100644 index 0000000..1a69f38 --- /dev/null +++ b/pages/projects/task.js @@ -0,0 +1,51 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import TotalUsers from "@/components/Projects/Task/TotalUsers"; +import CompletedTasks from "@/components/Projects/Task/CompletedTasks"; +import TasksPerformance from "@/components/Projects/Task/TasksPerformance"; +import MyTasks from "@/components/Projects/Task/MyTasks"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +const Task = () => { + return ( + <> + {/* Page title */} +
    +

    Task

    +
      +
    • + Dashboard +
    • +
    • Task
    • +
    +
    + + + + {/* TotalUsers */} + + + + + {/* CompletedTasks */} + + + + + {/* TasksPerformance */} + + + + + {/* MyTasks */} + + + ); +}; + +export default Task; diff --git a/pages/projects/team.js b/pages/projects/team.js new file mode 100644 index 0000000..352400a --- /dev/null +++ b/pages/projects/team.js @@ -0,0 +1,549 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; +import Card from "@mui/material/Card"; +import Grid from "@mui/material/Grid"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +import Button from '@mui/material/Button'; +import Tooltip from "@mui/material/Tooltip"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; + +const TeamMembers = [ + { + id: 1, + name: "Jason Haston", + image: "/images/member1.png", + designation: "Team Leader", + teamName: "Laravel Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member1.png", + }, + { + id: 2, + image: "/images/member2.png", + }, + { + id: 3, + image: "/images/member3.png", + }, + { + id: 4, + image: "/images/member4.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member6.png", + }, + ], + viewDetailsLink: "#", + projectName: "Laravel Project", + totalTask: "40/80", + taskProgress: "50", + }, + { + id: 2, + name: "Willie Miller", + image: "/images/member2.png", + designation: "Team Leader", + teamName: "Frontend Developer Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member2.png", + }, + { + id: 2, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 4, + image: "/images/member5.png", + }, + { + id: 5, + image: "/images/member6.png", + }, + ], + viewDetailsLink: "#", + projectName: "Web Design", + totalTask: "60/100", + taskProgress: "60", + }, + { + id: 3, + name: "Jordan Stevenson", + image: "/images/member3.png", + designation: "Team Leader", + teamName: "Web Design Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member3.png", + }, + { + id: 2, + image: "/images/member4.png", + }, + { + id: 3, + image: "/images/member5.png", + }, + { + id: 4, + image: "/images/member6.png", + }, + { + id: 5, + image: "/images/member7.png", + }, + ], + viewDetailsLink: "#", + projectName: "HTML Project", + totalTask: "70/100", + taskProgress: "70", + }, + { + id: 4, + name: "Stevenson", + image: "/images/member4.png", + designation: "Team Leader", + teamName: "ReactJS Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member5.png", + }, + { + id: 3, + image: "/images/member6.png", + }, + { + id: 4, + image: "/images/member7.png", + }, + { + id: 5, + image: "/images/member8.png", + }, + ], + viewDetailsLink: "#", + projectName: "React App", + totalTask: "80/100", + taskProgress: "80", + }, + { + id: 5, + name: "Marnie Flowers", + image: "/images/member5.png", + designation: "Team Leader", + teamName: "Angular JS Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member5.png", + }, + { + id: 2, + image: "/images/member6.png", + }, + { + id: 3, + image: "/images/member7.png", + }, + { + id: 4, + image: "/images/member8.png", + }, + { + id: 5, + image: "/images/member9.png", + }, + ], + viewDetailsLink: "#", + projectName: "Angular App", + totalTask: "90/100", + taskProgress: "90", + }, + { + id: 6, + name: "Steven Hari", + image: "/images/member6.png", + designation: "Team Leader", + teamName: "Vue.js Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member6.png", + }, + { + id: 2, + image: "/images/member7.png", + }, + { + id: 3, + image: "/images/member8.png", + }, + { + id: 4, + image: "/images/member9.png", + }, + { + id: 5, + image: "/images/member10.png", + }, + ], + viewDetailsLink: "#", + projectName: "Vue app", + totalTask: "100/100", + taskProgress: "100", + }, + { + id: 7, + name: "Keith", + image: "/images/member7.png", + designation: "Team Leader", + teamName: "Content Writing", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member7.png", + }, + { + id: 2, + image: "/images/member8.png", + }, + { + id: 3, + image: "/images/member9.png", + }, + { + id: 4, + image: "/images/member10.png", + }, + { + id: 5, + image: "/images/member11.png", + }, + ], + viewDetailsLink: "#", + projectName: "Blogging Template", + totalTask: "40/100", + taskProgress: "40", + }, + { + id: 8, + name: "Marion", + image: "/images/member8.png", + designation: "Team Leader", + teamName: "E-commerce", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member9.png", + }, + { + id: 2, + image: "/images/member1.png", + }, + { + id: 3, + image: "/images/member2.png", + }, + { + id: 4, + image: "/images/member3.png", + }, + { + id: 5, + image: "/images/member4.png", + }, + ], + viewDetailsLink: "#", + projectName: "E-commerce Template", + totalTask: "55/100", + taskProgress: "55", + }, + { + id: 9, + name: "Marshall", + image: "/images/member9.png", + designation: "Team Leader", + teamName: "App Development", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member9.png", + }, + { + id: 2, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 4, + image: "/images/member5.png", + }, + { + id: 5, + image: "/images/member6.png", + }, + ], + viewDetailsLink: "#", + projectName: "Admin Template", + totalTask: "40/100", + taskProgress: "40", + }, +] + +const Team = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + {/* Page title */} +
    +

    Team

    +
      +
    • + Dashboard +
    • +
    • Team
    • +
    +
    + + + {TeamMembers.map((member) => ( + + + + + Member + + + {member.name} + + + {member.designation} + + + + + + + + + + + + + + + + + + + + + + + {member.teamName} + + + {member.introText} + + + + + + + + {member.projectName} + + + Task: {member.totalTask} + + + + + + {member.taskProgress}% Completed + + + + + + + + + {member.teamMemberLists.map((team) => ( + + ))} + + + + + + + + + + + + + ))} + + + ); +}; + +export default Team; diff --git a/pages/projects/user.js b/pages/projects/user.js new file mode 100644 index 0000000..c59178d --- /dev/null +++ b/pages/projects/user.js @@ -0,0 +1,910 @@ +import * as React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +import Table from "@mui/material/Table"; +import TableHead from "@mui/material/TableHead"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableFooter from "@mui/material/TableFooter"; +import TablePagination from "@mui/material/TablePagination"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; +import IconButton from "@mui/material/IconButton"; +import FirstPageIcon from "@mui/icons-material/FirstPage"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import LastPageIcon from "@mui/icons-material/LastPage"; +import Grid from "@mui/material/Grid"; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import ClearIcon from "@mui/icons-material/Clear"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; +import Checkbox from '@mui/material/Checkbox'; +import { styled } from '@mui/material/styles'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import CloseIcon from '@mui/icons-material/Close'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +// Create new user Modal +const BootstrapDialog = styled(Dialog)(({ theme }) => ({ + '& .MuiDialogContent-root': { + padding: theme.spacing(2), + }, + '& .MuiDialogActions-root': { + padding: theme.spacing(1), + }, +})); + +function BootstrapDialogTitle(props) { + const { children, onClose, ...other } = props; + + return ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Create new user Modal + +function UsersList(props) { + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + const handleFirstPageButtonClick = (event) => { + onPageChange(event, 0); + }; + + const handleBackButtonClick = (event) => { + onPageChange(event, page - 1); + }; + + const handleNextButtonClick = (event) => { + onPageChange(event, page + 1); + }; + + const handleLastPageButtonClick = (event) => { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + }; + + return ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +UsersList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(name, userName, image, email, rolls, status, badgeClass, projects) { + return { + name, + userName, + image, + email, + rolls, + status, + badgeClass, + projects + }; +} + +const rows = [ + createData( + "Evangelina Mcclain", + "@jstevenson5c", + "/images/user1.png", + "jordansteve@gmail.com", + "Agent", + "Active", + "successBadge", + "165" + ), + createData( + "Candice Munoz", + "@candice3unoz", + "/images/user2.png", + "candicemunoz@gmail.com", + "Administrator", + "Active", + "successBadge", + "120" + ), + createData( + "Mike Mcclain", + "@mike4mcclain", + "/images/user3.png", + "mikemcclain@gmail.com", + "Contributor", + "Active", + "successBadge", + "220" + ), + createData( + "Bernard Langley", + "@bernardlangley", + "/images/user4.png", + "bernardlangley@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "122" + ), + createData( + "Kristie Hall", + "@kristie7hall", + "/images/user5.png", + "kristiehall@gmail.com", + "Contributor", + "Active", + "successBadge", + "360" + ), + createData( + "Bolton Obrien", + "@bolton4obrien", + "/images/user6.png", + "boltonobrien@gmail.com", + "Administrator", + "Active", + "successBadge", + "250" + ), + createData( + "Dee Alvarado", + "@dee3alvarado", + "/images/user7.png", + "deealvarado@gmail.com", + "Agent", + "Active", + "successBadge", + "140" + ), + createData( + "Cervantes Kramer", + "@cervantes4kramer", + "/images/user8.png", + "cervantes4kramer@gmail.com", + "Agent", + "Active", + "successBadge", + "345" + ), + createData( + "Dejesus Michael", + "@dejesus1michael", + "/images/user9.png", + "dejesusmichael@gmail.com", + "Agent", + "Active", + "successBadge", + "323" + ), + createData( + "Alissa Nelson", + "@alissa1nelson", + "/images/user10.png", + "alissa1nelson@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "451" + ), + createData( + "Milton", + "@milton", + "/images/user11.png", + "milton@gmail.com", + "Agent", + "Active", + "successBadge", + "432" + ), + createData( + "Claude", + "@claude", + "/images/user12.png", + "claude@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "543" + ), + createData( + "Joshua", + "@joshua", + "/images/user13.png", + "joshua@gmail.com", + "Agent", + "Active", + "successBadge", + "543" + ), + createData( + "Harvey", + "@harvey", + "/images/user14.png", + "harvey@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "432" + ), + createData( + "Antonio", + "@antonio", + "/images/user15.png", + "antonio@gmail.com", + "Agent", + "Active", + "successBadge", + "765" + ), + createData( + "Julian", + "@julian", + "/images/user16.png", + "julian@gmail.com", + "Agent", + "Active", + "successBadge", + "678" + ), + createData( + "Harold", + "@harold", + "/images/user17.png", + "harold@gmail.com", + "Agent", + "Deactive", + "dangerBadge", + "165" + ), + createData( + "Kingston", + "@kingston", + "/images/user18.png", + "kingston@info.com", + "Agent", + "Active", + "successBadge", + "165" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +export default function User() { + // Table + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + // Avoid a layout jump when reaching the last page with empty rows. + const emptyRows = + page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + // Create new user modal + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + // End Add Task Modal + + return ( + <> + {/* Page title */} +
    +

    Users

    +
      +
    • + Dashboard +
    • +
    • Users
    • +
    +
    + + + + + Users List + + + + + + + + + + + Name + + + + Email + + + + Rolls + + + + Status + + + + Projects + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + User + + + {row.name} + + + {row.userName} + + + + + + + {row.email} + + + + {row.rolls} + + + + {row.status} + + + + {row.projects} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + {/* Create new user modal */} + + + + + Create New User + + + + + + + + + + + + + Image + + + + + + + + Name + + + + + + + + User Name + + + + + + + + Email + + + + + + + + Rolls + + + + + + + + Projects + + + + + + + + + + + + + + + ); +} diff --git a/pages/saas-app.js b/pages/saas-app.js new file mode 100644 index 0000000..a905f33 --- /dev/null +++ b/pages/saas-app.js @@ -0,0 +1,97 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Link from "next/link"; +import styles from "@/styles/PageTitle.module.css"; +import Profile from "@/components/Dashboard/SaasApp/Profile"; +import IncomeStatus from "@/components/Dashboard/SaasApp/IncomeStatus"; +import TotalOrders from "@/components/Dashboard/SaasApp/TotalOrders"; +import Features from "@/components/Dashboard/SaasApp/Features"; +import RevenueSummary from "@/components/Dashboard/SaasApp/RevenueSummary"; +import SalesAnalytics from "@/components/Dashboard/SaasApp/SalesAnalytics"; +import AudienceOverview from "@/components/Dashboard/SaasApp/AudienceOverview"; +import AllProjects from "@/components/Dashboard/SaasApp/AllProjects"; +import Messages from "@/components/Dashboard/SaasApp/Messages"; +import CompletedTasks from "@/components/Dashboard/SaasApp/CompletedTasks"; +import TasksPerformance from "@/components/Dashboard/SaasApp/TasksPerformance"; +import MilestonesOverview from "@/components/Dashboard/SaasApp/MilestonesOverview"; + +export default function SaasApp() { + return ( + <> + {/* Page title */} +
    +

    SaaS App

    +
      +
    • + Dashboard +
    • +
    • SaaS App
    • +
    +
    + + + + {/* Profile */} + + + + + {/* IncomeStatus */} + + + + + {/* TotalOrders */} + + + + + {/* Features */} + + + + + {/* RevenueSummary */} + + + + + {/* SalesAnalytics */} + + + + + {/* AudienceOverview */} + + + + + {/* AllProjects */} + + + + + {/* Messages */} + + + + + + + {/* MilestonesOverview */} + + + + + {/* TasksPerformance */} + + + + + {/* TasksPerformance */} + + + + + ); +} diff --git a/pages/settings/account.js b/pages/settings/account.js new file mode 100644 index 0000000..278544e --- /dev/null +++ b/pages/settings/account.js @@ -0,0 +1,39 @@ +import Profile from "@/components/Settings/Account/Profile"; +import NavBar from "@/components/Settings/NavBar"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function Account() { + return ( + <> + + + Settings + + + {/* NavBar */} + + + {/* Profile */} + + + + ); +} diff --git a/pages/settings/privacy-policy.js b/pages/settings/privacy-policy.js new file mode 100644 index 0000000..9a2b465 --- /dev/null +++ b/pages/settings/privacy-policy.js @@ -0,0 +1,39 @@ +import NavBar from "@/components/Settings/NavBar"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PrivacyPolicyContent from "@/components/Settings/Account/PrivacyPolicyContent"; + +export default function PrivacyPolicy() { + return ( + <> + + + Privacy Policy + + + {/* NavBar */} + + + {/* PrivacyPolicyContent */} + + + + ); +} diff --git a/pages/settings/security.js b/pages/settings/security.js new file mode 100644 index 0000000..8c1d128 --- /dev/null +++ b/pages/settings/security.js @@ -0,0 +1,39 @@ +import NavBar from "@/components/Settings/NavBar"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ChangePassword from "@/components/Settings/Account/ChangePassword"; + +export default function Account() { + return ( + <> + + + Settings + + + {/* NavBar */} + + + {/* ChangePassword */} + + + + ); +} diff --git a/pages/ui-elements/accordion.js b/pages/ui-elements/accordion.js new file mode 100644 index 0000000..a9c63dd --- /dev/null +++ b/pages/ui-elements/accordion.js @@ -0,0 +1,43 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicAccordion from '@/components/UIElements/Accordion/BasicAccordion'; +import ControlledAccordion from '@/components/UIElements/Accordion/ControlledAccordion'; +import Customization from '@/components/UIElements/Accordion/Customization'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Accordion() { + return ( + <> + {/* Page title */} +
    +

    Accordion

    +
      +
    • + Dashboard +
    • +
    • Accordion
    • +
    +
    + + + + {/* BasicAccordion */} + + + {/* Customization */} + + + + + {/* ControlledAccordion */} + + + + + ); +} diff --git a/pages/ui-elements/alerts.js b/pages/ui-elements/alerts.js new file mode 100644 index 0000000..a63dea7 --- /dev/null +++ b/pages/ui-elements/alerts.js @@ -0,0 +1,63 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicAlerts from '@/components/UIElements/Alerts/BasicAlerts'; +import DescriptionAlerts from '@/components/UIElements/Alerts/DescriptionAlerts'; +import Actions from '@/components/UIElements/Alerts/Actions'; +import Transition from '@/components/UIElements/Alerts/Transition'; +import Icons from '@/components/UIElements/Alerts/Icons'; +import Variants from '@/components/UIElements/Alerts/Variants'; +import Filled from '@/components/UIElements/Alerts/Filled'; +import Color from '@/components/UIElements/Alerts/Color'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Alerts() { + return ( + <> + {/* Page title */} +
    +

    Alerts

    +
      +
    • + Dashboard +
    • +
    • Alerts
    • +
    +
    + + + + {/* BasicAlerts */} + + + {/* DescriptionAlerts */} + + + {/* Variants */} + + + + + {/* Actions */} + + + {/* Transition */} + + + {/* Icons */} + + + {/* Filled */} + + + {/* Color */} + + + + + ); +} diff --git a/pages/ui-elements/autocomplete.js b/pages/ui-elements/autocomplete.js new file mode 100644 index 0000000..e315a49 --- /dev/null +++ b/pages/ui-elements/autocomplete.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import ComboBox from '@/components/UIElements/Autocomplete/ComboBox'; +import CountrySelect from '@/components/UIElements/Autocomplete/CountrySelect'; +import CustomizedHook from '@/components/UIElements/Autocomplete/CustomizedHook'; +import LimitTags from '@/components/UIElements/Autocomplete/LimitTags'; +import CustomizeTextareaComponent from '@/components/UIElements/Autocomplete/CustomizeTextareaComponent'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Autocomplete() { + return ( + <> + {/* Page title */} +
    +

    Autocomplete

    +
      +
    • + Dashboard +
    • +
    • Autocomplete
    • +
    +
    + + + + {/* ComboBox */} + + + {/* CustomizedHook */} + + + {/* CustomizeTextareaComponent */} + + + + + {/* CountrySelect */} + + + {/* LimitTags */} + + + + + ); +} diff --git a/pages/ui-elements/avatar.js b/pages/ui-elements/avatar.js new file mode 100644 index 0000000..02aa3e4 --- /dev/null +++ b/pages/ui-elements/avatar.js @@ -0,0 +1,67 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import SingleUserExample from '@/components/UIElements/Avatar/SingleUserExample'; +import GroupUserExample from '@/components/UIElements/Avatar/GroupUserExample'; +import ImageAvatars from '@/components/UIElements/Avatar/ImageAvatars'; +import LetterAvatars from '@/components/UIElements/Avatar/LetterAvatars'; +import SizesAvatars from '@/components/UIElements/Avatar/SizesAvatars'; +import IconAvatars from '@/components/UIElements/Avatar/IconAvatars'; +import Grouped from '@/components/UIElements/Avatar/Grouped'; +import TotalAvatars from '@/components/UIElements/Avatar/TotalAvatars'; +import WithBadge from '@/components/UIElements/Avatar/WithBadge'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Avatar() { + return ( + <> + {/* Page title */} +
    +

    Avatar

    +
      +
    • + Dashboard +
    • +
    • Avatar
    • +
    +
    + + + + {/* SingleUserExample */} + + + {/* ImageAvatars */} + + + {/* SizesAvatars */} + + + {/* Grouped */} + + + {/* WithBadge */} + + + + + {/* GroupUserExample */} + + + {/* LetterAvatars */} + + + {/* IconAvatars */} + + + {/* TotalAvatars */} + + + + + ); +} diff --git a/pages/ui-elements/badge.js b/pages/ui-elements/badge.js new file mode 100644 index 0000000..2137db8 --- /dev/null +++ b/pages/ui-elements/badge.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicBadge from '@/components/UIElements/Badge/BasicBadge'; +import Dynamic from '@/components/UIElements/Badge/Dynamic'; +import MaximumValue from '@/components/UIElements/Badge/MaximumValue'; +import BadgeOverlap from '@/components/UIElements/Badge/BadgeOverlap'; +import Accessibility from '@/components/UIElements/Badge/Accessibility'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Badge() { + return ( + <> + {/* Page title */} +
    +

    Badge

    +
      +
    • + Dashboard +
    • +
    • Badge
    • +
    +
    + + + + {/* BasicBadge */} + + + {/* MaximumValue */} + + + {/* BadgeOverlap */} + + + + + {/* Dynamic */} + + + {/* Accessibility */} + + + + + ); +} diff --git a/pages/ui-elements/buttons.js b/pages/ui-elements/buttons.js new file mode 100644 index 0000000..b35c35c --- /dev/null +++ b/pages/ui-elements/buttons.js @@ -0,0 +1,71 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import DefaultButtons from '@/components/UIElements/Buttons/DefaultButtons'; +import OutlineButtons from '@/components/UIElements/Buttons/OutlineButtons'; +import SoftButtons from '@/components/UIElements/Buttons/SoftButtons'; +import ButtonsWithIcon from '@/components/UIElements/Buttons/ButtonsWithIcon'; +import RoundedButtons from '@/components/UIElements/Buttons/RoundedButtons'; +import OutlineRoundedButtons from '@/components/UIElements/Buttons/OutlineRoundedButtons'; +import SizesButtons from '@/components/UIElements/Buttons/SizesButtons'; +import Loading from '@/components/UIElements/Buttons/Loading'; +import BlockButtons from '@/components/UIElements/Buttons/BlockButtons'; +import BasicFAB from '@/components/UIElements/Buttons/BasicFAB'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Buttons() { + return ( + <> + {/* Page title */} +
    +

    Buttons

    +
      +
    • + Dashboard +
    • +
    • Buttons
    • +
    +
    + + + + {/* DefaultButtons */} + + + {/* SoftButtons */} + + + {/* RoundedButtons */} + + + {/* SizesButtons */} + + + {/* BlockButtons */} + + + + + {/* OutlineButtons */} + + + {/* ButtonsWithIcon */} + + + {/* OutlineRoundedButtons */} + + + {/* BasicFAB */} + + + {/* Loading */} + + + + + ); +} diff --git a/pages/ui-elements/cards.js b/pages/ui-elements/cards.js new file mode 100644 index 0000000..d770e2c --- /dev/null +++ b/pages/ui-elements/cards.js @@ -0,0 +1,975 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import { Box } from "@mui/material"; +import Button from '@mui/material/Button'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Link from 'next/link'; +import styles from '@/components/UIElements/Cards/Cards.module.css' +import BasicCard from '@/components/UIElements/Cards/BasicCard'; +import ComplexInteraction from '@/components/UIElements/Cards/ComplexInteraction'; +import Media from '@/components/UIElements/Cards/Media'; +import UIControls from '@/components/UIElements/Cards/UIControls'; + +export default function Cards() { + return ( + <> + + + {/* BasicCard */} + + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} + + + + + + + + + + card + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + + + {/* ComplexInteraction */} + + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} +
    + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + +
    + {/* End Card */} + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} +
    + + + + {/* Media */} + + + {/* Start Card */} + + + + + + + + + + card + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} +
    + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + +
    + {/* End Card */} +
    + + + {/* UIControls */} + + + {/* Start Card */} + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} +
    + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + +
    + {/* End Card */} + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} +
    +
    + + ); +} diff --git a/pages/ui-elements/checkbox.js b/pages/ui-elements/checkbox.js new file mode 100644 index 0000000..7927618 --- /dev/null +++ b/pages/ui-elements/checkbox.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Checkbox/Basic'; +import Label from '@/components/UIElements/Checkbox/Label'; +import Size from '@/components/UIElements/Checkbox/Size'; +import Color from '@/components/UIElements/Checkbox/Color'; +import Icon from '@/components/UIElements/Checkbox/Icon'; +import Controlled from '@/components/UIElements/Checkbox/Controlled'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Checkbox() { + return ( + <> + {/* Page title */} +
    +

    Checkbox

    +
      +
    • + Dashboard +
    • +
    • Checkbox
    • +
    +
    + + + + {/* Basic */} + + + {/* Size */} + + + {/* Icon */} + + + + + {/* Label */} + + + + ); +} diff --git a/pages/ui-elements/chip.js b/pages/ui-elements/chip.js new file mode 100644 index 0000000..39b6fad --- /dev/null +++ b/pages/ui-elements/chip.js @@ -0,0 +1,76 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Chip/Basic'; +import ChipActions from '@/components/UIElements/Chip/ChipActions'; +import Deletable from '@/components/UIElements/Chip/Deletable'; +import ClickableAndDeletable from '@/components/UIElements/Chip/ClickableAndDeletable'; +import ClickableLink from '@/components/UIElements/Chip/ClickableLink'; +import CustomDeleteIcon from '@/components/UIElements/Chip/CustomDeleteIcon'; +import ChipAdornments from '@/components/UIElements/Chip/ChipAdornments'; +import IconChip from '@/components/UIElements/Chip/IconChip'; +import ColorChip from '@/components/UIElements/Chip/ColorChip'; +import SizesChip from '@/components/UIElements/Chip/SizesChip'; +import ChipArray from '@/components/UIElements/Chip/ChipArray'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Chip() { + return ( + <> + {/* Page title */} +
    +

    Chip

    +
      +
    • + Dashboard +
    • +
    • Chip
    • +
    +
    + + + + {/* Basic */} + + + {/* Deletable */} + + + {/* ClickableLink */} + + + {/* ChipAdornments */} + + + {/* ColorChip */} + + + + + + {/* ChipActions */} + + + {/* ClickableAndDeletable */} + + + {/* CustomDeleteIcon */} + + + {/* IconChip */} + + + {/* SizesChip */} + + + {/* ChipArray */} + + + + + ); +} diff --git a/pages/ui-elements/image-list.js b/pages/ui-elements/image-list.js new file mode 100644 index 0000000..c7d3546 --- /dev/null +++ b/pages/ui-elements/image-list.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import StandardImageList from '@/components/UIElements/ImageList/StandardImageList'; +import QuiltedImageList from '@/components/UIElements/ImageList/QuiltedImageList'; +import WovenImageList from '@/components/UIElements/ImageList/WovenImageList'; +import MasonryImageList from '@/components/UIElements/ImageList/MasonryImageList'; +import ImageListWithTitleBars from '@/components/UIElements/ImageList/ImageListWithTitleBars'; +import TitleBarBelowImageStandard from '@/components/UIElements/ImageList/TitleBarBelowImageStandard'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function ImageList() { + return ( + <> + {/* Page title */} +
    +

    Image List

    +
      +
    • + Dashboard +
    • +
    • Image List
    • +
    +
    + + + + {/* StandardImageList */} + + + {/* WovenImageList */} + + + {/* ImageListWithTitleBars */} + + + + + {/* QuiltedImageList */} + + + {/* MasonryImageList */} + + + {/* TitleBarBelowImageStandard */} + + + + + ); +} diff --git a/pages/ui-elements/list.js b/pages/ui-elements/list.js new file mode 100644 index 0000000..7fa113a --- /dev/null +++ b/pages/ui-elements/list.js @@ -0,0 +1,47 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicList from '@/components/UIElements/List/BasicList'; +import NestedList from '@/components/UIElements/List/NestedList'; +import FolderList from '@/components/UIElements/List/FolderList'; +import ListControls from '@/components/UIElements/List/ListControls'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function List() { + return ( + <> + {/* Page title */} +
    +

    List

    +
      +
    • + Dashboard +
    • +
    • List
    • +
    +
    + + + + {/* BasicList */} + + + {/* FolderList */} + + + + + {/* NestedList */} + + + {/* ListControls */} + + + + + ); +} diff --git a/pages/ui-elements/modal.js b/pages/ui-elements/modal.js new file mode 100644 index 0000000..b79cc3d --- /dev/null +++ b/pages/ui-elements/modal.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicModal from '@/components/UIElements/Modal/BasicModal'; +import NestedModal from '@/components/UIElements/Modal/NestedModal'; +import Transitions from '@/components/UIElements/Modal/Transitions'; +import TransitionsDialog from '@/components/UIElements/Modal/TransitionsDialog'; +import CustomizationDialog from '@/components/UIElements/Modal/CustomizationDialog'; +import FullScreenDialogs from '@/components/UIElements/Modal/FullScreenDialogs'; +import ScrollingLongContent from '@/components/UIElements/Modal/ScrollingLongContent'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Modal() { + return ( + <> + {/* Page title */} +
    +

    Modal

    +
      +
    • + Dashboard +
    • +
    • Modal
    • +
    +
    + + + + {/* BasicModal */} + + + {/* Transitions */} + + + {/* TransitionsDialog */} + + + {/* FullScreenDialogs */} + + + + + {/* NestedModal */} + + + {/* CustomizationDialog */} + + + {/* ScrollingLongContent */} + + + + + ); +} diff --git a/pages/ui-elements/pagination.js b/pages/ui-elements/pagination.js new file mode 100644 index 0000000..fa63a54 --- /dev/null +++ b/pages/ui-elements/pagination.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicPagination from '@/components/UIElements/Pagination/BasicPagination'; +import OutlinedPagination from '@/components/UIElements/Pagination/OutlinedPagination'; +import RoundedPagination from '@/components/UIElements/Pagination/RoundedPagination'; +import PaginationSize from '@/components/UIElements/Pagination/PaginationSize'; +import CustomIcons from '@/components/UIElements/Pagination/CustomIcons'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Pagination() { + return ( + <> + {/* Page title */} +
    +

    Pagination

    +
      +
    • + Dashboard +
    • +
    • Pagination
    • +
    +
    + + + + {/* BasicPagination */} + + + {/* RoundedPagination */} + + + {/* CustomIcons */} + + + + + {/* OutlinedPagination */} + + + {/* PaginationSize */} + + + + + ); +} diff --git a/pages/ui-elements/progress.js b/pages/ui-elements/progress.js new file mode 100644 index 0000000..02a1da6 --- /dev/null +++ b/pages/ui-elements/progress.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Circular from '@/components/UIElements/Progress/Circular'; +import CircularDeterminate from '@/components/UIElements/Progress/CircularDeterminate'; +import InteractiveIntegration from '@/components/UIElements/Progress/InteractiveIntegration'; +import CircularWithLabel from '@/components/UIElements/Progress/CircularWithLabel'; +import LinearIndeterminate from '@/components/UIElements/Progress/LinearIndeterminate'; +import Customization from '@/components/UIElements/Progress/Customization'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Progress() { + return ( + <> + {/* Page title */} +
    +

    Progress

    +
      +
    • + Dashboard +
    • +
    • Progress
    • +
    +
    + + + + {/* Circular */} + + + {/* InteractiveIntegration */} + + + {/* LinearIndeterminate */} + + + + + {/* CircularDeterminate */} + + + {/* CircularWithLabel */} + + + {/* Customization */} + + + + + ); +} diff --git a/pages/ui-elements/radio.js b/pages/ui-elements/radio.js new file mode 100644 index 0000000..3084379 --- /dev/null +++ b/pages/ui-elements/radio.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Group from '@/components/UIElements/Radio/Group'; +import Direction from '@/components/UIElements/Radio/Direction'; +import Controlled from '@/components/UIElements/Radio/Controlled'; +import Size from '@/components/UIElements/Radio/Size'; +import Color from '@/components/UIElements/Radio/Color'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Radio() { + return ( + <> + {/* Page title */} +
    +

    Radio

    +
      +
    • + Dashboard +
    • +
    • Radio
    • +
    +
    + + + + {/* Group */} + + + {/* Controlled */} + + + + + {/* Direction */} + + + {/* Size */} + + + {/* Color */} + + + + + ); +} diff --git a/pages/ui-elements/rating.js b/pages/ui-elements/rating.js new file mode 100644 index 0000000..1c1f134 --- /dev/null +++ b/pages/ui-elements/rating.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Rating/Basic'; +import RatingPrecision from '@/components/UIElements/Rating/RatingPrecision'; +import HoverFeedback from '@/components/UIElements/Rating/HoverFeedback'; +import Sizes from '@/components/UIElements/Rating/Sizes'; +import Customization from '@/components/UIElements/Rating/Customization'; +import RadioGroup from '@/components/UIElements/Rating/RadioGroup'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Rating() { + return ( + <> + {/* Page title */} +
    +

    Rating

    +
      +
    • + Dashboard +
    • +
    • Rating
    • +
    +
    + + + + {/* Basic */} + + + {/* Customization */} + + + + + {/* RatingPrecision */} + + + {/* HoverFeedback */} + + + {/* Sizes */} + + + {/* RadioGroup */} + + + + + ); +} diff --git a/pages/ui-elements/select.js b/pages/ui-elements/select.js new file mode 100644 index 0000000..b0e4076 --- /dev/null +++ b/pages/ui-elements/select.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Select/Basic'; +import AutoWidth from '@/components/UIElements/Select/AutoWidth'; +import Customization from '@/components/UIElements/Select/Customization'; +import MultipleSelectDefault from '@/components/UIElements/Select/MultipleSelectDefault'; +import MultipleSelectCheckmarks from '@/components/UIElements/Select/MultipleSelectCheckmarks'; +import MultipleSelectChip from '@/components/UIElements/Select/MultipleSelectChip'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Select() { + return ( + <> + {/* Page title */} +
    +

    Select

    +
      +
    • + Dashboard +
    • +
    • Select
    • +
    +
    + + + + {/* Basic */} + + + {/* Customization */} + + + {/* MultipleSelectDefault */} + + + + + {/* AutoWidth */} + + + {/* MultipleSelectCheckmarks */} + + + {/* MultipleSelectChip */} + + + + + ); +} diff --git a/pages/ui-elements/skeleton.js b/pages/ui-elements/skeleton.js new file mode 100644 index 0000000..cf3eb51 --- /dev/null +++ b/pages/ui-elements/skeleton.js @@ -0,0 +1,47 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Variants from '@/components/UIElements/Skeleton/Variants'; +import Animations from '@/components/UIElements/Skeleton/Animations'; +import PulsateExample from '@/components/UIElements/Skeleton/PulsateExample'; +import WaveExample from '@/components/UIElements/Skeleton/WaveExample'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Skeleton() { + return ( + <> + {/* Page title */} +
    +

    Skeleton

    +
      +
    • + Dashboard +
    • +
    • Skeleton
    • +
    +
    + + + + {/* Variants */} + + + {/* Animations */} + + + {/* WaveExample */} + + + + + {/* PulsateExample */} + + + + + ); +} diff --git a/pages/ui-elements/slider.js b/pages/ui-elements/slider.js new file mode 100644 index 0000000..198159a --- /dev/null +++ b/pages/ui-elements/slider.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Continuous from '@/components/UIElements/Slider/Continuous'; +import Sizes from '@/components/UIElements/Slider/Sizes'; +import Discrete from '@/components/UIElements/Slider/Discrete'; +import SmallSteps from '@/components/UIElements/Slider/SmallSteps'; +import CustomMarks from '@/components/UIElements/Slider/CustomMarks'; +import RestrictedValues from '@/components/UIElements/Slider/RestrictedValues'; +import LabelAlwaysVisible from '@/components/UIElements/Slider/LabelAlwaysVisible'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Slider() { + return ( + <> + {/* Page title */} +
    +

    Slider

    +
      +
    • + Dashboard +
    • +
    • Slider
    • +
    +
    + + + + {/* Continuous */} + + + {/* Discrete */} + + + {/* CustomMarks */} + + + {/* LabelAlwaysVisible */} + + + + + {/* Sizes */} + + + {/* SmallSteps */} + + + {/* RestrictedValues */} + + + + + ); +} diff --git a/pages/ui-elements/snackbar.js b/pages/ui-elements/snackbar.js new file mode 100644 index 0000000..0fe38e6 --- /dev/null +++ b/pages/ui-elements/snackbar.js @@ -0,0 +1,47 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import SimpleSnackbars from '@/components/UIElements/Snackbar/SimpleSnackbars'; +import Customization from '@/components/UIElements/Snackbar/Customization'; +import PositionedSnackbars from '@/components/UIElements/Snackbar/PositionedSnackbars'; +import ComplementaryProjects from '@/components/UIElements/Snackbar/ComplementaryProjects'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Snackbar() { + return ( + <> + {/* Page title */} +
    +

    Snackbar

    +
      +
    • + Dashboard +
    • +
    • Snackbar
    • +
    +
    + + + + {/* SimpleSnackbars */} + + + {/* PositionedSnackbars */} + + + {/* ComplementaryProjects */} + + + + + {/* Customization */} + + + + + ); +} diff --git a/pages/ui-elements/stepper.js b/pages/ui-elements/stepper.js new file mode 100644 index 0000000..c4421a5 --- /dev/null +++ b/pages/ui-elements/stepper.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import HorizontalStepper from '@/components/UIElements/Stepper/HorizontalStepper'; +import NonLinear from '@/components/UIElements/Stepper/NonLinear'; +import AlternativeLabel from '@/components/UIElements/Stepper/AlternativeLabel'; +import ErrorStep from '@/components/UIElements/Stepper/ErrorStep'; +import CustomizedHorizontalStepper from '@/components/UIElements/Stepper/CustomizedHorizontalStepper'; +import VerticalStepper from '@/components/UIElements/Stepper/VerticalStepper'; +import MobileStepperText from '@/components/UIElements/Stepper/MobileStepperText'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Stepper() { + return ( + <> + {/* Page title */} +
    +

    Stepper

    +
      +
    • + Dashboard +
    • +
    • Stepper
    • +
    +
    + + + + {/* HorizontalStepper */} + + + {/* AlternativeLabel */} + + + {/* CustomizedHorizontalStepper */} + + + {/* MobileStepper */} + + + + + {/* NonLinear */} + + + {/* ErrorStep */} + + + {/* VerticalStepper */} + + + + + ); +} diff --git a/pages/ui-elements/swiper-slider.js b/pages/ui-elements/swiper-slider.js new file mode 100644 index 0000000..8d95b4d --- /dev/null +++ b/pages/ui-elements/swiper-slider.js @@ -0,0 +1,63 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Default from '@/components/UIElements/SwiperSlider/Default'; +import NavigationSlider from '@/components/UIElements/SwiperSlider/NavigationSlider'; +import PaginationSlider from '@/components/UIElements/SwiperSlider/PaginationSlider'; +import PaginationDynamic from '@/components/UIElements/SwiperSlider/PaginationDynamic'; +import PaginationProgress from '@/components/UIElements/SwiperSlider/PaginationProgress'; +import AutoplaySlider from '@/components/UIElements/SwiperSlider/AutoplaySlider'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function SwiperSlider() { + return ( + <> + {/* Page title */} +
    +

    Swiper Slider

    +
      +
    • + Dashboard +
    • +
    • Swiper Slider
    • +
    +
    + + + + {/* Default */} + + + + + {/* PaginationDynamic */} + + + + + {/* NavigationSlider */} + + + + + {/* PaginationProgress */} + + + + + {/* PaginationSlider */} + + + + + {/* AutoplaySlider */} + + + + + ); +} diff --git a/pages/ui-elements/switch.js b/pages/ui-elements/switch.js new file mode 100644 index 0000000..3e89a6c --- /dev/null +++ b/pages/ui-elements/switch.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Switch/Basic'; +import Label from '@/components/UIElements/Switch/Label'; +import Size from '@/components/UIElements/Switch/Size'; +import Color from '@/components/UIElements/Switch/Color'; +import Controlled from '@/components/UIElements/Switch/Controlled'; +import SwitchesWithFormGroup from '@/components/UIElements/Switch/SwitchesWithFormGroup'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Switch() { + return ( + <> + {/* Page title */} +
    +

    Switch

    +
      +
    • + Dashboard +
    • +
    • Switch
    • +
    +
    + + + + {/* Basic */} + + + {/* Size */} + + + {/* SwitchesWithFormGroup */} + + + + + {/* Label */} + + + + ); +} diff --git a/pages/ui-elements/table.js b/pages/ui-elements/table.js new file mode 100644 index 0000000..30e145d --- /dev/null +++ b/pages/ui-elements/table.js @@ -0,0 +1,61 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicTable from '@/components/UIElements/Table/BasicTable'; +import RecentOrders from "@/components/Dashboard/eCommerce/RecentOrders"; +import TeamMembersList from "@/components/Dashboard/eCommerce/TeamMembersList"; +import BrowserUsedTrafficReports from "@/components/Dashboard/Analytics/BrowserUsedTrafficReports"; +import MyTasks from '@/components/Dashboard/ProjectManagement/MyTasks'; +import AllProjects from '@/components/Dashboard/ProjectManagement/AllProjects'; +import DataTable from '@/components/UIElements/Table/DataTable'; +import DenseTable from '@/components/UIElements/Table/DenseTable'; +import SortingSelectingTable from '@/components/UIElements/Table/SortingSelectingTable'; +import CustomizationTable from '@/components/UIElements/Table/CustomizationTable'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Table() { + return ( + <> + {/* Page title */} +
    +

    Table

    +
      +
    • + Dashboard +
    • +
    • Table
    • +
    +
    + + {/* BasicTable */} + + + {/* RecentOrders */} + + + {/* TeamMembersList */} + + + {/* BrowserUsedTrafficReports */} + + + {/* MyTasks */} + + + {/* AllProjects */} + + + {/* DataTable */} + + + {/* DenseTable */} + + + {/* SortingSelectingTable */} + + + {/* CustomizationTable */} + + + ); +} diff --git a/pages/ui-elements/tabs.js b/pages/ui-elements/tabs.js new file mode 100644 index 0000000..79c1737 --- /dev/null +++ b/pages/ui-elements/tabs.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicTabs from '@/components/UIElements/Tabs/BasicTabs'; +import ExperimentalAPI from '@/components/UIElements/Tabs/ExperimentalAPI'; +import VerticalTabs from '@/components/UIElements/Tabs/VerticalTabs'; +import IconTabs from '@/components/UIElements/Tabs/IconTabs'; +import IconPosition from '@/components/UIElements/Tabs/IconPosition'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Tabs() { + return ( + <> + {/* Page title */} +
    +

    Tabs

    +
      +
    • + Dashboard +
    • +
    • Tabs
    • +
    +
    + + + + {/* BasicTabs */} + + + {/* FixedTabs */} + + + + + {/* ExperimentalAPI */} + + + {/* IconTabs */} + + + {/* IconPosition */} + + + + + ); +} diff --git a/pages/ui-elements/tooltip.js b/pages/ui-elements/tooltip.js new file mode 100644 index 0000000..a87421d --- /dev/null +++ b/pages/ui-elements/tooltip.js @@ -0,0 +1,28 @@ +import React from 'react'; +import BasicTooltip from '@/components/UIElements/Tooltip/BasicTooltip'; +import PositionedTooltips from '@/components/UIElements/Tooltip/PositionedTooltips'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Tooltip() { + return ( + <> + {/* Page title */} +
    +

    Tooltip

    +
      +
    • + Dashboard +
    • +
    • Tooltip
    • +
    +
    + + {/* BasicTooltip */} + + + {/* PositionedTooltips */} + + + ); +} diff --git a/pages/ui-elements/transitions.js b/pages/ui-elements/transitions.js new file mode 100644 index 0000000..9b9cf60 --- /dev/null +++ b/pages/ui-elements/transitions.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import CollapseTransitions from '@/components/UIElements/Transitions/CollapseTransitions'; +import FadeTransitions from '@/components/UIElements/Transitions/FadeTransitions'; +import GrowTransitions from '@/components/UIElements/Transitions/GrowTransitions'; +import SlideTransitions from '@/components/UIElements/Transitions/SlideTransitions'; +import SlideRelativeToAContainer from '@/components/UIElements/Transitions/SlideRelativeToAContainer'; +import ZoomTransitions from '@/components/UIElements/Transitions/ZoomTransitions'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Transitions() { + return ( + <> + {/* Page title */} +
    +

    Transitions

    +
      +
    • + Dashboard +
    • +
    • Transitions
    • +
    +
    + + + + {/* CollapseTransitions */} + + + {/* SlideTransitions */} + + + {/* SlideRelativeToAContainer */} + + + + + {/* FadeTransitions */} + + + {/* GrowTransitions */} + + + {/* ZoomTransitions */} + + + + + ); +} diff --git a/public/fonts/remixicon.eot b/public/fonts/remixicon.eot new file mode 100644 index 0000000000000000000000000000000000000000..40629af2b93f9f3e977246ae380ad89f35362313 GIT binary patch literal 403228 zcmeF)d(@U=7dHBN?$4AYA%r4?C`lzzl7v#)Bb2siMQ(yevvTMrqnPd3wM zyLRl-pi%4Bd)CxnPu5>|?>nT=@Z%1D=?{^*V?@SIA2|5x0c*b+y+&mDLh&Br}%XXCNdh10FnlX4--##@?{${qw+-myk zSws4a8eZvjc~@W8b4u-@eTMWuf5N=?B}~=V-4VlwjTpJ9=kt$CnASpMS|il%7wJ3o zKX+`~vCS{3*bSceAOGa}70>AVI)60x-3xbX@w-&!C%)R!?Kiv$KX+`?6_!*ypLJO1 zh?XFtpMFJlulN-Pxr;tTc2xYj;&uIXLpe!oo3`z{O4Y%AMh=yI#s6=w|L@0U@WliB zNY+=ezR~yLRin=siU0Fi|CE_3K@;MZb9@QeWx!VfLuT@2phcMW4m@Wa{fr{nm{>?|1*U;yoVEmw&fI zzlT#8{HOk!-=wknUau=gN&2mtO8U9VQbl&vuSxAD)%1Hj)%CH5)Q~;(Yf^hlP1#4k zt+SuhlKtfXIZ$d#9XUu2mb!9?94d!NJvm&CkR!E%qx36O4WywQqhF>vRvPQqshUVr zX(q=@b2&j;$cg$LpqA1~PL|ekinNharLCMM?c{VhL(Y`;(m~FWj?zia)~{=Ik*?BB zzogYeddfL+uAC>mEmbl zMK;Ky1N0=i`eRGsK+B7f?%`v8tIo32b$C)OkscB}8H_gonriDIEG$)ysrjUrPjikr*PLg1ne)vB z=0elk^f4EizNVk)Zw8owW{|nqTw*RYgUt{#)C@Dj&1L$yTpuIMNOOg`(p+UmnXAoc zbB!5e#+qx*b!MEo-rQhrG~>+#bCa29CYhVfE#_7;+1zHPnA`O+)!bq3G}Fv z++${#ndV+|pP6OuHxKCJL4C~D#~d@)JY?pXhs}KRh*@ABHIM1zakJ1oVV*QknMLMl z^Ne}cEH=-X=gkXdiFwhyWL`E)%`4_r^O{*^UN>);H_dYMmU-K}V^)}V&3op3v(kKE zJ~SVhRpw*!iTTv5HlLZ#%@<~k`Ojev+eBZ_6&QbZEri+vusD($)0UH+b*`N?Pj~%9=4}F$DV7?v%T#3_5ypM z?QQ$mi)>%p&-S+i>_9unUTiP1m)gO0h#hK&+2Qswd$}E9N7^gwmG&w-%3f_p+iUC? zJJw!nue0Oq_4WpPqaAN2*qiJ`JIUT`Z?U)9$@Vro#olhG+B@u>cAA}T@3ME>d+ZE5 z)81?Ev$O2|_5u5#oo(mXx%MGD&pvGD+ehpI`>1`)K5iGp-CTFq!}WCMxO3fku9rLCUEnTsyi~oPq{_zY4?nK)-86=x#!&r zZi#!*z2shYOWiB(Rri`(=3aMixHsK$_m+Fxz2jE6cinsLeYetm;68L8xmE6C_lf(| zt#+Te&)pYpjr-Dl<-T@n-8b%A_nlkkzIQ*kAKiNQll$5I;x@QnUEwymO>VQ>;!0ep zD|6-UH@DUO?*4Fpx^3<+_qY4UZFm2=|J)A!+O6@{JMVq)(I=mMCBKWW?5p@)eO14k zujY66)%_m6hTqfg<@feA{XTwQzn`z=_xA_*1AT2@#~OANKS8BYuH@)IX+=$MvyLA5ZAxNqs!!7x}0CGyYk>*gxl=_b=$T ztY7pm`Ir4t|B8Rrzvh?u*Zmv*O~2f~<=^)2_!a(L|DJ!}uk;`I5B*1emH*g(;y?AP z{b&Aj|Ak-Uzw}@Eul-v8jsMnv=hyk~{SW>}zuy1kfA+ul4gObO_>F#(-|V;e5?|`e ze7XP4Z}q?XKm4D5oBzxI?f>!H{lES{zavO6!3Gz62qA_Pa;Ow`36(>YuxqFqb_>SHf`?5&TQ`q)Pw`-c5OE&b2^!vW#IP&?EK2Ze(}-Ec@aG#nP{g~P)U z;mA-w92JfZ4MM|kOlTC24UNNbp-E^OnuX&-^Ke3F5l##zg_faJI61Tqr-U}))X+AZ z7TSf=!x`bs&^~ksXN8WTQ#d%$G<#xOoi2sed^VN$p`+!AgLlf!LcO1M2t4R?e)!?ZA6A9sbj!#!a}m>KR3_k~&E z{_sF}Fw72f!rbssm=_)n^TQ)yfj%A$kA=s>!tg|RGCUO)g{Q+a;aPnw*2i<<`S3zm z5?%~1g_pz9@Je_!ycU*)*TWm(&9FSY72Xc-gcaf4@LqU7tPCH755q@cRrol351NYpfb~ zi`C-pv3lGi)`)w?z2e@nX51(48~2N~;{Ne~cwnp@>%@cN!Le>UBpwp*eaeJTgOvkn|Nw$8&A_m zJAIrU&xmKn_OU}eD|U>X;@Pot>=L`iZn1mp5qrjS;<@p>*ejl|j|<|3v3KkfFN%F* zzt}$xhy&xGcyYWWUK$6-A#rFN7Kg{n;^lEf92u{OSH`R2sCac89j}RF;@Eg?ye^K5 z*T);;jd6UO5O0bTYyYapFeq0$ph#$s};;Q&@{3L!FSI5ud z=kbfUCVm;eieJaI@tgQ<{4TDG-^U-~k8yqcDgGRPi5udtv4|Vvrnot7i6yZ#mc{b; zTihCdkALXn&$uoA75|R^#O?9l_+Q+SB$;HBOFo4ZQ%X5iO1q@WsY=>4RZY94YH9aW zJ?)Wdq&?GKY421s?UVLR`=wfG|8zh)Fx5_V(n0CqR5u-x4o!!pdg<_VL^?9nPe-Mr zQ-jnn9g`ZRV^iaFTxybXgn-ol}?8HFZnfQ;*a$ouiL)^>JS6mCjEWqzhB;)F)k(`lf!Ve;SYm zra|fAbV<524NgPS&@?O!PnV_3(}*-OU6HO#SEW(u>NGlClg6a6=~{hUm&T>*(+%my zG(Js8H>HVbQo1?al5S0t(`{)=x;;%zcceShv@|{4mF`aWq#0>ux;NdIW~KYn1L?su zJIzUR(?e-qdN|EbkE8|Z(ezk)JS|L5q$kr;X;FGQJ(HeIi_>%I`Se0sl3q+NrI*vv z^h$a)y_S}x*V7y6&9pqdmEP9JJ84CFH@%nMPbBIChxLqJbjVY zq%YG~>FcyMeUrXT-=%fw`}9NlF|AKOrJvI;X+!!o75dnyk4^g6oVKKrRGP|CdHOAF zO~0o<(w}Kt`YZjN{z==@zv;iUBTF{fW|w^qIp&meu9SDlm2;K6Yp$Ai%hmGkxq99s z*T{S3z4G3*Ry-!MSceBp;d&%k}c%`G|aEuAh&}N9P8) zVLm1|%E#u$`MBI9H_grR@ws_EA-BjU=96;E+$x`(Tjx`9n|x|+n@`K_^6B}Ed}eN+ zJLI!+$J{BOojd0)xohs0yXPLcXFeyNo6pO=^7;9Kd|~dL`{avq-`r0h{qul4Fb~QX z=S%XXd2k+*hvs2&uJTu>$@5{6D{rQ3XV4j`l zTiv38h@JUgN^je=3`;%Vvli~o<>wi)l zNO~nuirS>t1f{4$dUa5WgGjFvN^vmh6+PvW z8lx14lU{9<;t0~~j#3;+dIeI7`lQz)r8tUky|g%*^!lU}4M?w4O3{$?nxz!SkY2r% zq7mtJOeu~fy`m{aW72DzQt0n81ii{BMH9krA1#`aUip-w8R<1pDUK(-8Y)F|((9s9 zoIrYoR0{pQnxNN8r8trFs;LwwkzPNQq9y5-R4H1KUQ?CgWD-2rn)EuW6sM40ah0MC z>9toWP9?nxD@9w<>#B4)dVN=lj-*$5rRYR@%~y)ENw5A&(V6r*uoPWLuLw)gmGs)M6x~R#5=+sY^m?%r zJxH${OVN|`8nP7UkX}ue;#|_}%2J$1dWBhvUZmHWr8uATs9uPq`jcM8mSO6LdWMv-2Fm*Q&DtMO8dCcQ2%#Wkc?=%pA#daYiH zv7}e+rMQ;#`n?p_kzUD{VjSr;eJQRd!E-l|UgwwMM$#+(Qj90P_AkW*(z^gs+(ddm zK#GZ^cLt=GM0$@viknIA7D#am>3st!ZY8~gAjM?TdkIq9MtWC4iYcV`7o@nI^iG2m zQ%UbRNO1@0-3KY|B)tzI#Wd185>iYjy*DAnU8Hv@q_~^(euWhGklwkFVg~6w3@K)k z-p!EWUedc7Qrt%s$FuZU>Aemq?kBzLA;klv_dld~kn~Q76thY1iAXVr^zMihb4l>} zL!@_1q?ku~??j4+N$;XaF`x8)iWHBK-dT}i0qH#!DIO)g+akqdr1xE_vxhgk@Sw86zfUw zxt~by;z{u{>HRz@ej&ZHC&dQRJA6|7N)^Y29xJ`;C&fmpINqekO78_qv6=L)pcGq3 z?+;2*LVBlAic->hhEkM~-aV9}ob*1T6u*()QIujU>AgiMekZ-lD8(P7_Zy}7ll0D` z6x&GeK}zu#>D@>v{wBRIDaAjecPORUPI|9WihoJ(T1xRB>HSM7c97o5M5z_@o~CRx zq<1%Eqb0r1DH|Q>9Z%WlN$-8i#z6Q}DmF&aC1hhFgY_~QtXGK)*4u>))~ieg>s2BA zKeUazlEHda$zZ+R$Y8x{WU$`uWUyX!GFWd9GFYz$8LYP_8LYP#8LYQA8LU^64A$F+ z4A$G14A$F^4A!ef2J7ul2J0O___Ibf9!Li3)h2`W>X5;D2a&;g2a~~ib;)48L&#vg zL&;#h!^mL0dStNP;bgGh5oEC5kz}x5eKJ_@C^A^@Xfjx@0U4~~2dcOn_AcM{>xn%UTr z4AyH!2J4+n2J5vZgY{0KisLqVtPIvZl?>KyO9pG7Mh0uQBZIY1Cxf-mAcM8fB!jiv zlfl{@$YAZW$YAY`WUzK8GFba;GFZDa8LZuf4A$;S25WaCgSESp!P-5@VC|k{u=Y7* zu=crRu=aUmuy!vpSo?f3So;DpSo=aUSi3hFtlftU*1m`g*6vFNYxg6AwfmF7+5^a7 z?SW*l_8>A?`(iR!`w}u(`%*GkdoUTSJ%kL_9!dsl45yh$>5w5$l#nek-<49lEFDAk-<4{CWCX{LI&r&l?=`~nGDW( z8yTE)3K^X9b}~5UR5Cc{9b|CMJIUaj)5zeQ)5+kRcM<-)sf~A&!8z|CgLBRxgLBTL zisO6rSm~djBpdG|gY(ZKgY(}{2Iqf(49@=`8JvGM8JvF(8JvGE8JzziGC2P{GC2Rk zWN`lZWN`jR$l&}7$l&~sQpNFOdaMj;d7LVa7wWMxsOt%;IDS%(l|hY9kwJ}%$e_lj z$)Lt($e_k&$)Lu?WKiRCWKiStWKiP^WKiQ0syKd8kCj2aFOfmLFOxyNOUa<#SID5= zSIMB>*T|sWWn@tA>ts;x8)Q)Ln`BV$ax$p*Ei$P0Z8E6$9WtnQ1sT-)E*aGO9vRg8 zJ{i=zk__tofDG#WkPPbmhz#moMF#bLOa}FSLI(AIN(S|=CWCrEBZGQBCxd#wAcK0> zkU_m)l0m&+kwLv*lR>>}$)MhE$e`YD$)Miv$e`YJWKi$-WKi!9WKi#qWKi#VGN|__ zGN|`wGN|_#GN^Y08PxkL8Pr>lLA@Kvpx#YnQ150ksCNq))LTLZ^_G%By=7!jZ#m)5 zp4<2v8PvO#4C?)z4C?)Z4C?)p4C>uR2KD|$2KD|;2KD|!2K8)qtZXuX>P8Lf9yB%}3iN@TR&O__|=yQvZxt#{Kd zWVGH*mC0zmo2rn}dN=J#M(f>Fm9#9`v>RE}Ta7I0-JLAztxgv8?m-sy)*y>|_auvY z_acjW_a=*aYm!C1`;bMw`;tYy`;kSxwaB90{mG)<1IVJ@1IeP^+GJ609kQtRAhM|U zV6v#UE?Lxj2wBv7C|T5d7+KU?k1XmvoGj`+f-LGik}T@2PZsqaMHclQO&0YwAd7k% zl1078kVUWKny2vZ%cSS=4?OS=8QFMwO>dUwf82A+WU}2?H7?n?S09j_I_kh zdw;U1eE?b1K9DSGA4C?lUrZLYUqTkOUrH9W4L&>7{VPsMJaI&cVGP0=s za1X7PU_% zi`s7^i`u7wLeG}wa+Gt+UJl(?Q_YZ_J_!#_IYGc`@>{W`+Tyf z{SmULeF0h2{wP`0{uo)*{y16GzK|?xe}XJ(f08U}e~K(>UqlwQKTQ_3KSLI^KT8(1 zFD8rHpCgOfpC^mjUm%Oxmykv6FOo&=FOfyOUa`4SIDCFSIMIG*QnxnnI0>P zeY{Q<`*?#a_VFfJ>|;4u?Bgx6*vH#sv5$AiVjnBWVju64#XjC6i+#LL7W-I97W?>s zEcWpsS?uE@ve?Heve?JRWU-G=$YLL#lEpq&lf^zhBa3}}P8R$4f-Ls2hAj5+C0Xp_ zE3(+f*JQDewPdl6Z^&XF-;%{Xz9Wl$tRstkd`}kp_<=0;@grI6V?9~y<0rD%$IoQ3 zk6*}Q9~;PGAHR~tJ_@qf$40W)$0oAa$7ZtF#}=~KM+sT%qm(T6QAQT~C?|`3{6-f0 z*h&`r_?;~F@dsJ#<4>~K$2PLq$6sWzkH5)cAODcWKDLv^KK><(ef&oj``AHN_n|LU zu)2@UhOF*mvn8wh*zCyaJ~n%@x{u9)tnOoTB&++_oXF}vHfOTBkIj|H>OMB_LRR;& zxiVSZ$L1_HCus6h_<*pnRg zu@^b)V{dZUM@@3r$3En+kA2BuAN!HRK5CJ}KK3VveH=gz`#6vs_EDQ0_ECo%_Hht7 z?Bif^*hgJ**vBDMaeSyAD~CNDMh<(bM-F>BoE-La1Uc;KNOIUyeR9~-QRJ|vqsd`U z4ai|n4as3o$56#_BRy6Q`#Y8#_Scvk_IDgP?5_zq?5`;~?5`O)?C*GT*k5yU*xw1{ zu)h}Mu)h<@VSgu)!~R;5!~R;4!~RaDisROLtQ_`w3RN7p(PQPX?^DTP-)+fZ-=~qo zzT1(*zE3BIeV;)N`#zH#_T8Qw_T7OT_I(yP?7Jg5?7I^=?E7qT*mq}g*moCl*mqZQ z*mpN_*mrkw*mnE<-?x#&zNe7GzHcXoeNQEaecwS2`@WML_C1Xp_C1{( z_I(#Q?E7wV*!Ml;u^9wmn!JVp*Zc$^%1u#g;j@B}&Z z;7M}m!BgbWgGJ=fgQv-%2hWg051u859xNt@9y~`5J$RlRdhh}{^k4}&^x#Eu=)p_m z(1VxBp$ALJp$D&!Ll0ghhaS8}4n0^#4n26C9D48uIrQL7a_GTwa_GTZhaME<(1VTS(1T6n(1Xq7 z(1R`H(1Q|k=s_tt^q`C!dQeUdJ@}0rda#uodhk0r^xzM2=)s@l(1UH{(1X9op$C7H zLl6EThaPMvhaUV(4n6pf9D1;Woc2JsRl#Wwwit5SgDsYv_F#)6r*Gck$!QO^1ajJg zEs>n|U`ryWJ=l`TX%DtkBBwprvI{xw!IsM8v_JX@u%!k$?ZK8kNw*|h_9BlS>`fj$s7W3@*oQoNurGP^ zU_bKcK`rv=!T#jYg9FH;2M3Zz4{DP~59*Ld4-O)a9vn;_J*Z0_Jvf9sdT=Ot^x!b^ z=s`X5=)vLS(Ssw%qX$QlM-S?gM-Pr7j~*ON9zAG49zAGC9z8gQJbKWGJbG{}dGw$$ zdGz2o^5{Vm^5{WR^5{V`^60_w$fE}*l1C3tB99)lB#$1nB99)N zOddUGO&&csg*EzLaGsvR{XOc$`+LK2QI*>;X z&LWQ
    @+bRv%)oJ}4*=u93x=t3Sn=t>?v=tdqr=uRFz=s_Mm=t&+uIEOrXa4vcD z;5_o^K`-*?!TIFTgA2%`2N#k@4|(SwoX z(Ss|f;`mBERv!Jhiah!;iah#pHF@-7G&T-Y^A&)ZXl1o{z@KwEy$y<8_A=uo5-WDo5`cETgaoYCFIf9Qu63)8F}=z zoILva8+r6~D|z(wck<}#ALP;3Kgpx7+sLD@f00LD|0a*V{zD#p-A*2T{g*uY`X71p zbq9Ivt8S%&*S?k*^4ixDOJ4h0;>c@XOFVh)Ye^uleJzRPwXY?Ky!N#ulh?kMR3fi^ zE!l;<_O+xkc`c@-3VH2o$*$zJuO(HiesYYJ=TCzKN?Q2PO^4iyuJ;-Zc zOKOnUzLxAsUi(_I7kTY#$=>9(uO&6fYhO$DA+LQc*_XWbwPZi?+Sig=q^*&X{VAZY z2T(v?52S#;)~0~I)}esD9z+3sJ(vReT9*R)dI$yd^-v1v>tPho*LoDt*TX5GuSZZo zUyr1KzSgIJz8*yZeLb22`r3d3`r42J`g#ln^tBOH93QL4Dxk-Wsp9xJJyrqzZbB8u zP4!p>^u8HY93QX8Dqs%Hsp9wqJyroTX+Z%qIgtWpauQX%r==dNfcdndfcczE0rP21 z0rNS90_M|(0_Jln1_pWNdfaYhXUqvE(OfzJPMdk zFAA8?`4ljp3n*Yd7gE4{dQ-rB`cS}pE~0?>^re9L^rL|J^rwLN44{Dd45Wbh45EPf zTucG;xr74db14PPXD|iKX9xw%XD9{CXBY*{XE+7S=Q0YI&*c;_pAi%=pOF+WpDQR} zK37t}e6FH^`HZ4~`CLr_^BGM6^SOos<}-!@<};Q8=5s9t%;!1^n9n#0n9ubTFrOPJ zU_Liez*F9po!J_?x6 zEDD&<{S+{t2Pj}Z4^qHdg?=1{3_K2K7>e4e6!`7EM<`8-Vl^Ld5>=JPBC%x5tL%;z}@ zn9uVRFrOEw;&_Q3tAJU(NCC5Yi2`QzG6l?PDFw{x6$+Tus}wM+*C=3C%P3%0uT#LR z-k^Y4y-5MHT22A8dW!;P^)>~}>KzK0)d~uj)w>ihtM@2iR_{~5tX5LR@dtXW0_OH1 z1C}3`%Qo!6+Q^4Flqky@6P62cKf&%8YhANJ~)MFJe!>_2~ z_-j2@0rOl-0rUKZ0_OQG1I@{7rL1$Z9iGt3ybQcOb+tSJu zbhf2cDClfUccq}SEv-sHXIr`(RUB8-V-r&8}mmWevXI^?J1)X{6VH9-crS&N2%u5d^ z9g~zEK@l@Qk|JhapCV>{6h+MZXo{G51B$v(X+w&b`7snR^F|ag^J6Ju=8Y+0=EqUR zaT7gO5%X_K5%X_G5%WKuBIe(mBIbVrMa;hiMa=(1ikSaN6fysn6fyr+6m|BcCsV}y zTT{gRPoaqUx1osnpGpz)Z%YyLKaC>h-;N^Ye>z3X{|t(l|Ctmq|MnCy{|*!}|FbA! z{v9b|{+%dd{%2Ff{5w;`{JT)Z{JT=b{JT-a{JT@c{CiNu{CiTw{Li6?`JYP>^FNOw z=HH7V=6^m#%>M$4nE!>A|o>?A|v-w zL`LqTh>Xmlh>YA%5gB=aA~NzIMPy_)MPy_SMPy_yMa@U)Lllvbc@&Y6hbbZ>^C==D zk5EKL7EnY+9;JwkJVp^2d7L6LvXCM&@&rX>W~O5gA!V z5gB=%A~Ny@MP%enipa=vipa=Y6p@j)DIz29P((&nP(()FrHG8YM-dr$pCU4{k|Hwl z0YzlwLyE}AM--8fRTPntk0~M}pHM_bKBb6^tfq*Jd`1x&`J5s$@&!d?WDP}RR2zk&%rQk&#Ulk&(?5k&!JFk&zOL$Ve$gWTcEDGEzUEfh>ZM85gGZ9A~LdrqGm)( zt`IdNWrm_=q|8#(jFdTwnvpV3Q8Q8&C~8K^B1O$eS)!;JDa#Z!BW0B+YDUU-p{N-t zt4vWdQdWhcW~6LaikgwKsuVRNWxG+-jFeTQs2M5SouX!>tU5)_NZB3~H6vv;C~8K^ z_N1s8Dcg&pW~6LyikgwKniMr7W&2RnjFjz5Q8QAuA4SbbSuKj1k+S_MYDUTqpr{Qm zJCLGgq^veY%}7}tikgwKgD7f7$_}Qe87Zqv6~~9@v5K0PvO_6qUdj%msCg-?M^W=q zb~r`NOW6?=H7{jHQq;VZ)u*U=DLaay=B4at($Pv;14_tCLrTcYF_e&(MwF13V<{mo zjVU27$5BFFnovSsno>euno&Ytj;DmYG^d2ToInYAX+a5jIgt|bauOxvr6ncgr4=RQ zkQzd})N7QG zsb!Rqsn;nXQ*Tg0rrxB4Of9E`Oua=3nR=TNGW8B6WNHN^Wa?c?$kcn3kg4}6AyX?U zAyXevLZ&{XgiL)z37J|&37Pts5;FA(C1mPTO32h|O32h_l#r>Q_q0R6z-u+DHkR+C&MN+Dr+V+CmALDxri-l~O{c$|xaI<&==A z-zXtdTPYz^zf(e{{-A_R{YeR#+C~+}f9bJG$k*SLkgtCzAz#}mAz%MeLcac^gnaFw zr1{b^DO* zC~3aRD^t>Zl~Ggw}il4h{{5K5ZC@);V0mLon!)npNFyTUO(-LSO(`RT%_t*-$5TcIn^Q&xPoRtpwxEm*o=6!P zJc%+g*pf0b*orbTcrs;Vur+05@D$3(U>nNF;Hi|6!M2onJ0G<0vD8*HcCYZ=j3}-bfi498Vb;oIn{FyooY0IFT|kIEgYccr#^W@D|F* z;H{LA!O4`7!P_V!gHtFYgSS&g2B%U+2JfJZ4Bkl@8JtEL8JtcT8N7=!GI%#-Wbhu! z$lwgh$ly%M$l$$HaeSX1tBgF(qKrJ=PZ@c9fHLyhKU-Db zvs*p2PXC&y!TQ%j>HBwIAX0s#(sS(5O05y8u~=;r*|UWjr+hC2-_cW}j z8mpdaq|(=q5j9w?7HQN<>A8+=qx89BXQ|~%Kijyz($6%Ws+OqrBFEKGqePn2RQj1F z`g#-nOp{e=lSos2y{WF*RBLIvTBMo2-fWTDCUU&id3-0O=Q)15Nb@QRKR4)K%hX;i z5oys-O;%e)PSo{JY9`WB-`8@LNUOmjC)ZVDlzyhQp7#_z*QxzPP8+0_i?q|vw;QEa zikz8Q_j zoFUR_q{!L5L^^j8>C#W>XS%jh`uVO}YqzdS&)L0(8l;wr^w4#B=(&1UQIkZ@sihW* zoI6|OyiFp#7Kxm%>s~NUBXWg4f2E%1O8t3NW3^0VR4cVYjCXw_N1soFcCo;a5i2hf!Ojspy(;$(F zb=6>{wM;A(nN(kCy*KM;ZXU0;irk{-xwW0rIwy}5xvihb6kTV^dXd}pJ$Gmgcj{}? zmWWJWA#zt;HC^QH8fv!4J++j+Hbd8(u~=lL{(7c9KXaS@bv=6Sd$)?*r|Znp_s`PT z@7Egc*ZLk9C8GcJClBiJY(1W%pPRE*WUd}R)KKYr=k-#$&cpLW<}VO=WU0u4HcI#M z=t7alI;rVugUI80&V_o8h5DX_+eMxjDe|OO`utOk)f$mS`g750k*8}Yt?g-j?=!l_ zGg{v>D@C5Isr3BM>U$RJc@|Gry7qJJ)Dn^Bwch7@sTCqG=yNY<4NH2e1tKr%xn9)g zUYsZLlD_Yy;UX_rQCjQLMIx_^5qY(?(zRdHb1ti-*klrlyO$nblH} z<+|qb`buAaOP_nIm71jVy>Cxd>qXwt*WVeh^ms)lwL<@Dn|5lA$a}q&KL5VHcjX|p zOyq;QO3(X&zW!kgwM68jT55*KDy?^wzGu}|k&hRMd@@*V68ThXT3tiwXFk&!KGWwu zZ>Cm?e9>5~6iI>sYI6eltnr+u3Tn$anoj)@fbq zwu*eO=l_12$Pbf6e)MXo$okr9x&C!Bb(Pljb1k(*4=Q8N$HtX8>eZm#L*GJD$@f|+>S#d9Kmj1g_YsCMq`%U-p z+ai&z{gi&@_mv`l^cMNEvBQ!283s>r`y%@g^rwpt;w zL)YA~UW|+sV_Jx@HN?1jV!Rilzjw%lQTmr=)>bRU==CL*73-D@gWQ~J5e z`dSq|)_?z+Dht#mF}rqBtHo5EA!fJ13P0D0sWw~8?z(1mJx}!&V)mFPrp7Wcd+N`< z^yl7LjTck1rX^v%@T8nzW2~pVh)?Cwu-5z_14q14%c5F>BZF7 z_thV%Hi$W@liDWc=;>k_j8QAaG}PCQsjYgeg<=|s>Z%rrIkuLXET(Y_rJrfMUCeQV zl&;lev6!Y+l>ThiOD#~kw*I@*G}rSqUoPf^F-l)QVXK%H`neYC^sgY%x=w1N^k+*w zSIeGijhK^bi)pRTx1OXni8-aKS}&$eL#1n+T0`m2w)&a2dcL;0)@j4Vv}-5k^cHHi zm@`_5IkT>q_U+XMF&&nQ=~z=tr}0YHJX>q%tncfhpXoAL>3h2BXS+@p(@m7t)NPfR z?z%?zF>0Nd9{S!M`dR&Vq&cUtm~(3>UH3fwOs_#o_k8|xF&F4(FVxTUt|z8XHKprc z)Lv~B(|5SiJ@(U|{d=l~Vg}Su`u>5n#SGH-T(U}x{(I6~I#tZz-eQL6@lbtjST&{Z z8(v@O8kdbzYxS?tXrY$rUzwqM8=*Cf)U~e=rSG|Nq?oJPsU>1Y>CaIs#aumG>H9|a zR{HsCbp2~4DLwC)TB@JYy2g}>8LMlLovQTx*LG4%#avfY>HEiNZ^r5K*Y{Mq?hU&B z4Xef6*i7l?$LssXk5l^E1U<)u=}O;!lh!mbD?R_j6=Eh;QM1I{+)(MSZyBzZh`F_z z($7xT*CuZgbDN(3wgqCQ=x3+s8dJ84(SL86+t=$~W1+82T_)y^HfpNcAm&azzH^b7 zXPnlgVWAe#~StX_KZYO_Q`q+qCo%=(`LplonDbP)eZ{ixvc|0!0OF#harz*)wh1Fh#K8UGe&VH)PA@cz^*jDNcwupjU;V~jtK_s`?m_sjs``yOze?gTsnc$4w(?`8Z2F97de7-#$k^#G**A!z(? zHvl+()C~asG2j||n(-fl_a6iQk6&c`C(Quh_{kZ@e|m)R7xDZ>Jbww#Ujm+=fv2Ax zW&EG&0s8@<|1xO(+zi+V0RCU}06_bfNb^hN8P5kC1iZ`mueJj~^H;e4XWah_(!PRp zzcw@eD)PVj0^`5A3h*-HuYup!o@e}ZFW>>d+l>FV8vvZYJ;V6#h5?5Fczy==XOQ-d z5ypR?1vtt0zj^@o06^H)mS_+O3!USs?m-k*Dc@&Cs6zg7Z}_C3%#Uk^CR`2P$8 zK!4%^#{U=fIfXP+`vH@TYo{3hzk^J$YQWn}@Mge%CPY5qFcS*YUS%)f924pY69&9D zyvu|UX-u7fmzlttE3yZf$XUTet_qlB0&A@>zsW>iJ>U^0pzjI`@K}M*x|@l7Jh$QA zHVhbNq5!n)z~wl=g!2RwF1&ZWz=Rt(-JtF12RzP1A@CF)0f0u)YfO~n1CYM-Dge@z z-2*tqL^;xzzs-bqBj8OYd_4f9uK+&iyTT7#l|z7|OkjN#fftylI>|&3c&gU|o@Sy3 z?`wdw7QEGtGf`I!*adiniF)9u-w$}1iH26d0RZSVB2VLsOf=zr(;)!zH6vXMp0|KT z2-nbYCc+-T5hhwy0P?n;VH$;512XTQrt2hwzA z0q}lKH{dW6UHCrN!9;fn;2;z8a6b>UE@=jwVq*Rf06g^c0Fb^1_!bNUUS^`V5`a9t zXPM~3vp(eOJI_S_3INKr5Z8tHz6kFYjWaO-nge4@40-|Je-Jz^-p#}k1^}L=`AiI{ zOe}ixti1=6l~nu%2oCRT%|;d;R1Ok8FL>}LXNuekgK6KkpgdjV&dSlbT( zkL!SQ-FCq9OsvQI^+><|O(r(91C9XBF|iT+Z3MneNV_Qpc!7z{z`c1R;5cBCi7R>l zNPoqH(m66`o&R3D^z*FWa&J zz`yMb6W2Vz#CFuf4)C!9d9KC%b!(XzX$Fh{fd6`=zaIE^set25+z9+PA^*+!0N~q= z^t)eS;+8=s_EZDF>z;R+xOEp3d%XbAzikKr{I?_Tz89F--vc-WKpot{07selF!F!+ zWhM^9n79+q?tGkyk0Ad?9svN~M^W~Vo@C-6=pDqnyUYOaeHWhHT>?P5kAc^Z9b)1h zJioUY0KE6%-F@Rsd>l9qfyN<};m{c-J^@}o@iY^k+zS97_g@8gg^36H0WUJ~Akseg z0uxx91=eQqsa62;9qtCa#>A($1CZ`Boq!`ud^R6|=SRTD=e&T!OnklsfbS0h$3rKW zII04W@95)9d?5>f`(wBsTMKxXiHBDJ&NK1I5a3NF9vuX{&BSB7nD`>-fAK{ojvoa~ zGV!HDOne!+yS-_^KHInoq<4$ou5eOq_U)iLZ?S#+djz@_hYeCY}bK zZ{!1z_8HU{)?M+q;?!;? zz74wHMxJjY{dejCr;W!h}bHxuPnfT#V zO#Em+6Jym(V2u?&9s=O~Pk`&ECzyafD_#O0FM-C-kmqOk{!jf(ybRheBi+wI>leuP zi+7p$tE%ET*KfU``zihQpgVd6Kt0KoYg-o1wMy*>nZ zoQdBe-ETJnPBQU3ygvh6ZwxZ=`+mSA6Idt3oA~}F-oIrAJODttKX?HL04U$T^#C4W z;w;ksdo$oL;AJNM6l3CTcX7vrN2;@9)0A#D8`JPB8Ib zxWZo}{_9;P{sJ6-IS4@dbKv6~?#}_oe{Tff{;#O3za9nP{d;)--YF)|uLa=xKlK1y zC)xq8F!8^5KUo4m{;B7g&>Vm>O#I&v!?Fs9F@fxzX4@%_w_F_r2+UF`kB($3_!Z3 z{Y+`j0-Rt<3wUh-j?f{dgkwx;9cD^|;030%^#C3KfVU`cLC;m%!P6}8J3AlnJX1Q5 zrc(v%X387}ILVZ*5vE|BRpy>xN;h!L>jWU*Jbb?dX)fso0LT3OOj&@u3yw3T7iH;v zfhm2J0O0C-o+7Wl1Xld6we3^i8G= z#Q^7+vJ5zvKhBg(y#SPbC1AK3aD*wB4FX+pVLEdbwlwgMhu%JmMw5x^Oy+yI=r z!1s+q0HnPM>2Aie-JpXtQMu)LrtATqd(JcE*0-6m_XJaJ+s~BSn*n&YZ#z@=n*k@8 z@}YVF@ZaG99A(OfRlr`rBvTIHdgnM(K5~R99|i9R@$TRQOu4HS0GxN@iZxLA7|Qvv zdjOz!PY(dk?j2^zeRzK#=zSdbhw=gAO!>rNrhIZ20QdKUj|bWTp!MK+ri`9p%BLP@ z%Hab{`SeDnd}akxK8yE9%zzjGc|O+-7-P!kD*>mN@=y;`j^h1Mygv#&U$}=U$65i8 zFy&#qdl>j0ew!(ebOQDRUS!In!22lpe+)c5hBS{M?H3&YJUfp2FM-CFy?~dQ@;I)K zv;F|SD5njYfSkDc>V^`J%f6A=6R-kvmbCA z0RB!Q?a4Qp@+{sx3tpew2tb-|^#G9OR5M^VV4Nx6UIDh9-W0Qmm-8K(RK^nP)iDZj+CUjp|p zk#8KljBf{k&tKI8z{fu$-9H}!yv>wg;7z8y*$H@rDQ|(N zw@xwT5BUBEr2jV$U@uets50eGl>oeZ8~EM^oY4I?y8!2z%3fwFzly2C0XPIW$5hn=z&k@L-~a$=jP-yR;CZH+Dglo$ zHR~i(vrjNJXBSg*hnQ;42aGW_Z#Ppd-2gndAdNK(fV@_u%}1L25vJPAfPTOsz>7>R zZ~%bYei$&xR0q;HkYOV`@3ld;0-M?*l&-py6i#;H<0$;CbL_rdAyUoM&oqKi~{gtA_w%Os(0=)LP`P zL!LU|hCNrUN7@E_Z&(39-o_FDu1%+y+WaO{v975t&oecIe4*n^g&kK715fyErncf; z>my8!faf-(ZwG%^&(ztt?*RUeF{XA_15ht>kf#eU_aIZdV@#bl&eTh`Gj%?2%m`VYfN2? zyi4$I$zi50#dRslFjNV6k*Uk-0pM*pcw7DgQ!fR+OYwfi0j93R{mLUuUF8Mfy1EAd zn!{HCPBQf}m8q8_-{nV{x~7$>YfG5Aj^Gidt{(y*&4zx!3ryX(5irTrP2g|Sd8TeY z0C=0JSDavKi~&{v4g=n0>XqF9;Jgy)wyXsp-&WjTwTr1&_W}KlrLrmR~ z1vt*sYjM4H1aOwA*MX1gkp8;onL2_pkKp~zjev2cUVje&Jl&uIz{f76-Sq%dZ|n!0 zWa>><0g&(J6@W3O?gpOSZ!+~3|onuV>NGAX|Ke~~r2lD~IeOC|QMW)`3ydT4}k0ISX+nIVV z__+6FrrviI0JJ~u0U-S$&^iQ~hk)l3paDCr`bpsXzVphz!L|U`s5f>Pay46yP5iR2UDN!X6iS<-!m^V^_%;ddJ^}~s(?qBiZxFC zRtaDPfHGl?Q%`}PQz*-~dzkv2O2E5J{q8W}O{PAN_up$}>S^RT4ce#AGxhtAGxdd6 znEC^}{}J+x^#jf@^~Woi`jadGc=;*#_-PDtD*n_#b&$E4kJYjHjPXzzcRGw#9(MX7 z(YDsA3Zv8C+Qog&a3pN=NBp*c!|ifAtAbS#9>Sf=?Qi74Du0E^Xma~(?zU)~7_M1R z?Qw0mR~vuUT3TBgt6soY#$vItspB=l-s|Tt;OF*@T(h7z?@IH?%Hi0WWlP(y(Z=`m zZiIF6B?asBaRbR8#mXKdg<%dbe)-d&| zlR6zHIGi|cWu>f|F}pA1a@rh5zptVyVry;V5wwJpAdGe~1fzZvS|%KEk17Y8sJ6+y z_~hRS4Gav74)B{tMph3G3=FG9cyor{D_&>m)L#ZhM@QeFB%>oE+W5|$@j4{B3bUg} z)Pu6kXA8`vE=fm-G{E2wIzihR4V%Uk@8lCRI2Z+i5MLk}SUsXVGu0zb#b)p^@CG;; z-MN$3kBp3>OPXZA+^80@JmzE`7GMo*HiJTBcRI>=2Y31_8u=U^u=|64li%((g}D#? z)@Ul@7Vh^2P%R;JUFyrF+#hMJs^bw;{NY4NW6|hn+uAnq&THE{U+moeTBvL9l#$oh z4^&!8OD&ZH_1ZYE9~+|@ycOwU9W|p9`q$I3qQ;UKJ)4+%b#zoz9XcZJZeBL*^9?U+ z9*d!?^Llz4tLZ>@$5)g?k!2}HS*$2a1%_0-NjF1lI{KYsX+%|lI1LmTNsc_#60c5SF{>C&&qpW`KChBSJ1=4Z`p)`c{w zRe4pgOO9Zpsge7^0qPV39d+ig@F3M+h0)=f#!5__n)-E9P4nlzws@eqroq3xbMB5W zrub?uudnZ_uTN(W8PMKSI~=70D{HHJ%Umtdj-RL4jZyk8bhAV~(Ol$UUbHu6BAQ+D zF&2&9Af}uAC`O}#M9S`qyUcy)%MZPcsibOIE{Cm70KSd$o`&%^XElc?&w?i(VM%!yza8c=60CP z75>AUH*VPUfUn$Y<$KZF+SYETkG7hQj^!O4G0K~UMb^c)Y8whYjiG2qLC?aT?n`5v z)~>(P?J6w1d&9a-S6mxM04y=Wu)HI!&lbqh#{#CHU!QrBT{m!Hx5dDYO;Fd2ciw{+ z^xV-{Ecq5)dvr$UP4(RZR>*2t8=H%|zL0hV-Ph-i20l;^p2<}Y_jhz?lYg@t&)}8% zeose7&EM+D`go^)?80crfCT^410t=|e`RlRI?x^XMSJp(ckaCQL@1nU$Z+Vy)L%1q z<()fs7T$a1)*F+Z|KN>Vue_K0Gj`>)zU;!B+QItSGVqs)J1bXQ zzg@uowLAZ(_p*|%u96K4(VYi+F1hK0_UBB+E8NK;BN*q-HM-`8qGe_F57w(0{F3;C z5=QH4F=oZ|X_!`3eK`%&;)=G4Y@(h1)6dB}T_8AwShK*mYsIUQTZNkUZ3C=b!f#atZ0 zT%5+cJ=5G5q=~Psm1aefo{S_Ty5blolASX(FCE;m?(#@98o7MktBD(Nx6a(utErwZ zCqg-e#ipf|nZTB;{AZMBz$b#O!ZshIHowgm0cDP5Jf@9{yW=;!J|*wo4hf@#)v^%f z^2vc2m8Fuma@}!IDGVe8ha>u`=rlo)s4$jtF|3UcH#?Ru=&7!$sqR_uNaBW%gtU>6 zTs@>Ta84VM1r1G0C6kX$OoZf;R1*qOPXjOU@j0m84!MWsjyY@rICRPyg%nOzoRQC9 zy6_++_Y6!g>jk&68Z$7yJhhPU^E1j21M|JhE>;eRLvsDWhc9c8}dj4BoeIc z)5KZGkV-fjc84(n{S_8b#@*qdvyMX`X^VyfZogV22O~+fPTn0my4~@JV>@m_)jc&L zFt7TdSjcEEEVLW71GOur52Fb*NQfVb1?LYfs8z;dN=a3T(!Pxusqe&PY&&LyAovPr z;0!AbkIR|pTl)Il!6U>crtl6PFon~(QIg7v3)`nCbLO1 z<3p$uSsw0qik#C4O))F9-rB34F{v@V6s7_*90gm~0#3b;){F}&yM zEuC}bbZ)u&T;ir5(tGr&zNeHNe8i@`l4^30NOy8OLW>b7?)wlftjgi zoCob_9$Pr@J}m9ouzYD_b93X;<=;u%d}4GWHuci`uo;_{T;}8JV|@LpnS5757O_E( z^kL1fVJvD()tD1K#}~1OF~fx;a+)Dtsp5#+vE-Z^n%p}|dXJn#CSo!E&Ax4YQ-yuo zddGNuaw^|}85i>|(#a`9m_~Du%nv{v>f=r4r5y7>5cUSFEEjSU_SsVFh%=oZJF)4+ zxN}bD4E6@hP{(L~o5tJL`8V{C0pUUxWjW-uCWeztYH#)2Fdw#xnz;O{>mokc=QHUd z_Vigd8ge;|6;-V;ek7N>lp=C4HNCcBY{9Z|5gnu_HJeUQGO0o)^>WfdYOrdNRGewS zb!S?dm4qtiPFFs}aI)EwEAWma=V=SIu2$5f3XrP%WcSD@Pw+#!Hj%bK(0r!L$6M7f z`lJ(5KFj7VD4eitV78BPD4;F{h6MugVg9-?&uy9Px483+xc3x!RztB?iza_$F7o8% zd5X-+EOTDo)Hd|H^%E0>U$<%L_#Mz*N-|O4KCZ|?>GWqJqODZS+MW6#Kd-l@VcyM0_*KoTyUPsWjr|n{^VHAGWXbwZ+p~7;|hgcLspFL~}hHYW4Utk2A+&eKkHZ~gL=j3G~ z#t)5+@pGD)KI46)NI44}CdiIflGuR-pv12dht&CEgiYQlXJb=0p`+3Ni{X$WC~(kK z;-K6~NJo%trwjPF00*g_ghO6G7>*0dGDexl2#dU%Ru+9srq!ve4M@`dC``KYqSt8* zwTZ&xQ!RpUt(o~bm}liD^*eo?OyTk9x{%XnAX_DH=@;2dk+6YUD-xEN#XE!)wJQnW zV>G6j;_I`tVI%`fppifY5#+p3I) zx=Y)Zc1PQX-|2mA?~I9a>hd;Uac-7kEG%n)0NYi6B|ot`f5~vPVx3V@msUi}XSHS( z7;_A{EfuqBdaEnFJ+)i6-Z)+FIk@V8BfrFHFLrn=ma_IaD6`&9ROWeX72AqZR|Qcn zl1hnj(z(hZ7Lv|FRT1qXTPamT*l2<+3iZ$kGZZE#IpEzcWa2X_LfYGCEBKwxiCHo92%IzxUm`=;NOV%@CXaZ_#Bi!mXplF*NWae;8zD|b=sJk#z=iAFo zIZD0NJdj^t6t4f@BPr;7%JqN+wQn?)$rPth1piFeV;42g%NL2 zNtRl$C(B?`3Kn;7EDASA{Y81Xipa}y8O+w|cB9?kvSeG$#StU@36`GQSFMnl#$wtS-yBFA9K%HljL_fl(KV^LwKWsRDnDswCR`L>E2 zHOne|hMZu&JHJv9c4viC%@+ofc|)kiXt8-czT%*}`8Sm%1;s|Exw6T?)dE|NE8ka@ zliN_+&^6E&E^_8&Yg5HOSEntzcuh@6&}o73`E;9VhFsXkHnS15k8B0ho8B-{D7Dg3 zZIad~@>A*k*aQm}H|k@65?HbL>RHepz!7|(_N38}oEen7n$Fq%vo;qNo6L)P4)_+C zyt68!1Mc;{eXF~-&Ndp&dHL2Q4tG8;GTE{Wd8)C%?XcSOO@=IoyVzS?uV&}w+m<_A zi?7JsXcG%dH*GK~h0SF{Eo}w-SDj_0ZH+Cn)`uJORby`bf~q<5yc;)PazpQy{zYZJ zQhQfnO||xlfm_U8Td^}+2%EubqNXwC&G-5P_WTZCdH0+f40#51XjxG`P+g(yh(GBb9m3DubaN8P1m%wswNm>8J-Isl8WA6RW z&Py3$<~@6V?#54D*4$rVZeJB!)t=|?->l1s;9%^hH+Prq&vbdo+IgbxwPOB$wDm5 z^zw9mnlB#()8|EsX~F+1&g0!Nddc5QVn$ATfhu`R5P>$V4NJltmV4=r$r zm4=$`!AiBUzjo^L^^057%E9g$gE-}{=8ouQkM{jo+^n&K&+%-II(W68udnK^$<3|p ztyOCJ>vMB!x~r07M(3>!o5L@i#$Od|_Qo^@4L%bVMz<{-1$SXLYS|gKMKMJwGdMT+ zkk04Fi)0awMS@wu*@|{7QG`3Do=|+XYUwCfA}hnWxh4st+BzymE1u>j5@ew zQGdCwVBvN7+7W0JvHa^67Wm5h7j4nZ+Og#No1jIukoTpgU~WN$`=Wj@@&2SI44q%x zTu>o)Rq(A(b-h0$;_<9y*SeIP9Q(-1#JpLI@#BQFRZT}CkP?MjfCf+gPxMrjJ{VPe z2?sKkcip+?OWg3eorgZVu&-lbZ+}yGa&J*#Q-AM9<$&&{<@LJC%IE1<<=>maGR4Bq zLyJS9B{JXCY3&$Ujl{67wkDO=gimKNq!%mZ_EuOm8MVbUEkBLpG(WfG+fG_FY1i<5 z>o>X+Icfe_kjA^tvE=T>IM;6d3KQEgemZGq*}ylZl|nNU@BExz7VXrGGU#$w4f>dY znMqsV2E`Ci0$ds`gZ`)(=0ES#Zqjb*<3HD4-!c2W**jkP@=A5^v8lta{zhzVpSt0b zpM3kJ_!>ueOw0mZ-VIDqd%$3K$4!iGn?%fmCS`kJyY^Y_v+W-4e7zb7gRdt@h^mz< z`A8oB!@hl5QJ%P#kl(7@6sM(q>ZO;^Rpax15p2o%u;DX!Bje8SMqbCA!Kgja8{qgL zryks7aq~wER@_o&qDq{l%30V^#>QYtfe4O~5U(rL7|}`S4j*F$u*qRo;;!s22 zn`Y25(NKJ7P2c!<-y2L6@O-v-pKaG>5%uW7#yDZ-fq~zNnYZ(fiPFqx^q3`2|rh2BA zM!b_=$FjiA={1rV+q%!E9IN9B)NUqAlu~6C&~6~2lE{Ri4V z=auCs1qJ%EnvYyf5BaUx#=-*Q{-?6CFJj%gvNBhME#3lyMdkPBI^9L(#oBpGwx!H! z==J#Af^W+*nhjpB{%GOZLazsu1I2>#7OO9zU+VQygPCLz+j5Z_(JdP!AIfk6-8028 zACr{{lDypw@4UlU2Tcfqe^8M^=3EZhU!jhRRUC6o2gmBz#Uaf@M9)}H8QfUfxuDVR zvgaDgS|)F~#^&+ZI;*p?OTF2L^EuDS&a+svvrp`Il$f%$yXo!KAE}YA3ktG*nX4^> z>uc)A3$k-_?XK)_J`euFQ{h=)_1dy5Jgd08$nDHMoaM7>|5O~bc`6FeF2t*Bi`Q$- zj*l0iegshrBr8bWFCLuWl!~6z32C)#3&AAhc7^3VeJ6#G{-y499f-aMA@?9VZp8w# z-CS5{_Z9czMC(mg0)E8HAUgq-Kt#!RM zErGhi`of%oPn272hT1iq`F3M{Q*F7@XH;@626V!KxkJ}(ylUgZ`K6758`T`M!DLe1 zs*yWv70&vWS>+Cct+ZzLKv!F^JU?r0Nxq`w8Vj;j!+n(vE$HyQbuA65#~Db?TT~Zq zY!5q#+Nd&`+N|7I(Zs9#q!gHpa&_hZpb`jc--EQ8vp6xeD?vx>`tomI^Z&bq~JFSO34O1IONZ_N&t zdI!o&sUD^5N!M3h} z*)^p$)mc8PrQTU#bD+K4s>x(9=b*hrW9j^bXvu4b<_=&~7%aJp(V%7*7;`VHa(dK; zmb%_1(bR${p!k{@hP~Jf39m}}=x7i_VvvzaO8OT$yfeR9KWFQlIa~M8hyGvQ@^5B* zEOy3|B9UfJ-6Ql+M=|3$_{^eCrKa=QjYy%(rIjX~#ShAFx^rQgr-5Jm&4N^6DpR)? zDdW^L6|*WTX7$iVN9tC%Qulb1Nb&d9h!~Ee27b+)y65Lo_vz1*?c55w|$kEaznY~zdC%61h4?72ZT=U<@FS_!RyH_P9mD_uZB!mAB#=B8jI0TOW2wh zOSz0_P~6Ro*h&uB%m85%;mi1hMP3hm)v3Wvj|dwXWn-KF>#I}_aY|}zPO{Gv4Y)nJ#HrCyy$rfN zL-%dM?v_!Wv_}w!;f7X|G>D{Jna@e@>z+1#BCE00WR?$d77ZtcT4Q2e7j4`2A5ecE5dCM4JM91z&OOL=@i zHV*ah5J!}&{_azXlX@>g6o5|*pYPR9Yp44}>G?kGH18r`xt`9e8KEr!SY?!C8qO`M|qsF38lcjEa;(+i4Cnerx@#HucQ(L@A=MsfulM^RzEscg^FuUKOeDS8JG3r-I_2M2mLt$A<+7H62{KY3 z$qVT0WnR#cbz$;doRWWE@A>n+`}o$26WiDO-ub?L$?ld$PPQrbTIglcT`N*Q31dV{ zL0pDqAeJVNE8dAz3HWKPD@AaEM!2#(8Ss!&4p7cinFix!B9C)C8gDwCuunFfaEyuc|c<@W*)oP@<9U|1^S2P61cvCnWwP~ zbIA^xy)v_taVj}YGhuu@-l^Ov=Mvfh!`))rds9Dsj~Dle%JZV_JZ=)>_N4O7_*^2F zq%c3tpXk$;^INg3iEMd~O)$xJR1$NPEgMT2jBEPDByCxkplC+d=Zdq+>x7q(aua4M z{!y`M>Y>Ec1Rtt)u8-e|St{OUv^E>Dh9R=kZHgcS$cdcJAUfW})Nu^ zwoi2Q;j{O>`22H9IY1auDw-KFKh{qj2U4P;IF(Pu=Oz>+IW3Ce_xfPe=;}ohJzc!c zv$+YzUZ2>8YS!L*PejDM+FO0R7&TAm^t2xVJ=71Sr2tVU|CdBvD_(7RAAdr-6EUNd zUN7h0=+op}jv}}$!}@se;=M@gl07E9Pa7e(P&_2Hf6(oG({`2TkwDu+z;Utb^*@IYqZK)oWtc9PZ%5rC- zZxMqCmq_nX;@7fwp&lsx2kKklAU2<67J#06A8AJlU!d`i%$H6XrIEQ?U)Zl6y0|2m zsaHwSYb;p@Me+Fu(Ip5o;WB>5hHj0?M!Z8455(EyVt8Werilrfk5cuw2=cc+2bqG% z3=smkqws6lqGFXk%ZRu2Sx525XQaOOrgqWVEoY@<-_qqjnh?+jF-IOlXFZhajPZ1F z`HvffiHk&Fn=!BaRT{52jfFk8CDf`j9M!hi6|2~CxB>R~pqQsPz?1(62HWgIv z$xOs1CG-M6@<9urU|)hn02@Lgr+>$EiZEXMA!cTDR9Q}+*vt|`AQLe&I@L3(cwumc zoJ*hj6U0(ooNf@5$;$mfsME4!z9NM-A>U4dS{BYzai0h*P*pX?!W@6VA1X)Bj`XUAZMK~&FNr8(irBj>q5H*Ua zLKJptAEn}j-vyzyW6&B;$FNF4Ye65GP7A$bCbb~ijQr_xZ70cqdQCdTzNsF>V^dh1 z1Z;YoMi*UU@(iv2_>-%nKDX$x{7%y9`HVPzir;rq6hGp+(p6~+??O=ZL~L|=a6ZI5 zgy>CBJeMlVq~o^3(g!_wCU(-~1CS-dP73exN75@XAOMxiLZX*GV7dukDXW&o_*l94GlT-cieHum9yZo>)?C)6 zjl9p6Kz{D>hpun(UU}riW4Cu$8&+4C8`j@;;Kl(@#j4%&<%X0ozq4%dl~)dwxGO6? z-X%?mfC!XXU&qJ~(=K5bUL;mz6dDhJ!Lf9{XYugDrRC$XROYJ=!hp z)IVgy)QrKc3rFk3g#4PUU(!3s|8LXnqww{U#4FYL2o`Xu;7er~vnF|#q(F>R((o%& zfOm09M#)p$@Ck}Pj?Hf082dwPWBcr+S}eC1Q%4bb+%99++q6H+xMCS?%zvW=ZlDa5 z^9F8DsleKw<$mU7ZkN3zQKxsP_hF>lF}g8xLk0*!=inx{2}T^qk*6T3+{o|jjqH`} zwA%uUP~R**+lHxA`62EL_DbP-cROU)UJLI)~>!G#EncD-jb!NrBeDH-%-NEua9MuTaa!j^Mno zsa~P+VByMxZ^|Wi+Ft@s;@#|X>;!6<+@jK9DqVpHsM7tbl-FNmEHl zQ+so9aWl77mKWP?218*}YguuvVk~e*e6@j^N?%!lv%+3(RdZTA_4!#gizDA|$*U+W zuU%SOUg~xg7gu?!OMLl-*+y4Rj<4F^tbHR;lyBe#S^2fjg1$K$9M)WuQSdG$*I?+L z|7woeU0So%kmV_9?Q!J^G1t-;2)hbPY<5L)*oy6LdwErzyX3{P>fCG`cWB7V=0}1( zOM8OyBS&=>RFwP5<~Ew0j`<}WfrhV#T@Hila+X&59YuKtQ=npQU!cfs%`>S&aG?|+ zgaUtxK{XUO0v(Y+nKi4}?{CqLXSpqTq8f%sGv}*u+A%lgWaVaMnZCk5lVec$<8SdX zdttfV^YJQIMS+Wp4lfQ~h|6lqImjFJY$MynKEgiE9>r)!y;D=HQqM~JvTKt`IYs5IBCG)lxYcdq*XVcV!wQqOhj8c z=wBcaQKdVlrJq}NES(bHGq-EeK%lt3zQvNmb5*0gpmAlTC@L*3a7F_NWZ(z@_L>k2 zZ_CZ&SJw?zmF1YTEygTGb$EMPy2_pIM8n%$_M!r}DX+oPn5|mM>=o|9#+J}*xYn}^ zTB}_JMs=yzRgh!S{3@aXSlY%V$#`(AVWowG(?y zoR}MeIFy98J(+Olb~&s(h?P#+>(^}KqKy|@EZXP$_~v`9*4|(BS!={*{e||HwZ^JF z)T`v&i<`b*^&${0v5x4t^Wl}8hTR^7#&J;+AMSvz@Vx_qK_!9Q0uI+~Qjb>4t8CH(}qDGvd?|ZOUGrq6M=C|Y6r3CN*G{$|E_l!*gL zJqiIR;7m*$7i9suqx9WgoQu1ws>b4hmQ)40JVd@#ofq=0!f&gC+|AF|OE0bbB+szi z5q0;}O$mKCl~>omr(qy%+YSkn%tR6!c}d|RJw~4ssJscNxUfG0AK|3~fcQD`4Ns6i ziJFL*Ozs!Y*ca?+G}8OR>!d)>&`IS^w0cs!;g=-~f^I)ZjS1bKogvncdRn4Cq*LjG z!R#j46VMr^cRBqii4k4XM{l5_==DwVc%r_kh2sD_BlP|;3=H@J;60{Vd1i7E<nqqphXx3RVlWF{ zco5eN^2xRyOxq_(9AJ;ebUKOeXluf+Q;|1hZK64QCIEMQ-kX6NN^AmKrYlhZ`?43I zKgEl35h6r1)yBngrzck5fIQSA>QfMyAMiokA>*7IN3>4v?QamDxukyTllA=nG>=~` zvGHzOiAvKe%?GhB*jz3cjS_Q#zRxkfi#gy6`t;*M>~V}7Poln{pDz$qKCMJ-Cjwte zAk{AACmXb5E*|o|i~Wu0WB)_gH9i&_jgPUg8i3?L(NNWhb)8FA37@@@cahL<5!|gy zhbF|rwc+R~*bRb^{vhueV1+@5FJ53PAf1Ya?NY5(@K%vA`aP>Tx3oHFaq_x3+CTO6 z7Zny3_4m#1?-&1ykNNQjTBO%gT}|d8zE%SLYogutvKe55D}zQFrL)~oIs`r` z|7Zbu{m$P%_Ky~lTfWR+`NztsudQSw%R+Q|A!6fe5iiy$?PX{nH+BR<_=8?o)fx@B zQEaqQG(fwY(VEZA5~GIt@rK(MP7aMX-Z5ZMJo@9D%X+qN`W>=)8}2JCG>%tq>k^LE;qR@< zs^?{UX0I;pIW+&(u(r2hPrq&B!cc|(n$3GUmRRoE)44RS!oQu@>Mtx|{`-1uugqA9 zEY>~Il^D1Q--RBZT>=?~&dO+GU9gMd%(TprMoJlvR<%XlMmKC|s120Y9)ND*Zo@f~ zu$CGFiW`N6N?T#VzALvKTQ%uzMkm#0z8cv%E5}i~I+(MzORKCIndj(fc!K{TZ^f+J zf|IX^b#rbj7k4~y8D0cdXcZMmdf8VO{WW{_?AwBw9sg5f+Am#sIlcFEht_SWUB>OG zq{v!7ZtFPa_RBC{T)AM45h+`FL%H8jJJ`RD>O{)S$~VyubelE= zWG4klUW6uG!$6Md?HnfVnS`_ zl&Lt=>dHhCF#p^9S7l}$p00~At;;>PBM!r$pFhEEO4w%SSOn5`9<>>;#z9yfML0y- zNnpySF;UZrQaCS@0vB*fj%*__>@0;qPwlPCiG)87Gj}=8Tw#Ia;XEdI>fBMFjwD*2 zR=Ge}!Gg*UO~~dRnEku4-vHz{EOqdafQ<>-TIDR2A`~1MI$=onQow?Ooq$>S)w4@0t|Q}vvXi!yRbG7-t7Gr7HG4AK$MU&t`gSg*Hb`q)J~ zW*WAL*MjD2mwqpZ|1j*4D>7~PBII;5h6R3floZc+$fiDkF{a2_g_mf%)EF*A-$&&8 z#i_YLjYc-+5a|b_z5bb~(%85tWkk|qh{)HFIMT;*T{>-??Fv^7D8=_SMbmr=dfDTY z$3l^{(HIU_4UHvw6^b4&v-XptbmZ#jD9%qEJ*sV?PD5P>H9*}~ujjLvBLjNew>~}6 z*{%3Tg@x5Jb^2|*&M9O@@`e*$Y0p=j5y+q@c(ME=?d>D|>* z5hmw%~{ZPNDJRAsa`S5Q4rI(g((O!tPUcPPZEG5>ytW!}3hYsA;I52eC!?*V; zb8kKR)TQ6eY29@HzD0_a6kd{-o0Z>D?lm>^^c5N#yXW0?+r}0V-Mnu> zTgcYkSU9+_LF$V ztm69lHFAq%81cnu82JP{9s_jJ0uJMV)T|%=L3UATF4c{rz~ghcqE#|7(@FMvXSj+^ zgWjQI{v@y9=HvK89Pa&pSbT8@c5WgXS! zWu{w7JLfKqh8ul;iw$QI*M=hV8bd|pmMlg4to_TyEv1E4JNCh;zcrmBXOr@1j>%at zzp>3*;kGxlbcU8R<(kD;v_El2L4Bb$52nvAXs;U-m(Ak{7rDM8${^$8;44Q#prWav zYxcT8Wr3rxxVkPpD_k1+?_zV7om(769HPO!^U;6wy1X4{C7Q58lrS&+KwVUq*b9v6 zF`%S$3oo<KcHDN&4pnZS zuieEL%)X+<`g8gGX6>$yb*o(0%X+yWywRz z=8gxm3TIu?VlM0OWj(m)8_y24^jJM!@8Hs3S*z=+@;1D&_1q8Kxue*LD9>hqhz!pT8UVUMyl6r48dU}3 zr8~WCa8Yq-X+eKz*{Np-MW5(wDr@tYY$Xf(HpR9y_1@c+Jtth;x;DG0V}5gXMVD{g zf-inyPL>GlAhk@?+tO%u_#3IV9V#^uQ)59+LiPxU=D;jz1cPqJPhU?J%-xg^L2)Vuf_X%ahvRo~I=j zy%6JxTvK5>A17q@VOBtd2R2@};bgxmgA6y2VJ@w0zVt83#|sK(bp#f)mWEb`ram5C z9m2I^mN_Te&ear7VJ{Ivq1Y@g-1Jp{JuhdYf<2~Kv7pwV8%zP+!1(k z+we;Wh~&X3r0~nc3(qesJRL{Csl<4N8lW;8}+qi!IVR!tblT5+V8TWmgq@+aW1?gcVSoYCx zIRqt&glVnvM-q1#tqKP(3>R1y=qk(gxI9(egWXlQ=9YB@N&EA9u92}dZb*kPF2(m3;&5Zwmm0Y#5r7tsBJJN|#GsMM~O3|nbZb;pCU z@`_P&$;zvqm|l5_`AqLSE%a*$8Bgyg2T>T4v0e+XnULNQg_=&M1dzH;*R+~Q1?4># z3srV{O-`rD+gS0offkI-E~!7zq58uaNeT2<$*wXrK`TZJQAA2bJtxHYN)C%Z0fG; zx@2h6>W6)SvY@-ACpfQbfO~F3j9OExx3kCJ*>*|qlFKZsZohwCTYE+Kf~xL$Fpehl z|3AvQh_cnR>gs27WvUC49Ln;I5eGN?joN@Vm|h>xgz|FTc@^y?O@(Ro@kW^EqZ0g8 zwi1htJJV|RMfuxp_|a{I0E~<>^(j^cKIj*lQ17Qnzr$j4D~bt)-!=rm!hg zTwfPz?^-ycQewBYhHINj+IlKGXY~xOikVl{=k>K z+RJ?{+}HamU#h*O{YHE1ULLsbUTsMKeG>gM(MDfP@&gGW11}e${JxYD_J(WJhoPOh z(E4&$1C&*WScux8qg|lu@cf_jD!=VLJbc5*$n{?;FE1|s?J3^X)uWaxm;a=9vZD9! z^5Wt$@0YG08M)!DZ)vByjy?emBW{1wag#TR1yYD{G894?$(IC;+C_wdZP1lyS4Ejn z?peKS=XE!H$y-)jvRsm$3UxUh9?yq|SFOIh=j4zx)P4TOKAnf(E-xY4H(a-K*J{a( zc&X>|)vJa-?D069U7Lr7pQN-pSBW)^Vh;?6iYbM6q?v3#@S)RIZL;`8xE`7cTLm4s zhLgMy9WBp%(B*!ZrgS?Pj6@Vpp`3*YXX@kfgofDqW!m_%^?X6<1cS%0rQ|G3Lx&I* z0iQqaPU}ZOtodxMHpbg)Kf5NDI-3BqIHejR(_CD4PVnkujj%;P|D4GySuwlB-^p&n z(r_%iwBds>+`6_qSNk_!nA^R!^>47P+Y|4Ee>EGYAXlJA(dvec*B%3M#6}>KrMiIsUtq<5;gMO!vSwu&qH6*s&Q7Lgm1-3{1LKFA}w2qny#5L%Y{63#w_g%)ssg4@j*;mss)r0b>R7ltx^z+s9 zxT@5KDfAos&LAd#vQN^#X(}S3-LMCm=4k@uEHR>QsKQtv2O!M+ggzltr)Xq4D+I%h zqG}Muf&EKP|8z5I#CBAF~MjLOO*IG<94a`eG(i zz=hajlar@Ti5zOo#N0*vBHHx=3fvuxHqo)0^lOC9Qny*#q-{bFIe+y2lA9l0xbV@N zOCQeI_FtQ=@q&7hH9s9qqSh}& zC+j;=*K{^-HN_wCFhs;sGCE^`KxCN9aS#Xma;CU%ZVt=`@DQ|x14x9Ea3Q(En?laH zFu4=>Z%oBiic(el%#*bXTX2eTV{3D?L3b85L?H$&7s0s!?K#I#^Pk!pv2OC;4BWm5 z$Cy+Vn&;879W?qntV^25YC4`Q%nr;Ain=zX_$lOBbbGS>h;Op7L%pKO zk@njWr|I0HgM&Gox0A5n&EY2(lR^t7i&M~i|lG*iNw}gH#eKYdpOZ-L^iYZI% zivL(5OCb<%Nai^;j3^N2#jH%dymk=x3@F?}g9ww7mY= z^7^6r@@Hv{DRsW&jpXD+ye}bCp?bmZGd--4>Gg6z_b-zECgQf4PXN&Mdf1cNUl|6GmyV$BOUP4wv1-dXU6!-MK&CtwBx`xh&zrg!F24B z^!n=C*XU@c@fgAm=;$QnnNjLku$aOJVPCK<}au zfXp0VM#gCqWRW2kcK9M(=$lt3&tNlbeQfmNtk6jYa?v1@3V2DZYdSCS-}kvVHwG}` z$J|T5k4n>e#`?fMU0O|1Y%r6lMsPeV{^UmFzn4Dh0{U{8j)}Ls+H(iWYh#blAN4I`=WPHr=XG{gdyHh zv||(`PVx;MM@ENeQO|%VFp3@;?=A4PK-$7`izb=YCKLhJAWvjYr#-!o%193BW`%Iz zgtDaX5YJFIIOT{mrEyU;c?QP-AuyeE)J#nz!;|X4Au4AS)^*}+dRx)RdEcIEhlGcC zdFr&-Lyj1w%nOOnHFZ9{-P>qN|+)|kQ(fM zdl&y}U;CW$@@Q}0;GmMzJ2=>@f7fh%rDf$MeYK5^{1^DB#n-aZd*eP{mruQ9;t~Wq zl=ZdW|Am46Xm9VyAD-;%lOOt%zP^%$%N7>*)n0qcwKcWZ?!LAb4~7<&{Ab+TTjJEd zz&AKcGL{XoAOA?%FzEhYinRt?Q~uuzMD3*ajb^nOas%0GV80BSf~EjGweUm3QB8g> zoZ=hgFnYr!?N&OrJ@nMJryknIvuP*WQx?m8d#zUOR@zKwvsn0@xZ(G2d+5Y9NHct& z#qty$+`E@v--_4&L9g$$rp0dPv~wx4GeMosm9l>T4mN4S_wg@9{x%<)jUT^PTP=R| zzWnHQL4H9K=5x$HB<=W|25G#))F_7`9VV$q%%wyWX)2|24p z6e;#J`QbT2UE@KG5RUZNNL@$LXX$UuR~BtnscxG92xmf^MHv)Z?EQ!buu1op z?&ONL8Sok-K^%V1T9r3y5&s`?Zvx*|b>y_Dvy>1p_VA;+?YaW+xc{NXVOgQSCe_HwF6QjlO^sI}98=K49g6^&HfwJ-g zR!isOYYu7SCs@3oihUSA=wBV=K$s2i3)3=*gA~a8VNha=axi79Jv^8=z8z8AHn*o~ zeEpW;p1n&83THp|Cjw$$mQFJxD=<+-H7xX`pruXXdP6TNDeJlAU*Z7qvzbD;F(VnTWJ5 z^4`5u#!+(h-E*FK?U^}ubKMciXeUcc5m{GSnrvHI-kwiWPbS3B#aNnj!QxZ8Vmck1#B7TZD8a@RYQJaFI`8FjmJEi0!1q!fMBw z^RQN{RqDyv5xO>SVxs&==xF2qzGUD2#-pJl53OF*7f*&-TNbSDdcWXzL?oxyvrOkPs0UXg;W=iwHug?_|KbO_CHm1JK(H)A zMsaRqFHycVdZulq&s{mz0JlSC_6$xVjPsw=E5@O6fd)DP3RFG^9f9;d4Kr29EfF0mHtr`)hy50x#iaD|hmKs>v)+TC${_iz|2 z$R@-6CJ5n;m1KAzbsd=@i1+k_q8luu+*~3gRvaDY@g9~JBg+L>`QU*UqF3cZ*ck{8 z_J*RmgJJ zk}lYHlaR=A)v^%{-Ia70!ek_(j#(AkJ+YInU86NYmuJ^Z)q_O~@sE zvx`ehp?gRM9M;lae_l>-sDl05|6dcA`mJ2&+sY`_wayYuw*%2DP^Rw}iC4bGix+8VHmCneBKYRA#BDr*1 zcVul$X1?+)SD~$<&@$?qKUybyufOl+a^+ivB_)NdT^`!C!Ii!E_=;?V38s+m8fve` z_(;T=Z!PrBwnusq*y64V=gGF}*(G$Qh_#v?U-PUH?lFuIotekT{0L`J$4Rw`3?n1| zzx1$UShEOjrBs9;K4j%zcQ^KdgMNK?pYpwokxJKR;^8MnwK+j=ZJpifskt&NK;n7d zIP?shgxs!RsL<*PRJ&BU=BVXSNG6CqVQ^^V>Nt&yj<}0yM}irQQJEK*1-LB2Ha$=T z7lk!N^?sBI5fTVD`>|pFSiC4i4?6EpZF66c>8+FB4b*a`Jy79CoV<#8M`T-+&!;=n z`2}MvO|`IsxcQ*cQP6Ij4|e>=v}c@BfGxs(QB*&uuYyYvKf(z}SU5$L4JBg|VirAe z3pbM7sPfkI{t*>E6#~kZ&Hb{#E8;9i?jh}&=N=;R&AqV_U_VY#hG_x?o$&|mbOLj$ z0ERmxiT5C<2vecP$I{uT=-$Cf+T6yic8G5H|WzhU^>m;<_$T@I1NG3=t3{x(7 z9!wCAIU`JYR5%9+J0~PkArou5cYznOf)E10D@;WU_Xva92U%)i;TEawgyX|G>0W~2 zV&dWpiCvbX7_vH9+%XVIv|$E7ZXVL6jJx21`B+%K5RYAv<@aGrzA0aF&AidzoNBw7(-ofw0`lc{G)koARr0VC&VT@&T5f78=6y+6G*9cOrvz{ zLfSH6hzDjU^YETdk3ExV(}W@TS2#8Z-GSzhTO<5erb0wo0<|b1I0;hW8bPFUAOk9% z4AK;^GmxSUfC;x?4Sqx^I;A<+1f|#-lfTZ!X;$0boiwtz{0*S)& z%ZL?3pdw5_*QtTnGcmg3PTMvx$Q!Q)BkF+~kh+0a_j z_H`K`tVcxMEasy+$C;<4Y1zGuJm1r(b-EgvS&naLNsJzIh>oZqi0dEZ7ly!df>Y3f zRp8HU&_fsCbf;`#vjXK{v|-zXF2@%@QZTnn+8nP8=G*JDBKw!je)I103m#q?o7nb1 z4SQ8-%IzO|=OMZgeTVgJeV|5Jz~0Egy?yMM^23(4rlu#ZO78mpQspo^*V2}Ur=)s^ z9V0k2AEd>g_Boi>B4}W%MQl%iQs>EG+2$!ij_F!kfZSQ(&4F|xGLo@H?L15UlqwIh z-wqy|{cgANbnx&G{`uMH!QIa;{UjUN&DPhaU%xZ8x&dkwEV;3>^Ty6Mzd5jlWwEA> zyTfeko2;q3`K5s^%0=ZoZYa-xQ#s%LcxGt>QI?T5E}wr34T}5H+j-VNS^-Eog?I!= zq9!ZBxM_nKo8~vkSLB*kl1gd{*Dz^nE0oW0mpnj`u@DZ-WE&K4?zZfPEuj)RKxl{{ zDXZKZk4F;)7lKqZ0(s$hev2UNLbRA+E%D0#bm?!2oK^0naJba!NNvNuhaTxp1e05b zDm=B)$6w28-gf8UW6c75WldeD6SjPEMY@*4ARGH5pVMcx~{` zZOvJqZ^jV5=P6v87H{gvl`aly5Ob|j7yocpqBd}nydg8w6#c)Fa}X2%U(c> zvY!wI{eBC(=^1^7fP8&v-SJ03_Feof$9r66Ftc z#?U&YJQJ5)rvOYw7E73pk>xPt=_I!!e%w4 zJm+>i4(l{*B4CGliMxPJK5LDadx! zwbY@6pWpm?f*VcP*?;hsm3jX`n-HYfGtP(f6MVV3v9z?YxxnN~JEt`q_+dlooHc;x zht-$If;MZi>0k{gU^7qa6ikR|{R2nG3_~`eLaEN2dKDcPRCI{)%rx;6tk`7aX>6oA zj0ht-AkNUEprMp4UPMCB5>VX}gb$7ChRZZ>A<|MHY&s%+&mGABk9=oR+2z`E?;h6= zJ(b-JY?E*Z+DqQKNo1{e;v)gK@|k4cs#SeBJ?}-x-T~qF14jYGMibK^_L2ri3v9J; z`CwN9Nw`NM<3<<`5768|gLGM_4k+@Yxt(Jh#yWF<$isyxul{8qL}Kw%bEpi+9Jcd* z(ry7-O|~IBz90IW2=eh7v|4aTf#VL+!JxdHU(`s6gm_rI-4Bt=j~7I1@r!c=UsKpt^2Op{^`a!=O9Q7Y+k;!r40t#!Fu+_+<$pk8rOuv zP)K_Du`CkT58rytRrBU2=QMtL`&IiOnk3s=mM-6n2-3$N{+GGSlstXDDMnL+{m+E_ zqk;SpVAX7G->^K7d<}(I1)xc3*&|E}3$}@zF2N<9f-Zu>5;ct^GP;ZU#axDwwKj^U zwE`6+i}(h~QarWdd{p zS48ugN%u}3bHwM6Cjr!-ypSOIxX(wj6faSl3ywpi$m{;Nd15uDvC^)t_Df4?k%IFtfxS(cmgVD2i?L9oQe{4&*n-XqW z%Jj5br$e(l=MAsgwx53x&5Ai8-=Z?r9x_wwZk}*8$`4X-r9?_Sh_gjGs~NieaWYK? z&+*HZYgaumBQR4GP0QAuT+p*X^@F4}gA*uV52|_vv2LI~m;UL{t;&lu<3hVOiBMgx z7!axp!n`K{nMAsP!m5(+L6o28tN}Qp^AbIA~O!G-lrvL%#<~?okjVJZ> zz{`iXx@t_j{~xYaeTC4)-W_Xv4`QkDbw{{&5a#sl3beESx6>GxKhJr90m}ZI-s2X* zGXS~X%&*o+=Ptc-NdG=g{_)iI>eI$njO{om|M`^OabBU;RvHGS{BYuLQLJ&&&u zz?3*%agyRpO*gOHbtr!LaQqN|%mDi&?jBBv_ol*5c~LTu3B4u^RA3drEP!fa5a}*1 zJvYvW@a7CXRS!}`qy_^ZnK~Bokk06hk!37%82hMdcqaVh^P}soY3-;x&xjQPcbK$5 zVH1!kLpNLz?WwORvg)0ahmfV zVui^(z&oL|`zSVzAG9xIG0{F{KB}G8gU^M6Gw{5J!Jaq?a1rDZt#?BK;J`hiX{Yy; zOl=>8@fdc@G2woJ(7)7U6s ze3H+@)O7(XZRWZNKx2Wzx>}BM<04dgPk9Oo=5%#=va^f3I-8u%Vq+(7o>Fh(U8l3D zvkMZ!lyS_S-W#oXm=$=gT6E3p_NMWp4d|1nsL8I*;_PfsSJ#|^0*|q0zM#s@y4Pvg zV$MZkb941R2b^#&=L3B)QJm zOPb1qDKb!hT6#X0dG{jsV{4)BLE{n74VGsHn0TJYy~%OkgEfYu0Hs8DG4wP|cZf68 zxRW`5%lBEtcq%9eIZ5Krh;mw{xT)gzdB~Mw_hK9%V<;DF^ZNw7iExIMZ!GXZdDu(P zho@) zBOPz5(y|NYgRi57yxc$zx>zdxT$>xwh6D3sXaxmWeVp1r$q`I9_OWsH8|DPlp893d z*yNq5gM&P=*wUm_j#5yhUah5Mm1-5b-R8$u`u0oIO{PsYWgXonU6cNln>f&pGnj=TuN+|IauFVF%(hfuWTn~zfEwBfQ2Ug@{d-4MAK)AIwFOTIEHf0x2X5P#xYR_0C|EIR{x&^b#OFWJO z)*cVZD8pJ=I;Y$^?KZ0_Ypa-Y&Nj?iV7^+tAiR|b$$GDy(lLyueLRe!Q^?eb5^jPX}2=Q!5916wH0k;@X26uC>}0wcuLA=FSxGKc$2x* zyZT%R9&-+C&QnfE(x$+PJB$f{nk7n#mbxIgDcHg6D3+xutPRI<>PTCtEf`HkgLrm2 zjW2#A6uTLubzQ~kiu(MHj{JIDM57t6l0wO=o;e4=&%1EuAchmMEJP1HD%AyrM5Sr4 zk#M99qr5c58d8)Yyw&{?3fbe!h*WEqQF!=`vkv7qDjTodoCa}jXs*+V2Nn1~2xw8S zZWBm$Qse3JrvPaLxljcdc-77xl8XYss($<$B`p~)E3kL-qAgGbM$F}*BZhkSreYAg zAVM&Onm{`TG?@%~M)TfhlFHm+6)d$li#b%LQrZEL&tLehn8Io*vax*vbUq9t?uwud zn}r}6p(ik)&Zi}1{ZpK$I8Ud+J^>YM6OXq1Q{u(#Q{+{4R_Hm6I4VLk3{C(yS49}R zK)-He7Mmir!nWb|2^G(j)YItsQ}NM1Fga6ro!@~-&yyS?1ML;^^QRIoD*u!z!j3)I zkzj2cOe`aP9g#c&+L_6}YDl1>KYab9naR|EVbx^pxU(6HMdRm$yaS0Lvj;9?PFoO$ zZn(5LVVrhjXF}wp9Gy4{)Y;7(({#BZ97OQ7QMf|BoT*Y3kMq)b(aXwe#EhAWmt6KR z0;`K^B&(%)1QBalGt)W*|7XQN@qwmm@hq_OM)H&QUGb8w4%H#FHfT>tH5-fUW~8o_N9bUsQgXhg^TeIpnEu*kY**=DcoZ{iP;z97tbefq3UexXa^inHg5uHHGdFK zy^n9OZ?YdGQtzifN3;zq$4x15ifd?#7SK6bL;TQ`k!!w5IweSx3gi9~dG0?#hI<3H z(k+@KuQvt9BtJcX5qhg~oO2`r_%!8!u$~(I>FLlH2}UWMhe{*F_n>o{`c3kWH+~y_ z@R<$p5K8o)KC{RJ%^Vjp^jAplF>Zp+m)JJwobFGUju=T1w#AYAoD@$Q%@H_bnHt}UuTtLG>q^%qJ*kQAvp2{drA5(Je}gi%6kN?VN#*PhC% zA}k_A&A@i1IzH1~Zb%ZJL!fP4dMrdEs4v_C|DalIX6%hJyI-zHB!Qf{Q~1kJ&*^nd z{nlSmzt~S;r7zcWDOT|LU5S}{hoP!G@y70i;mi`_rh0)NK5{Yz1u(JLSeL;#IWHj_ z^tTYEasD!}024_BYrJ95FZ&TUlS^?60hGD$dF(DP*18*vdX)?}@?Z}FKx^|Q$a?k` zsYgPIb{v){cY5yJnv^hqz5Y`V-`==l?x&tT{m@m~+B3kxqa=`^;V*{+NiirH zw-SD*ak3Di`YM2Yt4=tK`=CWDTb5%=DM$i z+WY@GaALITpJ$hqFprn)G#Wvd=GBdH0Pg28}w1Y@D*Su07aUm7IIV|Z=X<<2ff2P8F{(gW?spXZR^4tYM!cJ{;AhCJifEE z@^9*DRx@wG;JUc0m=$y_>{1SIsocAOjdVP}ebu9XFgaj;^d(DgCo5m^&8M#~vv2&& zH^w^$dZO)8aBX+z+MrZfTf?sYQs=<(jqyuoGp$#uu}ZTGm2uAnDyoxq3!xAeJB;@H zUp}_qPlQLrC{5gW=SLa*A>8m&7m-$(ZHIZ8#3p!QbI^Hqbsqd7zn9r!G7Yn6k31tm zDG=N;rA1N|BNYPA+Q>E`6>7R=q%A|v+B|Gl`MoJYTNG(XJf(h)9))jx4fT*&Dm6Sc zY=K>voJ>MiAa5n|CO}dV7{uY7Ccj4#0GYsfmLZ-uQMfDW=i$epITW-Wqzo(5P?B|8 zKNL11xz;DnpHHm6!>m8B!}5FLeX~wQ;z(^y$mdLqkDG;{CRFnod${V>aJ0=l3`(nG z7`f_-iSeuB`#Ad0#>a=}C3WOX{SZa}aQLOir(q!7FBG=g_yn(w`7`CxWZ{j&eQ?a# zvilSFYk#Jkq13Itjn5g*&>}=3kw2^%EivT{-M|c{o?8^nLCF-%xy9Jfw<&ZcY$AKp z@Fn6mI9-t+ksrZ1hrMrv0y57B@rxfMKKLLZJ+57Sa51iqlXRd?=!eMje9GRliijrU zR6zB4u4kj{B0kf*LU|~t70)*T^+Ek`dAy2}qgBPrhnUC?7i}0a+{|Ry-~qO0L$tag zUI`^uWxS$#>T69V7BIUpJG~}QlZgw5m7ROCg<=Rupu8GTLPMM}xod=6q@PZ`l>wwE zGRYn?xtR$+F|&1-0iO>?oh#(gTFv=FVAGCLtOz&|ekrIxLRFMe=m_RHk}bX9`c^!A zL*=H@tB>EmZvllA!4GoLZL3New+&e80t4~qRxIn9Upz-%-gndD+5KDU%T^s(#GOVK z-0+FxJ4?pL7Pm)G2DN9w>Ks}tf{q^t9rp-tZ?#7x%cx>@R92N_?Cg9AI(;xjQW!Du zV2}i(M2U{HuGc?(_UZMOfo+W?t8QB~c=L%Hdu26U_4nQfLhq|l=A-A$G!6Fck=#y z+*fi+|L!7>S3^;Z*^rk;0{Q?46`@6G7hrKFp#IZ0^}*rnnL3A~Yu-y&C0DO$U;L@f&iGwRQh!4M>qrztTFrA? zb|jarTx+w1qidZVM;^Uz1o!d+Xf0E2A`X`{<);(RF`(Tf65bx z7*oJ-dfuk0mYoM0_1L*&W8={1x7M#6NYrM4L~*VvSjnON*P>Rhoc5a9ylQzzm%ps6 zr#B5J?0_U_3LZ?Xe~Pve%gM0%XISGVYdB*swcwdO9sZ*AMUd}U9hrOUs&c|&~BKu&JBeWl#gm>BxX$fA~38&k)Ahy3rbVUqolo7=fMj7SE& z8X!&Kv@q!(0gU)%KOG+(p3~GcXLu9_j=sGejBkvq1S`y~v!5#~3nI%c^HMKhC5xFT4=nwM$9vPQ36!;)XN3 z&SX;k)cv@<3qSPsN!ljpQ?sE`pKj;?$b)!Vuh3_df~3G~WF>x)Qe=mXJtyQE>N&1d ziLQ5@*_GL~(4IU=-6vk){VR{M3pD+L#vhem0wmxFpf7?#6uFt9*0dZ|9*a{EzDW`ZAZPTSy{??d$B_~k5>qvK-4Qp9eR|c5kXHcQ2|)i~XXonx7_XG`c$PamH(m~K zvG#65&88Ca$AoH)cDtIXIg-|w3+EvIW(|mhsLW|OIx=+lj)xySdT4mmLYJ)Zj>AJE zska`cC%U2hvvvhJbNS#veM5cS!hxlG`6UjGLH57t@qf@e`URmY6mTK;ssI4) z(?c-l|%7tc=eEEolW5GE%j^0KTDr?nfF?7X~e z3$kr4IMBHIiCgE}TH38mD^aa#*~v3syFWN~eW-NPr=ENI&Ol;Um-1w&rek5(Y;Y=t z`4YVKjjvc!q|G+})+bgsTzl*OaRfgL9hDeg1F|7*F&Sa{oJm_oxi=wL>0&Q0{{~~E z>RX6|s1D;60svA3edw@n)p-a#aK9RLjFCn>$AYSuwfKX%D&zI!m7w7~rhQ5-00b{M z+yxS^7@2WBIRz`)+NBr`8_yCj3l?C~R_h|0>~~wqw@hk{D=VO`Sk4s}|MB>aMan@a zv8(72JUxOM$!de3jh%z+8SV8Fe!@UK_HjoL=^jNT@bz*$QnEX@zR{xW0rl@nP$PY}MRn)$y0%Wg4 zoi-4AeoArj0^ud5s>JyzrS@6PSWxaA8CjO8(5V^eoC3n3zfCBI5*GJJO{SB@vXPNJ zho*pZ9eq?ir-aUnB3jM$Pj0Im2x`txrn;uJ%D0ZNK~lvcSE#9GNqXZ5J`R=4isWD1Unag;5g{x1iiiSA3fo{wung*rWlbSBPZGj{XjpQdol zE^AWWFKaSK(7L8F<^3kos*8R5XV{CgaR9Mm)2_`>QcC@?LUVXb(82yh(6hoabuE*= zgk*j5xr3p^E!{h1+3^*7^xVj4a~wEE5WKA5vJgHzs#p3p4`{IgTBxG9CJF4mGTtB(M#0w6NCI%8#Q_<;Sa8D`D#@fgkyQt5`_=F(f&h zPX0vL`ISnouAnbH_s5KViE+-@mqJyy@kh89x**~=xW!KRV{3j6(1&yDBZ6e1;Nw+< z)KEa!zwuL5B;8w7MV=2uuqf(#tQ$VG6#q-pi+ z(P~)pir}P6qgv@AqXz*B+dXl6VOV;_+O_+jVg=Waiq-?d!H@D9p*T03GQeXr2}JFs zWZ27L(}N)miKg{p-AT*|yC86Nj(=U#+oa)`!>!~qLZa92wrVG_9qMN2Wp}cqsHB_{Zn5R%IT+<${&H6&5#W%)g|>T(Sd7OLfKR0Ij0@p+svA_iZ0d7yrK+E)h= z7~Pa@Q>#&;GbtKaNOCDEGlLZbn+FRnM*@{Y03d89fu&VxMy=C#$VXAkt_lkk=L5|b zIyMa#ntmIY(AG7~+~mg@p~|ljH~ukxt;96iKr9TU9?Tf=dlV0XAG~eg*VE&rnin;| zw`M7G>D8vaT;QZEk<^oXMjs;dStvU_N!?KlU3zHmskNt(iC*tg8x#4fP)0v49mKd! zf`?LhkXl<)mGB#!8Kz{fq`>Ft26Z-5*{7>SbY%#85>{+pgaFoFops&I&gz;H{Q}|p zROUOWueqaGbE4{32c$R1Z5}^q?7eul8Xy$;LPYG9DYQYz zYzewBsKo3xN>d1<5~cd`_$bYO8IH`JHC6a|_P`A{9C((l*ux)$BGSu|xpI>AC}&se zZ}5*W`v;-hCS=y2bOsfc`=Ll>y{SoC@4(ML4YM>t$vf#3%=-g!I#9D0nOs ziEg_+Zi;|{(Cr`p*tUoam7d@?KjQeAOK4E8Z2YW;d%|Dg@R5R3peu8~)XcD7g08d( zZMtF7>(hKG%4t!V)?Ft5{gL)b%#|jR9|8)G^5^~-Isq|Dwk<(|GqH2K|J zN|Iq{G6(4V`SYgzO6Ty-G#Q<8$z8d33Ykh~>{zFuX-r(a_`wG-Y?;DiLNKHg;`6&Q z*9pb-o54tdUFK4u^4~`$Cy$tRE8RNYIrD`g{AQ0)BjdfB$|{=uMD2fwA~R!r)*n#=^%(^g^8JVoc79*}+Y_<3Mvq zpGLzpJonECRi^Hd`%O^sWIOzEp!y_FEH6ww5{1;7gKDyi3C$Yd1D;hC>-X$l+0s7) z_%k3{3%4#EUOXeRpj557Jl~<)KCI?DftLBshi{dTg?fwSI>Tce$YEM~cPEV=V zndkcJ!46+jmX+nZeX*`aU!{dfQek#pf$8#Mzie7zu}Tbol4Q#+EG=kg@peRxERB0@ zDCN^0nm_krFG=+!13^!zBd;LaDa(>%$**;-pI_;MWUbPp4VF!i$||6TA#XakdXP=d z7LeRF>|h#VG={{j&q&%X58 zEw28%*Y2%mQC7KbJ8N#NOUBAt#va@^FXh-mpMN#84QcMKT^48kFl>+d{vn-#i@X+? zi%a)npHm^@u#Y?GLhc6tPN@gxFc^7IqexiCC}aZp^|cq1lx+;cxSN}~5Wh|iwZG#p zl;0U*v8lgm=$+yD<<^rVr27!T83G98`{cGw2t2TvaFeE%`(5jmOe6eSiYj@X0|T8f zC!C{a>5XY1=)k@EQ03m+_f|ecCM)%l=!wRElmiTyAy#Tu|$%{?_m<^=3W)s(KmQz@L_cY_UCECk*V z*QjF5t%f+x1jSJKhP@lge*W`vIJB1k96~=?v&^9CZi&KK@MU@==TQNozUHX*jEWOV zXshl4GH#}K2oz$Fx_F6T&G;(DtzsbcV^L0bCQ!*3NcCv6btL-KYP?*gSDZ=kC4faz z-HR0QMP7WSQ1Ef42E=H|kx;~L&IFW(zp@S20*&P6zb~za7Z?d%0i6I|sBE&yYUV4O z%@c53jwY0Hi=|hwvm{EI!jeu(G5k{+5h!m+Rmdw$qB;%UkY46xRM8qBr94as zxzJu94IjFhc3XS~^;WpfOwdc>b!1R;V2ZSX!XM)!KtkU^BnjetPiBCS@d7xaElr;r zm>I5@DUu*fXUIl0n>cV&&X7C`P)d-a2wn!@MX$eR|Y(+)2(&jABXBjte!BO^=^_s};5GA(cG zqFuJ95>TT??d700;RVU3fX3me)Q6#;k2H=sBtw|uRmM@|0mDE^R0PY-Ym-tmfyr&t zapXhow_wjrObzy?LJaoRZe$eBi_MCiak!tq3Op$_nJhz`)k3 zzGi-Srx0Zc^)eoGK@2{n%?Jq9HL0p`kf#06!bk!Z0fj=@THJr*uL`8p-lQvhOFvqwb|zWCeWNv7zvGtJAjD!3sT@PZ9(#P*4)fUqU65NUhsxQ zW<9jVHODlP>vb^`Ly;1aHbR0=xp>PDf3faBz9W=8!ra2k?3}OL=i1XShn*Z)Fu(m~ z2fe5K&iG!uWXD-C;e32(Qw&>3OiJGVvpY)SH_M>npTwHIwS+#rJ zFMfDSCY|IpzD@VDcHEmTT{fmMTjuK!A-XUz0_hs>Drg|DBxKr~=^k_Aa1G$!6a3xoKs7XoDfOBkia@>wKR7{l@G2 z2l$Fyf^r)RjvN^);#!%(v4us}U9R|+$iRMIZS722hI3c1M3y+PQxq{Zw;`u%eRvsn zFI=Y0pQdXVo)KCSwbOo1x~>8FaYe*bFl^B7P+%cKqtosa=`+v-(|c9m2O?YIu3hTL zmJb$<9XYZ9W4q!RNUDPhukTXF8f}@Fz+h=k#M%+#41g=^oN=Ulpcsrg570Eguh3uH z%G_{dlR=|q(x#}xI3cE@triyKin6R8{C^GC=EFFr!mK_$7fXPiI;`xd!>as%zX0sQ z&Zo^$7wTY-&ItYG=81B8wL_WUm66~Ot{?3|ex7>W=IqL4rb->-i(jks!PrVU`fIs~{*QTSc2FZP3aO3Nh-$9rO@m?MOhZ%~v(fj#AjHMHa0P)w96~;;{xI(3NOu zmfRQxPDml{BX6AGz_|5auwrW-KQfdPjkQH(1%(miXj?eSiw$tTet^7mUlg1TlQj-! z!A+lk=Bb4>OXg%HlUZ|?)XbY$%4-dz-YW9f`-}L4DwArGsWwjn=DF~=PRtskc`}Du z5GnYdB67}(df zhmBEGQRv#+vMt`6vNhX&ycgvjsOEinc(y0-V-J-N|sILHWTGw!3(} z&+Bea+>Shw#EVmD6I_D8BRTvT+)w=;mhbnIC|nNJP+f8&RY+OQ(Ij6KvW!*^t^Qdsg`ddscJ?+qBx?TJ~&G>*z~{c9A)S3phBS^|pCMT=@(jB$XAO zs0;&|nt*st(BTPirRhD5A2AH+29RqB(2)ZGp+kCKgNzc>BKbUW>g#Y7BBMHB#A!Ey zHpO^{xS#bbw;kbb__ZQV9E-(0StEU^IJMR%ovKsbf8X_`dUg-{?!%U{FYS5ym38Zu zBa6NCzTSq2f1TwH(>HxF{wrGp_gz&E|GsNtsiGq3xAl0Gmrr1O>|+;B?74-xaF(SC zCnj`$y&O?6JkKThZXgPRXF&m7RJ~oIR`7B(Ef@sWR|A!4P>6x9lpaq~0f9>>B+%Ue zw~Yzh#2?QtKQRGGOxx?E)5})<7)X!kg7c0KX&NryA4&n{p#}@QcaZO6rmm$rlKcRd zgnBLJFo-ow`V1@dN{C2;vJ%6AgSejR1q>SLGgWVnfXcpd_XMgQ#EXgw7M0T@#1>%B zqMj}^ChR08_Eb?-mFHnBoN-b>k!w?_(3wr-IGs7~X1-)65wMav#WNU?pAx^IG|EXt zMR0|vv&d<<w%XNDqed-m;-YfyHgp?mwX zrOhqe#bp_5(!ae73QYaomgc3)wkwBLwY03Ns;*Xf9RYtA&Y?xLn*Xdp(5~iD1o~Ly zUq;d(f5>1ieJ3Q>gi^cy%n|)P=?;{)wNYUZe0`HV*^U?B%1A;)<_u`82=|x{bwcd= zX!(0IUp!Hw$1*x^&p=J{aPc7;#DjcB1l}K{8<>qWn_rcLP8t?MEZdb z^C6pIT}p(=}^^@ETEI{kkvZBS5(e= zePATf*E=@>RQYP&O6b@HT7+My&{YX574fR(a}WIk7b!r?FwJ$|Y3y}OWX_1TBU5+p3_A6D@qCZ7ig5AVP z5^5@!rEw$nJ;m?|A5EUU5sUz7(eY1Z!X||Ei`YSN1s3W8DnpT>f$mWHPc`P)*p7$@ zM0TbC@fG+-VON)o=Ku@}R!aAY_G2J$(!J~?nnS%jnBd5b7QuJ?a$gcIr<6T{2gh@{ zKv;mFk0N(ue3mO&1ihucy^szEFs~xii)-EHv-EbhrY|Fgk3>wpO)X_47+#>Na{9%k z!}_Iu!On7NP=8Gq(i;==QR1$;x+)ZzpT7LI+0FT|h2mqkYMbXs0@<2DC_VSad$pV<1YSE@)Ms)vV*BssIW0A^kp{h5ppVeSJALxGF=`vVj9UzA7|1Rcx}* z6No(U*aPi#p2FUB8-KKMU9a@AdSQ6$(mNUBW?$#uEK4^cE_Irv>pN1`C5{2{dlNy+W;KT3p3}nQdlPV7uSnW@bt*2N9;nOXAtr3FE z*SS$F;G!R3;BP?Y3*aBX@PG2WhS~N>%3ElJ1v_d}s&I0Wo#h}+q6i;eU=twOZYE?r zhXW);s;xem3_*4hvM0$-ZpbaONLtd8#041$7rd32A>|cINdH7lrkW{#z@M_SS&qG! zjTsU|X%<-|C^$(83Qp$aDR&v(2U*p49qO}$D#@Gm>XjkulOh1eCp-y}48pAI`hWX3 z>2BpoL;EKEBklmHGGA7HZTJ|GcjMUMS7QbRiKM0-vtQ9Xm~=+Q<7s0=R&TS``50v= zl})?gV?#MPlTNe|oj1_3QSh~1cr*mjm%5_3#Z|YeBP79C0-buA=c3h0%! z8TBFsC!mm*>;0o<0>Kj^neLZ{egr6KAUIG+n#r0BA7YOJn6$1_RBaUcBm*cu4{c`( zai)KoU->`gcA&!0x7i33=F8Wgmg*iK71H+MlTqsi#9C8eEv@% z6Y_iA4G1skPRj3HdIzBz$fHR=Jg*RXJ3ul7MarZO&?Bl1CZW>N_Dj0IDLqj-?&;&0 zJ_h9NL{h_(NqxT3@K0%xV29rmLOgKdrm;gXr`{se;0!flhv1zA)|4l8{8P*hMfa<@ zXf)Kg4J%XFQy8G9Uj)mDX@E|QugOa#fEN4$5QLx{zWh*Bh9(4eLLt=YATC015*klR zYf!7#$#(*1h^m00B#6X8aBrGvQ0TqGy;`-z@Q8NW90Cvx1`uFG*w7L|-U-*(J|fCoY3PIUR-z;{b)(TjZ4b{#LC69&jcU+5O(zuSOQ(ZcyL7^2f}KGbE<+7a zml1tTrvO+I)Q!HTi3Vz3Of&SP&4GDud@g8qr}dUza8SBZry8wE_er#OhF*#CK_|%9 zACY|H3NTPTb@3r4Y+C@G{P!4`iWOtYaO_Rq(!ZputK{ltf_AyMsW3;J> zL#Y{UEhdNewD|_0%TIN<{Q0JBw@$ScCEz0fG)x<0wc0$u;CE29F$?U+t`3 zjJ-v)7Umg`@D){07OR1CAy-NH4D}+0MhZ|&DK;~W43F|L(3%5cTo^fCoTB##HRwy@ zPty6cp%2oyqWS2W`(koUt{q%6_~vMswx4{4Qv=>F^@5Xw&~}P8Ob8Q71djKEWUqu# z!Z}uVDlsK!{ro=71jx~41 z+jtP;SiIrLuGV>l)rsxtn$P5HIXQCs1J{T1Hw*9l!G<>~*YDZ20!iig*ku8O8#NiG zLqY3U!yX>7hwU+c3|BT%xgeo* zunsOjaHVKrcoB=@J9FtB`t1d43r}(UQA>84LI09={$9%*zN&)75BlbLDtxxAoP1|d zQBJOGarcZ4B;4LM8{D|c;PhlU8e6Jl*&;Qxlol0c=jRs`*$wNH zbW^)EjHCrs;qz{$ii0xdFGiDzN=jE{rVaJT)bp32PJU01dD1VqKfR%k0&;9n{xWQ8 zwB;7dEr^39>!2tdM%5fWi2Xy-PYBIi7K(<1+3ECYC;PqAskrhR^A(p9FY+6yeB8N- zBd1RvVb5i}k&lmRG==(*g`|~j&1~7tvqeMD12Mt28E2>1Ddo_#ZYocoo&dLQnWga0 zNQKk-Qu+yq33$yB-AwDeiE8qUkkCE4U>sC>1Xau}SUKihFhHN_Is)b(^*1|7; zlh;h_L2xIMoxR_+abu^{y{YBM)mL@RPs1_4>#D1d>|C*|smak19bb3#=9NgiIlHuU zevkZp<^H)#tE!i6TTNmaB)y*|E%vmwF;=0=_QZM2e zf9yBG+Opz;ysX@8S8je@OSIgD!iipY{?PLF_UuTnJJ0DZ^*31aoUW4M%F?|2+=86k zth@qGd2O(^((B60_7oJ?1^O2TXIE8bJ6t7I(!EAyA3Iwas=Ty3dCOKjOMi!l)N&~= z*Oix_*EN6c+}i4r*$z9)%5ypLa~pC1uC*c?bk9+k2byKeaTJwQ*Up_gzYCvt<>pCE z*#&^ok(1@jayabHJU0MxWpQ+?IA5&h=OPa{j32Xa2VMv>e1Y&d9#{>c-dLDpN+s7G zjx4zNX-ea;c7dvSIEsCkrt~Q-y_n}%*q`fZ3D%Z-2zfaK79p?5*40&E79!>5-;QP>YYe0XY`?5YGV@k6=_52l;~}Q zYIy6NCE2%?{{8Y+txI)0t5M@Khx{5Sqp}_30AX-e%q0#Y7A=N{qPO@y`O}GSy{3$Z z{IkP*+d4*uCc2hM{aJNQ?Y<)N zpAcgc{kX{2+R&35)>}A4(!NB8iQ;;N0?_?gdQhpWnMenm;TLb$1vU z4_{4p$#=G2$Eo2Y^cp_jzPMv>cU9G){_fmZkCNVx!(4|n7xpgr+h#zAeW?Mbc^>gH zoD?TW)Qi(VE6i9`V5(r$v)LhTAWa4NBT^O4)yHqTe&OKY!s~B3zUGOAzg-;|z$HAy z)<S=tmvKJFR=yPJ9A!OnvOc2nb<>F3b8Bkx17a z6I`d)-y#L2x|R0?>$!EZYj^XmzOfa;@sSQY=?ht%ExV(6%1>_EzIA?2-XpmyZX2}> zKjPRnG`fbHLuc3Sj#gID5h)J2)USt6bnIF*F3ryCnZI@WO{2H1$kE1aAvkNGp@T~! z%YYM8cqM>td!m_Fpx;Z*!HMaRCi?T0FA7L^DOiKBsqu6!=8n7jvS0A9I}9 z0@;vcFj{&m$Q;B&rqT^T*@MtAlCe1~GO{p3CPSVxE@2yFGVqGRXh}kqCf;#D6IMx0 zaVvK#Y+-h!@QscAT&0r>YaGC-%H%opbF&%I4z=17S0axveG10 zYLa4Y$QK;aS}}B81S@ZZ?T2Sb;o$gSVf_?ni=TL+aOs+kjx|eFd}=kgpu?HkI;bj7;5w!D(J&o+ynU%V7t?pFa^!TGRv+uphw*sqn1Tn&!w*HSRe|n zlVYs6pCH*xu}hLkZy|dtuSjB$1z;BC1}W*gg%$D|Dc@mTKso~~d3Z=-+lW1*wTn3x zd&ZJRJ!=$0ZZ!jb8{ ziuyll-$-{ly=&-lU@8EX=?5x8!@g;p)in#g@d4GZh%Al5=O~Cf)eNPK4BRT1(m9M_ z1CyJi_EDrz#>-+TonXdAOs3rSeMe!Tic)612Wheg)p45l|Me{x~P$mPN;r9mS+ks)XF<>jE>r^UHd7QC;1MbxqesYxC-lUUoS@AM!nqgejFIXp^W8vLwvtSvYsZ<`68%K$3i6t%`t zF*N3b!9iQ?;XpVWD(EoCGi{o~pbD@PkZ}~oY^25FI!ks^*ookuk#5U|XuDZVd>a#Q zXcC4W*nQ5!`qPtc6*L|DgKa`uKD|{PhsVHUX2ItIHYZqjv2!;p`6|=ZFvLN_SFX$4t^m%&@e~tyLKS2ZA))XsBL61PRd`4 zPor{XT|<3*(Hhs9gLm#7v~6ED*k9i$2kZIcqzJ`PpnoCgj>Y-3`2!bIC3Zk^!->V@E*UyfLsd zd@FAmBu|+na-%(BUAX7?@f!l$$aR#QL$?KPIDUN3LMua>Mfg2nE(IN@KFh%MA{qu+ z0Js)I_>W-UVlu5HzF2#tx>g_#NOMXQ!B@?EGA|t#4lPfZ0kPtq`g*x!=sJI_r{0#c z@?#HuY-NtEz9;6tZYYbLf01W;WCMRJ@Q1>x>b7e@S*dLT@Je$@uiebQ`2(A>c^Xvopo+MKstYadEU;7@#8Rv=b zsa1Q^-)xJMQZCNg@LhJCwIxW4mr#BzL5(hSOedgYD&jE?q>UpAkK-?na==1;34bJJ_@@+y+CL6gWVC?M^}4mGp8!HY2Y{q) z(0hmh*1*il^NqSZ3Uy0hS98?*<(Pf*Pr;Yg(QA!CFw_}!wO@BIno9n|i9AR!m=C*>W{ zVFQ29GOFI>uP|!*yqX`B$^qkhgh$P1l=k>+o|k6?k-cC>}WcoR;<^cJkE3{iNT()NM}v5^uv7=;o!-*n6Mdg$=I@gC+m{Mqg`kKJA1cHMhJ_v}aq`)cBN zM_y@D&#K+>{Hn1>?9S5Jt2Rdb`J0V87*aWij(*j7VkpO&o$IZxYUuSu!%bYFoY| zD|h^1BOVun(t0t6Eub3t}i%Uk=IdZJKk1C6Xdd3%c+|gqRzw$&leCS~Bq9xZxeJwXW zAUkr8eWnk6UaV|Cxh+uHerw;7r@NLoDr%RGHUCfD+>pkaGG`E32vgTIp-5ETtjI_1h+``I>>+)@bcRc&4``UNZH3#cgG#?$ZTk>*_Du0(o zG+hZ1Ry}`5EpA*auPAo`HWbe1u8|8vTl&#?(<`E#k~*m31ewt+Rs?<)V8QdqO{ zPi(U!r&8(tqP4;IA(Ops89`nF6!}0?vQG}!!|d;WzvkaR!~WN}Qp^6=zd!eT<@0DU z{#@!N@b!HklaDA{Kg}LjT0fm+k15;G`1h56WGzo!kI5A0=3SPx*p0~dL=o&X1I8j@ zaFYgy4@m;fjmhMiRUMrret%;4Z?)^G|8Qmxj08@Y3ZD|+37pV(V^wfEqcU;4uC>geG$Dmdpt z;4=hG6?rvHvX`1=>@-c)N&7+IP|MLdi#ya4^|(xi(ksi%d4(xC2?l}R9jIqS)wSFh zpo0ah%?JdFZ%S#7U%PTq`ER@uckIf4NuT=?eoj68G(A0y zpSST!rJYF&od{GlOK1nkpT-;WBJdENi`DRbfGG%PaSUg&HAp4Y0#+neBnMUY{8zrR z5#9gS+=I6qIT+C z&0yQWvAM$1`@eDOo){-5LP)>-8>c6=meg&e%Y(X-Vo^CR)wXyQiK(rT{tqe~ih0dw z^83n8X&ipL6I0qH=ZUS#PAtz1ILU`(DxBcL;rECL9BAsC5|}-ItP`gU@&y=S-xTa` zkds9<)rC^7^&70|VBB9^3uYs8G`|b<1+!gcIe8U6hvkby$pzKx)}Q)ve0-z`35qg)Q4peEP)pmcqq7!jXxJHgo5x{{4l?kmk)&Kgi@oOS(H) zH!X*WBzt|%?GK;4uBYd^lMmlMNBMiY%QmUsJF&kXyq=m%o;%J=_ANNQWyR;v1^Ez> zzFHsGCX6bCOl*q~*FOeq>$+cZP9nc7n_U~Ai>&d*l-G=8*;*otG2;;RDhNa!$(2nS zVE;^zLA%$a{C#!J(u5e}@^x8PfAy8u&P9hSOA=S#cy*$ra`?09p*G+<(15cyp``<( zOS)wO8~TQ(tD>tvJy#uW=iD#9@`Y9Tsc$N;us-kjz8ltu!|QL@H{PN83Q;0`p*5#) zZ*Wp7EhK%d6(c1s36dtszYy9dQka2N^5;wR1g257 zpO6L-F}Vmng)g|UTu>Mqm04EJ7;ez90RG8DFuCI%N`llf)|q=gw{vXMijM43zD8+1 zBoR`q))la^+;Hk1!7q1DPD*tX6PBa!c!OT(xW5i91PA8K83;BGH#^!YM3Hj{L0If( z;f%@y?g|T}O21&|p(I8X6m8FnF?M2%TW9TI%M%u*|VCNzxCLDCK?Y(81BWSxq)mO@wR*MAOLxOmguz>&i?QIZTa zeyV1+K&Q-F2~*-M`3BZPC42_Su7?e;rw)WprY?w61VcndL60AG1-TkoD3Q};S?tR; z{itBcmL<*~Z(5dTfAmq;-V=LWk3MSume|G~F;IC`>yyxqG{<7i?Bu2=TZ>DR3s>my0Rjt>y z4vdL156Q8wT-gY=Ra8_R9!7AOz%tx#hYw#g8P`zxw4CL?I3{oj3F;@DwDw z3q6VOJ)T}GZCGR-eH~@jJn`Zh*=n&BZqDN6Tku8M>SV4Qmn*AKuE_Ji=z<~It*qGOB$D^`KY!+P>m0L7 zD_jMQNryAnXDt9Ovw_oGn=88@%jPWfxN<6NF@i%z0 z3bQfQav^hPJFSw1*(~-PIFc4HPi~PjFEwk1BTki1j#{qe`Bumi7UdSfDENH{wW7rB z_=T1$h@(P^I{ei31kwtk8rtb|M@lD-OuqcoY2+82umDRr7G;jogI8o@q`%Xr@ljsJ zOPy2dr;v2hl*b!Qa@Sk6!))dXr~3@MCaGD;V(9Zp<@{UmmnV-*lpZ;Ey5~H>0b|k| zhK}W}%I}q;5x7PQ2-t5ye$+9Rfmhgp7ku_<>isz?%dDa(lWccxG*oTcZky;&s9rr9)-Mk8r7ni;5UMIGcG-cSLto2LQaoa0PtBOn9Rh1=0Hnd~NH(8MgrPNm$2rq450}bu>F7+0=OA0;TEOh|7 zXR|u&F1yQSH<|M9D=zbfGRG~BadT-{7IYk#ktCJ{J~|8yufd@WDK1eYJ27rQQkImr zb*|a8Zgknelj9F>+tg53S#e~fsjP^-yJlc;*$ z*~OzM!==ZK#9fT&2~^CvVfL*dr4f~;?vp+#ZZ`j#v|9Pi@bK^)`}UC1^x3P@C&gXy z#;v%l(KoCc26eb|K6A%YF=DXw2R$&w%R|beSJ|%f7Th+C_mZ!Gs$T-4l!n(;D^cpn zJt6lhkF%@nwguHE8K?yDPUZJN{A~*=PU_JI!rO{@qcb$bV+BK2xg3@m?4Nj!CXq-1 zT?)jcd)GgGVo29@_mj_k^l;2*C|Owj^3doqHbf-I|7wgK{^)a0-rc1eI`Q=SzGVx` zUv`X^?8%^~R5!{k4@=NiYVzS8I&f9$5>tNdKe>;n9v9T9-cGWrkO}DfI$;|@?Q!Pz zWZh;t`|YrzKazd3i~RC%BI}-fj9?=$z}^B2e?BYXPyi|vPWqj2>9)2>huMxit8Ko= zX3fK^QspDOD4B=`k$*e?j-|BJA~{U+lPdT~vppCv3s$Z{`DM&>&YQD`*k|5wU#9^C z_4j>bVH>IWbp`3+L(Fe#OA`3lSkmALSu7vZdX2JWW_3G$#hCk=(5MAWmy)3Y#Dx#F@ zOlsbd3SgE9Cy^_V$5~}mdlU**L6C`ZC7wU0^&~BNVsCdrZi5z2(67gEU+Ux7v=@+a-wW(@WA?F@Tx&K<)bH{CGbAqc>Y>}8;5XELbC9%Hq7L{5rw?_rYf{yXEF zB>ZLvw_XE&tD6+-CACkq=bux^Uehc}HpO)A^+GR>5@$lYyEMB%qNKI-@^SWQM}K;JJo- z8ma7%)hbuQQQia77J1--&%E@J9iHg>E`5Hjuchr^97Z$GR>(>R-2Q4>a}8 z^rDORs$D#p(Z#mbEnA*F-sYK}dGXVy2MsliC4pdCKR-d~+GV6`51^+dB@4Qnnm3V` zf3Y(!NInvnpx`Uvc(1s29KY9@m+N@A-swD-b`-pwxncgBXI@zCK|u7tE&tAY=X{QX z{3iF%O#0Ezs1{4|zt9Kde}D~>{4-=DL|_@kTykdxc1sTecrX{@N{L9kTdtLLwQWh(cA)baIkO%@(C={ukxtzy6J{bG`4t0pI#JQ$)6@CgeqEJ?vZW z`^|5B>pRO294ME{QiLajwOphBkAVZC*u_#V!)YOl0qq4>7-;s9cmPIVfJ=-7jR1}$ z6h>Gb;`L#^kS4`GdsjS3gW?%M`a3)Cy=%t%;@Pt=dS~w16hE?b*>qH~v-%81BBm1o zXNk{0y1!{h{KSd)j;8%P?jBol_zZkieBZ$qT&mIuLj%}`2(4U5Cz7peKfnOxq^liZ z#Vg1Pf&8Dj=m5YNKhmpowhMjae)z6Mj-x0{{@hA#S9b=ooM_DwUNNB?2A& z9Rc{S)I=Oer}SzlVCX#9LuK{?9e#gDK>0a9uartju0%UR52RcdHelOHasvxN1thm0 zx(3+xt=7gKwt|CvLHXL}f!G|t1zfc$CrI1>0_*ug za!%=oZ05SruF9S(H0L}E5hE`1z;~IUqh9stY)NN{aU&9751=l#-T{}Ylt79SSqR1Kj_>$kpm;(t%M%xwxya3G+3K}QN zKLra=xBz85f#C>ODa0DsYy{r*0FRG1c~mxiD$MP;kY5bRi{iZ&_{b2a*Nwdi*Qkd~ zhngdXoH5*sAmX?A9mpCSFgOvi-U9iKzK3{H_IY#Z{uZ;*3|s#%m`;*R|L(M!^!dnU zT<9*yH{_uxpOsmP{jQ+TR$pas%4V~txYAWB!945oW_^VtUw%5|371slJK#!SdL7CiTU>UJ%j0r8>=tu=`zDbycC4iv5x-8GSa3*I=|1mp4uC+pxK>y`eD_ z@Rm3W%>@QMJUUFO&Ij}-571fJ?$N_EtIeri*9xS<#U-D_oKlnvlDJUT3K~gRmwPaC z_z4L&7%cPfp^*4A~}_)OCSvSWPVPcKW)y?6#2pFQ+%yx*EQRA zTU@3y!9(e~4FF)mGGy_&Uou<#R&&`zgR#J%D_j|BskIg|sif2qtA;tgT((x&{;;&B zK!WK$pS61>R#xH*#I_joO?IcpOLLlUDzKTXdHKtiEnQXZ3WS@>iY<8s>ReVz%v9J} z--|H+mQYp5TT->u?8(y`r2=Pup)t>DFLnnlTMU)8Ws)qL#?7)M8{NJ_)3*LHbD2*r zFy>WPSRF_ig2~qBdz+fuESKS|$J+WvEAbYZC^BjuoyR$rF;cQmq;nf7; zGiJ0rWprQ4nL$|cC6vW02yrGIdG}J zD^~%%Kz*+?`p3X;8hN#O;wZF^h^ffX002+~hFH^ncp$GcfZE$|cz6gU15_iy*zp^V zdjK`YC1x4;>@8fwX{I?hIn#)fdjo6oN?qAV&Xy1vGcZ6^M8FS>g_*(9M(3wc{vI+gT zsd?d=8V7mcgizDcb7ea-E&a_*lmTUukfwfCq^TFBkuv_ixtVjMQq`wttrv2nHh=4G zaQ@)BB)ROpJA88!`p|oI`Nk*sd%3%tA^VgNN;s!P0?>}iL~=?$XH{mBQv#yUeZf=2 z*lKGE+W$?hsbH9bBe3UhVsl@+aDMnIes5}N{M-5SLs#*uj*Ye!;N!Tly$nb!C-mm# zn%$$)dgF7dT+=AcmMt3zjg)gHbIO*;j~Q^=iIwM`-i4;%^I+`Y?>Q$thkS{Ut{HX( zOkdRpDL;Ti)LWr4GpU$H^32)+D#p*dK(oPzs%D>@_*3QT5Uc-F8F>ibMA##pWYReR z;glZr9Zd%j_eLB(5UmUE4Mi|aPR6XeCzN}K*uy_rc=sbeQBDl84-jitX%~6|bm*ME z0a)H)nUkR6mjmsY;p9ql2!yIbwdT(CEA7Rtr!PI!5`8GQ34P9FU%9^1TpL>RnY2(&^S>gu};c zs;YC7n`7cY!*nBVKU2tGM>={woW=H zQJw$~VfNda?cpse4-Fk`=r%VTQa! zy_@CTee`1Eap82brODG7RC0Px@7p%jyWHbh z-p3P^_tDGVscrkZ_jY&hy_X)k`C-n>cSM@vWP_|qd5Dm;TCL@Xl|`AfktLBzHo}_DNL4|fNiIWF@sFP# zl7Be#ss5QYyc30+q~$B?rUwe$t17L*^@s0Nez<+V=-!&IfaKyRRVX>j=C;Of?T5Iq(K0L zWdqBB4E><65lR}{hl2w{id>? zU9#F@E7|9UBQE#hPyF$gajgUMKWm;E2+04gQQpNnBK@}M_=Ee=c(IK{74h&2+6E75dnDUa4H4!K>B+rW@k~9W09a#u~<;_SD zN+5VyI%fZX#TFiEjg2?996P2=5EmC2QD)dJXE*t6j(ZHOv1w!Ctn!@p4&_SGcrUeA zN!go%Jkb~z{5fU}8f=>fp`lh8xK(3-Je%oiiu5Xy#Z%^3z0L$XK)fVeQdQ+J$tOzy zkxxs>!cz~;CDu2U7P*41LRm80s>^qk`q!g)Sh@nE^`H1K_OysGgg%Qk#fzok7=tkb z^w3a%9wdh4byl#QRG!-&|LXDk@87ezYH4+Eo!jwf(Xr!SjklBHp}Lb!9NPDolTBZ| zZQCBb{zS2>YWkvb$@$nm71={`AZ)8dLo;bkL9T`;_bl0B@FVD<@yQyaMS%OM41eF8 znrv&gG}Nuzus7GhMN%##o(hs^e?67tFVeDc^EbCmb#+^yB;^=Te&)ZUJ(;JQ34Eg3F`%=Cy1ivrEIxPerA}Il;N=h3C^$D+FO3?%Qg1>MW z!>5vja{ypCjhy80PSA60r}7B0Vl=JYP7lqhS6~u(UZivQ2=dk?)c5cK6|9kx4ZLb@ z^d*Sm#Y)un0{m$)GGek7|0F`95KTgX&~q=zAE%8-S!@x;gvb|U8PI%nbT0>VK*W1w z-YtmeWF%E4qa+mW)Ge>QI4R9i@(I!?({EjYGYWAe>>`hQ7HgOCKJv&%WHmx$ghnYG z_%VCjjchX%ZNrTgU;-#lN2!U01*6=BJ&ikQ_Zb77h>SznWZKT>5+LfK)bpA(JnIrt z5g_YvW$HG_1wH?!j76c{i)yfmXv}2b4h7PeR|bH1d{B5APsr){-V0F zu=Jn~Bb-6A^Oq?Nnc55jSLl8svp?b>&=d_Ndsnng?WC_0h@5s81Oj_A42mWVw&ynqJd9}oasCuEyuh-L8Igdl(ro! zX2G<`6O`11Dg;UAsD43eX0-W$-UB`l#tD3GBZ7jg64I1NaNBXHI(Y|(Px@dThIHg7 zxrjUt(mSj^xV72TePGneq?%TTyG*$Z~?$j~w+FPf?z_81w@%i~T!CUp#^@$-_9!jjY>haywnk3qaaJmn0>HwYR=_lTc zHu$4$AQ*=TWC5^VlnZZSa8z)j>)Wx_=kqJCLv6Ensh*8k3MB_B3A?Or*=8M)>v$i6 zg|~q%#2cx@1G@@nf;tQ}{L-OKCD1cA1WhtpP$^w}?v zSyVZ}pEA~uV&>Prz#p}>sqNzuzIt-37>ML(LeDco`~K) z%7$RYr|%c4azbsB97qYI)dMJ_b)KR=C@6pwKtBs9a7D-omre!h>gJ#WS?y6@lqwAI zA|~2iqOlj_z8Dqi7%XgA?R&1qsF~FI5p7U^Z>X<1T53u5F;{D;u2GwUXH%PHw4R(E zGXKF;fCMSpiJUAk0-MfEDg=gjKb_9v6p~M)B9j(7^JS#UBM*ezC(dn%5t(fj@>~hD z*;DPI983Cn;g?^*Moxviq=EeK49v&VpJ9i_ytQM^5djCKo;P?3Fxj)CmM6M0_nFPlG$dsF_RB5-KR z9+4aXO;qCvlz7f07I$j`jV7`oHxhGGLL^x0*ejH*2ol?*m=j8zBq2l7iDC9nDH-l8 z=9$MoP>v*Sx{D{9Bs6x8reFCXy@d%D z{Tb8U2m3$?uy#wF$lFL;h6lx9!;7CGdy$?!vneBGd{G-m|V(B}x z#1m$fKX~kYYuCQ-G5)Bl+$!13zkSDSWm_emLvD2VbYj)PLVCv?v-nNQ($uySHZQVH zWVP-=v1zJ~gTxsc6`nxY7>I|X$iAIU#cGmjD8u{>P%<^YbVS~B?LSh(m89wV@=)3c zq%X$5N$+@uKxfwan%c8Mf=KHH$-UW3+)*+nw}*+ziuxLNLDZah-{YnGm+eN}z$`^b~X_(|e44)By+?oMtrdT^GWhzALs zi|BD-m4s=X1k-78t3pVo2AQNuiWOES$!TsyW?kuA%2t>`)NEU$O3(lH7@xx6&MZci zph=TC>j~qQ#j_yyhoLxY@$JaXMY%k+B%2h_&6NU#wWpMVD<~D60Q{~t0);7p2L!bv z#|$nCAvLK89hsZMhiW_Vegu_U@W}{ra7488SCeNvKsIz`Q^qr01dtLJapp+^$z%kv z0G>LY1r$0tCl?<|qmT0af=!~K1d)a(JP^4!oZ;@}>{ug_a$ig$Eu2aneS=esDp^nk zGxQG1+>*)fp*&}599I%^NHCJFDj@(9;)cqC8lTM2p-d~F8hr6#OR)w2 zX*5$N->TxOs^+Syj{X+;(`j2tuqj+UAjGE4FSoK}td}{+rzF7A z{lwm-@gd!sYI7|i8$vb@CM}PQIJx9;zTnl8c`5ac%W#?bzQ=ejIg&wI(k(D{ScKzz zzoA`rC1r=X@C^18&T*|05gpi{s6`WGkIkT+&P+~wFx_;4lN)o%WqGdczAelR+?G54 zAuKtL9Hl~RDNG7XcO<-L$?w|zAz@~>fJA(Df*SH4j1cJ~w1jyp!}9~lO1pEJ4FQsh zNk^S9{6k*^mYgu4lnYtaRM1u`IS8eWCTk!nRuil(qi2B6z|Dg*1_iBVYX+x)yrcx_ zS_hGrLKv{;FH-`AInJ>F=Sy`}-Q!yOl!b?9>AD^TM)Vv8uZ+&;AcUJ?B1vNA0Km^h z%?ylN4!2Jmk<_}>#(u%br$&HMVy2CHYHqPK7nxi!-n8zu`@h%RVumwXNuOKlT}De8 zvzxwWy<9KK5wVUxYLIa@wAxNmO%;a3Y9+1uFNuXj`R%(}1&Alf71Bd`X8% zis?f8)gx=AUDF4|W|<#&=_OsMsNT!><1pn4rz{2HUSh6*@Xg+V$Ws7*Wk=qzj76{m z=yH@>$(R;|2meT}r2Ar+k~Gq}Mtm=GRzl-e1xkJRcTW2+j~1Cwudh;2%N zv0`An$L;N_c`K1dGtB_u3~2KrqZK2V9dX!9^QBxl)3|CZqOTnZlTh~RwI8L4xB#)g zRnzBn_lyrz2?y1xTUUDCU{5B?wwjt*l zawUvKuykGf5w7S~;{h7Bn9W22*YPe2pyGn+&!cvbwd*?Vz(@}#39{T=r?vUJaciO> zcZ22v<7gr(#>Gr=S6%-r&AlrIHx^inaEmQLMp0b(CA1q zs$*&Uono0`&uzmYL;_`|O?G~On}NaF>nV#*icjW4L-CN-iv6Hgn3R#q7lIga^i#Jo z7aXbdyqTwXBQso@&9a!QLDj6Da;dWV>~$yFCVe@dTa^N6JEfa0&|YcT6NXWq5Sr(DOgg?#zH6BfEknbpYciI35@rk9a zNo4TNBvs|1qVGhfkRO-ilpb-fT#_S(@W{f$gwvKjrapdxWl%>sKag06@`l3TFW?XW zKBN)MzJL4h?Irr!HQToh`|RCYcAA~7v5?i~EMK>bWpri!_ii7)t!^hWzx#%^Z6B}E z-S4zn5w_qgV;vKmMI`wI^)bLBhjQ#F_#Y@^VY$RHNkkny#Rvk=*>mgCRD=4G+lS9< zZ7!QwFd`#rH_Gf?TXxpnHhfj<$wUWdVd-O4x1@E!Od37$B1)DB#7I2c2IIPsj0A|% zfI;8j(V`C1#_p$3Ov`aXl;gReApMV*g_}8Z{QkLYv(IPl=rH?yo6BlzGyWPCac60K ziag%+JdTf}n&GaAx{F{&HFDfD&W%8fuwEW5h$$EIVlQTrl}6+D1%-dKke?wBTqbSl ze;EXw?0Z>EF11GrRo%#i>{dxF!vm$-1#b=oFTh7?j<>WaI({Zh&XM$8={nhUXd9q{<@IlA~OWB$V%lmb>@ub1x5>-Nu0dgWK{K zw7gUM*a9R!Nh}!>8~zdv$B2a^cMsxvG*(TlM>#@0^;UwVSvGIBQ1Nli_<=NoZ&$WE zwrsI?RI=j4%a*)&JkOHZCfU>Bg5rHgsTXZT!Q@ijnW$gpA)ad2!Q@1fD3GZ7k)_Za zHBQ;bF^i#pt&F2pN4%1iq^#@nUpD8*+w;tS1Og~FVu_A&w2Pd%qB1ok0YaN{cI&2! z-K6`L(nQ@?5sU20Dce(UCZowDyQ zVX%k9{Ic36?!x|CP-IU%#_yvk&tIVEj z6~(|!2_S`BVX3KB5e>?b8C9`eh;1PA0{@@c9@&nx5zd%afp*|w8ql%mC)J#We3*Yz zYY!(zHVQ)18B=@J!gY?!6N7Ac8IDWJT%Uaa19U*1?)3dYJfCb9xi~)0>!0&zgJpkq zb^#}Um(u%l-6Nf6+jE?6?kFPOkOG$AMji@%A}AmM#nRX`#LwEUGIL~AUGH|wPD68N zNLN=5V`(OLzB`eauq<1Xph-x39LdA+O5kT)I3U z*9>l0vy3g!W-|4%h5oN-7~wk^!*GR3(n^ick!B!~=)35sFvE?!9yp(ug|u1lw*G1&JO(82SvWUk`{_DGH=doO$BJeDX4 z-ei$Xtw|wIE^3b?P#Gd!b0dAQEEh}}ijQQ(uWEV=@!v(Y7QGvy2wH-h&z@6nVV_Ct zVzdpCmGk5rn#=#)h4>bZfJyB;YTtr0pZofNRZaKnEzq6xb|XFkXCI1o#yzOFrh4}> zbSQHBaZ(Zt?Ij(0IS3NU%)bkg<`TOy_uK-{0ZSi+ln#Tvq4hn(9dR|SyMiZ^ejt2( zYA4+B#mpe01BpluBZx+BVs0VR5NA1I1+`Nqz_}{K-V9qa7@IiQqA@Vj7;>%S8Ak)6 zJ+KBzkP?POSPsP@1`UmPT*@w`5~x1Sz<*=plS+LgTOw&|bgIMZmTjpbTQMv_v1kmo z+&Vh(I+=K;)k=+PR%09=8SMzkQINrHi-1TXMLD^e5^8;%v1GkU&3;@*9G&ZpX?RD{ zfBpESQONa-zNW0_K6k5qt28z?fE^V2^4VF}f4!e-7*6XK4tsbUxzq9zwb z8l@SOp?ulJ`ODda2_iGem zKX2pTAmFAPh#82s~k0_hjr`d6|_5x~!>|$F|_bAtW6i5-+ z1M&gHGKyxSVZ9rG2f!Cz8~(FfsQsVpl?{>YztqjlcMpH{oJz>PeTj?jYJC>>A#a9y zCr(Z@>ar6l|uYh{br9|9M_P+j!pC*Rbs>t?{=Hm%*?_QPCeSafJ-On~8F0LG= zPK&eW7VNuXcq_PXSB>TXz@0<>wIE@c1SuobaVo7KA$KlPYa3Xd~n^dwoA)eHW>Rb`sWmHp?7ub~g2Kg}{#g%LA41m=eem-hjOFTs z-4A<16>^()vJekZA%K4rIjXf@+4UJ6O8+ChLkxLK*dOV1zUQB9f8>lyk{#1 zLZ_qU5?PCQ8g6NluZZ1SgSvz~xOu8EDkr42mXXeIy)3y5D~Mc$*`4_Z70Xx{zsPWV22A ztErWp=SOFGb2H7xl_j!_TiupeH-zn{@i(vTe%Ow{tdf1iHs<>!4xZvN^5oC3PZ+7Y z@T!se!ek)?yO>dpZMdIGvC|$wRN`Mp-)e-OIl1~?acb8dQ5|j zclAAw8_)99GIRfl($YhBl+9=Z^l9q;kqx8Pmgq8DV(cQVcYZd?f2Z3`cB)_%In~tU z^IBMDVU09p+QbT z7=NARy#5o9QnljTX~ps+1}RPQo0XhgzRKmSC>vXTZ$U+ItFNOt-mPmt@aU0s9Zvgl zhb112#%;s9?>w}jsbOijvUq!CglOE;I(*{6T|3r}uIgL2ck^I3QgXGPo4IhXQ-0sz z`^Q%u^$#_bw{K}H2#xK(bAPzHtaR`D)N$f<9-;1w9mDH$^PCbmNw5@%)e&`Vyq+D; z%g<{XfEk4FmH{dwhLlpj@P0N@-*O}at#`B*c`O#G>Xw%7jy+|urbuy_+2AacfRhW9 z6&tMu1`G2RH}!Sh87Q{r7nFM{2LEJwedp2-XGaO2J+z~`$K24owCc_k!9uIK*b!+R zTs>YJs%>cT2W(~}>MyjE_xE@j@(k^<;GVXQ=IZk0omOjAEsj!+Pf%^k(Ip4}XL}7R z2nGnuQOFFvD9{9}42=sC;GhKVWHQ)I1WNzzgYw0WQB>>m-1g*V^S-Ig@pc0%uozqa zV9T}vpG*IsEd5Uon)1)CslI`=>mM4GDI9N~snla0A2(b2%K`UZG$##LA&ow8`ffDH6g13X#N_#h903SwOK|mzHhpb5o&}d@6z;fx)*sB$&0w)h9D014u2Ra zzjEA`Jso*RnI%NeRr!_l1^|id;S;Bg7xbl5B!wYIKPCrg>uIjDT#;TyIe{zEIebpl zTXdht=Sdl#f2y?+XTdf~u&EEj zC1=3ug1L#>F#mW5YDyZ*V}%vv^RBS@#6$Lq{D)Sa804)SU^`2dKO4%c=!)h2)#LKL z0ln4sGv~c&y0h+-?sm)*?cs7{`vKZEj1-~(J^;?%7B6R!HW}D`JA%4+@Vjx#$-p*&)fh!`_fQ^Y^r7S!LQ{LhWRC<8qWnT9O4;IK%y619gh{;-btF(Ht0 zVK=}M(CTLCX>r5BOBiZa&*OocJ8!YG(!>$vN5o@U<)y2aP}WfSsr{BtHAoo47(oS$ z`41%$CwYwUP&~mZIl2NLrtc-k0G zNf(sAQGSV{lQDWkEE>Pms{8_fTA5Y-?mm21&n+6LRUbgHdlr`7Jg@wOdFjD^Vg9d& zrKgmi&;{vl@rPy)CZCxL<3ly{7DzH8c{3NvxXywIe@Wzxi}PZ#DNBHhL>gHex&;R| zPw91d+f-{j-a57I@LJ^c;x8tKR@Bti)~pzMPJ1yS(!yq+!y?z?wfpE>Z_<6bk9=q? zzaccDw6F8~u!~xbSg{7Qd@XH|TsCM@Chrhe|0xe&k%xCEt16P5?qd+2$m()f^YKfQ zITE)d#gcA1Gv7nu&{5%ZgXJs zJ$+=k<-%U-{;C~6`~HEpWZh!9$iwB_T&?ZSYu$6Cre*7~6SuDoSSt#y({}srh_goO zxntu}WBaYg?`=!cBIccPEasE+mqKL({XB%zLz18dkcStc7{G)(6YO(@q*i)J8ie=+ z$UKba$+@LGLvFImri+mxmWiZjd(4j$2bF7Z6U|u1?qvVOCFiMx@^A7hn#@k(y>bMg z1A>yP`ZvzEpO=srYe4l4B^GMhf- z&*aKX!T>xMajB^>H1Hf1_%^{x5Za*zaDhHl#G(|Y7o}IxHwTaBRmYJ~=`*nF^TDJJ zV<@4tXfh)7Ye8paE=pyLr@(d4pe`W#9~=Uo5tD_29ElACG#Pl@@-+h$APhuy#f$sdTd0 z6FvU)vxCCH4TiU9h--?jV%VDMQ1O8(LvrTnPmgoGE^Uo%oSm}62zI?O`YP?uVRi6` zSHa;IB@n}=$zr8^y~2N&J;j8;#}3cu=Wy}}eV5`kOVN2X$qk*I&=}Pk!LW0Q`w{0@ za7P}y>Bk;}4JrG+D{&%&MGYe!CG+m;dWTe#xh@HLxMbnFBxC^LA+pyF?cmJy1ELey zynG4q2aP8Y@*u~ZRW3`!Uw7ALw<9`0WwkGYy=LrJ+F1)miE{LCq%%R+vWMwPRhzvO zhj*#HEo+>hwfFbh-+05`+YjSr=2&^SCbFOzGfRI4n<%%Bjm>LE&xJ_I@4plvODif#d~G-JR{(1!Mfpj-4>TOQt@Ef4Qi*@Trwgovt6~PxBYcmP?&li z>;^wCT0&KPGbCFCsFG}$lxj~vG<-23cigG>+GmnH86iLrI3sovZPmR-_ba8$9$9w; zS{c%;xGNt0>32>j=b;wRXfggj$rj&mb@jcQ~$F z-ErpOz0v%@{CwJ(lb8V~k}7LFp>6L!*Olzd{F{lF-g+zj{zY8Agt;4(Lt9H9BDbuy zkPrvQ6_GJb)c`~jz}I8svBOjyKx;v3Lz9tm>@vzIls(J$u#1_~DxwlI<%gU)n&76~ zD4TnqjFaAwd2@BmTp~7_!55lPAut!k*N+)7aQh@uS-K3_{hHFkMSx)_C}@eaBm+ra zc2~RczkKP^OxouE#g~d7@ztb9Wt7#9GFNqNz{Oa77f!Kk-V#HloE+4vBXs@vlA<2+ zd>gF*r)2j*-GMEO2bs92E3Wdoy3DSq!#tAJiJG(y8ZtX1c>a5=e*rVkz5Zt*%;sAD zSp6?ywo~`N?)ukS$hrP`6APEW+Je>wt$!!a0tEFsTU3KxK?~|2+i*k8JQWnuOckUI zq#|WvxB8Qt3<6SitPHi|fy_#t1i^X5j7-yZf%PcEyn1e2%agQn|asNjm0o zh0UbzRjM7EV()n8S0I;N)`omId3)#Hyl z3OYIpGITN;iMm`Zi#>p{8``)>lhHGaat%R9g2>3yLdC+KO%lTiaXg+r_jaK0a*P1i z-{axzPLGqml+{-)_#%B=Jz_;Ic8+?CF;t$;-JyFHw4iZ8H3}oW9XIy`Es#=3CYC)S z{sP(BsBRHKh_YMsC4Q*IUqm7eYg!E9;jQbJWpFtyQ z!};$VvgH!vi2zD%*oNZdQJ&^nma5EHqa?x zyve3Pol;ndV3iT|O?XQ5OhVMjyqnX|HkYC*V=S(t|H(I~{~?A^#1QNF0@h^x|9|v9 zBwXYPfm3!OvR-T19J5&iTt>jxa~ujvk{~-Y<(_g!Gmx5hCcda4!tuO7?c~Oz8H86+ zjl#@5K51>zlF&`B*B&+ci^QU>5=o@hi#lyAVym*P`|mp8(44c`MF5I5mlAS57I6E1K-Xo2Us zC==cuQ44Tf06&j$7Hjwv|84Zt8Kndp6zLDcoA9okh?HAoM|{#|wBzu|Bx+mRnW^^~!fO7o-}4D*SB}8Qp|h z#l2`hr++VCL>&s?b_H5B8V?5n*o{&&Fs^udp**2tfD!UWET?b#`!5W7yWijK9aN^5 zhpM;tw@TsTt^M1pL&`rdKXb$zI;4EB_fW`tf_Ok=gzS$3;QY7&Zuq|{Bu>{@`L0tp;Rwm<}oLqMZl2(JFqc7ccNlz#oM5E zK#u5TPO7a(@8T!O5tb_Ya+W!Ry`#Os*{14Bhdp0kXfc*3KhMjP4c(EL^n}USG`O<8 z#9;bDS7UvRDc_n`=#Z6Pm}FqhWnF%0S*VWH_k?qEovqEj zXtd{ORX{n~9c(W#HxE|#NL{A-rT6r-M9LaloK54dV57UT7&$`AtJL)=`bW_Uy-U_F zIh4^yI9_=vM@qeqwD^!R->cim*nl5|JA}|}0#!mpe$SD3T`IR(&G|;XT(PX$BprE= zfqB!)3iAz~XoY0VGZmHqEo3$hzxQA_@1lPMI+TC z5j`^)tnSV-bHz{{JH6d;qqE#TX}6xtc7%` zwp`g(Tb?}cMU6Scf#qx^XQiin7~EM=&Zf^UgpaVD)E;{_H$6GZ{YX7TJ$ttNhQV8+C1OLG94N*DnZ$2=EadC7pJOnVqg#tlPOiatSRFkQw#9kR zbWAmh@O9(KdbWd#e3gyDEoIj*|$g(vdtyccQ$9|!Fm)+0q9J==FVd*SF z6`xgYBpiF0j|fwNjZ8+|6B?3{%!FJ}ZBdSmd|OBgKtxg@13inzu zeS(7b=HEmni)o~U4^dG#a@DD4H2FvfCrW<8C1g9cN8tbm+88ats29XZjh0RW*bB)9 zfpQd3$Le9Vn?>PkN`sJ?ogbKmI00#ZB)i=Ah5Qx^pgJ*RNT3r*u;MLIZdm$0(jg_} z)3^h&>EVu48Uf>ltX=dMT1lhTfbkcZ)JcedAVOjx0{PPK`Zm6cJLSA5lLuS^J_x$!*!z|D0~GwP>>=f( zR6;{cKQv1i(j=cCOak~NArjKP_{@krHgWvK0_o*TrClcuTpd1t;A>mq7bA}&UtQ#M z`-6M&#)X4dw!(v@@dhtmaqAUHwhJnlBCaNkRsf03E@3L|+B&!OYX?w5@IbC2rhkBU zuN=I9ceVcWcnnz7oq}S-{u$M%zDmL`@c<1VQ~vzVFZ>I>`^<%3*JWbr&c5%vEc)7o zpWw}ppa1oa14;Cr2s${7b~L?V47QWFXi4n=8o+T)r!PgVgoNPH63amV654$KGZ&sg zEB|ugM8_>#68m0`wdxI18z&NbzPh~E;cUpJD>1d@9DDOK=Rc0`{N%!Yo15T*+dH`_ zvG>cJ9cIh;+VP!xKF=1=8w!3PIR~eJ(WnIic1e(^1O63x%ra&gF$UN`cEDnRx`Is| z71}k-nY^d8qi*xcFKpvp9}#UZlbC(zU)F7`{Qx#XeTl%n&aEG69bMMLE~c*tY~D-j z#@5{q&Ve=8qoyoM;t~kMZianGU<9j-$fg${=_OFY#q>o94Q7$}_I(GY8n?~1ynO7Q zhtEHFYR`(N)@D+Rls+j+rBLsIhmO6{(u!;EMq9SlH)azJo{>gvYTi$QJCc7C%|jPn zFoeuV8gi6fg#N`fL3Omi*MOVRoq`UUF*wR4ZcRz;6>1>PZ7E^H5pU!a+(eUiVAcsB>fJYnwh0VoD~9BYKjOv!w_(&W+C zhn3e@*YN8{le^-qmauC3r1F~b+T`}sZko~Nneza(jcPT@WML}^?vfG9l~2g~a59~7 z?nXB~bw|vx;n7b$KU6>j6*M2|vMo+XV(`?nmp`;S5QyZlF4mP72ul%-HlbgTZtCTE z?jXqt-4HQ-ke(^hfkr}&;H2}MY!5vChC{>gmpqX~qOMcSsn=Sr2%ba$`7$`PcQ*CD zcnPV1{{uV5bf|km(9;Z!t}mt2<)%pQhgN{-N<@-Tr4t^OiD+_u5aL86&`_Y81ck-O z#6mH*ZjH;)&8Lpa&p=*Gnt%81ZKy zM0y@w!;HJ|TADm_>}dbsVE@r$%&NUocE-zn?BTJ&Rjf^^ciuieF|}jkI%tXm!{Y-z zU0aLU$JX5D{Onw9_%YpT`l|9@+E>L*uKlWgWN4LgN-p!Yu&bLN3)j}yt!nHI1X-DP zN3XJ{^yIqXsfqF1HNFDO%@}0uD)q!cunVME4+5f-#QKR?PI#NN`hnXI_OCE9_U^rJ z4o&p^_4i+@k@Q<1D89-Dqb)BTo`1gdd}3chUfy%y(EAIeB}Ws>rnZ(ovUmQsfs50L zyY?l{mq=R=ztj>{<)Al!b0;Yl*f~1SC~V1yh?o%A3ymj|D{WshT2pIjjZSR5vT-6B zv((nCUL%jQCgod}W$l|bUs*Ta*woZGzV6E8#`a}epJZ`g;?B8li#X|wcme5Lu2!}u zBBQ5PtvWSB5At}9<}9q~n)U&FO0%IMPNNYX<$)z*8lR%BxiN?ogN%&&ypL4IiDw7E zi1Sbd>aY`h0$f5E%P+F))lMPy8Szrqx0HV1*668{rla;(dtpVS68!R zY$`Cme59s6-IzZs*s#ish5ecG-!?AUx@7N?BTMeN>0VOpCy8RTVfX=@i$d=x_K8wH z#1V6k7nuJh7>8ux2M|7iu$Da^qAw*@XhpQ?4GzbeN2*;-P2E=3(by&1n>Umh-Sv@L zm!Wi`$ro?vXO{M*%LYV^YGG8L1kHS zSzb+(+|#_K(5b8MD|9st?C(^Lq}&pj<15ZOFUGfw%YlSU5EeAzzsbNb9KUwHYTk3j z@Zj`;+YVQ{hSv?bDh?bPmU)!9x6$iuY@>%KvX%&cTX|&JEr_cO)Yb+X!xfv`*#rDW zi!Y4ixhQBKTr#m_Y6*_Z>ryX*N{n_SFs0eYa-f9}?~(YDz;dv2d*OSogT*?zZS9(- z7MYdRH(2%7rf7rN=*8;e9^{n(mq$~~T-)$B01 zJ(9P`Y_*z-ygH}L;If;mi`gljfMoI6*3J|$W(~Y*$n|EMA!iE~K`ekE9TFtc;zsN)3$^6!?{$>DP2XxR5lqc((q>TsBPW1sP%}5J*5!bM!`fBh?ECXk-ZEN>QpW-{v*jD9UF3m$|y7 zTP->RaZ)+L`v)Z!eD7EjU&@qAy0$eB=Lsb$qTd+Bw7e;mvwD)wrl@zL2Q|0!{PPr)+k-5 z9ji<(foQv9;_!x|)~NJYa;vv@(uvrf`EP6{ycR9 zuSx{Fr)r5uJw%wCcrc)F{`KcRL_aR=o5Qk`kaI2c>tRa)hWGfD?*XE=7N_ zLFLQPu28AGSvm@{2u}DH-9Acd4RZ~)x++(Yj7U`;nz)om-V;0cCsk})j35}6;2$D$ z4NskjKFFtG8Zlc&M{`g$gD6Z+7f}zhC~Qsz64gx4A}le3^A$PNQE-h{K-XjjqOS;c z1g&Zkyah2z=m!*jYLo&&N*EdAOcdo6#DMWZJ2x{^l0Hhvjso|`{0E8B5^m|5ImuHs zqz@9VlLeE5TEuXP9H<&CHQ+?eR1F}w2sJ7xkX8Ia8qlay9WWX+)B??<31%aWB2FBJ zQjnI&MH^9u*`;Ab{BZ<7m`ib{Q=U4XI-AG@s^#9*;#){`B6EOH1yGf!kq&fJOHLaw z`7{h}n$4Ieo8y@T5*!>y1p;9fgiTouD+bOflCo+>A_5#2!2%QiRg44CB?JFNt1L=> z6NW(v^Bt|pMC|8+Cjm9lAE_j3_E!p4MyYA>8 z*z~d8cKiAUpUG%(SRFb;thmtZYr(QD-4h#$0$}3EGg+M;pTFn*U0n@DCcDh?q9bj4 zZ21MuZr}Z}jRXC6+yw{`9?u^9>IJ`SGffwk7FHIzOY`zg7MH~l(aDANMdpU?2iA1B zO6uwvll29bBD=jdU$3jLD{*zKd9bU&Y;l+P&zTB!RTsVrHy0?=&VKnfy6z>XF%A$+ zp*<0==Uog{kj*RAd73G7nR?FOFVZ^hcHty;!4}0c0Fud#K1o0pZhZ>}@K!j4QO2km zxM_~k0}@yVZx|_|r4`Lmsc{1fxjY_6vB~MM23=l{%bQRZT-kQ&9V$PzzhkJ{hZ8iB; zy*|IOvAJ=zyF@O`GZ;%7ybcd5attw()$1#A>j4>Z7z>>CDwE4mXfWw~rDdaQAK5lC zx}nG@v4Z6`+wuY?8H+ZIj%<5m?Pys=Xkdk|tlBFZ9O06Wmjv>xHI-7nr*!-HP{dSb zsctY;Ta9+R(Nb-0sJ4`uB17ZbON#RmU0^XfU7nAZgdBR=TV1AW(W^4pE?pbN8zDQq zlZ#)Jd?_DO66b%i;6ZlrATwD^(o2%wpfH6Q^mvI2y0G#QcF>TQXPEzCo=vZuU=QnU zc~TXws6HRv4qZETCU6l<&S$dGAH+Se;M1CbqT*y_Q|zPcqf;A{W_IzSY%&)}m#HmT zkqM60ApWWN7vWMy*++6fop5qh7g!^(A=dD%}wDSSROG z{LFFs(KI#_e)yV-Lr<-xwMVN$&7FtDcyWIeZ@_?u6&c4j_99R4s{Y%zO|>sGnU=Lr zZM(gHl~MY(@{V@ZY}T$S&;7>O6OZ>87=JQKq2oW^W$){r-hTDS_UZ0E`>r1!UwCEr z*EVhX+U|sS0{I!ZJ3@2TfSVEWZV}8&D2yDqz+Sb*kq-f>{iI+N<#Z%{6ze_?-49t; za$;}hMhm`Pu=<`U^X5s@U$Fo9dcmsEdsbij ZuD)kA^S_3~k*}}fA6cCfo^$M( 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 J(f@(}{vVIrdS?It literal 0 HcmV?d00001 diff --git a/public/fonts/remixicon.svg b/public/fonts/remixicon.svg new file mode 100644 index 0000000..a348334 --- /dev/null +++ b/public/fonts/remixicon.svg @@ -0,0 +1,6835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/remixicon.symbol.svg b/public/fonts/remixicon.symbol.svg new file mode 100644 index 0000000..2522b6c --- /dev/null +++ b/public/fonts/remixicon.symbol.svg @@ -0,0 +1,11356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/remixicon.ttf b/public/fonts/remixicon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c461f40e1fd354885d0291e58cc38522cc476082 GIT binary patch literal 403056 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�Bv;J|Q;QaaN1u+0dMloIpyoV;ZGn7t)pq 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

    oX*`B`&KI%7Gy1^}>+?aHLFVQhC*(`}!A>C?A0 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�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 k6~8 z=Ap0gX5dev>^zi>-7MCtWCaG}h4RJwlrZyMUA_ngyXQzZ0>gMv0pbKIdXWq>xzhvw#aO9= zx`M_HFo#-R3UU23ynubV+ zLfBgieh8@0Us3`zBuT3Z4z3$*-d)rGg&lWXzrSk*uaPwInVy>6&7)cp*S)-M?QXL*(;~|Sp-bxA!TTx`b5jkxKPjG0iS7|BVtT}0VTMF) znp$j&oIyN}+ef+~)rz!5(iNqj58b?S<;_F=V`IuEqHn*y$nC>x*to5ru&`j;jCgt7 zedwc4ee_U4@SDH-ru6x^4_CfHXUCWXg;Df{@&2{XtnD9HU(_{6w@J4HYcTN(fFYG| zf!dz7nR^e&G_WBJTZ?ajC(M*~rCNUTN}hO38;p9E`q@;AB^{b_7?3xuZAb^FNU#2s zwR8tX?Lcbo!I&M0=Q{+YfH+0ihSVI0Z4`Dyq-!nQ5afX&NXv$ZshmtZG_#ZC2OqJb z#(jcahkwLc`!-S*ihPCi3!a{m8-wT*K5Fj~T_iqnJ_ab*v3ZK-0l|q-jDAkmqcRL! z%_GY>BbIEPC0nL^>2^VQ4H`wqJ3{n<%0H5{lqFl_ z{j|n+!<<9ny*336E_9nJBXKdApvxALZOVhefEA59NZrVAiFKV)_Hx^&>@XnhgS-Lj zCXA5C+lgJ++jvV^#6V{%zd4U*p4E3jKCQh|ka>Z$w>gw2#)%8#GCdZtgq=LV3a|<5 zq1UROS+cy!DBDM`Z<66hKJ9k%goUv3M0&*iK~kKJ+=MTSd5|5fzr;NZ(=P4;VH2ma zNQV~DQDv}_a8(KVGcQ#w4rOyNFQyE7g^`53uXwyAY);(h9hs(5v6(|MQ8GwFg$!#c z6h*2J1XgkO8FhTE2PcUIZCXpVnZ$WQe8%(uYcg-z0FXN{$N{<25>NVd3)zkR^L}n7 zmIg*g^Q_i}6)PI7R@(22riRkkiRppt?`V+lnX$1veg@9tLy$j_EHc{ML)>mQv@EHM z@w3^xNkr|DEe!v>J(iY=vQ0pU_aYeAlXVa4jzN!i^4%zJ0n+AL1l=%*1Q~b)na{yW z*yyxiPse#6_qK4v9 zj{Xy?tYVBun9XU(IPG2)^0vV*vX|k~&62fQ>uT!u%rtChXn}HfaNqb?%d)ik`b{HyolmLt{DgS@-;`@s^vaJt-Ax4z z>l?NW57jj^`L}HS{8gsmsEVM3XQo9*xPgA1)-3Gel0te#UmWaCZj)+E+pPZwErvTo{jj;Rszt`z%89v zRyvs{_Ljw2V%T?hks_l53^Yn-$8M#8Gl+B_kO7b7h&wQ?`LFSU5_}t@WP8JHr+NF-gezLQLqSA`ZI3h>yEV0JE86-+`k#o7 z=eegAOG17Xq9?S8P7}8$ydf%h{Y~1M2^COas^*|#UPGYpmDfoNd^?#;yv=pHFh|h7 zECrY)+$DTsj5R)kRw%u-Yh<%O5b$pv`G)o;k_Gj1GT{*a4mv6>rHxNGczg zQB;@>cF1G}?us$0M!vcLxJ0tj!!b5h=`6O_r?0#&7pwPYZ2y^j_elm&`b)ayQ+|$} zUDEvwa-*wkA^*2M78ynXv3bus&Pq;4m{g=>yG_n?qFh$*v(xg+Xcgf1sm1w&*hmq} zLAV>*YN+RJl<&lxM(9q`k?5|0vJwAYdQ0dAikh}V-oVWVU|J?)aqPXgp3Z{tpUcf;O)7Iu$|Q&7=}e21 zK3L!P;_C;HfKzsjZu#(Jp2xuIUSblvU3OVn^{3>tuHFBel4JfSi_MxDWVN4SkChBA z%f7c~WkIg;BZ*t2V0Y3rJtJFm;OI5sMOthG2Lz;n5seAq8K;d_?Ov=}CjPkHGcgQo+VYaV28Li$H z_T}*PS-#qeOk;AqYBfB^CUR5b}#Mad0Gh1@p z>zBhJA?8u1&WRa-cyAq0mZ0krmt+p8neV);ST9R0`>^vnZ?Wu?$JEaj%Xu8yr?rRp zeHvD&6u5$c)&flkT}WKVAZPa}bs;G)6bdP$m!-$W)ueCqDfQxLqytCAHKT1D&;`){ z#XKU*0YZ80ppo5f+a8zLQHenP)YL-798tkLdK<|XG;}O{O z8V8nuWy8JzLlBHXAYO)@5cD;gy_M`K#JDPX7Z$Ls;L%87Zafkip|*}{<>jSRphPTE z9$sQI#enk%LBE?p1d*WGL`x;NKb-wxSibm_OtxNOGxAfpBmw@B$rk+hs)j)V#MRfu z_Ys7xiQhCNIJ;AUiWzL<_gW!bT3;gLlN zsS~G{qkZ$J6FBXzs+Fm#WI6(ZmY+T`RckC!K1=6FuaXP)D%Fi_ znCKc+-yoR;o{ap?dINMwxJBcoN{%Qa_8;kATpS=@5d^zJ#)H;6C7y-Ly1vza%-RFfD@6i&8f^u+(yMOd-?dyKJR7 zpLpQHKX-IVlH2xD2Ef6VTAj{to&TjHYg4U;?R$(_=_YpkC7WB4x;p;(!ULbM7w5Q4 z8LqukX<4ajkG$l+4v7b9EfQm9b&W~Ky6ynhm+*#kZ*XQU?jjDr?!&Q69M(s(kBXSk zl{rzy4t8`r?e?V>kE5_5ot;Be}9+i={RqxhUldy5rg+0lgzk+VR4aRwoEE%O-)v zy@niO&7ywt!NbH+5~4FW7Ar}wQ9q&6f?i*lL8RnqW8g!jG%7?x;ANM~c6Qceg7op2 z&6RKSRX%#*-XFAe=+Kux%PEl3+tSmrUY)A2+`*ayU%KVw8Rzzqo=TtGf3%9_N)L7J zEbGil!%0#>&d<=nx{kIV+e@Xg+PJn99m!RY&_} zfPl62lW@V=s0|n@c$<1D3>u8vv2G@c49$5!+!-){0A_}FUP@2ieR9-{sAGQLjl%1V zgxU1T50rUMVc5<4`4MyVj&A6>xO;JDA_rfkUl^DD_(8ZZ#}8n%c3*1pP+VJlFTblq zHY^@;yj1A$g``5A!+dTlQsn}ldR&($iba9kHJWJZeL;NP*_dIq-7t+m?1H0hm9UHi zaGw&IQI`+r9*EFu1j?S808KQ@pTB-+m-3rkvt&8|E(A$lX#A16!YEo%K+f5^Svu_y zO%c>_oa2P#@Nza;?M_%)5(;C#wls)f$CfOz`#s4No|lfRQi*%>{k4tE6&LtFmTa4W zU9)|Mc3rDwYIYs!o885r{QaNW=9Rli2rVK^d1T|c7x2-bQ+zgkOZpA=&vq1^~(L;Qh3R4O<1 z_3ocN#eE(f%XjU0C6^A?F{iu{EAO)RZ;UG2K{JHiLaH<77qjqex2Y?eS9 zElE^5S&0?lh!UCWfT!^#a3V?HP=3@oRd4J&(A5T}V#~fY)EhCUCcK$G)9~SwyW0X2 zkF42exfFjd2>TrnR*OrdfKwh)Pg8o(>M3h3T+GY$aqX(D%y((czQj^h@}oGxlplpJ zS@x;pV2y6gpEnL}+%etWm8q;uG7e0}uJ-92H%7++;d_dKfT4IKZiN#dE+qcKpW5fB zTL4R%9t})G1xM{U7@BpGYOt!Sd2HusXS>r`-nwkV=E?ORK2*4`_`dBs*y+emoPx>} z`ANnzw+lkWdk*f{eqZsv^1j}&@h=RluBz%hG_dornmTq-Di{1UPWF`YsjYL{)wz0$ z?jEj}3$4Wf{|>R1VtcMR4p{V9^pLdt(#2+vXYcv*dp(|}OG0Cko{u~DNA=jVmo7E& zvv6+nl+Z0Bug4v%631w65WWqPhip^SZp*k1!z~;V^h?eU$nw*%3&a%I>4>)F}ROQB6lbxUh#RioIsHz34p^<6Ja&h9*plh0W!$Nl_F ziGCB=f%DnVm1=8#19ryPzBjH4wW{MFCS%8+BPBrf5~evQjqg)l<;;c;@2}6@(j%oc zJ^j9gXPw>09)99Xt(3NIjK&b7C+HtzDZB8&i~CIT3{%LdH;AbOt`o_?JrD+p2=ZeD zK~;o}&x;6N+?6l}s)4FrVWQ#_xY+W*3yUw&L!FXvK1+`rKQg;<(<-NP&DujquUY7} zvizESOTH}~c^-{sy)MmBVyp9%RW#H#tZJC(^)e)NHR$BjR4FUX@5*D$S3S7p(8QX) z;hy%cb>*va%B-b*{X0H?ZlE)x* zSD$AscUzdJ>{w{oNM62F*0Z(I6|n2F434byG+j=!zh|I#pr*0XcY0v@;hI`jQh2tt z(LQ+Y^E-|o*w-6U=R&ffkEI;MEJX&-Aeu?6S_nI}NW77F8&M0{DFBzuySUqcqXEE{ zTFj2XzcRIPu!m2l|2BTVH2DfP~*uU`tPv(#>fGS)c8)l(&~o z3|9^;FOmujIs`Xor&rgn>s`Hd?TU`o?fZHPTWqd0@|3I4~cUAA#cZG*Htj{#I zwlh-{p%4T2{bzpOKNRXpJ^o&MX1>YlX>jM8-3}9L-?L)Pm{i!dwz94~)tXkCk*>=g z?;5zxQvsaiO}(S{u4DO*gDz)YK|x>t{H~d`L!s=fuCA}{-nnth7n32?RNaQKeI;NL z@5cD!RJ>$9B5yQJ`g}mC)*V>C0u13Q+|omAs%7?|-9XW^)!0h`1xdLV1M=-#mK`TE z&O^r9>fWK{UaxT~96r8m%a+xVZ_{!94_?}Vfpjz03?zfj^Uolq5#hM^O^)}j2o9_r z!{-_Q1IjVip8PL`VKsUjZxqCSm4=OJsgh|vZX6KS9kUcIM7*0~EKfvgZnp+ik6oNU zMc^l?OBQu^1M_3ltm?E{^DK6MWS+Q{= zVU)m6g6Lk&)`*QP8Oj45>J#p==XX;FY%3IGH|1Ywt5jwy+ZOnz$OpG=Sl8sMa&q6E zEawRyh#mDNZ{-)#Ie)99}8lXCfeH+O^5!5XyE7YDq!EMQf5)dM! z1%Y;sk-?cN36tX~1H2bZ_((!jvt!eS+S;Db`WGl(W^_OkRLBGuH5zAb0G@t&fc6_W z2Rw9xP5#YY9?ywU3b2Vv9_G~pJNSb17J&okXTU@VSVY43E!MQHMH7x3N5B#{Tw+tj zH&q^%q~15_=>$R+v{~ZVeScU~vHo)#Mp99djNA&9z$K}4Nk*;Ios`$*viw8nSMbf~ zdFenG<;Z^*dCQcaZ<4Yzk@@$rG_yszXfdbZ9RlXmeUnVTleizmWA()UxJmg6do6Z> z(btqMU%BccVtfti7+NhZkD%4WJaCLNJSb?K?i%?`9?1p(B+S;YEiA-x{|Q`Y>>89w z4tGpRvw9Ve9T}q%FNDxanbN+-u660YzBd5e6!M&ma@)gYNU6v)NH->6J|PpaIvl8q zF^cLgrs)#~cY<@{f8-hZI2WdN64!h&dQCK5!Zj0FR_LnalI2(45TjU$URr5c#H=Ff zAAkL_cPqi5De$}k$%>+If560+Eb(ttfEen==REmQ`57^GxHpH7A9h+Y8I6(OnVe4f zaphZS1!>B+3>ZLR3tVQ}*rDHvv10{)OWcnyvO48~*agy*$6sWt7hgr(XGr3S_|3+Y z5QL$n6q79|Kw!E=N?ZD)1`u3vdUvDjdAllcyW5OB{>NEzu_ z@Jp+~T`<*hYJn(*Qzqm8Spq^M5iB4i6xG_|58K^WUZ?mj^fcKu(dR(-<3kuZWpTnh zp-sp|6vmmrY)3vQI$k=&{SkcJak)ydMiKiM?GWN6Ba6Ex3k53xQ2;ps{zZ^4WX{D? z3Db6Ei)B;=L(!0emW0Z-$TMvSUIq4glcva}QZ$_4aqqDxVFwP&Wvx#`q}Q=6PsGsuWX zElQ`8S$=+Q4t^>^vht^>lS-@~BrnA&RNyX#a~4npta=!Dn!2eDvC6bN1_F|muQ55cz@TgHNbl-Z>5Atb$q=%*{trFq61pjChS{Qw! z5@2X+F2+bR_FVlO3k%Jeut)p`=kJ=W*o;!7R2!L#_(Y}NYDFSY7VgYcp4`a~vZ@k9 z+2s;as2LkrSUkbiiJYS3C&GG(oJsW3X|-E2w(mCj3pZi;-&E)~?%tkZv0JYoM&e1c z#n3Jte!kscF@v`#($fzBi9-d8R{$OnHR3`YWR|$7sxP8vhDws;UR@`@)L#a6M&wQ==_N)DjXq_0MYs z>@h@>c`zWT6@wHh5^0o9nj9uczasL?3cX}<$SbaDje%pP2KOjhW7OSXIyS&tV^(Vf z0=tTK0U{!7%FWNb?Y7MPT+@l9ZSi|&A+<%J^Y@}HDtRl=;)E8_^emU|2H=d;tiLwG zlpqqEhY&SKX9G%;O)B9Wd&*R3VoxRB{g08l$u7tnSbkc%@~@OznA%$0??9kpZc^J? zlqGTulg^b;8jtlM-e<%#l?1g_F0sfkHakzo*rU`@pHQ%LcjPnD=6{QvMPQLOx;3B0 zh%SWq6+#fD+JK_r0V^KPd<+n&RKk86Qkr1yQ>!Va$Ff@cd{eO zAKkokbw8%{(V`ZM_D^CXX|riB0m-c^`R##4|W@vG5Q7%P2=19M~ z6Gqewa$*Z?KcVUn^$&yy_e+rSPzQ?*5-lR?K=rgz5-6sr6#*%$pyr}v0$8P?HM8HZ z{KVg%+1gM){4=}Td$c>VZO=fK@*to5kXM3T#FPOVGB(-VKG3-^Uq9TCYTg*`ljXkf zMsq4Ivf#G=DA*|n##-@?z?hh25xqYLJwTfqNd9_6(`-wbPT7f3L!xlC46KAeB=Gn* zg5g2TTn7*9P$kFQi1}YIw=t&nnUyrn1#6)*in>D$i~RWNHVT)z42JbNI=d@Jf-0`dS#NOra7(iqXtZLV zMmA5GuY?}75Guf964eeYQJr5rLJ%L^f=gkNYX_syCa6a8X?ni$`kbG70iA|O`YotH5q*f)rTf}Mh{w`YqX{% z3AFcAusSk;5*L$PNZbKpkF#@gk()3IC$Xay`!0d6E+B+j z(#TRuyFpWikD?5(whhLtE4}B>lgaD9!{_VQ*VnI4YQ{ix4yi^7vNL3ek)~%~A+;@V#1FUL;x13sLLOC&!2rznVSeG``#)-r z-__YxSAh@8Kf)TQ22sV+!ykYoXdVJ)QXp|dlPe#HI0__Qh=p9m@xS}&Ty@PCa{GYt zS;jMsy_?+d-Ig?i;Z{zKuRsZ!l9Ca|WR}d;H{RafS_M>zJMsf%3VQGDr)PW3SP-Kc ze&nZI^GGf>@vFR8>&+QBa_6t(GKFn$}%x7_leV_(ZIUe+I0Z|7(ygX_>EY+*9#gj zm7hcQAZ-q$m}MvCL9!=Y<@u-Pw3Z=Y)(eg`FkcXLKosmq8dsk=KGumT@ah56adb4?R&1E5B% zdt4XBoXc%X!W_>rW^jm5mRB|BDG!f=@21HsdBdZdW=*sDRO1XxEJ|l*mBT?40S5p) zqrvNk?Ld8_8?3K=Z2F}PyS@@hALhO=GSt+yvX8TmV8V_&k^h3)P|V9h&L(L8Y#-}qgoPtpoFgSQ;0Hi(*o{7u!A9=Fy0@5@L25!xz zcIEvKjy2-jv*S{We(kUtN_^J1Ys?L^ZwxQKP*{2S=ux(Yt|#g+p_{<3@$ z48Xx4=?tq{hI@U!-r<&Ry-t#hu0W&9Y0b@YWEf;Q)xdsSUq4&6YvV+qwKXuYahEM? zc6oVMgU@MWQd7RGv8lB(%a)#D&}ZVuvJP6Nq|4MBGSY2Xm90&Uu3}q0V>YJ`vx?e& z66)ETavN$2-bNBzttSk?v3hp##8m15;4cV+k*tnBuZ^F?QDZ7}gRTkqEIp$^x^Vx~ zD|eu}1q_;)uYnqn50vG(np!{E+T_YBv!+{8A$@9EwlT|WvwJFR8BCH5GaH+mH_jMj ziDl&YJa(Ho%a{!hE%=))8D%D$#c6dEH}v$h4^&p<2q5%&<=*wjJ%2rsdH<=`tJV9y1L5#?)BEpt@QRDYyRWjY#Aq?3 z>vbl*-lWr~8!X0>x=NqjnPmr5!B*t+7b_PWrVL;fWW62|8!}7|UrlV_TrB%C9$XivkOx|&L61Sa7+kr1o1Wq1A^r6&=&#Sv_ZPy%FGuV7 zoFAtOXCp{vXjegw8vt-|7F3lKpr4kOv01ftFDa=Fk_90ty^_@QO4=JqP7WV><@}6` zq=qI(0*B{;yydU#qAEI<>T2P^2SUQ*1(oHmkpCj_!@z*5uB*aUYQUUHsJay1l2}R^ z9+VuN@^46QkuFDnuy)n}{LiBtDL*=ruB#D`Xjhy=O&oV!;wP~3{SvN=?ka;OhZlGt z(1(@WVMe^g0V5>o0VstW z(yIt0rPT1JDN05@jm(bNf@2ehCvE;9Y^;e}N=h8$D}ZOI1j?(AqYn5!5%hW~qgc&< zrfjymPyLJ(VhaE1l?>1|x4nSf-wU#Vq>MZhx2GarL2TH;s;B8+9tz%{Ctb)J&V z1x1DKn$EE*kH6I6Y%1qFiWa}0Unx57Xe?XdT}<)B#vN`ra!ttU03h%QOx_e#%DOT9 zgszS0@~2v#`~9^;je1{b>&E2^FUXJZq1}T$6(%HE?dov#!1!=WW^oVNMTduo2_P=X zT*?_hGn3VkC<0BC1U)rN9RDObmlaExA&3TqBb&tDbVpHw zG;DWmPl>T*czmE58DprsP%xK;;_irzfU5%3B^CybNb%>RS6%*hpZMV3tzC_!ISx7O zpP$+?)E>+q@cVq#fGDmwy6eK>3mebc7M#Xb|GNHle!s6{m8x$DE&%MdF*IXWL>V5T zN1?bfwJ3ZI;tDpNZS0?!7#^x#eYC{)&3o@)&-n9$ZR<8~pZAAlM^0&D*VerseB!$U z1MI)+tD23*Wx?V8TS_(;pFHaGukBe~=QlbRY-cw@q+Lf>tbT*vV`2_$(v9*}w;a;Q z4jaMHskX>0$#s=n08f_Jiq6zENgY`%;bOn+aq>+ZS~mZpM7a$ zU_|+V#3Ij{^Gt@>5&5$6JwL1K{oK}VYt|JNR^I*P?csH6ii=!>{tx)C{4Q+D%Qs#E z)K$n(2N^ur|5LP#f$mohv2^63^1zV?uae0F7DqBhXfhoNtp33E+``JvRbQUjcERm1 zuL=g%ZZo8LqB43`_rAh1MixfC9Vg@ejODTlZ{UNWfrGZ}@_={GY+$VCk->E0On%6s4;m@Lf0UlY6^DP z7`)8^Pm(^f#aoBu4Rd6u2qR}i{HPI}H@qXjqB2kBtN1Z<<@H!E@u^ImTSfUrVzf}o z<`R3daeLLMkvBjQ1~%xX1R-e9JQEu<6u?ZhAc>;zQ4_f-Q66#66RxTl3;^U`7SS)9 zREYLSK2Fz#Y%?mMEhw#M3(3F7d_X`#@g3#|2kf@o^4^L5oZYqK!K&)Hroiad{lMja?SAB9Wt;cXAk*jC*6xtAZT+w{mT^WcXzE6>L< z2eO(+&E|(QW*+|HbGNm+_pCQ}oq6`bF;6^gpjPHutPVg=V!V<@CmEo5fH1^i=X+|t zghK7UT8d)-iak~3;oDlQQ+GdbY;|ha4gI?}t*@>%Eenor-E-he&B?_Iues&eu)eJS zV9+vr@*{VQns%Bx+Q+wjXJm7u|KMa2G0A!Z{bir73woWI$E2)D83tZ{XUhJR!zo8o zZcn*8ctDIS{Oyt&Z(FjR1qYy^0afxrvx4+9_7!&wF_g*eZV ziyS3{zlWKj#X-M77HFvCxD-D~*Wy+ge8tai3CiHSc_vBN!)!yXd(Y~@Wd*J^Yg`4(23PM%c5r;l&7MF< zW4l4Qfxl~N)w8E$xxAzpwjgm$<%2_8whS2z{MnqEQB~<@nfi>%Du09WTDrc$U*+!V z?(WL#UDNwc;>URsZU~5Uwf}eOmh=91V~*W|zP};mSjufF_odvQ@;Ol~R_3L0f97YBlTbfof|iW|e|SNsamtw*Z~|ME{RU#6E0X@=rbPi;<)j}5l8 zm-=#YYCWaJI4XDN8ckDuy@P|jeN!f5?#!~~%a_e0Ii@t&?AmYi%a)h@s4W=1tlj2a z$;qte)HgOJT(`1{%2FQ8b>w90EP8$4+O>WB`DuKXb5qkYa`PQt zM}BTbT1!jwKu)$JSN_k0gTa1&P~A8DpY^QRdYx30VUzJIwOH5wf7G+CAzczZYav12 z|9uB@@aMr>MI4#L(h)$QqD;F*z!E8O2a>r&@pL5`9FYC%&nw;eL$fE347m%2W>-XR zS}{9R;2t`1a&{=+9TA&t=~?m0E;b%J9u7(^GskY72?l3wJ%-HW!SL~80WrA5GjxJD zSt|I-b+sslvUpvO;1W@KM(OX~MWo8hF-{Zdi?R1h%GMa;TZz5X^p>Em3Ht~i`7g29 zKrP1J-Un|l#k|!^9-B}2h2X&=d@;6wKB6}d${qwD0z?gm1y1zK-&^ab+fcuIVPQA2 zEW!l5Rte;9X_65-^s$dYL`Tzzw5lR6Fyc~vy(OU28?yEC;0Fft)^C$Gp03)qzCQfI z3t<^CR;j1IuYAWp25u^|1PA|A#a2JNn1^TOJGc9{rox(UknbG0vl4_SVtkVP+1Nd{ zCX=6O@-HbqwwHYweb`j;QP> zUU=a|MpnD)^xrDq=^D$lZ@m@>jjE!`jxzG~DX zWIt~_itW`qL{gRJ7C3}`sVYXzn+m;(bSmunpcdr@TM)Y0EFh^Mq)kq__qWVhQI%Ca z6DZytq2!#@3_?L*w4l29D4%%Q5PR2v{2&>g8LzN^Q8;uJE!dE6<(Zod%%t0<< z9uC`5&pcWqN8cDY?gpcXlnL^W@jzLcuG0RX|Q&BtJo$gFc%WH3vD__bf&Nb*tou;CW?i!u1 zxb)%7H94$ebtUukIP^0Jf5X3__1n{(Yt|$DHfN3UyEJ#H+hi~nI4Wx;X+y5dXfPL+ z6&fsMMr-#CC1r^J>@gWj4XQ0xyu5DCDl}vnQ=O*FhIE57y?_U}#IK`eu{i%lk!QHW z>%b_2Ua^@r{0Cl}kPHLst+ZnV^efa6YhUF*swa+z(mviD^(vkLu<&S>qzF~d& zXntnj^X*9W9B zH~s*<5Z9*njC`uwSiACt&p$e8?K$((7d|p7pSZiGjs*SU3FS8#X33bLo9Eb;Qh)da zvn3vhj}L8ImO0haVc+@K=U+I{TzudY+f2&OyY64h8wYkflPyaU49D^Bqiw%UHx4`| z0@SgOYoVscmXCY^XmH~C#{5P>)Tk#W>lV5(p}|`aJsbq=={;7P6-*yLdebfA+e=GI zO22Z)sZ)1s9}l_Z>AakrNg=eBJV{R6{b<*IvhYGQ2bUG4&lWm#IF`By;7E!h^@z2f3|8Hkxy z^X|E$&~3!f8bk=6=6E1uD!cfGWP-trmb-<>kNK+ST{!WE7RN_EI+1^YxWKX8ao_Qx z^^FYOL3j^eM@lhzJRc7t`V@Sjzk5R@((9Cq<4tZb(7mDRBSK#;<#$nR)W#yDDZyED zz!AVIg-!&-#^I(#tSo*|#v-Dhcq4rMf#atdYYN6%Gu+j(>~+C;M58lyj(|@RAad?S z_x|hG$YGz`U~qZm1RN`2BV#eUi{rMJjGl(iugnK0E)ugrCnP|#H}39<36aE$wyABh zsM>$(_<`%gZ=5&*;cJphoPjydwrxV?EEy8wv`Shuwv)Eu&ky zdyCocW7ss!FO`onGvSG?qFzm>0FfZwmtJ3xbdDg+lITK`N1s5Ujs(+KN?$4O+L*p^ zU`?anw7q@z(Pnc&L3qWdAy6dpg|p{?N+K z?ao)_4Nl}j<|ONQk|KYj$|k>pIa}~bmtkBds%t#;GkPxoZZR_a6SAvJ3~2&5!v6q} z1EwbRA0erQUxLnoy%(4WFaJ*H6mew{cidH_(H-T3-<5p+z&LQ%EMv{yEslJvx)RBDu`CMD2I&wrJ4M`hrAgF~t7K%F@vJit>8F_pt<=ZvnAuI;wr}rWd5FaEIn(1An z68FR)@=rO4=@1b)Wjyvy5h@t@k;}muwmX=ETr^+^p z^bE%iMLgord|a9;Fa$s{oF^A293{{Ujz-tBlgLpo_@nt8i$=n>lJR{6AnMIX;8Q~w z2zUq<7T}l7##`ytg$4Od^ag0;z!`sK4F)Lq-0)VNTeW(U&*y#C)B(0@_!Hh^g=rAJ zk4gh>!)oBo)b>{IMb6|MQet>tamYB3^z;Jp(SRE(RK(tn?q2aOclI2~vaA8tcw$kIFc4zdYbHS%% z#n?!Xl}w5fWn7?HM^wghY;b6E7|1FhdDNPO4!E&z5^X})$RgBD{8f0X_@Y8L8yxXh z?SI-)RhTDMET^CTpdKjksjc#Xzp2D2mo`O#6ZYTJRnwB z+ESRcgcFkRtshs!J$6R^O{i{?mtBaaJ;R$xX}j_VmVv8hD1X3eHyib~{^Pds=4C*y zA%p;)Wwni{j1rCov2z#(w^7sXGuRw>mohn=g+MP)_H=KM6V!`E0&uV~&#~(B-nlMw zDQUDm6S^HNO-YebvNJc1Kf9Tx2am(m^r6uX( zNF;J*_I);d?vmH#k_xKWbf5C5@@OCXzN4nS;qcz>^oEAE56b_oymuc z*!E+|*8Z?`1BU@HLFCur)`rG^qa&g17oo%@>XUhLj3ZjkFx;iWg?xRmtg_r=kzk2mQPP+ z?q(JBTFbASM>9}5OLlD;lrPrQWF>@^ugGAedDns>f6qSs+G}{I{U!gKd=Ppz&8nng z`8@E@f?Nc&X13@%QnkE3$qN@$s`By7Otus04-75Z8#>G;XjRr-G2|Pr=$PJUQ2sOa zHjRHL^h{o!1k1J^wrz~$B5V@l3bp2Vnk|%*PRJliW)~lPa7v$(7Au=gK6oL%c*;C;$hkQGOgZH%DD58MoVzFLo=DDknu!jyRmlqD1ytP$G z-(azrLlyq?a9VfsU20%3+Dp&dOw`v23}ql?FlF;q^^NoNEUI(dH}9|Bv5lnk*|@sL z4lAGC@!skm7wZ<63_k8C``qShwu6}C*6KFHu3wDt3zK}1Zqif_veY$OgL?F%jizEk zbL!>c75>~4rd;JofX=^e%6&L1(DBYoFTK=IQnLN_+qajLNaHJB9BWQRl80q;b9dua zn(yB7bjLfa^Tih%_!&5lnqHk7bZ0Q*l~Fc!n-wW8tnp=o1QbgkDG@DvjW+00@c~;% zvK-DwSj`_-#w3yEFJE4sgMUZX4Gyk5LhqFSK3APrxAWM}y1Z)nMC8; z%yAeggh=&6h-O`iL2eru6x?ai?>fbsgTm{V*%tvUXtB<(eH>yCuq&qxLs1GZPWa zJOcr=Y!vDPYeGxVwzz27X9cp)%m~OF9%Is>kdgQ|%&xc2p&#z`Ru{BA|#W}$32~>ng$03>mEW?7T6=@s*k^tcY ztVfj9Gm4JLw1O>s*Dg?uXYJI>smJws>9ZEQqS!67>3RC&sj`9ng%FQDuzJmj!v~(O zsd@Uq;S&R)t@`Y=Z)V6i9jD3}-%QKa|5}qu%+q!*6Zw5pY_aZHLMBl2+R%kCYhmr6 z1gMBC(ib36FONxow=scjy8}AgZ9eC zV0Kn&dQs7#fq_FsMd_(o*+JGTDkXViRqAM)&}XInGE>IIEZ3*YnZHcS(oeK2zp1o4 z9QMksP1y}jf78_1mNS)=XSR$@HTj(l*-gJstTXK)eXzu@#QmljUGxTWv8h`y_}}Ap zX#(FWECkpiAfy&okIxMHSoIj%$lY zgsCUCE|EK)_WG(to2=T}Lt`kQC?oPUl8OrOj<2LS6-VeO1&|SjUi~NY=rP#S&#pSu zBZs{!y-I{^9i%#w2~YjUZQ^9{y|CioNf5tmu6KqFZx50=&>DX7n z4S`4@B)Q=S0G-BG1UfbhN?ftATLT8)JlAo#6QL=Xz3Jel>|j&u5Ui|-o9^YhV~6r2 zR~$>(Q1;|?q0n`cHsy2T8#UW&sq&=-gukhKSs@S14K~`xzITZLY!Q@f*A$Jr5Qt0f zeToQT6+%UDtce)F0o;F-eH_tOgnsAIdT~)3$SX&Ix#&`0jG+=DsryQ&T!$a}^h1YTQ})eAZacEsK4stYfjzL#%^`AK5U=rcU($|; zt7~eiAKpfk z-~lYex{`tbHndVM;?^)TgD4%QU+purZG6NqEt`Ag=_mix6Pjyl{r27WeoRH{^AHPo z4iIt@>iN@?Prvf9d++{sYumg)w{w#maZhTxJ(Zb?T?H?bE^19IDefZ|geWfOMN#37 z_Fa3A2^qp7jTD>2*OFJ1b!_jh_6~MYNFnl3#qK$>tHP#)*idy6AUXs!1sl25H0YL9 zwcjE@4cSxazJ^O0Pw+xfybn35$@4~xu>25tr}#PKg%YDBtld{srkf*1U>>%T2QThH zLqj}#YLT3LQ41BNsEtlcEmVs5x4JN`;#2>pc0 z5cZX8GXo}eSDt+8KEgjt#`r>fgz&Me#4Hgw+a z-Vxr_pgf)Z2bQ8L4Sy7A)G#{3mEmip#!cl#%|D<5Lj;U9L)R7+i|Lh%1t`DJ^< zhdl3I{@2Hp&oJNAx8lo(rv#G@t>q@3hp7r{3bC0H2hS?R<*b2TwgEWyt>6etVX2hQ zJ?Qh$ATY>_%*Y&>BV#=B2hL!40L>JnbQMHV@4+LLayQ}u{|`T|eugp!u(d3ri6*rtB&>lL4?e-cX4V)B0Fsh?B_ z)264*-MxK1TMmS~Zs=4$<5K){9oriDda{O4>v2+dE4=Qt#CC&D#Ox=KpaH_=I8ZNW zqk_c%`+Bh8lr@uqCkX!U1Rw@`dp?YPI5~7dAa2dhLqq!WvX_UIbD7ytca+&Ta>{aY z$|~py+Kvd2483^%MUH7?r{-m=V8wt7b0J!+DH zWFQ+$5}SMYVbiMdnc=#+;hBk*>$Po4RL2(_u-t|Lt4&gg$dgEYPT+c&UCb+-Gy7kcG%CIVxK)1lq!?p?N0)c%{v10J_1fdc0oKOa% zLDKCt*o~2!jCR9bon$adQ&{lK{0qsb%d(`i8rbOd_oZiMrr)QB>0Zu^+-r9e9zr^2 z(50HRds~#9ORGk*(!uqiCgHq>06%2q7%lHA!aO_hgGEA!@j|)*<>4wO8K8J+#HLvP zX)h2BB_KC4n)3@5b>(NDiiKGy|G?hX<$u9qrxL`nAIXk|R7hu`>1lc?m8XN=MH$_p z=a*Q0p2fw+8}-Qpydb@LF7nt?Wq*de1U%_@{kibcGK`W4>X;OD7CW@7YE7mVx|4}J zd|rC>Zmq&pj!_zgDx}N58&w_Cs*3$BXj0%cL&^&(Bi61)(XO6=6biYSqsT-ab*;DP6{B3#Rll|n`~ z%w5=el0jYUOPhSKEAiM7FRLlCvA2=D6844pna6AEF&TjtqQ3U=8H#F-(O4Ip(OJ9& zmNWIbL5dB;ce{`ZaudMdj4-o8)+JGBj2Ph8tOHL5D~C!fZ6Fx{Q;H!PaUV*I5wgj^#jhs0hR_E#q>rB8n@q~@ z^7EOAo>lwyNwkrLBlVgn*F0_jFujT9LG*ibD%5;}ke=a@UfpODB>MjR3P`q-k%G(=iOH#^sF276JZcQZDIe9&b#^rk9@cZSOabhpt(Us$Z)u(2r=L~F2_d`jGs)qgbOi4&uMvWe~ZajSbWdumQ5q4 zoK9Qz&6_rijP>tZ^@)+Fwkx#uLid~B4Sl!y)+57?vaL5Co2k!~AK2GFHnL&U&Dl1m z^VG6=^KJG;mG&d#={cHea0-8-x8 zm7xx+)$P7-a$;)w(aH*4YIxK7?K{Q?t~k^fwVN=KC&<5bF{PpVd!xUMW$<-SeI@ni2YhSy4a(wb!QK89vcx3a`%=62FW^?h{+N&!r*7x-~55}dq zuMD}=m56u>qHCJ~Fi59pJ9t=$&_Kozl!H-DQ7n1FRw<3%VAIzPZ5!=&8=Kc}tG+?` zr3GMsayG+e%J9yj{PKqCZR?wj?(WfTLv?zavR$_9)@|PwD#+>> zo2fpfe4l^~>;`rN7<0dWs(NOuBdZ{^ZTq?kP`_g|Y0g(oa0SwA;_%N-jqM280T8H5Fq@@p0LD2l@ zLEL&iJg#o&F0;qyF_%XkPH5dBQLjq1dV1DX&d+=2c5Zp6SsYu^tNNXFQCpQq9!cnJ z)-LLa{4_Klwy}QYVmY1o&M$-+4%WRCXlnR}dvFAvhKe}5O9;0Q{9inIKwO7XJQ(d` z3}OiSTR6ji7j3=cD;#YS_O|O38!p`Fjy##zzo**np3d$*dB;Z8hbcYf-dL#ou@8)A zsG?fadC?H^>6W_N*)V8`KY?-3ZguyGad6vhWuVizsk!XB9&uu17Yy?meYdFf(-O7t zD)Oh**sGE6QQUP`b*aEeQg3Tr8m&mQZ`r@xfc8$-dp9K9P5-b|U&<|Xfg~MvL&B}L za;e_a_8={~4cG(u;6I?1`Rbkm#WO{kOL~!oAr<5txFvHtC3qGngcS=3`^VdocTW86 z_B*zoca3t{*3|4ZBbDcdR#srMnBl&)6|mL~av{1{?VQ+6dRxLxr_3uaQs0cm{f@mE zcR}hN;RAEU;k+~-SQ+ZM5_Uk~zQjP&?l5{KYqVzjAr?z|5RwMLceq~{`&FW@9+;ys z(xU%`u}zE|cB;vcYr5Z*YiPQYw0t#2rABmVoHva#bCL;${|^sk7>yZ2*huq)^kn6Z z4nb_$(Q!-Ht)HR`|L?W4Vf*GQGn6?rpZ@!E5>LjG7AReN`602jDOl1DC4H z>s*ZeU?uQHD>#F1{OW*UXv7l+d3wRP)q(FpHSd8n+Fx<&-jFl3Vrcs$fXN+W)73){ z=jK|!_ucH=+((Au2W~#g!aSmGAk`T{0v965$6g<*o*wJ47W8fVf3&>`U|ZFhHtch+ zWZBkcS(fEhwk%8XzDSnk*omFhN@B-xoXy!uqU;MTz?p zO2J8HIr~V5!NYdEq+yfBGFtb_z^kvsUQKVA@>S6ctvQgF)rL-M*sBAtyo%e?nv`|| zLK4?CkPjI>@El+wo{KClQBGV^h9?Y0EIj`I<6jB?f0Ccc;)h>(>#wv3F6mJhB?7>Y zkSTb%q`xT@x((8lc#WCGV+qs2$q&zF0LkxC{wuu}N_c}mxgqh8Tys}uZ4+FN!sj3A zTgGt(tFT+ zE-o+ey2zKh78*G?*pc=RK4e}8vdifeV_LQPR-Sh{=0baOd0OpSOW#udwY0TpuJS3l z24k(l_N8cn*_`@V=yNur&D6uHPeewD0*uIT4(3KiGDN;h)<(LJYVVDmGYqA@$3MLC z+PT=hntn%=O`7=Zr8`quZ&R@n#u=)-CFxkjeY42JN;1tv#p_8QuH=P*2uroOl%v|A zF3oj?hk>ZxEx;y196Q(-dWJMwzq+QNZ9dErg0H9kDMbt%Kb2>o#6)PSBz>fMh+H!uT31zm;&$j$Cy|M$^7-c*PcLO3ca$5Gb`QdRZ30c?A)--5 z>h-kxb<~NdEuL@(Sk&GmWocxv14#k}y`=r7|0I3Hz3A!5PmxM2O{elIO!O3FD8`fg z@*Nz9PXKt3fylu%ER+QrT3Pt62tP7pfga+?l~2T3?)uo0Rf%s8EtIA34xKu5k{$zq2LH0eH=9CWfu9`-Hi6ojXM2L&1YYGa z!djKia+wL!KxZ4vheedU7s)CK#)l@T?A00#OfT-9fn1G989H87C7%{1LF5AE^PUvj z5S=W-2M7`x#p$Dbp_3-to2-_PC@4rgUcXkfDm9=kPA5r%u>FxSNi{lhk0JpEi)7dn z6O^GAKKazY+}B8HplkrBkJ=;p__(1PycBUe1T)H62TV;MxFM+tV%go$`QXroAY~>$V%^K|Nbh2`L#qdpM?u_h}>N-2@!6yPcb}sXj)X@zdb`;^3qpQ`u@K)eF zR$`7rTjRtw2z@U-k|hkrBhcE$5C;Z=um_j85$p(BdHfO~cpAxZ3i~t%Sh68`5R6Og zGrc3jBcuKOqsxa!ZgRUFjxJ@qa@dorjCVO4ZucFH)#X8UE6aZ-QaQYAmdjPSr*ZGD z2KF%8d&$>SUAgM;(dI`1Rb#LQ>_+*OUg)14(Ws-a#C;3}ub8XcS}B(s*$3vX7+E%A zZaj3jS@{4fcsf$)a?M&cT)DT_Rq6kj-F~UA@yOA&-m-?z+hDS?$`;Pbi}ASGa5J<4 zgwV}hzp$n$b4jt9_y~j0M*A#MGLUqM<(z?k{pCA>2YcsNT~&A3?RQkUzMB4$ZB7}b z<+rkaC3#2Ua>_!j&V4~!6xj@yT|0el3ULp+qsYw>jQE1-z#&OL26lDAL*wI5Yk%W# zB~*=kT|!QLucpM4_u?XJK3>uHozN3DLY4x*5I)^tjE%Md{>wVruO&f+gO?WT7T)Y>o)80!Bfnh#i-G^FCh0EfV zqnlP#ZXYf*wG6hDxLODC=J58)l^aI2Hxsw(hC>~X9>XR`(K*f~ zs}>iJZ*)sdOB=o3#=%CZwDn-tcU#=CW`m(=ajU(cy4JU5)0*1a>H>Rfwl~+N`Y{!! zBgTI%Fb)a5hp?gG>5XAVCra3DY%*p+D|sek@Hu3EpN!oR+?Gv3ifLxXSdDJf#;O&g zI@rnwFzrnmRd&YLP(QF@AXvX>ME?FFudn{~%VR;oj?e}Uy>^do z{5vr#u^%Q$$HvW~;C&z#(j->NC+nIi;D(O71WGBOx?u1znPD%KF$+k+j~P%x6CU5m zh?-O_Gx5U4rA?B1<9Kp>Ff@hQo5hP)Epd)-Dy2ay{7tEC+JH32)KS{F#+MwW<`}D( zHV34!xpVmJTJO`%xH-3Fdvi^F`W&+b0=CR~$KTWP007rLbNp8tRsvHRmPjYid9}WT zK&`GN+7GBpQ#}eiXl+Gd@u6eWk`C^(*%}vAxvD!BR1Gc+u+dQ#SU6anw`+r}t?3DDfZ77_}R9gOx6n4CM| zo(6L*&S0P!0{xKhB#@4ZUD>D6^(7^Z^W7D-J!9qbyDN;lb{Q+W=a-N5)K<9XH(uql zw#K>MJeMgiuyT0>XpNT0@|A%+lPk|Vw~>Eh=O4Jty7$@nREKK&%m2OR3e$-hn^s{u zDfSd4+6U$jrG_GN&QV@HBT$!e@+EIRs{rDwypK7RUnedrzh=&TQ){LSol2cj$6jNv zDZfOD4E79`zR<;pdwIk-zuV}QonEIu>NM%gVE?5IU%t$~d^vGp&D5GyX>sL@a)up$ zk@9ZPb|Ut`Fk&i=BsW1)!e5$?8-o0Qs`wQ@`)R5>4JS2P0o9`0TQz=JlxK#{$g7nJ zncnD6&zOCLANC5@ zD|mXsUq{xzNc+S|ZNa~c_E4Wuh6Z(tOZTO&8&a1E-R}O7kn#}RE@+f%Qp+QCmC)^9 zsdwemkQV`$CPYQGzgNKSS&e?~=2kR{eim{J#c5%G@{(yDv05CH74DSStMEzCi@gc& zB@Nw43rx}~ntX?yDO$ICsinK4qua7{_qrnXup{lYavgiv++I`DZdSHf==lzaTnLDg zUJ=hO@x*;1@%E%B#=#!RC}xZLI*yXqBfLb5vc=pkb&K#S@rXEV9&9BZ)pbjLiA5M& z$l;V@GnHl*B7zY(FmO`@iWMfYCMrr_QhpI*o(stAU5@E8B|QE}O#GGd^BAkTpd8Zn z1W`8R-E3uJ78BrCFr)NG-^6rO9*JcZPE+(vyswo_Yo$(jw83a=LPjF|5~MADk&y|% zLg6K_N7a@{fn6(CG&ftjyO3UD``GI4ZlsPFShVlZDek;7r)TGGrYO(E*a$Um=?-gO zFQt`O)e&xOS-xWXiQPMU=8)scnNx@MEgE=Dc{;|H>)I=5BAM8AjWqF2xCW}Ee&tY% zou|HePqH51UqyFe{R*Z}f~-zB(tLW;%=UwIBL|v5&{$$J(ljSW8|l%%!z<&Y@L1^@bdRpuLR%$vRn@(8a$fJI!6gliQ2jtlmYNe=5GzxXSw65WAmpP?UD49k z@5Wf4axwPZ#4D*{+2-#KC>QbWOW6Fxxkfm7ML9L<9L7eRH1=VA07FX$)^~9#Njmui z!y&Ox;PdghOm5DaLWNXT0DXhX3a1pvSL+%#d<1n-tP`!pjJkl%Hw_*ztwz~%e+-E+ z3?_R4xik@0;Pi^`A5eauTjVIv)h_19N$3TkVdUCjlYkKB!vRIs%1@35BtGrgyM)u$ zb6}~fm@gP|(57jo(*JSba2C?|rk4VK08Za6XcUceT7i-^@jGC>0c|Y4_MutZ^ksvY zS*xsNH(mJgk1s5l4>wu^RRmvw6|iP?Al?OM5Vu)T#wa*dC8sp9VGx(er*tY#ewyow zbpF-G<3|@QI(oeERf~J>#;v1mQuD~xjkT{@EU(sX+&a=MwT*7wIM=N_rdpMki)Ymj ziETR4Qqj6&d`D|V%aQgiOY6*$v8`i0wwk&l9UVsi72boF5p&(rE&m|Q;#$nV=6RIr zH-YouMtfk-Aia3Xj>1e7l?CqR(~go@zw#aBJN>Z|hjh!I&c!aVKEufkhDwKG9Xj3k z!yh)D9%S!2Dh=Fn^vn}?N1c&zftCo9K7?En02jJ^r`s8~lD4LMGKW+N#84U7y0Y5Km& zKAqN7b_=X3_%rx6OmC|4Abmte?eunHubW;AT# ztW~d0HZ{y%9#%dls8sh`(bg<9WY(3n=q&SMdTUq&OUjv99{bm+iK(oGDi2O6kHCO5 zt*pQ@1=>ED$VR9L4kfg5WZUGbch-`)DLC^iN@0>V{MnCyeeK* z?&!)o3twrN-|zV6e|GfG$23Tv7vy^|tv3DqH&Un)#hH>|I=$x9GC%n8V9YOyIhGMBy}VCm;>s+7N% zw%p8F_JTBW(#GAx3xs_==wYMqN#7&k!^ihdqdfmigujp-q_i> zQ9ZA;eXo(?#HaVaex*6|a+6Wu8e~$W8~+q(iXtd8WhE_rN+?G%3GGhq37-Y8L-AvX z3SeHS_z2O;BqKcsSMQPKG63r=w*>+v$s6=S28wcpCmE4(ya!?HfgL^q7>Giv+w`T^ zYfxa)k97L{6@BlE@Q)R+TIFZ?Z1v1UC;NPe_j!OKVu8*<-HW4%tb?R#&FK4n z<~K%W>~t7lrznGV7c!3w_8<21PWK<~A2b#_KgF6UQ+W0cmmXtt!EJ--zP-Nfc#tySm1Revjz)Z1e{)<(;`Saoz{<9c}%}Y2|c(TgP8P zyHv<5$BrrQ7D`v4UE?LoVZ(H59(PeSZMUAo#~eqR@URo75!;N+;>5uV!zerd2J&}@ zkQ07VeoJ}e#0j=p`-p_$$tfjXR;DZ^9ZZUMr5x#Y^cHx0_@cnf4b+IB>@Y=q4kxra zeBkxfM*#v1Ycx`$lS?jeK=k!Lg@7kmWzSEIB;J;aMyAN18w#ZnLA;STZ$wUGoc4Z1 z;R=@+VfF|2CBgtH5?hV7q7)07tWuSDNkDrER4>dD5ywmt8sr_0d|@nxxG@16_Az77i<}9`>XU6|i=+S|kM9!wcbCZ}#RnD3;8Xg>8-~pJU!mx1 ziXs0>zL~p8XZCZh6SJLg{q1?;;Wc-%FWd>Y6r)dq~#mzX~-l_8IyC2}v4;_})l4tjV*0dyH~G34Qy8hK*x}X&sO@TUHD#tZ$gq zcL;|szBAb!Jb5oWkMzBUAp$mD0f+>xb3**?#AQyIbQa&49im*npfRO0rzm@oXPeJ! z(ge;x<+KjF7E0OY)4Feh>c1+vaEMR#CcCJondr_j%rUIPeDZKU8S*v&5+oDvQ5SUM z*qxJM3V0zf2qzzjJt9pJ@TYv-SW%exv=kusr$H4?cb0gTugBNSPPbV(R9H;s`BZw= zLv22b`pFxw30y}u3gCS2WLo9#MMYeiyFRh(JxCF%_bacbQzZK1M(A=05t8rMSjX5c zMSsvqg%w5z)ih$@8TPfZ#7CtkOFhPuh6+bw7Iqh`c~x1{ralAWDNw3d94_uEhRwY+ zBUC{>GjudKwK}o7^t3pq(J)CBN(bYaWTex;&cm`o`wZ5;N{jM*Iu+uKJ`KD@^8e3a z*v|;GLx!!C0$M5QBlr53-iGmJ{XI+b*M01(PoJq>_R%f&fe#Fq@r|W<;+Vduc+4xJgr2BkvurUv7+!QB&2 z{>`m5u`^q1>vs&aMGbSd?ezETK7Hr@xyCSop3{~_JKMIVdmelI%&4{Z_zGLg?tAav zQM|8Y{hrlej6Zymx)4)Hxk(>n_PVq_eF)E(@wNsu2Xi!?G>wu)utW1pIcW~H*jiOMIcbI?bJYB-MY`6^tFBc#;K__cl!bX z-`y;*_{alaeBem9cx|jFewYdr^&Ms_;_`1tL-##?;ncvusSA(a7aAS7 zd`mL+_RKApl`oQ-HdQa-kT@~sSXG+OEsyTN(K(S~<*L{`DM0SEDb9~O1Zq4L<>wNX z(CH?i{ zLiRX*4P_C6LkfAOM3FU#g|;4`z7eSo4r~oC9Im61H%O@Eod8vIlD6$L z_uYFe@p9tjWB1d4#AA-}ahM%-6(!fv4D`FZYA{Wv)Bn&dtn`+L zrZwO@^XI<=@~@5ltYz=s{N3+v+5`Ht)u8mX{{Hu^Z1bF6wIY4rYw<_PzK0_WdLJ`7 z3;kP`tXTE*sufGNOl!i8jU{e(N#ikUMn*eGt4alGMF}HMmm$n@AYXG;X`?|OXSbeD;r}dQ2Ro5Ad3AA09Hjaru zN(FojwK=j6UKg;$Q9c$EdNF8Jhw>izhJmj=o_KlT@z#>(?%&t&I2>clCHBebr;wX}(xdAAViwKkwGWE2=PzR(3UC9U7g>6c#f!!u5 zh`qG=M~COlU7c3VzbF293;TNUOT4z&?|SDHtcL#p{NeG#WBu$&X~|DK-8B3wg35FR z$>f87dM5uBx}IY1{tCEI^R_`nh1kS8)KG;=j ztM6`E+Jpq+^-I`rQ+wy)H7kZs1{cj<+db^cHMB2l!ACWi7JPllHS%Y8+5Ciu(>$u!OC~=8KMRuQfLldVr6PkU zk1b$dj47+w&RA?LRq}w+dFhJy;CBP`fmVDBA0+$WIpmc9q8PR?&W-VWJ3=7`_6#mt zf8qIdnDEh&Zf2{Kxpr17f6o<92#%^k3F@2@rjgLp{$o zr&Rxo@_7GeE0H<;nT5hLaIQ3C!BSXRqxJs>(EoPsPeIPHAeS5+jBw3%>S$&kpe#l_ zdC?BDxl0hv7W3>y>`%#bM$AUUiy=|@1)0jH97e=11YIURyjm5;T=@4VJ4Ran38d@L zDp5Y2%N|yHXl&n)zF;rVRdmHD+4WVaXA$wstsL(_oRrYea6nRQDkdK^j0le)_Yfos zAapv!sn7$L2*5&eoU8zRZN!BNt?w!O2=s<##v;M}!5&$bp@aTNnTG^|xk3VGyTr4K zs{cY&yLEAh)QoxgUfdB0daV{h(qC+CuM&w4mA*8=T*%IX_N6&1b2idiz}b22)Qil$ zCYReqn`s!rYc)gO6dvY`WmTL@N(G2!;^Mtqc4qI!bzM;dp>YR~nEmt0@+JwPTTy{k z*w@}~i{qW)vGsfZpZJKO$}2Icx-5Sr{sM>f&Omh#JO%Xy;W3kUD#SF>f~rA-De;Yl z)|Yg>NqR$S>l8YZl+cC+wMnRs*c<9|GuPY#ntduIp~0>-nXWog^%_Kv8&R))6z#=Q z(c@gTU4DCfYx%s=vmPISLO@KqS6SDk5B6 zy*1(tt1?ufE$eXZAgYF(VtD*q!Z~s=ww!5%*f?Yq}kxSG0(G6&3IaP z?*0fJ1Gr}Xw!1|7)Q*ei`wPoW^&@)@h2yE~!_w|qU3YH}6jrp>H&+(AtR}17T~p)P z+}70+s;nvXEWImSR?+Nr7u)kI^KC^XmG1J^$X5#c&tKdTI<#k`-c(N4@i4!Bp|yGO zF;7W;zOA&Pwy>bYZp<%tc`GYw3K4#Y=(@(DT1!Kv)0JwDTY`uQO*ZP?FZ7y;>uw0nl@b<{L3HM9cXF<*(}O@{8tTK6%sM zts*A4v&*S3O8RH9{FSCb+N9W|P|Ocb;q7XAU}bbQ*qrD{dyBqSjep!@C>P(Pufy!f z-{k81YPLvheDq4ZkBccPtqE|JkHPLUr=NSf{e%y8es3z(|Zq`zUkH@8|8w% z($L-mi~387i*POYJVUem2YjDo*yJ6Q0<;9HMs|#S_}utydymNlPb*`r!k75=?(IAG zOO0b6p5Mz@yi`lAAb$zIR9E_yC&4>fKsv>7-~iH9ahBrLPjEmV?OZ;^=_l`D0rCaAQkudy zj23WS3JVnxc|P_@`*3@_eb~-qqFjZ}**pc@jVc!p@;8*XM7x{y8eDR>o?sUR?}xtA z_#>*@2c7^vPBYc+hNS8vO9srQQR3uOGGvHp*(eFgHUCt|2`s!fNfGk9O(%-$savAa z7Bxl+B%=G1Hq3I!g``K~$k;qH5Y0v&cb~#Qj`*UOsYZ&afej8m$}|p?>^yNy3r3mX zD9o%Gqw?03QcPA12!iMd-ARozX~3IMSYTqI`lNl5>L+gmvSvdYl1>55T2eV+YWQRq zVK#&NB@=u)6*LnFoShNj3gC$*e4CZCAyh=98x$X8;A=zzy>q$`M%o%2Xww+S{i6eR|N zelg#Oa|aW{c%Vqg-2wAU39zqemqgrZakzs%F9DBE&`=Oe_;lqQlnJ;7_>NB+t*HB-wxzmGg5M%QdWDP~tEfta-UEOR3FiamZ4cHP2Ahm=Eu1W^Y&* z?J4f);zDU4z;VLa0*T!a)k(k#^b3BKdXP{PLh$(F{qCkPar|No0;G6E zkd7K(Ks*^4drU4qAlggnX++4Sr*F{f(O$$-j}Q-QxF zOUzJGTGrpNqNTjVD3!?uS7o8iQECV0Rv)Y?bNS4rmCe=e0$)j)Cm77LI&95VRc^^p zp7=|Ft=N%oGP;ZW-qy}}$CeKpb4`VXdAa!(x6Lx2xe6R+v%yj65BKJqEd}=4ehFb1 z4N`N9qsUrf@VWgP>Rh$JPAqcNH5V4tyv5U0AX)P*=KMT+fn07c z&u952xxiE?W4!GJrN%;2fsDBzOS0XDoF0WHG%DXJ*%#KeGMCkyZ_Jf)^NUIfTt@Dy zBF@kK*k39s>lw)>LEzNjHw>p8VZSz!ZJ8Mf^Up+SRZKxjwGs)lmbLwJ%F28^#Ao#W z!=A;ruPyG}A6s_kgJ;Ls>TRKI_=~GgY>97R(Yg&^8(h-Z*nh*2sps&APj9d-|KO-; z(W&C@HM3@|={|f|eNN6>vZ*_`ztgnJQ9ta=gloV}-(+cY=?&vP>1;XylV!6vds=rL zYaF+k#UfwJA1W_s-$r5K!CWCOQx zJtmx+@Jk89nEEe2H;HhE5FP!A%TVL>8Op&%0SC~6O@FiaPnIRWr7Mf_%fYg&FY7Hp z<4xc^@1w%#Uw#WL*%YNp(3hs2V?>(?Cy2T6=Q^%j35oqvHfg3)JWX7iW zCBz@$G`ccQk2n~)mLA%CxbESMQh$K&gCE4iLQl!Vi^z5@e0%RTe zv(|b|Zg@@}NyfU)1^Vcgoc(AkG5g#J8e0j(A|WXS;W*)gQ0byiNTT4Mq`eTrQXliD zRs!dRyNp^P8TTRVz+7NsR%8pXEh(_simi;fU)(Fb0NI1*R3j}m2_kBMA=FJm;Uh4{Lczei1tZqn&f#@~EiySdN`Y>m za#+{pqg>e_DMiS@35Kw}UbzJ9I+RWi>e*Ri*agYki=OE!5~hSAHx4nHDLB#m`ap#9 zoj>`Exz6mG_(ABipWh=}Y!-RX=b2yQ=js=+hBw(mU$k0FzMvfVS#AC+Cj7jT{|%KT zgukrHlZ!fQd31C3dZX3wvB8-v1#>0S445rh$@yYWe}B*3Jspo7J^EP3o?oPB(;yPE zlDJ+zc~Z`GJi%t2Iivi;6OIijl2h0QTz)kSNpFK^&T(QlAsJoh7*oNU(%X~d=MIgU zDjO~a{tBUS**Q`G^8$W=9JXcbKynkS1pL84<(I7T9C%|xSbN1j$|@5d#?FLzcv#l7 zeKU+0M%w2Hsf(}-cxgtj$>H`!9U|@@n{pK^QT|goru-)>Vb>|&d+jyW^_qf29J~VU zgR`t8{+jqu`A0azB=Out9Y7D$%BM|UUnblOL8z`ADjOuK?M=~`EJ34?PzdxTC8of6S@RUXvoGP%3 zv^Y=>v!;r+>;m`UKEvI}(~&?quA!<@PxEC;EL4+aK>`#v(<22 zHDW!o$xFJtP;RcyOaZlWu-c%esV4ZgA`Za$1S#+o7D*Ih+5QF}Nn=gzV#V)mHvg-O~?3XS(@zZ4JxuXs#6rhmnpYUf~XLfeK7L>uEuNcv>!T9~r}*%`Br^>i0s zSsPn02twH!)gKH{dXrv2Ozj!xfqEpee@pLzKZ=)c>b7d#j29nfnH*F4<|-EbD@_NH z4A9`KVN!fW+e<|Z2=xZVzIoHtQE3PuqLdrr+j?iy`5^R_)D|DC5Zlq3 zFqiYGHE0PoZZb2Fh5-)|G=y4XBy?Z;h)@kh^$7FA){J1LY|Yp6h{6b`_3ok=qvx!Cq5BR zuU~?v!-Y(*inaUpeI%0zF~13CmwY#fg7l3q44h+PZ1L#wh2hlhbp@e(mfylYti={? zCY}^RG9+fezmh_m!9t{cOb0iV-iV@o0iSY_HaWIeua_7wg53%Gp20-C zWKk34!cQ};RuIHVn^K8Fy@KbX^-Nj6yLo;fa@5Q%q#de;6hVbpp#f*Wm`g%l7p-3# z_dcX=(OWbN_LIgOmASp(~YKFY3!~W56@q;X#U|FnT@U%;;Qp$MWd@t4O0HxbZMoGIc?GZL7S(xk zD`bPayc5OQ^732U#j>2VH&8z`zn?CUvzHRwETa+$Kt69P}5H~t&c<#XZ{DBi20vh-6G8xxBO42LJL zgo#AMfbCe@ZLM9rWy@e7zq6^e3t%7o{;mlO8&_-sCzEKP%t&*1mKMQ$O{c`DnNX4* zO0r5589#|eqZcs?+#98psdN(JTn3%WeAR79b>`Usg5p<71@X$E^43aetg>~+7N`Jr z!huN|!_BmYsf^0j@`(xDuAaRS!!bz9G|Eg?<`>lI=n({JO7rMBm7S3AMyJPeT)5FK215$M+({3 zjLLC8`*5A|#w@mK)~(Dmp!`{Rmc2U3%t%0gz4Ciz+P-=@s~h>o2s^bvd2<2#PvxO5 zw(ZJ)3;CbVOXN+Rud6!;3xTw)t|)5qtF_BiJFj&RisJbW_6>*f@eun!=%>q=cL>4h z@U#bvUi_!qmv3WR*S@iqP0m#wor~rr=RTcZbCF|yE$Q^8onhcDkx+@OKs=2s<>?5! z!yee&xDZRcr!N>yy}^A&pv%L_i|w9!SCE{;FYq?(Hh9}m&d)$ZmP3{HhqPlY7C4SYLxQQ+S-oVTB#V% z+MDSI*_|!ES9~p=@a)d27T-VetFWiV_slcurPAPQudRShF0Z)a)!KF+Uj2~2lbdgH zQKn`5V1FpjX~#}KpJ%Z3k$W^3(!x**hn?7>i1CIdg4*XZ(VnG$!>{ccDGO}!ou6F~ z+dLO<8epKm{!0((U+(zGM|S960~b+5> zw`tE9Zr;B83?JuyBt|FmSHObl1V{MLa^=VDqmMt%KC1k9Ijeq&-NTC7F>^oCuDq?> zK(~qgo9;DY24Ni&!i+;##-+Arf4eiIppV}4_U9{qmbhug@;bR*N?%?JP*1Hy)49Nj z3;oLF5#_(x+S8}mm@+lOez@l0eb!GZZO^jhuU8PzTgB@N08mr35f*BX^n-tbRa_dT3G7Wq7~(P@+kkVE!6eZZfFU`1ytBu8oNhivzoX5}H}A@iGT z_x174^?NtYlH=VgX3K_;D=+U={zW+ph>K&aey{R}$cCsC8jBRv_sU%j>X{A;`A;&=e*(+D7cER`O`6CLl&{7%0wGpy&YU*||5-v} zCUKjB6HR4k$A%WvJQ>2$*zJc7EF36cmbzxs@zC0xYs2BSVZ#>!^8(@Ff)_pKw(dB@ znK9x}l{k$AYhdpH^$ zj?%ab{$&|_-F@(W>w%m-f?m;fqo4^!cUT{I%q8rwv@ao6k9rC{$JX6fX2WpVHc>NP6;HTwP<>Znp~#%xWFpxGd1bK54d~g2e9tvKtH(=GFK+Fg@;C zTIdRwu|+9$PDpS()NXAqP@XRjPzwmjhe1$O+ zf&tYXn?@j&ka+G(=IbWbqZQKXm*70Ue&Raiq`(q=3C1F9#V=XAyH}41pYzmhB1ScF z8Q(Y4eJFqmk}5g0D4lrQS1fOV0bLzC=%z#)Lfo_Y+FC(?9o(@hB8w&P*R|*8Fn+-U zEdJLw>z)v`h+WKRoEV>_XdCUnK6sSmz>0|obSdh^h`{_Fgntw!8-cK4ss#~j!&~n5 z@c|KyLc9Qekp)j%(5ocgNQ{`L%m%jt(F|E4toU-@(`8oOb*0!T!OMO9zhDc&l8n|4)h~Jqd5Q zsU>s!S6P-LB&YUh?bzpHZA-tKJ9c zl!J=6qQ9yMiOZ@YT=YBXWMEHYCT{yzcNp%wL5qa6IRJ4|Q|-9awu^fZ&lVMSbcng| z<}~?Xh4gasGTk->4~8o*CKkeNmR`bJ@v*7+w^%|~hLhshn2(0np|9TIGDW1fa~)+; z3YHcjh*Fs&mn_(#I5?I}P0@IybXr!}MaxNVs4vV!8Z9{CA=1K!K}Y=UWvykax^UF@y}>uU5@kHOg2{r10lJTAQxCT?fN`aUHAhC7JrtXQ~ID5 zyEuVxOK|}@#r`77BJCS=j`}i8unHS><JARE@AD(%=g{e;PV>~MBAr!D&}u)6@_8=FtThBvS|h$8 za!nFtcgkArnPf=HWm3;jWJ?3rEM_AG`keKflHcPOgxo@NfX`+5dHH$H)${2nZ1WUH zm*zYwKSwi>W&nAV(!G2=^LxqOlHFT0(@9hw<#0@CMF|>2TpUU%F2S;(T%`f{2;@S1 z;R)e{;|ASMB=9V(DH`bB6b`k{}zLrw9JwJIV z02e+26$%(B^b2`E0yZAT3c}73x=o13`~upmHs&=9T`2{^Ud>%5fPp*;q{O>ChDb-k zbhFbpwz(`X5X`g99hz&S3+t?bem^U^IdLCBtc+I2yZbwTWwBZ<{~5kvmsf#b@DE!y zHdQng+wH}5O-*(5>}|}g>5X|_)z+<`HNX**dES6*^ya2u9uYl!723-~S&08w=k~gq z)f-n=`?q((HofnvEs@HVC#N@Nz~~Ej>*~CLx?JUlS8tZO&gnc8o*J-Zq(I($k*L>A z>U9VAhJZ(eCi{m%^6Ai(Cqdvb@`eCl$(3=6GvM=NGxj>J+zw5^K~3Ys^mWi~qD>Vj z(Y0FqK*FTV26EP#isedAq6VAbjP=Dym(HtH_iYi=7S`8>`Gr*`4uRraKM%hlk&36@ zB+)AQj@H&vDDKIjx?DMn!w4+$mDlkgE~UK+sSI4~QpG|)*B-#}$-i(9y+^Xu6s5T) zZytI@Ye($=f-XO@CFuGgoibC}G?J54T?3ut(f$6)G=d7HdG zA0BMV0}@gcW^00ae!(YF^%FuAH?W;BNpRHo@k}27m!ucSym5%ninpOVRr=sbetknZcdsK*JKwXFfCY56wV>*yEq$ITmwh zUGZFnARF`v*@*ls+>q~tmqm^ri#8Fsb}nSnRd9)XBlJvccX4QokdQTvy^U z|K?_~S`x>Ev0gRV3;)#=ofLCNC`U6=3ib(S7^l}uyOv*b0s)&Pyg{;23nL)``4i2} z$ngSvp2W9RqSb)ZEJPEA816s|<5QtDs#OdR1LZsr_;jtHdI66V#BNIAf9VZyYMgb_ z@Bv*Xjy`Y7Xak*s6P}y|ZUYP&T#&K>M>vj&#AO4KbV9#gqGc; z^P;G$G{s^ze{s`_n*6rXIbP2!cV3%!4Vcb8Wbp0PjZxw;edE}>k)WbTfs}uRqLk(i z4A|`-sIJOubC)5^pv{XpulhQPJ`fmrA!NLX@%X{%U4Uc8MB}Ath;aUkpck2X!gXyu zVJJ`Q2O3Ns)RY`eH8lF&Ywr-&oYooex}Hi4pk@~%!G8k8l5kFeyU9%5q2sA3f=Y0u zJeDsamK>C9wCkbaJm#8$<*?eoztcbAV!{rA>O(Z;AgIuBGeOrOya^LGj1WMC!w;6$ zS){F?4Lsi4fVit(@Wng_v-AROPGap7Z?DnOffe7kmH=&1O}!>yMkXb4=e)*2&a9+Nr=*f^Ghr?b(~fZN~{STr5D=DJ_*WMgjjX8%DL=!jURvZQ)6=L9Do0ZRx4`{{oQWc zsh58|c+@j8RGQnh`M?hO+2xz$u}^<_sOQ3iTW)yi-=5#tP;=vu-4i;vWp;j}%F}6e zbzi+UC$!)qQidenl++o1Z!-Q%4Vp>wE?seT;u76z)J(cBtLkS-do#)3Dcsj~j!&D- zWfo~NFh!8E4dFlZ??3<&hw)L@q%@XZ1yKoTS}=cS2lmCJu7SM+_)B~*wr@cG!Nir< z;fRyg5bh=`kJ2adndCP|=<4Oz-T`($m8GMbVtY!ULGb{6HGtT39x(-=Ph?|)wh$)? z5$wh@adQ+fl_VMj1A(Ss&aM+D_9Eb8^$qi&H9!y$V6sAd`CQB(nzc?~gFkg>xTP-3*6hUqqODp|K_DhyJtD zO;}y=w0>K`xhQgipf*g-)Bws!mp(v3``EQn>7gxVhL#jiV>ll}aTns$(sn1c!SZYbpshl7dm21{BP@Jf7(L_@QQ=)+ zylKMbhzL;Rwm(}ymUA!3|pZmg$jHU zrV{PU5;S(fsxkk4QRy;5lf|=+M;ylYOYtMK!|%Kko_*!@_d)rtG3B4Tx0W40UbeNH zH62JcLp=ut)@vmsUBcCY43>WKQhICn=YfNV%GZz631$MY^__tcm*2dJQj@v(U zyYktFMf|oEiyGpdhN`LtkIM5<8%WRR<-Xku&DO=t;pxL)28Aj~4X z*`x`HX+Ga@NJk_-lqxEZ@%jL@WPmq{{RS-w@i(5q7hpPYrCOE6x&8;qW>C|pF&*Na zUx;=9#9wP!iqE9{pt=Z5Y{=pQa zKXD9bg;O{m2mxNmuf%IRxfWeyB!wL&qdu%N;Zf@HI!+G@U~=*) z#gB*dxdbK}3b#k-QCqj#Tq!5-g>3T#=o~0M44+k0=F6M~(t)R*n#9>kk68wqyXZps zhc>Bunb7Z7fCJ#T2GcDFBp!qbX%LnWq+?6MVCifLC#eAx^ozdArpO1Hh}wL96!Hhn zuF#GXJ$udBEelcP%K-C%5Mqc7S;@&_V>m|*=EfBy=tyETr;Hw1Ee)xT)aHBzo;geJ%)K{EA7Vd-(%z+~y3 zzP)|;s|iFRLy<`0vCu#Wf2^85l)uxudY%uT-g!q&PfKZOOHcI#U>=T3GTu{`_V4Xu zzoEN^A|Le8T_M(CkgnV<%f5N5TG{jX(v_E_-_dQ#l4=y7wT1GbQXbt}oMUA922~n` zK)nN)0uk7Y{JHARN$z4qHDRI?0}g{YlnTWq(%5UQt2lwjkNal(itF0TkDpL=CxPSi z5fO5HqO`FTfBs0sP<~~c)Am)+7RN2h;_~*oVs=qzNZ4ljP+3fOvfk3h_Qul4QkXWh z^@lu?oNfyCn3R{m%kgtDd?O|;f9C0zpHbyMs*^BV0^A2U?1BbK zs|pzrd6fjriG@#)@KFZ;x~Sg;r%QRyGs-*XlGUC&m!#*M^3F5NvG<(s9J^5WJ0Hoa zAz$Jj4dqWOZ}S^s=WZQ{-Ft6r;MQ}TymQQfvi^84ZkYUC-Mcq!MqGTSg) z-H&10E&=ZihPcQ4W-qMI(E>9QA} zKTV(0r|?$u#h$_EiAT|Km(Wod2f>Gl`f4x=S!#2LZlSJmg=eVp5+oAT5!;)4X@*J_ zhweLCy`;x9aoa3X6hYh#vkZ=aY;DL;lsG2L#(Y-?t_wMtre{S;%_%Kb4wjp2J1*%Q zNNF-Hxa!A97y53NT~>L7Y9lFz>yHhzr(-wAULX`wDZ7nkPZ$17SQ~Uqk#G)m3O_1Y zGxuenV}ndX0+ES804YXXcr8#n#F&VB$X274r*=(~&Qhe-X!Mbn1(ZN-U`xYbN5bqP zuSr;7^d!imPq3;RW9Fsf9`*#JxCukKs5l!*acSO&JhD)toZ}a@HG2r{uYms(dBed< zA;4I|As}QCARtFj@quTS)2SvistMZ?ROza+DtxuOrCaB8*(zMlhSIXC^{dPSX|Imz z+NShDlMA;6(Z6q|eJ}kk)-^jf&*aF>U2YyoUdfI6)Ac4fZ?a=kCCjtY7z5GqQ!1wM@*N7)?6XHnD5rM~%xBmOtX3DeeKhaRVOQ zFr`rhmi9VRLZI|(a4<C>Br&Ch#M@fCnfaQ@pL7&m?>o2k&XD zuw3}$@Lw`eIS>RZ%%oxHK>;fUuMp`ha3pYjr4-%zE~1fvlt(&Ca%xCiRvr*wWni?oS5gx%DG0w;`Y^zw6B9s5 zoFYR&2yjEEYwJ+P>Um8IgN;jDtnHQL28J@&#dxBK3ef&&>eG>qLn9t1rc114(oG8d zflWDE5t*{*sx8$yOu_@?+9;u8vue&5j_uvAL zI1Wh`rmsPF67hkf5T!>;@G0kefvZJQIp9CLqQN?dWTKolaLHW4nAaLVF0WuB!ue7R`jAW+td+@+1{Tk6&i4>#Byb#oiqs~deQ zI%1(vtix=~wOEVn#WtX^QP6lrnHzw-V5 zYrilt*r@J_>*aTFwJB#?&J8&yF#mlnbZ|dn7)<2Dg%OETcmrZPphTeYLNX-`3C5Dg z)$+cFwHtod_^1sc9E}*FACLi_qoq*9tqEU;$&x01t|{#21*!!h90C(YlTqajA8hO} zjODhQx8xRn{M#KJd2tzz#F3}Udxu-<1A)-Mb^V*n){h)Jxv;siqQGP@0(h^cqIGTC zERVG^6o?kXF~(#x7>otAEgRMztS+!H^HWbLzn<-@ze_3TYPjBBZEL9?8(QS^I}7u! z+aqQJdv}qe)Z&rO`m2gt7Q0)TcjPq%jV8;^_`tkjvw2o~Z1V$w$_jr$f!pq@Y4a>t zymo&}+uW9tIwP?8w#&Ja?6A6uTr00zv2adli`kx=>$bUF@xj4*-_}*-dn&pQ4)pDu zzdYQvw9-EIVKLtNbDX@_o5}x=0iD`L(Gp&6A_GWurgX%#zDoLXNS?yV;cY9bJJ{6DD+?8a?zEB~5+{qYK|D)=*3G@rtWBGGdNysECG~EGB4^4#dqNLCJMBrBiFP>3>u{>OR9F3dnR+s4&= zSEF3WRit~QJTf{@Gr>rZRLz3v+=)^#9{YP%5hFbZD&|~8RpS4S$1bvRxQ}Zxktoy2 zBcYP)ttgc|n6VNdxu=)R-7u6>mtxABf1h4_41C5I-v9TDs6p^TWIramnV1)-LEun$ z;Ved15eIy>pfTlnelbhnHK=KslRinrNWl7#SjeBoEg{bbS@Q=yAxnbEwtb1oe4*x% z7OBr;N*^^i#C-Nl zDZK?56u>H0Tz74h z&LY1ti8TmQn`mfsD3{)79_lbMxqZ0x4b~iHC}ZKQ+KdO*tU?gL*o$>3u%oDLCGgVe z#TXN=)-LsI=Pg8IxN#HeBgj0|+7QlXmq?j{woRmEJ`ER^|iV$h^#v7>EVCZNyvgV9l zA@f~G%8>!EqEc%RiWHmY|h`(1GXF3)#sV$Yx$dy*<573L$W0uAC*i7YUgl|)lHR}qR%-oFT?@`_U-Tg9`QqgHQh>;A1VuQl4-gt-Gt7NTzZt3mR^fsAQ4BW)}-w}eo%pdTs-1jk~ zM$KD_v;u04!~^PGC2l5jFl_Gx-byhRX}UK!vB5_P#v9H@%cD38tvC%uop3M^E0t1+ zB(-pGCKqQEc|6FYA-+08+>!$M<7Od#+zvJ75Jo_(S-2M@j*)cIST!M@;GC)Ut6Hb< zdMEUm^jbjz1=%EV0FoE!wQrupWF=M{l`I!ePh^rn*&%6vP)X2JqMZR0`&o$g^BvPi zVd~h?!Vt&FC`RoLGfIZ-rC<-yG&n8Cxlcd2n2&};n-s;_Dv6^OszaQy3~?kPuMA+p1RB+IvJL}^!6ZUKxz}4q|b8R zbj~2}3Qp%ffv_0I{2xP}8Pvn=AM$fNz6QIqh^|rNfeER z>3N#N1O3SVOrktW{W#8|hyg5tf~#Nsj~Wbtii&`;v$U`Fv7`0|kNv1q_LQaxlZ16<=6Tb6D{A+zH=zs_O3^V}9 z$qqmZXzxfFr~Xsm%T);alCl$6XXCyy7fkc`8K4JWRnN++5O)Cg_{MDp+yl$MdRJZ5 z${uwNoWeZI2ZmM-Ssa8h)`%V>Z@qp7g$TU$qD~Pv2}7-6Xo9?kl%Fdv<~mJHMRsG4 z@?t}8-luZQ3Z*KvSN7&NOC=CDKRPU7>n{Y1pQ|Ac;eN2 z*<5#HWkGI>WXkjY%6S`kyXZ(EBFzQL$vmU6rFf)?h1dn<(LKff7WXsxg@!^lT<&M* zQ)}gv;U>{fPE;-oHh#<{iY2wv22U~iGIs+fV-BV-Xu@Z6wQgcadC0pd@e7!a-Ud`H zk7AvNZ}4s^`30vdLvgRw#YyAYcAJI?BTB-G3<;9GCl52FdkSWVt!0t4Oeo}s*Y+&nB{iHlw;a3i& z`so9Ry{>^*2rQN4fC@t`L?etP;lfcEoX9uf3x?&0&nd5%V>LSct{s)Ft#;+&+FLsO zM?Sxq@=PrI=ob6H2ZrC6n4+{k%Nd?KY>ft?r&@zjohBB$%*wpLpP&m2u@8 zZ!pN3>U^er5&>vbbd~H8DhZ?SoiswF;uJ?6f> z9>e|OvVTvNv6D7@oi7MQQ@jVgGtqRl%9Hbgct`4&_pD{6UYV)(Y&~){in4cyj!wcZ z0D?nSxfhED!KGQn+%@Epnaz=py$dusoRHf5pz<3iKWNq(vU(VTe}p$o)@rkO7CuCA z3|UFZ;!_CD2s!1&dJ!0rRB^6K41n)#gV*mneDt086vb)CA6z`JWaH7p`>ubm47Rt=A3kvX zk*5QGr}HUVbChySS0{O4k<<&399F++HN$WPA3nsqI5`{FKl}Wrm&AHe|Keh2UELQB z9XN343w3qQ;>C**N`t*xM2g8DYzvo{wSkNcM-J{g_?gOziptO6;>d<21IpPq_>K*} zRpZ&H?G-$Bpyxd($u>Yvag-33c~$bZP0t+g5jtMfKAV~1D^t_+2cVzn*kOxQnaCi< zuNkfAL>s2{qZmOsJN?MG0P5wLhV`4%32!0i;;Rkyl|N6X8S*L|R?zF(_*WR7PR==% z_tTtFU|`_!M07Av);+ih(5WMQW&rX6p#Xvl{inNDkn9Q7$x|rCms_OE0$?hquMx-Jmng?pmvIVbta zdLSeSdcu2R=5nbtmUyde|H{guEc9HADSxyFJ+j4MusADM?r%^0M@%X$H^=sbrxQe9 zwz2YhJ6G%Q2aYF7`W7{F3fbN$5>Wf6IP*BvE2VLAasv1_GIh}+#cEM5QK~KVCpj-q z%BN8p;q3_3LBtydpaUdaGsIjtNyR6nG2{?Efjp>j`7~c~apej#UF4^KNkPbY4`Vm2S zHtYsObtEo}>UovAddWtJXwn&L7T$({nUFPGE*-hqXm|{v_b&j~LXe?6!Sy{lWCiG) z2>n8O8)5ngTyE%1Jf`-@yP7_Y$6k`%HVli_AZ84ZN>Cf&rEt4=diNw_IMU2eGvY=Z zF3z(kpJabnzIop4G~fi4Vpe%ArpdNlp~+C0@{Kf{1g&$g*(OQ;Xtb-f01I$F^2Oyq z7=@0GWSp+7P1W!roDhv@F6eA@S81@}zu`bFz0iq(L>*v;+TM_DuuGXO9ln-Uw|7Q@ ziC0;Rp*W-Eibb2%eY(YBA?;hOX8G-7rbyP9I>7eNN1A7rchJI}&$23IxMQ z3>t;n4nag=`N7xr&;CEN_rIomgEepKy``(qzhcpuCo3jyTpK;q*t0pTIKV~zv~L_6 z+-0cg0;Jr0`a|vh&8>a6Mz^-@*?Mf*f&+H}#pZQ5wP}8V*MSZTBoE3%OgvII>;nYB z1C2C~2?gRUC+`1a?K|M(D6WS!GrKdpr@NC*(&^Ou>C|PbOSUB!6<5iYZCP%z)oja_ zC0WG{Y*S3JF&#{Arb9vrH9!KG<`6=FIJ5);BqWrC76`;a$M@dO-svPu#{7Su%H7QD z?97`t?aiB4T%r)P*!(8uRKUNyH3d!r3Okm<|1q$@cn}6T{mg{4pz>625b&+R;{sZL z0rM1Kb}Yban$>qEfT4&BbCLKzCZTx!Gq_hcKi2mn}Odn z2zNl{dkp!oTDiAk-2!eQ(WV62c5n+vsaopD1+(`7P{3%xI}A6_*KjN|)ST$2-lN|R zlbmmXi+nsh020XwsF2M*xDgy69Nb8^({X@XACMJclXD39{pdRbX*hGIFgSgNX)WN5 zqIxiL;(+l7a^fj`Y#h9v-<(jC0Dr@)6OC_jexmEP$fTsm+anXb+wm(Y2@{leIZzP1z6%hYuglb^~0pH-Wk_juOR&$g1Jl zTY#t{+93d)G;rdIuI3F}t}F?yxenLB82JeLt#y4z$9ls!Y&%j=hOt{Z8^rj1ZI^ZU z&KBd>f)0?;%QVa|kVcxQPH&ap_`&yJ`tC&4`>h=;0!RQ9b1v@&IzP_PXab8PrX;uT z3t4=~BBq7K9+bCU$0yHgnm3ty&F>=M_<~UR5uh7?>wN>{gr&4Fd`gesM-JN0_01Dm zkH?T<1Kn@1Zi_PGAavrh@Z+x?4C_<^TiBHhEIp_=)las$rFpG_67tk&07f92G<-)w zhH*THf^*-eN z+!YZW;(9oB`r=$tZsYu?9Dhc`@uCvCJM)#u&;o&gjJS+F7`O2xVj|Rb7WXx>e znY}O>?vV;+ zR`IDx3oKO#+)^Rc2rL{f43io#;W*MR=^ix6?BX8yuoL(M>KWD$+>CPjGGqEzIo|+Lz^1rW~NuN%cHf3scCL|k!#lJ zHN3xVa#_i$I1ELxz43u~mt$Jiodq`v(&` z`*zsUYHq2KE=FZwpkQgo(gNe7qp-RV{`~EUg*DV~t97hy720S6(+UO!2rH+txS+j? zI$W%f>N9SA;jAzD0l=T@Gb~w{^AyWwuwwac!%!v$Ruq#k@hx9dP*w)d1BR5!!+6rh ze}f-j@*R=!2emae3swh@ zorXsmcaENPJBgg&9^lb9kEhJzAy0>fhb5(jMA>4Cyw~QYPtK{dJHo;o_R5^eo}6b2 zno5*4EH^zOD=mr@ZOYH{WM_Nw@;4PKQE6Eb>A7r;Qqr_6BrPe7goQ>G#n}U{C`PPM z)L>0z9`7q!Qd(jd(e1_gA%B^?Bz94JbD=#wE8Sk$9KR@T$-lu1BrR@D*A!=JM2ID7 zahP{!*y1QlNCa35*V0>yX~Cj=a-StEF)dNIhvXMa`6KoZr3$QNxnT~>3Yw3S&+gJl z@Dxyp%S$?{uNZzG4SOxP#GqZ8NLP3zaV4-)z+`G36K+FxrU1@Y;6hy*W-N#VZC1n7 z3kPR&I&c63orBCow<@07;SFsC!zo{(KvSXNb4W}kIQEllOFD!$J2F!vBEn*)CWQQRS*%{WwRYM3!c2|FWJNnI z)mc019Qh^rj*7zh1&bJ=QdSOn3suBGD zc+Id?z^`E~PMin|vNFI&!%2bUtsL>r0CUmUtAIxtW2^!|1DH~!sEdlLw!wBRHg2~} zImQudWCk}C?T4C82My5?8k`&kdfm4sOMkW~dxw@V#t=tHZFztiV8XE8GS;mkFa^MP zBiNT8eW?J;8_30hP@J^0FV}voN3LebRRQ`n86@AvtY(HbuTh_2oCU;2flfpXa^EEi z`f?1YRC0HHM4O?d8c?;|>yh3;?laU0yc(n+kz08u9DBpTPWBe>AvjBcUJ0&?0PYCw z<@c8kCo$taa4rcT!-W}qAyWkva$CMX^%#OEZ}3pV7*(c`e`wf=ID+cVxW4-7W8@V? zfd2zn$oDpq(+O-6K-nSz3I-mJfc6M@Gee_Ba)$tW+ISD?J>)M7{V$wMS%=|< z6MSWjDhrKR!12&5YcKSThPT^zZwtT(Pq=hYf)cYRc8_Zk4msh>V|XivzZ4XOR(7nc zJKDTp-lPIc)!Iqc>Yf=Ho|!c_)mCR_vl%_r)=6utECrM1Eud2%FS^ECSw}z2%&48c z%&~0ynVV~P`=Xjz8ClGeKBIb353kvL=5}~8yEX&38KYpsJI--otE72Ul;j~H=Yr)k z0i=3<6vq6ysUg#r!=knO>fPm``OVWDiM9FqNx|DGrZl(AN!I6G(A0FnJUy{)b@Mcx zbdG{tj=Qq~r_vhI2+9JG3gf8IgR_dX)a+Q29JOGIt-RFm=u%p4o3bD(dC86%7?n9- z8}(qv73$3HbI$2^x1lo~Jnpx-`_DP2dnS1Gg+YtwX?b?SI%B{pGw8&@*-3U&K%FX( ztw_+O=L6D^@};Qbmq&w4fjRXx&Lg;6L>pc>$&h$KGQ~Hy@jdIvdnk5{2D9Xwuhfz|$Q`xt z?zh9Q(tPhLb>t3jGo0XHFyRNti|#fo@xatJ6iY!jR5;;M!`yO^m?=gl2)N;Z?yeKq z1hg5JJK(YV{LSTgK6S;y9u(_3*rDt`=Dlzpv~1(9dcQBboY~>GZn5XZ;!YHsXRq2o zo`iNt+PAb>x?Y-jJc;d-SH^mSK}y&Ow>}_s zR60@<*s>^uC8!u^%OAIMIilj>J@j$xu7?)w0(tY}0h6v(4P}}RzfQ?!lJV?rXZU#&9)0us#=XvS5ybooKugPll;%>PrE~Y@*sd@&X<50vQ3kI?&(;@~9>Q z6rd&sDZu(Cu>1{Eh9`nD5Iepx{;@H)qvRZw(o-YdYS1wTGnKUXyTGrU16+sW<$uhz z4(w0h+>e4gDr40cx8!lu<^YL9WE(9Y~mcO6OdGiIp6lt8TQF0T6Z(+E)B8~gv zDgt+7Aa@F6mrEuOSLj{-K zdCQ*K+C8`2d1=9CR+r2A8Ht>^bm^?9l&q{2x#lxjXNJLNAE#D#DejP9C=M5T0qVd8 z6mY5llX4RQK^Dy_o)MCVx!jC1|CcGq`2us*>iFudM{H zzcaTCo@308b8(80mXhM-In&eOXL`reL_zl5RbM)>p5|5$f$P!h}|SW$=*XeejuL=cQxLr~ah1e}_Sx6SGpAEJPDmb97B zZHS6ka>kt1w{IB_!hmH2b$TSUBkPHTcl7Qs9==8v4{zV`cnVzd43Wv)zP%8o3{&lC{ntFU~uiRJn?frGI6%I6A*I$@*e0|>A?uQ(;xWvmd2-Yk6 z1<$5GrC%f{Pn=|rG)u_-ane09(+8*=yNv)R+OjlG55NRUpdc9y#|7Y#(PFNN2m@m_DU66-wSQN&E+t@lf z0$_&|&8&sNMl)n^gabKVON>2bQDAFsG7d)AE*T1#6uz+ud!U~d2&9!#4T~qTW#dvJ zqvr9*G#T00NY3#c5HO7c=8k{QTtvp1MWcY0<9Z3eEa27;Z8aFHoq_ogWRDP*U=R|9 z5ek!VzhWG+Fp(zMd^~(){rTr-N9A?y?97XLRFc2I`s_2vih|?Ehj+&X7i4Ykn>DL% z`{hz`4(Fb{S6>V;+F&2g2TRclaQ2NFCF8+53Zn+#$PfjW*$8|ku#Dh@iW-;v?}?4|#Litf7d~Tq!b3vB?P(clHqZtSuZ6=AG^=*eL@f+JzE`{C zl8jB8Jn>0M@t#ea5}ajaPJ3vm9lvK|yGQRsDZaIC+D5neghtH4UdPoL`(G(v6&6D(B$bDY{IYSYP2?x_fN{C=E11TFOM3$nf&K?A~xWxDAz*c4F6N9 zRUgDBzu1vBKlndkSsVVhzcGM9ljdA+&e0R|KG10tOj4MpCnP+rpcdo%JHcFiz?TOy z`_?psARs4y_I@PbHM8&cDEkb!Gw?hWcnTbM{1MQc@{|;LN+Uzz zI}|3C&o%aVJQ8whdis*c$p6ln(^y&>aOfNFs7F3s_57-7RcBW{bgB1|OQvok+BWE8 zxmP2Ml4m_5XwGOTf7)4Jan zng|XlNeQ~p1~}+|Wnz%P^axn>$DG{<(hit+bf`magBzV75Ka$}3I(e>AkpD+kXe86 z$%RU92M3Sc%dW#lqFg9>7|fJ!*#b)M{`CUO6L9B;va6*I59nBftsuCP2QPR5#iPA) zG_>sPphv!c?-YL>^ggpdZzafwwkHPEWx^}*2>alV;1Kw*uF}+r&<5%qcyl{3u1q=T z(S4U;*kJh4zGKcpbX%kTXty0h7*3+k5ST3NG7|?VGZ6x3-Q(nVNjexAi--hU8ATp& zdpaW3Ms``8PRrN2K1xJnmI$_bAF~FFLp+k3>%A=7@B}%Ye6I?+onW%Wm?)!a03}xM zYN+6AsAyCrhDgZWSi>Qxj?`K~*5fDkr77Jq(Nt_f5tkqB$}#isB>NI>e&KMHdJCK`{r&)B}wGmVZoq3~MxU^C!eYGFrg_`N# zj>iBziFbnNlOG4*V-V{?UyVOfp95M>P_hVC<%#QsHdg})3G$p1R`0zC8%$zQm>eO2 zit$6)qQv7lIUFQ1LASva4gn=C*rQPJ+4#bs`4pMo!mywXSuq`ie~e#z5cn&A-JkB6 zqEVHFu&~tZNOw|kenon$UDFjtt(q-N*X)k)D4SEu2}@L!B6q108(p7~H@PG;Kcam7 z?9-;_&ze;~by9M8m<9fPtBRtUsN>zEu#Yr<#Lag)L zmH9EYC`zO3iNVv|RRzUD4bREXo#O~+G%Pajw8Q6KIX`P!OhUeU>7=Uk`Z=ljF&Qxt zlmzoItHouG1=KZ|VOSdnt}|EI2XbkGIlhz3(A zvBZ#DHZmYW%!dY^;D#Ovas!EeJQu=MF#Jl}qa zQ`T9wCeadI;!H@&=ZdycIK(#%CH39qE7R>2DV0e&;To8-w@1chP0pGepWKlhlSN{p zJkyutO^*l*iKI$y*b_Ytntw{+DPNVzdsrt2LT)S zYj{)g0ol(E5Vs{53{?H;fJQ=N?87zT(b3`baeGWC@!EZiKgsLH`Z@6U!7g4bNe&mm z^h9v@w2SYZPG6gT|>=w@_t91QSrsg4c|f;oZAG{1A({m(+M4zZYn> zE4?p~qU|Kh`?|SS+yyjNIII=05W2!6!4MV5nu2t9DRk7=^a$7tdlCla@DULyhL3Qf zJ}DxV7{K~5%^`-b(lolBhiQacU?Y}&Ez1KLkdYEW^}{UDCBRzbsA40u;TL4F?gL=y z@{I$5rGs8zmv9)xcRb~##QPL3Z}ObsvvnB*CvwmlA1jfM(oETKIg=V*=r+ynfrpyH zX`q4v{_Rr(&0msRJNh@yo7Z(l2RYBQz;|!QJh1g^K{G{CvL2})@4t}BeEDVXEp5`y z)S)8V*=^O+Kvuf5q~vrXmgq-u*i`Bh3;4I9@FAT^VL{a)bp=csPG{!+9EQhd4ma8RyR; zoYQ#X18eYx;yc*#3-=Uy+%TOCwFwX?Pb6-Z8eS^JebBI|xot&;0_o4 zyr68SGXH-M;y=4tZw;;QvqV)*y{al|_=EZ#3p2ubX6~+Jo=Eh{d6j<+i3qdVQlg!) z!6L$8iM9xmlsYXwDcT+#pAlz|B#Cy{91yJo>d>2$O@dwCch+xi@V;~HyePX}OS<(r z?>i(Fy@E`$hlJ~Du!V<)*`1!)1g=*Fix8W|W^>qF@mX*YD%Z3780rAxSvSGBhdyze z-LlPMOq-$ANXV1|aRNjKw0kl{E2*+9cy~nS#nz;S_0KO#7_RQTcD=`~6-+ynB{Ime zMQaz5w1^m&!;zB|n_|;rBCW|*3ki!z^%T1!Ba$2`j)@3ka7EOIk?<(1uv;}}R9H-MT)ZQUD9pOZuBhP-n^-xqr-AUjq%p8=6=XMnW&)p&&O(>xq+p=??|SgTyIwvqAgu1Z zBj*Z=hd2p9###26S2h=jwTqyb+o$$$fSctdz=rgcmPE1_Yfm+P>JH=AE;$^Y!2xpmujP`l_ z(~q2Y2l*R9*b!^3Lm>Tqx5u12C~4xy&xvM_d(31SZyeoRH@jh3ech^clk&aCer#g> zzHa(`YdasAURVF;9osf-=omZCB+Z6!%6W!*FF#?XjfHo@aW?_b6A!^30bI^WhY|*3 z5>{H6d?O<=pCA`}^q>UZ_?W?XCJz{muv{HC4sR8@Z+S8&D|D@IF35V3%W@JmhoJL2 z*N@iUjFWcEWEc;KhhgEuF(z?<_BC+dfi+(zg@n0E;ky7-#b8k%etT$W=r`ap`7o%@ z!yfYeT=uY37aQ+=cwHySVBAb6w~=3vUknbv4Nfu_y!F#L2r0wC{NqNo1dC-|K@onZt#4DwrYY%G8*mzoA2oA$bT<_d^dnH zRhciH4Uxlvs(omF2rcY;j{=_&mn_MBHq5k|>yW%_kQ_JUcfwBZyK_0t8yM{O!1gsQ z`%5J|a2>E03pQ*(P#x6opvFcpwGV1}XtE91o&hI6Fd%HG_L*aFH?%Dt_^h}$CL1@f z(m=;?Ekr&iT%m)EJ91m0t%m}xp1?TVh_^3Pee(864Nf?mqOhN#3}RTAk*xtPAROVqbCi5npf$!~n3=T~0&+k@9e^=}TTxLRFkes*2mw$(^1`0vpoPc+?;&{% zMZ9>ehILB`$M9Bpoerv>rl)Cx95Qi({bB{EkP^a9_NhK1F%J|tYFKu#hkd9ofMNY! zJl%Yde&*9tXN^aovf;N4hNf&MmMN`c;CLFVNNQ+lx}kKWx_~_Nl?``ia9@C?25EBv zwgT>%?(hvJFvtXYpg@L!9W4KR&QflMdH`~r0tF2soWS=(J-X5oRhoE>fiqeq7)D4) z`1#iU{;fa95P9MKUGK9FQt3V1^v+oW0 zXO!0P^N^G9pla}-kprEY0$gOcF9tW&m9SVB`3(^z`4N^5)fhT= z@gnfrWb09^7D`AcrqnY zDXEAG4kzd03y|0NG}n~bN+{?DJK$~^Z2|ha9F|tOd7#yL;B12-7sG4;=*HXO>|t6{ z;ec(pZ@?qyxJ?D_x*+$*q#N)RN_f3f(h_P@V-gd)S1<4CTE6;C_;ROO65^F4YkZWA zScpAD6M0e5)ie4AiFL4VMm2`cPIt$-6KP*y3%q+G!@-Z0l9zMkeOKn>!B=zP+AM40 zqUkz5u%^EQZ9oV`6>_cJttitW-gfmg$Ue@Xj_@bI_u)6$|F&u@Y7LUsqS1t}?1W;vAE$F0S z6rPOr5|9fSU<|?nDl;Sc-6bx(>cZ2oF($!~1`bm4^|Z~^dSm5`d7yk=U!+AwvzTd# z5ruPWYFu&AYlCeLC(*$3tZGAmYX>R7gPvvu+QjLf8XO9bV_VGGt5I9=gUQ5}mG zlJe|KOOooYm|V28XmSO7O$!Snud&MR1tH~YW8;&PH&35CO>?}DG!A6LXa$tZ)bhiP66p?|~SkmHBafye#VvP~2 zEjDGdHAL6QxAm_N8J^VWss>H4Nbu5&PlQ;w_}rl_v#LoM`Ge4`zhjEf*?e7jziAaM zFJ05xzxK9b5n)-%Z5G0+1dYVSWlPs`fKk%KxPBA_EknOhV73APO)s7d^p6QCPK8lR zM!<4XTm-A&k1rtXSKde_9HB}J(XDE?-43m}zI4&jR$M^j%0U8_l;OoEv5b7?{fH{M z_FD?ACCYqFdAKso9k70c_!pMuxxok!ZN^7+M)oiUtM701=4Vepe6})YorH7=k1{1>59Y$um*uG85sZ@cVLMc z-1rKxyMxq30%d5T8d=C@GAUu*WvSV-XVf&eZW`+9uButuP(8P9YeIx-Q>?n)bXG~6 zsw&64arezVoHeWaLwx~am0x*y3LW2RbJGaJ1I6k z)jhqYx%S5Tn(Qn`Ld480n@U;Qf?7LQyuG?Rt$XWAXJi|JoU(9HnIo>U zVWlNBJ1Z zea0M(+O-cyfO&R9}kcV*SAjI{aX(-M*$Q&Q62jdj?y;OzV< zR$F{Th{iRLzjq~NEYF-?-PX9YZR48e?p#l(oiwX(Rl#jBv)c=8F=1Sfu+P7IlP7|F zvUuK{oV*3IW;f5dc7DxbMfIdsL~43g-i)ZMoZPsqRBH%hQJg3aTMBsL#tp$5GBu-e zM?q;zY+OpxhQhdPtD>!N!i7sjLC5?A3)3QEqr+Hee%}@IeRCRZkGg`^1_f2Yh?4u3 zLBSXTyRfTy!jV*lbq9?}!c51Hg3>}5*htYJEeTW^E(NLSVlqyD3>$wi-6=eV?K2My zv!!%Yr=*OQ(mi+PX%(|A4xw@y7n(d%4bzu&$7>;KWH?9*=yrv}j;ORNYOqGqS+GU1 zWv7M3M>6o=NW%oTs7@CR=9;DByNc6h`aMTV*BB`&^ctcIz==CQ#a#zwYjfjZmj$or zim>Z8mkw)zpgFLI=7TSD%EOWzajB|mQI!bY5@IbVQUrm8S&k>fkrSwDT{u2M^J}xPXu&F=l!JpL z#jbOUB|K6I)#5fUwuGrOlR`-xKqyAr?JCQ8l3^ zCpZ$r!H2n`j7F8uWLh zswVimvQyt`T1il7-Owussy`l2i-}Ztm^=c=;{drR4~#@@UKP{hT+%bbNLC-ksaps+wNw>)*J3Y0Jz* z_cS)ls471FyqQ%+Ey;_T7A03@Zp>_9jjij83)c=VY|6=AxS)1!y1Qnmq&z;pxIQ~C zDl&U8CO$rRwqdQO zB>=$sWh?XZmJS*K)=#NQN~#z#0IW|=Nlh9=040y(0%a5M5|e;8Py!6tUqOF0!bRQz286GgxRGit;lIiVYgSEf38n|kiymk8W{*^6@+7>LI zzow?4kG}hKuz}bD?{|RkZEFDG*;%J|k(}hAp=4J1{ejv?Lu2FPV}~+wmFDQVLo?m; zGb)G5GPiiAJdH@sB(F=ntEb0|f;|!LCyE1Lhvoi+pflM5?19msdx!HT7q9hH0qAFR zH&-rd>u;J{g`i*9Z-8FeW)_h(M6N67d01LXA$ zWFJ5d9b#D;?O#ujx8$=y8_2H$31gHs2Kn3KKw%NK9+_juj*JlvIRrAs`~7^mkup)P zcAQcjAf1V_kH?n`%&K(oxH($zqz@$|(KwWe?;kB6xojwPeth|0Cl~KgM{zez;E~}r zTDHdYw=_`;&<>?%f>y}e&M_7F+Y!Lq8+HF14rT-#DoA<5e>9-~Alc%*(D=WKeCl13s2< zg`9+fJj2z;z&s4Fl#d-#3csHVHtf91yq|gM6M8y6R*Km2RS*R=m$pp}7 zAizsSb1xLA^HM4QLdGTlo7?nxYM8sk2@KRb+M0qVuyj)!_ztManKwB&ar)B5GeTM{ z1*OR%+xsfL`MAWm;ni{-CU?eVi{#P*OH0VqhQ^t0a3}6v1}izp|76rPEh>+2mS?8M z#@h4C(t$5KCdJqa(#!Jgv9YNcrBNXTbF#oAIV|Bm-0cB>z9HZN&JA3^X)tPCKxiOW zTL6s#oDDY+bx0<|5`^@x#|@YCaL+AGR>C4xRN^*FQo>3F+tagkrHSxUT3eg$@uaiO zHTYFyCVD>vuTqtDafyj>by<0Nv;;n~FdEAqt1GLUcWB=1(%PEkt6y5ZytY<;$>h2+ zV6?$h$RWHgc247**t*P~ojsYxhfFYSeZ3C+O!SwBj8y@AFHW!G{=z@j)j` zX2}O1sl515uJ;FU^<0}n&HzVbuS_GG!BJHUT6jL@t?U4qibMYOWdYdkNd+1Uc!1Ea zD8P!S^dSB?()VyOGLAe*)5DJLP7y$h8K&gnumr!58PZjw13c;Q7D(?DxFCuJ2oh3# z*TZ*JyG!y~n-?u=Zp|wu-&9u3Ps@%iDPJ&~aUPvfKKwEzvlqaA9-EyuzpApnJR_QO zvMS7xlTn`Sa$3b1SCA{u5Y~vOsZCjl?@gUPeX4tHV^_MM{{HS%z~bkL#=b_lcOk*yG}bWUj$Q^0lN$+QFmCFe+^s!5|+{% zM-5UmMys%q;l}w!HZw&8lHk{J0tlYmi_#&C_b?&%o@TwgO89wa2iL}tF zdtdW@OZ3TD>oRPnR$0(yOuJot3&Y`lS%x-Zl=<>eV zH9yK?XK)VIRFKHVG?LM^z~xI@F;Qbrhy~Ud9O^4GG&riP{?YofsN<6+`!I6Sm?ABJ zDsxYs4>mA!f>yv9l>&|tfXirfWC`K}*%3HpOG+bzfht^gjNfo{?O`Bq8i9eFj;ZMD zqqGR+{9Sm$5_r;bB^SUcl6>B9aqrZ5XD#k7tIp0%0nUP^+URL(3k!nTj>Oo|0$WJl zlvYQ1Y2)Hmn(eyFoN$~bz$;L#u8{0EbfKtDU8AA4JMW3gB-#1hQ+qF|UvX1kcvM78 zdd94*e0QeHEfUKU^DON1TVWw`&>0o8b63rqotZ^u*@JI(CPmniZLx5zK^Y+yq3apR z?oh|$af!ugBD)N3?96e4GU4$-bwP080e+xq*v!BP7>NcnK-*wAaTPCaFd~0(#llO8 z5!3;;40f1M(F;myGCH`fG9+klWiN1Yz>i_YA5aXgaSfgXNHde`rnZ*Vo^tuQtLBuGi|rKybD}(!P-n>G zlBlV(Gb4pFKf&`5XJHJH*j_&`JtMrVq^Y@MMPq{x9^~3@tC=fgyx)B{;Z% z-YACI1H>VajYwa?zlvVSfl35fOW{eST}w74&W}ycsm)D}ZWk{c$u4Rr+LYTCZ2w@_ zu0hgLw)BX5AJ~B2RWOg_mE6&}GC4J~HajtX`vo0G*5)@&eRUvx~}VM3>12+ z47Jw|vIQRJ7y2JyVCRC1NJs}h_v1p=nGfFKP!4JQS`8Wrdl#7=QaTxxfdZ}RO#sYg zlM4NJ>KIs4y=Su5H1{_?e6GoRs{PmNhBJi1NhDV`$+uogn1Ka8A;bj5D8|Rn@SWtM ziE#r|u^b~lycC|GmWl8J1nUHqkBg6L6q%U-r18-)Lc5zjS72;|1y>YJfn(iB2n-Pa zhghI+i}ybuA?y#s86SPDf-De-Bby-@5n(~^%996#amg@l>)=y|m<&@mm4=&P2I(+MhK=p5); z-vbpUwf1yCY-?vXl-WO!w_$LwuOdHxU2hM()7_ib-n$u2F`Yr1gSvvY1AlE!P&?ej z^#t|%)4I$Q%(Wi&&u+LA>L2I%@ozN28~s58P%@U71oxhKzyUixAC^3}{v>#70N!bZ z{{eVD2;aTnn-o9$Al?Ia2?G!wg7VrSo&+hK5F3PeE5L|P2ZMG%2%il=2;*3fjBN&g z9=-4s>*zGvgmHWqb9F=hBq$f->x`5Rh_5qpBn5Rq4s6wWqfTrg!r24q^4V6S1PLcT z%?sK9Weft`6|gtt8|Czv^>jm-c?O0z!-zG`s_<=v|8ah_+XzrkL?NJa2G*Z7qJ#WL zFzjkJxbO@ip~OKzy?{i(OpOE)#wZd^Kum(f0iPdj-X@V`l0s5R8gY|!P&&&XnIwy3 z1H&K}Xz6@1iA*L1AgEbHiotP4Dco_FlL|70OojUbl)RZvW{{a=7O4iu)wQIK%qDZl zTr!W$CkseDX&?*9BGO0}lO<#+X(G!=Gg(enkd*}=^&kC9a&E{ zkS?;3Y$DxcGwC6{1QsjOPX@>!86sQBHnN@UAUnw^?V82Y2Cd~yM~5Z2#|$tC1cav8at93*i5C0CKF$u;C!aviyz+(2$5H<3f+ zW^xO;6~sty2aD);lDo*=CxBMjj_mkYABs zlPAejkYpMm{8eC;uQHk&nqIOrPIJNT@{^9XV95+7Okc=w3gP<*>nz_OXtz~bOEiW4Rj%01X`$z z=@Pn>Hqm9YnJ%X*=t{bZuBI(?4P8rHX&Y^)9ki3KqwDDg+C?|gO|+YCraiQm_R%f0 zpAOJLIz+e9ZQx>Y2i-|ep{LSabT{2YPot;PGw7LgFFlK%P0yj{(tUJ4J&zus=hF-5 zh4dnNF};LdN-v|A(}VO1dL_MzUQMr|*V60g_4EdMBfW_pqBql9=&kfNdON*?-bwGG zchjHIpVNEjz4ShMKm7%LfIdhcq7TzY=%e(P^fCH4eS-dq{+d2XpQ2CG!}J;YEPakX zPhX%%=x^wY^tbdS`aAkE{XKn!zDi%Cf1pR{AL;A#4f-a1i@r_&ME^|Rq3_ba(D&&3 z^aJ`=`ZxL^{X6{!{fK@{KcSz}f6{-^&*!a*o5H5D zX{?e}vFU6Eo5^OeYF5K)Ssk0r=CHYJ9-Ge=uzJ?O7P3XGku7FR*izQSma%5GoULFh z*($c0wXij8Eo)_MtethRPPUG%XB$`-+sHPtZnl~AuwK^3wy=ISzy{e6+sd}F?Q93z z$xdOXvR!O9+rv&{r?WHInQSjRi=EBRVdt`aY(G1X9bo6P3)qG1B6cymgk8!mW0$jo z>)7?|26iL6i5+4$vs>7$>^62gyMx`y?qYYdpRu2_d)U3~K6XF* z1$%%!$R1)3vq#vY?3e5@_BeZj{fhmXJ;|P8PqV}98TKrDjy=y_U`N<**o*A9>?QU) z_A>iDdxgEqUSod%*1;dy>+B8oCVPv$&Hlvx%-&(|vcItR*!%1Q_E+{d_96Q_`v?1o zeat>#pR#|lf3eTl=j;piCHso~n|;l`VgF&@vhUb`*)jG%_B|VBUf}iwDMXWHAPn}O0Z&8Y>Hh8Q9>2aI#9xu2*s&HDlR1oxK}aYwK`6TR}z#&B}qwEQj}CB zO>u*dT91;UWP;3XwvwadDtSu2GD(@N6exvCky5ObD5Xl7Qm#}eQBAx8Rc2!Ipulf1?7nH z8|6jix5`V(@06F7-z%>uuPU!8e^8Dpe^g#q-ca6D-csIH{-pd_c}ICy`HS+N^1kwc z@>k_=%7@C|m47H7DIY7JD4#0-RQ{!WrhKk^p?s-)rTkm@TKPu#kMgbZo$_DhnDRg6 zdu3ShDnF<}Dp4s&6e_B!a#g6Bs)MveuxeFps$C6HLsf?wriQB#s#A?rU22pXt;VRa zYMdIcCa8&OlA5fhsHtk2>Q>WLkD8%os#$8bnxp2bd1}5oNu8_~sD)~gTCA3+rD~a4 zu2!g1)T!z;wNkB8r>is6nd&UHTCGuQ)jD;yI!B$W&Qs^B3)FhGL0zaWQXAF9>JoLS z+N3U1o7Ls&3U#HrN?onCsB6@XqtM>ecEs>b2^1>hW%76>LK-J^%nJ3^)~f( z^$zt;^)B^p^=InO)qB)?)%(=@)nBL&s1K?SsSm4c7;_)X&u~)GyVq)PJjA ztKX>qQNLBcQ~#?TQ~#%auMVqT^#>lr38$QKg{z#yiCN=1xA0(Yi6`?Ep32j>o2PRR&)}Ini)Zs3p3C!iKA*%V^8#MT zi+C|F;ibHcm-7lfg-_+vcqOmm)AArM!tR-pbo}JMZ9~d>voUH}EdLk#FMNd^7Liy}XZa z;r)Do5Aq?tm2czQ`3}C5pTbY&yZCOtho8nz=V$OU`Cfh&KbxP!&*l60etsT5z|ZFw z@C*4x{9=9yzm#9bFXspO75qwm6~CHa!>{Gn@$2~w{6>BgKg4h5xA0r}ZTxnA2fvfw z#qZ`n<3H#3@O$}v{C@rm{s4cFKg1vAkMKwNFZpBqasCAV75_DVl0U_t=7;$+{8|1S zf1baul#TPL;iRE5B?GVn18}Q<^SaW;-B%)`4{|4{uTc>|C)cp|HHrK-|_$QWBh;o zdp-=let!@_f(R;@P=pE$6CpIA3yTOAR$&7hDIp>h?39FwaM12{f;|eCh!W8vM#PFZ z5ib%%qDT_SB1NQ%G~pKM!Xq+7rpOZ6B1hzkJdrOZiOHfs6pA8IEJ{SFC==zPLQD}; z#WYbVs>F0LL(CMjM75|9wW3bU7IVa0F;C1F3q-wW5DUd3(I^&+C1R;)63axhST0tG zm131xEn37Hu~xK-HqkCRM5kCM){70IOKcRIM7P*1dPJ}26I(>T7!ZSENNg3`#CEYm z>=dVnQ^hW^TkH|1iPOay;!LquoF&c{=ZJH~KCxe%Ck}}7#RcL*agn%KTp}(Nmx;^8 zL2-q+Qd}jj7T1Vt#dYF(af7%~+$0W(o5d~SR&krSUECq=6nBZc#m~gg#XaI)ai6$f z{6ah+9uyCWhs7h}QSnRhn0Q<~A$}!(EuIuliKoS3@r-y@JSUzPFNh=JH{wO{Tk(?k zop@RNUc4e+6|aduh@;|<;&t(ccvHM3-WGone-`hEcg0`Cd*XfZf%vQVoA^-tUHn6Q zBt90Oh)=~o#lOU7;&btZ_)>f&{w=;1--!Q+Z^d`wzv7tqpZH!33$OS=3(|;2HKr+= z3Zjrg(==VPXu%p-7ScdCObgW5UWv`%fEwqDzyb!i*5OrP^iM z<=R2*3hhemD(!0R8tq!`I_-Mx2JJ@eChd@Rvv!Mit9F}qyLN|mr*@ZixArsb=h{8m zz1n@+{n{_I2eb#ZhqQ;aN3=(^UuutOk84k8ztVoKJ*hpVJ*^$qp3$Dwp3|P!UeJzc zztLXQeyhEt{Z4yX`@Qyx_Nw-p_6O~#_DAh??G5cs?JezX?N8dDwRg04wZCZZY42+v zXn)oIrhTaWUHgajk@m6niT0`XPwijYXWHl57uuKFSK7a|ueEQq|7hQ8-)aBVj%okX zzSo8|ul9ouGUGbcnXc$4U?_A=*L8~?tXp-PZr4NfP~D+}kg*=2JM~E2rAO(}dW;^c z$LaBUf}W@+>B)MEo~ozmZarQ1=oxyZo~38&IeM<1r|0XF^vQaGUZ@x8#d?Wes+Z~I zdWAkkpQ=yOEA=XUx;{gnsn61@^%}iauhVDibM(3TJbk{tK(E&u^o9B&y-{DRFVUCk zP5LsuSzoTN&{yiK^woNczD8fGx9V+ryWXL9>g)9N`UbsA->7fWyY09)E zeLx@7hxD!bHhsIkL*J>NqMxeo(s%27^wady^)vJ{^}YI8`q}z9`nmc(eZPL5en3B8 zzd*lGzevAWzeK-Ozf8YeKd4`!U#VZEU#(xGU#nlIU$5Vw->BcDAJT8uZ_#hnZ_{rN zvK18NZU83RK<>J(?(UITcUMoR0PZ`c;y1=wYi?U;YkPa|P|sj)Tkm$`;iv@674FN? z-qqjU-DzYRn}+!!eEIsidinC1Z|&~hf!X@Z zCi}t?lFh95?Kc1qZk1t7cR(0GAIx13{9NPd=oHN3^yTSm-P+X+ z++-u)@u`^C3asD$-Y(gx{s=y?xAqu3>Wvaj0a1J!(b_ZE)!yCPzG)luc5Z=D#c_$4 zGi-EDIVMKEENkoQ1MYQizigDf)gQ&D7KoZN#SCI zmk1u6f_Wm$JpH|WvRW+YxWutJaZsAQApyqMjYQ1p3@FnWv*y?s$tqJZZ&*Oyp*|zy zn52MQ>w9zCTHED%Xy)=I1=I^kaPt5&Sq?Z8nt)WyYogSEIbbasCmC~_2r+USofCki zkwnaC_JNTY&?iPb07fHz9Bu+qF|XNMM(U{kGgB~+i3THOH2!=^n9C)xEGrCX?s(|| zP|E!N2Ah}+NX5LNfn{TpMv9ztz8{M21phe#8g`w>^`}8Q)sl(AH!#% zZLK|j6=GsvA%7fee{t_UE>50Q{L~hcZVJFh|%(f{#QRlVsNH zdkrgy9C>MdfA3IVr(8dxN0MQ)?1GJS5H3OSh4G(^DcJ{bdv8alpB_Sh{Rx=E>Px_K z{SjYL{ax*?@HRdJ^z@rieClXxg`II=5J!qc|L7FV69RcQbq*Tcf<*+z@wu}NMoDM? z4nQU%b-k?U_*4@bUtSX$UlgB)`$`HZXKWhgg9ggi%+|^XJ^{p-5m*ZF>8J$E0sSa* z4738}W8@i=G&&cwNH%CBmyv|ILfSfE;0$c;GG}369G_d;IyV5FV@^?D1fS?_aA|E+ zE<-Y{Ym>~Xw_ym=Y;8as;lGi0BxdIKmjNv`^4lSAcNfeSx!wds&C&*Q+j~u#7)mo^ z_{`GQ-MUj&Zw4_nvaNflbFjB}a09&8(}Syu>^FZhMs1L*Keu*yY z9cXWr!z&<)PZhZQ?+9+|?cL;~k<2hYl<9>=p}sJt>qZ`|Scc4Mpp4C}{c?AQYJAa= zr-m?s1RtLo(UGV9ovm`h%6E+@KDA;|-JP=G{s=w^!6!zQ=IR{~AN^dmVI+T{*}1;= zB@%rxd>7ig-FJ}ig=KnwYkQ~cU0WN3VP?u$Xj^|*=el;B&k~$b3HWY6f&^$(!k8RI z2HFF16d5oFBovR$QEU!DKO7R*{wUS}FdNO11eRUK24R=#hjkI6y{#S41m7t0NAXo_ zTmR6&2D5SgNWc@>DD#O#u^Ew#@kj6-i!2R6G=rGxXd7y4gV`*12Yfg>MZP(--h{%^ zW&|-+!yvw31TZC}4HU3Du(iJ7F%lpBTmn9lU&1~Tm*5A+@qL@We5`gPhR*;n->Jh4 zVk&?p$BGd!%NWSr*0s*JzQA)MhR=fATiXZC7kpte9abmVCP+8JBk8g&GF`SqH}W8i zGK6_U;K11q(nWBXGLRM+_dW0I>44SM#2w`K#qoK#KiIfrj5=Al0)Wcec?K^1F?<&0j}7*ANP22al3Bv$&i+;tUMSCu1wNCw@ja8+0ZbV=vEEQK3{92& zG%5j0^5w=b;LLc_x9$eU@i_o#JRjKBHQ2tvK=YU+%w=tF?Hd^Kk&(U#KGA^ck|P=e zm;&JR=Wc5q*x*~4MkSb~^|x*{*Lo;gM(_#ry*aIA2-EECunYEW=<47mn#CmY!Eg-6n5@iM)@fLexqQw87k4F(L$=`QogRX4;ae`Kf!#<8AI z<9SCXY*P}IqY`}W7&Oi?-LS-(g8?hUqm7Y-xx$Td*7brw-L_owL^C!G^Eu3XBd6ri zDVRsXxB)06xta&YN6OgHg$xzRW|L+3QZSFrsHdk>(sCoQk!QZaFP~uypV^J~`k);~ zO9P@KHTU&*ZT0h~WPURR^GIm74E34_4UFS+90Y^8Amum+qeu?RF-apeNdi%h0@+4i z%Gf+|Lwc{9^m!UQeU7M`(chW9BPA_k>Mg0J z$12FFbXFpeleDzNR?Cw9N|m%2RnlUJI%GSmnL0_(5VW{=ihSVT-!xInBqT`f=ou?4rK=~|Jzh_krBW`zqob@-0S=wYZy*)ligGxOWkaWd zEYe{yFo_{E%-!=zQ4^#{_c|LF1Osij35p|>ITD(IhKQNy8 zBS~D>>0J+=DUrK-_8zMVWG2s79A7y+>t$3#-3YqwsQMyg@;^Ug`4mks=JnR+uk0?V zynV#e{-+yzy~(~8+Rk6lMCAGYhUi)7@sfqt#?=QSnpVj0vzOInWplb-mn2O6q+kZF zh`ObZA8d(C!F!Zas8L2)NSo(iv{(dz22O5Trf;JM%{F?{%;?)~nZ6%=!`VjPac2H$ zg}P<>e*Sf1^Dir3v-Didy^QH&;(D~#*ZpDW2y0R!99xQhcgPHI?>q;t(Qx)TIY#%% zCX)2h0#P@8*&=uu^Cn2`fQ_;}jwEtpYp8v3vw)(xqLaXAOhXWwUCd5XV}P0wz;7`| zciH)`TVHdSzZ?%&Of_SquAyK<&>93jMRdv7Wn}CPL5qP|P$h}n(m3`~%fd*HqSdro zF?fPiTW5yNxXcWXUyfb3^%vjCO`8Ll#Lvbc|Cjv_VIRnpcOOxPerfp zt*mZY+TQnU`FMSfc9UX9i;AclVy}U>(Jqpmf_=j_1avo)X9ZF_H|-u}*1zwDsNv0` zhBrv<iXt$m=RD^#$^km)t{P#InKJq18e1MXBbzpzwG^!;nC3noVj`;|>K5zYQ7s=( zkfLz3Ol$Le(2J@zWN7nH{Je0qs;9Uim70i=rQp7Vd%Yff(X!9Ap@^32-!ar1Gl9&QOiV!(K+WP6D{(fYEP2;3w0S5@`oL~T zT26{3qpyg%+3RY9e(YxLpW)Mgx(eI4FH5>cm^V{)DTTBe5IysOohHzMkkf!o8Y#&`)*t5i}_qENF%JJb+8 z3m@ZHLM@2Oq?{YUgeF*1V%@%^WiPO5>qY?cZID{!?*7_s)h*7LdgaM!#W|2%vV*BU z#4rK!AxypU?evo00#OQkip=q_hErHzdUj7h)F~s+>zAv~;WtFJ=+JTS^*&iRK?@b( zcG<#ms8Gpjvt93EXPO5LD#a#>$@SPo&_Ykwq3%*IDP!vOVlSw=?Qs*Vsld$Gp?mel zPpK$WO~v)_7HM%r79wgouF=FQ9R{gYnaGW7%hWjDk7XyH^1_K4hY`#x z#bJ8gXV<6#9V!eT z&qYOde0x(54lG5o6D;@gB}P#Sly!s zKJjDS1zZsWPpMOV&kReDTG(2rwNx>Vs6$+(LmM)ABoxDUBxr~3%;@#JjoFTnY4q@V z-R(N8L}2gu`gd;yW{G5CGFED?hdN_A!N609x4$CR_BXRA(NlI zVK?3Syj%NhZ^nvqb1Xgh@tXr`h5~#-7s<}W)*UJhL5mRvBGDNLnf$qF&uL6vbjE4%0mtwH>nk#viRK*8~B}LcqB;e%(Q81T*B1f8}3%z%otOG zeU5fx+C8E7%IFKAW`RcY1rzw3OINMiGMBE8#Sk&@Q_@&n(}Yj=~*E|%>j3q0k_FCCZ!>0F@{Asu2VqLsE6trpG8oZ z=w~tsa1nD@LqW#oVx$B{s2#A^DN<4hT8u253Tw#Zm*BtRpu^^fqnlFqD5W;-cO2(# z;%LKtUy;j_6(40io^14VlGXVRx!SAaE#7xCn18K*ivOo-2IIBnDPF6clK<^*ooV>D z*$>Q~Su-{14Y_JY2{Iis)7DJRn0oo4v@pxq5=qZ3Q@z#ZMc#y|SL9_QdxF&7V~g>T zLtTs%W4C6XqaB|4fMfLW%qEkcp#3{-u?NCsq%rs=jV7t>% z6>I_2eA@hGvGcFOU-mn_%;CmFv)Za~e!^e#x3zgp6`pYbYNi6^8>o=lnP8c|%$WM2 z^p<*wWS83mdqw#Wa*tA2vrj5cc(Kqm#=9zVVSnYxS|lQ_AJ)%f;JK zq_kk_7q%Ys=(|(6X6g)_Z+r@&Wf%%C0JB%teaGGdJ4$`uQnuX+0nLmDWp#nTG%>gn zfDl#wd8G-b1R2ZNw7#jj0BR=N!`Ce@g|*UK5p{p$m$QAIeOY~39UmcU3MFHj4KdX9 z`p-qOcVzkEO(3%XqdhdyH*Xo*Oo|PIj)BVhR{^w}e>rSlx#2e^XBvVQLs?icmPmHW z$sU|(JLx-2&|=5E5l3uz(DyhgDC<NrK=QEKw{J9>4Xd39hC@=UwG)MI=nU;Z?PwO^}ts?4%)T#3|w&f$+ zqW|~{cntFlh{r_z8na4EfvnGL>M}mI-BP z%XG3}hsh^Pc7hD6B(|TUMOLU91G*_H0q%p4S|$97YwTlNk9lyST72a$O&{Z#g%h;E zONtuWMY4F&s*_D1gQ!n9L3r?wHo-=#YM^L+bQ)n*EflSq`vO%>BuLMAM#US2ry*#8 z;wKBf+ybaU9!rDiHJ=~rQM6iw)n)6M)H01tnYAu9W$hHD8YlAO1WZK?Z-_o+7VN3`^Ny+S5`hxsl`hzVqtoB=~3FfQhV2V?9}?(cAomH;8HG5$AM1qShe_wJy{ zQ5Xh>=z1y%ll&G_f{bNu+UtQU0;X>WT71?VDo^QlxL__WFF_t~YE?9*^>7W%ig9%v z>s;k;g7j2id<$-@ZvihuVO3fklyKN7=TmIvMvz+M!DW3^H4rlS;U2ZE(%~Z6JF<+y z1TteXu|!*dJa2Kcf;vXpp*CfGp2qj{n5A7CP*zJM#YCuYXM>Vcsd`; zNULRNJlM0>!SqTZx5VKRq=dWfqP^`=wEC%9r55#;O}4&kFPyqO%Bj4D>=v;f!Ys&5vB8$Dv~LPdklNw?h^p6; z?jqSSW)Uz`qzDRdduo_G*i)3f?T-q32eL0ar-oWrCi`jcyQ1-zcy_>@epq;l>41!> z|I-1VEoXML#l0?2f2d%HF+yNhh41JNK+P0~!@If{D?w@p2ksxdV14i&69C&+R8(nu za-U;}mQ!uj=Wgv(CAW5J$bW9)eOkpT=0`mJE*g8jn3kc84s9&u>^` z`K~fy`%NYom~iDwWxpZ@AGwZRLnc2xvDxdeM2id8j^`nvp5H|p%}*hSF1XRT+A!x+;pWJWI)&h^S@Qz|_yNO9E=F zVR&L1qGzGzJz4nBy!uea6qgLYgw}Q?sP{sP9!0BhSW#a9H4Ak6v4#8cxZw@lRJV+W zK0*_<{#k$;B=*RYSI4NT8iE$nYC-1-QoB5L-*9O&*Q-`>?5d?`HLMHZ(-SUT`# zkmd>df4!k>negd%xzZ;@_sR8C-HrsG0&b5Q$x0XODawA0doa8^IK~W_0cw^!gN!+q zRPppETFu?c=F6Cs4dF37e=C>L!rTBgGj8HM*?ooja1*9}1kA&QbQ`jJd_}dZxe}yV zfSL&aM}R7r6}dOlxi^!^BNcCG1~~U0sVJEG={bJ=($oo3`xCT0M`ssy9Ahf!mZj}| z&z33abF@RcPq;k7p8`*Ah}KA}$itfBerQ`cwJUvGC_+et_;Q=1#TKU)&%GMW6{ z+4pgpKxUk~vjtEyltu-^`n>XR^{L7;1Tv#;^}0IiV#tt#kI4k`l*tcFrdvtmCLNYI zuvo7=tjPV8&1vvsa^=-Di&v`*ud(cAlKk^-#yA`?K|3Lob@CKC`5L*Uy(X6xcWsAg z!#0Whz+^oeS#q=PdE4Ozk%&EG>K8@-jO8(gZ5i4iRqliOiab2`HDg0r6g7lTjHjV6 z^nf%JO#Qe+d5XF60_5E_<;z-xtueHj_`xx+U<*>r*!T6kd5rV2GuIMRKXS}eg-rgw zTVrd>8ZE&$Og}4M`kcqTeu1Em87Xn(x&tQu(3bFy@rA7>p)ZSmwNlzL41v@kglv>g z6;nSpJ+7gpQzZ9LZiaE0MuRfMhXv|T)fgeW8(kU0IN(#j6W})mDv3x?!L44!wdz%1 zEB@7rQpRm~tq4@TAG#^=X_H9RYZo9gINfAek)8^t-y?6wID27$nxO!n)Yuz15U zSWA%Fg|w-o(K6xJdtVPSfAt?^Q10E34D`9RjOah0X}xT%`3OBKC4?eUX@^AWnrzE7 zHdrF){FC=k#?WTuei&nTuybdPy%^fxyFFGQ>fxXsm;F+nyPgfUxowDSVGDIkN>~^X z{$df7X{JnmU^0V9B8Qj1^`3!?WRY@QCT5dLWi;03ZtYb5TRVLN$gSkh^Di;7qUl9n@G`eIF?9wB4uk$bN9ymaJYaaYIsvE1p? zp-@+hUwZR%yCyKiwEF_8+|ZC9wf9w9THiiLyM@_B)yH(T3~fF)HpSfsG_A+o7oK}j z78F3uP#Q+!qO;$8r4uYgu{aa#=U{Q`r60T>;!-F-DeNL`=U`tje8V7Bu{K1{Lggk| z=)+HhTEB*%k717s{Eu(suM%&@W*nEF2$9^wCc z&&`mjm8?7rnf$=)=}!{5DSjaa$CG0cDZxf7XGN>mF^;fwSpdULpn1NWeJ4ak)D5BY zLAQ%!@q}bcxy_jR&)sQpx^OtXrSci;$ zVUKb@)r!%;PbFx91jl&TMGuF~uBn5FaFw71at(w^bZm@8PJ=52DM5x9LyI0|RD2GS zMkU?NRL+?s?}fTZd%XKIR^KnUrtB%9>wtYu(BzUM^&thy3f%Lo-r2FM<24{ zf5&`Ji~=TIAnFE&RDQ_IPyLyMk^f`@`C;8*>mu24hx=<||6BoPU$?>zC6b-uIJNbW z_2Lqwb{<+xI$It$gvA#YO!PPaHJ@CWJ;y=(+5JN1mn_`9PZ(XLgTgJU&_hx*qXOo>jo;F@>UT{SwWb#P+H9AHTWsTCa zQ{6PWNG3nHeD$VC61h*{_~`tru&H9bNG3m~9P{o4Nb?Py_1H9WabUi#T*X($k6af2 zgvHdW#XGu6CO<(^`OMl1R1tLpE7X*xxHg~1-eMu8LisqLw;6Z)Pp*Na)3qL|)hB+r zgGR*nj?}%EMW3UOMPtXDYZ=;%(zOvGlfS!m+Ua6~EHUlq?_^|?IZBOWbqhkS_P=`0 zF|78j$wrfjAy<1%B8vA3M2jo77EB6an1LZa*<6x-U*?9O?aVCFvEhWPFG@?(U_qsB zH0)8ddN8YUdyQVh4O#saOQuf#3PmeDL7Lodi0Y@APnDlSB`e)+qg1(7P$@Q1HNR}6 zp#%2HuXHflo;Mwg7LJL)X@xZvwgo)KJ4!{NXr(yPZ^xJuVd|&6>G@brvLtAsr7h#@ zS;Exc3pZy~`W)?svSTi|NOmDMeIG4D8zyLrHCz8I5~Ow;ia07q_Bvq>WNS+50U zw)rir4`^D?%-Xi9ScG#w1XE@l8-gK%*vIN*L(t-9_rdA7uUp*W;>(yH@wA`1z4tv5 zr1svm*;AjR-SF#m9s67*k{!IqY2yi`w6U`wT7^!vV@1@B+>);&Wb*TOJlFZL&fGVI zLav{%xlc9gyJW?-wr@d&XYwA%!<6r2@2c@4PN&c{dx}2Aom<8Xm>#YA9Po>_lw>_zEJaU;~#*)?D zDu9|HHR_yve#b@}yQc_=#kkQ|1c&d~ChUDIi3)dp+CJJYyut6$hnGb4p!}q!BufO3 zYDcep9Kf7?e?||`@@^}I=BPh$8Q@u% zjO_4(+wNO`on386J>0>tj#(K^A>VB;_Q(s9a3&j;}ku<=$|l=ClvFyPb?rc9#m-f4inlQo+Fq!NKGF`FnQk zsNA==VffR9>P!2cF`Fbazq@%utdo9ssBuKbbiOm$RgX_RJ9cp2B_o?9P&i?Ks&8&9 zt)_g}-&qakoE81KD! zd%w)D7vDYRC^^$dH<(yO_`21{v#DEM(NV>k z_V@5z&sl%wv*%(|Z5d6^8pUYZMrl*W=nvDDD6z*F57VtEZPV4Er@gIoK-Yktu3Cv) zS1+FSxe~LkQ9Rv<(rpt3UR_gz1BOcCx)$yG#g&9~&D#%nDaq+tiS4IS;%+e!JD{l~ z+H(H=ej%l!EoSczxG2fCSbFYfQ{rzi^*msqB-vsyzh6#CxW#<_K!6gV#fozOj%v=6 zCX@%xRG&C`K4L$2^^uci5eIClrA}IE?5C^dIcchKK)+h-q(%LH(duI-&Fc?%RG&I& zb!Qpf{B^D?cT)z{XA_pqu5*`1Hu=o1Sgvyh z(i6hW2Mde2r|lQt+ksH$R+;I6$-;CZYWi{tY+ z%iYOZFOryT&n2tcCz{$CC2QIzN!w~AtB)r7+FB-Sk0$N1RWMayOjNSfHPv8D;F7jGMCC)2-_rn`XzXGhbmzZhF)$I)%P7`HJ(Capsq8#1zA z+JHK)a%8Wx-u>98BL}68?#B&{?3C8kij5ngmp0T2Z<=4Oj}{#{CT-pr<1und+Uj^T z#mM0jljAY!BO)c|-$oxD5iBu#8{;%0Q(}1~nstP)#Pmv7lTnH0l_c3=trGR=ME_yS z67A`vJ;MsVD(v^0VwMj@Hl6f6pB~LWBH)|x(Mq0^Bc7&u?BdGZ>jvqG4#TFtTIoql z!%DuYmWjs0HvimLZe7=t=gmlLs&yFg_~*NF^SW+1k5yt$t?`J{Kd+TL*Y(SJbG{Xg z$o{ifN&m<cKgpHS^)s6STd_gkgN7^q5q!1Dc@y-^nC%kuEq5ho zJvU}HIG3PmXJl$%l%Q#6EN!5bpgv;cYhan6Jz~7eK*3Oj!AQwK*HDAOnAbqnP%Xj8 z&cM`AE5Vq-K*>zKPt+?gWHU4->Mt1XAnJ(gMHW{^V-k6>}kK@%qyoq0Sm#aIswn*jWS+N{Lx=X zUOgZ1_{z(aKk5q!t7ZXD%MAx!%@Aq+C@;i)czz{I_Rm{2y*fdq=dZ;U@>i8MUI*$| zWD(jk{s=D=ttxM1ZR#(*Z`M1SUC?4AJLT0p?&+7N;Lx7zX`iO#KccoQiq+VsfAWjCxfSwg{tv=?Sy3mBGJ>! z;!J0Ifv1awawl=YGobIZWP7BiP2X8bVuPngpJGvawx?6yxgz3}r+=SqXt&4B z+sY|v6WiuJ<<2y<=g&LKDK`=4=C7BX7H$upw=O#?O#D87wM;RmJ!>%EET_e3L8i>o zwV8E+ugui7#e6}c%wnclcHwxL`Am!df_#}3NAsQqt^gB`7UhML0p~NC`4U9+4MWx zMHe)8v^9%~L~7EtwTp>1Xi~Jbz8A^XWNqtsFFK{Ur>(_PBu$g4jp!-br%BV+HZM}9 z$sLhNb%CDE@D;zRYpSZZ{j;%7XkAhiMe(z(&qg}?-*Qo&AW|q4PC^|`#RoH7_d7Nh{+@2{TniV;p1#F*axTI> zJ&U;kE`*)|>UTS)IAy!2bI(kjknO$yj(h5e?2r4oHd9iv{aWwnrg&t#wQ}{R#AN## z--%8glkI8D^_V&(J8=9R#nj=_uH(7tQzE6kZ{HoA5-k1kHrHuNrnLXcJJu<_((Ws{ z=2H@-ebet`hw{Hq7y3_HmNrcn?U_{YuVpV(p49cPXD{NPRQ3PX?=VwDQ#Gcr79G$f zZ_QDVImPVXk)A&`b$j`IL=&%nw`Fcrcg+;tqUu_Fzz=zwjDn`_u_=m0rM1|A?s99Z zf}HNoDb_{JwZyW^1BEkPK2!dS4+91QFA&~ybVp6`FMil)540x~S#`0_mN-_tx9ZNB zl3X-jOWWw*+@HZQrM;L~<}yvc3E&4 zcQLptS)4TPO>pD25HS9c;BIFjZQO6@#$dr~+->M?Xd!OgM|2an5Hju|x_ep384rlN zQCVs(VcrB&(>rDtp}|zeIXI?Y$)VHPUOS_nPEqP0zSqTghroueM%K$;t-L z{9b3tng*}A-s?r5ggnE0t&6IJyuSBdE&7t}nbmu_=xesuM6X}bXBW?uUi+eI7q6aP z@1n{n&(hv2MKx1iYrTO!pV&M@doTJ_v3b?>y8C=d^UUlGm=0XJ;omGb%7)vxR3;uboe|+$g(`b}@gS{jN*xD{iWo!-hf|Mic_Z5mlD=~1PqmX4V29E z(M&5Z#g&d+DV3dmtA4fac=huSVoUjJ)f;~T!<%NNX_hkAzHdxzx^I2h>Xj4zIRDMb z_2WXLKgV^MjDCl|%mI8E-43&+0TLN~V}GRsj%W0Y&H4t&XACg?-4(!P)x|Wc6mZh2 zH|Z~LfPmGHq*=QFX{&zYzYGDqR^7(4h5_PMeVu>B1B9%4I%mBC-H7Zt_wZu-W8QI^QG%o zDr#mH*46`qK5@*4u3rqQ;#jCzcMtlKF`u~}uo<{@BdD1$%&{1?ti0hE^fhB)Y~45L zv(a(*)j1qb`CM^a zhcBLLL~%uj%YZULaYTpLfQqQNpu^oxS)e$j!{1J|pt#Y@DMlHoIMmD|M%AD=*L?Ur zWwzo(Gv9lvDaEyBE>Frd#j$2yPpUq}rDpDV$}+{7X8w7q4aKb!oRpLyUw)q8p`@z( z^7q8yh=`__CuAbXZ7PdT$ZPDSt9*7sT7z7_^8K;~jp`G!W*J-+mw5U!`8`10l5 zkz>^AUs~TCJ4SQ#%eQxeZ>XKV{CIc#4Grs;ukQq$sm;H1yc2ScYP!EXNm=@3`W^oy z)!LU$H_k(ppMk%QjhtR z@$m0b;}zyF1G`G?$b+n=61js3a^&mGDnFY%dHy>1eHm~qO$gq(S+DYP+K7*KSyYsK zJ^41C)wT!OqnjW1DMR|mYGgb~ZkQ z6s47N!ln=;FL`PKWC!G(osB;rWg)T22FXpH>IK;di90_)O43SAU{el~pFDK|vL6z6 zu0j$ZvAIL#r!yycDi!2s9ybZxc_;Q$_X%1lR%~)Z@{p%SLbgES&aaSCkl3VyJWQUd z30Vh;J6}MG(MqLYQxp>4vjMUj5_gV5o`S?C1th+w5M(uvTOsaDgcPBbGRNjoNPN$1 zNFpTe?0}Sk#3m~wzNZUh10?P&gp{C_>cOTgB);bqWFI8%T!fT|#O9tOvw_h&LRwpZ*yr%A*vZh0@KP1VVA(7BgB#T3y*^1hr_~P!uf?kVET^X}7EZt;cko&uAK(JKfb`5Cytc^+ zcmV2~@SE_P@SE_{G0UR5mv7$n=}Y7pv?yW-yVmKVdAQ%JCmN$d(unQXM3J0oFO$k( zxhIdim0xVJ@DA19q?o@=%~u=_hpmakRRx$rzJZj0l!Xl8nf|UyyEFoQ71|g2BeXm; zLABTT2G8_S71|{R=zY*i&`+RG#un#DLEnVNb^^2-v>kLFv^4Z7=wP1dENmM>3ql)0 zzlIivmVw6IS=c5*UxxOA{s1ipEw9?!iMyS!Ee_2BtqJ`CS`=Cu`X=p+km}&H5s$l% zQ*3c5m1-}3V5YAq)A|(ghn31kSM{+$Ye73eQ$Q#1Oi!Pq_3?rBhn9o3gm#6dflh+P z_7e0S=pE1sJnl;uVvGIvs`kpo^Gvg2n+94Lnj2ad`VurHH11}{b`&%}G##`mv@P^L zXxyESZEa`=Xi;cWXlH0@XxyEy9JaK=Gb>ARWVSq-C(z@7>iVd4>~aGy&uogi>Y!v& zOqJ_#{;+}b3bYj^u_!R0a2W-06r51#MByz8y{A!#L4ghhdlZCFFh`*Xg)5{2>4Z2G zm{7Qaf*cC|C@kp?1`t%&H@C$uZ-ns7u7#=$F44qQ&2Vsq4G`35D}o|;0=J}4AV(n% zg-jG?xWfi2G9XA>djw`T_p7%5JHgwJr4Q`StJWN2U(QmhwqHx+xqM2QRy>_Qj72#5 zY$TKFldtMLx0K@?m5CUvK4(tHjfKIjDKb+@JnI`Q*KVFM;r7DlEtB7iQiX!d83p_gF z#3mpNa)2wC0URI$Sb+gR02Lqz$i==23-XKQw8{42sWX{iQxfU$Q;v%$=s(GW(J|6U z8KWA~h@3QPjlm~XZOr(0z@|lzh9ab4oyKw|k568-VwtJx<9_F7IKG6+Xy-f+7S9Ov={VlXxyER?GES(XfJ3#=m6+#0_{Dx+XdSa&?(TG z0<--Q^p{<=_7xOy-u_`8t2mXd@_4c1nT|iJ-peu}f%g9U(AxV7e4u5a)1VunnV^qC zN77%O!S)igKXe&%KQsrlFmx0&wrQaEK!-qoex|dwU+-nW5rKAj+|7aQC}?Hqr_e3X z2ceHa<8BUYYeVxx$3fRY(?bhFH$gi<=RB9S&U$O$#j` z&|Z$at+1T~Z48|SO@wBF#`iAA-B#Fkg_eX)fo_0igvR$S$K3odK;4oe8~0LiO?D9^@V*X(be?j8sOpVVxQ4 z_;CruyAg1@71o8Zo`lMGXa?w$06&v9$bl*l0FHpPYO3~;pu8{Ol=i-WkEekOI14m@ zB2WY8fEG{ysz7O9zJZ9izE2I^206BmpAPL9{WCbz^8HC(I`ag@M+loDV^PXI9!ZT|cABI<5l@^+U zi*B9K7!{C4Y^0GkMv|nFrZVZ19Ae=ePh`4a%sK4@XhCR0Xcpf7thjSQ z;wn!o9zJWa5^DXOBjGr294fY&rOvWJ?X|<9y$JvDGWuECD{8k>#?`Y0!<(OwdQ6BgIyy zwO9g{p#7oCp!=aYpoO8Mps`H@y$3o3`t!4vrTwkH{f{`#%SDK-vST|6S{eE&bPM!B z=wr~hn;qNQ(EQMG&~?!C(1OsoJ006i&<@b~(B067ppQf2?sRMmLo-2#Lsvu7LJK&~ zm*H+pZ0A55LuWw~p;@5uy~}X7CAM9mC81NG8=x7X@x9A%cR#jgpnafAq5GiOq4B-T zaCg6U*wT(?CqqKO8Bhth!Bb!Zh5#Li1NvZ1#b)gjY z^FZr^&!nX`APVw<2bcpCARMTJ@8Bq?!9h_tD4leWDh|4bgT!zUGY%pxkD<_nf+Y$c zNjHU|Ac6t|3Rx(0qL70^KdC@EAzaMfEdeD7l-N)zMQI5oQgH@Fc@(eXq-D}OpG1ic zB`=VPViQUkD3znsOM(YwoVrYUFL9JvQ7l4n2E_ps15sKhord>vBVC;WLP3(4ee_ut zQ5C*O=4a7gDfLusb~|D(16hIRKwj*f!(JK=-h+d+aj+E%6)0?>ut_Q?vxpWeuNn;w z+=+i=v!xpAIZ05Bxxc~h*g7k$A@U5PM2zZ4Bj48Ct!JlY7Bk}SV33c z)sj_eHseI%(6i%WThsogMk+>v$$OBiwKd=wn18U$K5CpHmW$*{EfQP^g`~WiG1MmZ@U^ln} z&VjFh54-^OU=%QdL|_CufCMN6-e3_>gZn@WG=k&cEw}=v0Xs+smY^TVgK`iEHo-O! z3>3g;zy%(Ii{KYH0AheHXaOfdE^r64fEc(TaX~RID8>cF zxZqj@?MzhMXXkXzknU5eyYqeTQQFUmG1reWi#%w^w>^*H1F2eXPJe{*kmZIdPwl4M3;Zp6D#9z3|q!?!sHwxXi7Zm;Z z{1#70$)*wtDJamOV1+^u3jVg`s_V)$v>K_7c|3Fu58u>QCG$CnxWA~oLmKg7G)Wry zlSaW9U6mny8n465fs>9xwNZtyQB0aHS*mTg-gZzUEhux9a zrFsT%0~@t$kZDK@qy@4M*@u)v z$|1{;Wyk5z2DIAk1B zAE}RQL$)DBk)p_aWIoaZ>4BU>&LJs~6v%L7I8q&{j{J`Njy#Gyip)Z0A)Sy;$O+^G zk`>8{OhKj~&5`EF9%K(v7AcD?MV2D{k^aavNMk;Z}hRnx&5Y-V;A$fnz(IqGe}FBzyU=EAt7Y?D|ivk4-ST+_$!4icsMHCWH zU_rqP1y&R!QE=5A+z>RKoN~$Q>XEh0E%K?ecAbf-?tcsV`NPWsPBZ$i;guH;pk#v* zfBdxyEk@b(c-onam}+?fe|SKk0^{085~_@A>#@fcR~Squ=bZAo#w2ZXn_TOxGX_ws zKyee_e?0~TIusaz1fT}TO(#Xejx8o@Fs^BEg$KNdt(I@Away^KRm%tAc~cF0k=T<( zmj(xC;NS`rf>78Z71U9PI=1K=HMvj~)GPJ*tHleIJohAld(ORf_xM60I6#$5Zg?1e24X&6Qt+LMN+M`qI#oO|8XB=X#A1iI_K zvSki)vihXP#*v1{)jp2#u`Z>>hC289s9EN@4+yN(ehq#;%#Weo4bo77G`wB=H6W9o z)YQ908tRgU)&C9uYu+RcRY}9=q+$Gj%{!!_DQP%TdvR=}?&25&k^z~3Oh6hU4Ut47 z5h;!oM;08JwM;p*XcY>QKorP0v^a1BM1#BF0k{R?K?FzzH$g182OfeuAQ9XL=^z-y zfH05@Zi5663DQ6ahy&pO_YdIy0o*@;`v-780rwMdKLPg>a6bX}6L3EP_Y-hG0rwMd zKLPg>a6bX}6L3EP_Y-hG0rwMdKLPg>a6bX}6L3EP_Y=}+XGCkcC`1Kj<--qMJ(&VR zK@x}p8HcXs-T=|yE_eWLfp`!BQo&6S3+{o3;0{Ox_dz=C3~MbHH)|aicM38EX^u2U z_8@zZvPfBEDY6vlkMu{bA=i+5kb97!$WWv*QW;r;tU>Z4`H`8(rI<74rujo7PMxM^ z_KiLy@^8Pi?eN8`wYA*C(J`c@OyGc`19A*GhGarAA(N0vNMmFa4q_)Aq=18BaS%NY za>PNRIEb{|ghDzBA4xaGpg@a)9STQLFh(H<1xr$abV3{oj3@{K7nEdC@e-PAmPs zAYCm1sKIe*Tb{5(BC#6O%&J_W5zk`JoNL7wCd8dN7l`L|HS9%VPZnJo9GroJD^LhR zVUtu)MBq<-9< zx8M+I_>VL^N*ZRXkcPCR;kV(KBth^RTn2vt3wQ|3zz-k;J^(+k3U-4#;2ii0_`nNb z4@LnaNCZZp14w{E;0+c5HMkG7KqEK~-hwM&8nAq=mWMB%qfix%qzF-CH0=Iz@s0O^? zIj{pGfB_@`LqG)LpdkL5l`?y`DgKTF)o{$yNT3NCfDp(AE?^3;NI)45$R$;3=>HLx2v%0e!Gm%Z-0!MEO2DXVf7%6?SRAyQi+spYR?2ec)eh3u&nh zh{j(dsIw=_C0D77 za#;4ekHRSwcA*fCLJ|tXC|IIUriMZ!3Nk2Ap^$E$$~#hBLJtZlHNxeB?^>CCu)KulygwFLb)8}0Gzl=dM`N?_n;7k zLIw(?tBY{857Gyzin;B-T7!MQwt@+#L=w(nFBy9j*fYkSEBpX@LHI|k+W%@ht%hTA zD(bkcwxX5GH+iG3Zz!{`d{ExJJXm2Q_PNISx$3`@=8pHS*Bd?LSIp&g#ZeFjqGQ;ZzIXeZLhKBz&ZR7fghBr+1IiPS_kARCZENFii4G8^fFbU{ubr;uz&He?zy4QYY2 zK=vW~ka9>lWErvy8GsBxZXh?1JCHk&A;=Kq8RQvcC9)F9jpRl?MLtE^AZ?IC$RQ*h zk`5V%j6>=p^^tAJHl!$06q%3AM|vPVkaNg6Bn6TJ8IBA`sw35r-;v*uN0CR7S;#D; z6VeGeft*0HB3Y3s$P}bG(j3`?>_N&RWs#-GQlvl9AGwBH6POLWvHjn*XmA%i0JlIq zhybbJCWr<10LQN3*}#3ZLp$QH1x0VqTiL(McJAW7+EH%$=mup0&Xi2xa0DR7kYh+D zBoi_TnS?Y(M(LiG;K;n;EU&Pw`+6)6qQ^mwI7k!+k(QfK$Uvd|Gzu{&(4t_6!ci2A zQOH5Tid0YtTapyu%>3`KR(9Dgy6mf+l%A`Y3d>vN3EpvEUTtktl;rQlf5>z#wW^H#8f&N5kqFt4 z+Z2p9yS7>LpV&!$ljk(q;BH+$C6&VkKVmPbcZ}xJJGmeEo@-;8XsxVeE$$uv;aqA} zE}e9EzOSQIs+6u|LBpBWXB$66gkR~^TwP0*(VW;SXvy06duwGtdWrhRw!N)t|F#C` zZhyXz=$}}cHkF>Gm-RElPfITI>dTw2<%#iXO0n|R`Ij|$>?mI3C;z&n;zU6+rqZ0K zmRbMHv+Gc<%p|qB!QB_Cw2hPZ-EQt}aZ|}8O5e0s=1ciCYUAXex>y#a7M}CqW0_^H zgHZSJd)B$@=QSRbI9(Ph@w5L``-8c1YW4Qi+~C{n6l1m+M(xH)rjkodKOO`nxD*u+ zEoqin=1}buWPE-;xGJuwzu1l#AbBWgfP45))$h+sr`&$#Z|qRC{j)bLqqmjt=yh|R z?hCtB$;@40c@{XbxqJrtIdAd`&$p)5& zQEGPNd{YwnhOE?go;c3A-FddnpEXeLboja2J6@+X1*eYub#Nj3^Fu%?mY~+y*vM#K zS4Kf0JLcdpM!Zt&v1?{-TT0P-R=48gzcTWACMMC0Q5;FWcinswb`>AoQ#<-dx^-{b zO)c(A%a^{~q`J_PCtwjnbKbvvTgY}YmDmFM;53T$?<0=WPr7c@OitWT{k7~)Yh`kT zY@f`%8u$d!f3IW~dxV&eg?wJg4pBN_wkK@J z;-tiGp`C%-ncp0jI~`7biF_MXWpaG%^c=L_=d$G^4RUL0<|ZK z_Y3{9k1Kq+vF$It%$~pXmw6Opy_vGgs2O5PO*YqpyM8(Z1`SPKctg1Ed3_;QnE01v zzGkT8+W9c{k7NrL^7adjS7xS?XS+l5Y=ZR97*~yXxEm&DOEH=nZhPsGr`K1bv zOX;C(-boX^{pL#p-kIk=={o=EdADCFW$Ia(HbV>f#g3({h9i0JyA^8~)!%eDQY_cT zCYtY8vhx=d6SIum{#Knq-_9T_<%`ytIVzdFn2F1uBTY2p{&qd^oU%x9-|@Cs(^MCAS-_3KC?QU{^DaUXN5%H!Ije8>&kp&NKhPiwiX>dmUC(Gp`8PXMV-eLK z_&b2Odp>4~?ZbvH?Uf(#3@+W&1u`$pGJot_7O!kPd#yCXT+_s zh5eQ3ZzCTT--eE!k`1Vo>+DHSi5Zj8x?o9sYnfe;qh%i;|9zq0a>Bj19;U{ubiRDS z6fJ$J5=QsSv6%u_pP1193ffo~5c*m0MD65P|KATLtjzLu)R?Cpb8-G-keEJp{F@Rn zNqDeUKuDySp|@L#-o$?AAj3{EHiPm8H76Mrx0c<0`;BBjsa2Z1`PA1+nRi1|S~S8( z$FKFtdAlU_W8w#wB)(ma|OB6cauL=CuXS)nk)R6&yN@MQyXJDs`pso^T`Bz z&E6O4HfxJt47i0jX=@6z)273!{a$nimS0t5jBQnnU6c@{I-kIJ)hwCWqwxFNM_*9TvbGrVfW1p-hF`m zLHCD4Y}VONRl~oxR@s{Fspa0_jQP}S*(rDW&ai%WJooKbyV}~7yWG58t9v7kCp!xc z?#=2mOm02LSKY*35ZLcWuN5oTcJg@Mi!tVtuL_FKGiG}hF1=X2VzAvhcKG8F4Hwg% z?@UVNM}Ji3$h>J4{G0db5+|AEE4~MxHO|;d)BRv%{rgpgW%d@=^@y{c0=(Yqg-*uH zr&omT3_6sIE8gZZ5+2LD9M@WSjxzVDGIL_<_96e4wxOX6nK!TRn|c_e(~%J<;@r2z zXmrG?DmIBdebFkVbX8gXvQ}oNs-KkGAHDFnomEc8Roic?DS5uNSlyA`@~DkD!YnUW z)9=ji==Y{z=SGXFo)JfL%|N@qvX7gNeg1T7ve=SmzN^ys>`)kuxYC*FQpv1c2e*0! zIn-KX>;r-`@9nRX@jMW!^>b9a-`(xHwe|W>HshoG6Q})}%HxB=Tth-ke8SVC)p^Hn zsuX_e^ZBXoQc3AexoWp>_|s@}%KeZ;dO?*K1|69apPtdGpBJp>3JI@MuYc5`{Z2T) zO*41e-A{4xu5Hu(b013;7*B?_M;hpNP2Jy}A_+^v*nymA(=5qFrp6n>5Pk*x6CE#Kk%#NOKE&AHR=;~KpN>6~N9z0V(TUe2rL z^4j+!nCjVe!=t(8BeS+r>SP328WGCCVwzavg59CBKV+U(KDzCZ*;7JC?^Lk%BZyd< zwmYOPdrWzL_nDOw27l7^UVS}kRL<}|>8<^KmFU0k^?!V6xS`VHTjnVuAQ9r_660UE ze)PcZuzf;j6Bp>(2dlc>I8Vgt&`)fCago|=@7TLBDK3^DH3xkDZ}+-aS9!nvv1d%tW)RwQflEK7U)V&PUhEULX1g>Mr{pK8)iUl%12k z(kEYZB`~nBchTIZS@AiA_`}PdM%SkAtlTv&P+-f-MU%aYaqCZjWFZyQNRa$?&;jS$|sIByq?<1LV z0juq0RqeNo;gc_4H%b;-|`n2g}xRJih^NUsyUy9!8e7d{+kr&_iIFpao zF^0dC^1Y|lj=zjwZRWY0`^>!7wo+q(+)=ZN@x?xMoh-Ub9yNE4_c%;aAEabCrn2~X6xnb7 zGN}AyTFy&1|Gwz2SyB$i&aU(8-v0(0?`zI=H)oq!mPyAiL{S!bUhWZ_I`cTDOGDe| z!iS~i$4lZ7A7vZOWIs4FMiCvwR*f{<$L*X9WDP=Z{CP>{`PkszU2d+x{oiiJQ@!$J zOm@zXv{8qPdo?Qb31ybGV5+vsk#7tbjZk53!0eb5#3w@|3Z z`~7>{ya6em#u>jHEvAVcJ_{$AwPJpwm56hhM4MbMFB3zeyQhA8JTc_wM;S#%uIum+XjWKL_Wf zW8|Sv7>-h?Q2$NlbET^ zenyT$ETy@`XG=N%mUvrx(%!0E^YWW0?tU|Bth8A5#YN~XC;9H%+lq|Zu2%Iv9+7&h zY2)n3_3Zh^xj3$0-n^mSuX@_o|L7D~9=fbw^q~0B3(endo}P25)r@(sWThgtDkPcP zSQ@rDG;>Ss4*JnY9B=tC-?xM1$+TEex9rW9!o|)0&0c4|kwRv(=Xv~>I3$bwysKkV z8}-?0sIwM0nMMuw7*OaC%#vLroJ@5tze>|q&er|ib8*TfiF12Pp8O4(2N&+y{VGtSpN`)ao(DQ6Cx2#_dNU^+P7*eJ8OvuQH*l-O(HA1byNnnucd z+$ZXVSVGKt#@{_W#wMc~PW(lFZSYUWBK4d^R=|);!_n;b{iQ)Ui9S@Tg_L$Obx~gf z`ZcUC*=h^6Jnks0={(2Zv2&5F_*Yf^XD`<43OT%E_ZCzLE&HF!Us&uilWu%-a{S%p z_jg{Mma-l{NU_S#uXTx%Wnr|unAq>s{NA+oyP0Lh<*vRlHM@b#gZwu2{V_v%7sJ!O zZP$2k+sKi8O)6CS^N7@g>4d^I56K{FtF@t=H?O?ji07Q@FQ1{4qd_tQCW_zqY|zOnGHw3zW9o+KZy=-YlfdP}VL-NdKFv)12(`*7$8{5`3y8DV**LkE-H*lW#HwI57|X?^|CZ}OHaqAsaZ~AR?W>^x~d7Yp95}$V_3$w<`O#=V@(=Iua^^HGp$!BXJ^s2>0X_~-t#g1ca-qjA?BTP(lrR?#KJA&z- z@4A{!_@4gqw6Fl@*z;Ytseit0zPoQ%L6hFxn}(L(Kf|8>(-DeFta@~nNu4*Bna?me zWu+~qoUfeiz1FrCwXX99y4TZFg|$2NE6WOQT`-qZ{xc;X_<+sTtnnzjxI1U%4V5zw zK3$ppeDK7lmK%Gx>Xi%lsLuv*&w6|~A->D;vTzXGJCoWyM-I&knikzzTo;{yVi|Evu?L2lW)G3vARxq zE|%(b$al9YUD10)O1qtr9ONRDu^H7dUt*ro#B=Un-<7^EIg7k@^OVGSHa4fPd+YB@ zZ*M(y_jkjTpL*n_Rzn4+T=O5|<&T|~*iOo(jn1Yg8o54NsH0Z=VMcXM-)SP8jI;OZRE2e@`_wc3ki%6n76us3A>+ zkft(=6P*sD9n23EdQqO-rSq(b!Kc70u-8?@$;cUH9sYP@sv!L>qO7* zy*E0fo2T9-%W7oblsqvpbFc7$hRati^P=ZZvt4T2lvI3*nxyGd#zjrPcsE~ul3v{Q zOkCws8f1vbarWlG{{R0bExe8!gD}cdWhWYgN0xC(|jta0f&Vp>Z*do z`?D5hEcszYaUI^}nyx22AJ&~dR_fB0l&ODQw&jvC}RG&{Ltkzt*5RbtAn)tuNHLTe6EB!a>eGhtUn*Mrp6(e zu+Xp{0xR}y-+SFxc2dWdduzRwsGvSlcUV*L`MM3L2-?CsDg;)9=hUquiy3HGJ z#S*QkBX22kw_Q7!m3DRUhp&qJO6TxiN#TmUdsMAt`HfSoaysTtsGMVu&K9k=r#igT zMtz^ynJis<6SYx24h2!~d-uC1?H@W%^og;X9FjXBa`nQkWA_h9DKtq9?G21NzWb}> z!tu?!n>S?t&~I)YkQ3gzSGFrNH8^l%Z@A#rYrS&?_YWu+sojt%S12I=v;33xd>c`1 z+cw?cq7aK)W+|KtV(ph()jjw5A|zlijO1;hd*iU_!#reZf|9USYyl$=W}w) z3{Em3pB~L_V@bKIE8(|W+w2X6Sh3oo3e#Dg;^SWw3CYfYr}lf^TZ z6soDY2x@^Ei(~W$sTlkzRwd-V`%0WF?uu~{{C7RYY%67-;BSk^_sO1biG3ZEd$_8d zvij|n{!hQ>*$ywG9!bk|Y6&r9ypsLMqaqxL%&!0<E`~p1 zPv@WgR;K+|!nuqme8hcjrd}oKnYwS|nwI5Rr3Bp&}8nPwO(oY(*sQp>v%oWbP`m{mjnm22Qn{H6s?>zI90r& zJe##zue1`7mR$Nj06aj$zgVOw)ZTwfejhbGf!p8g{VM*BAO#MEDDi)bzE4#}`9-;y z$}?1V^AA>7YyG4$Mwwe-DzjAv zCTh!qZyeDp&%KJ}VxdHbrGJ>)Uw)=CG;!xd>1v)l45wAQ&>WO&z{pOAE*(r;Z1AQ{ zfQDBpKUc&6tP%{B&~rrSwqmhVvnOo;IA*!GK>rZn1YX6a6o$rfrhJTh{EYPbGiSKR z%g3Okz&a&~*j3XnAkMZ(z6`F1QC*-jS2&oQ>-2B^lk|Vj9 zDsN<-w-Ox;Q99^ib9j~@bfE$mqg5VesXS9r|_q-}Zfy!0>^ zrEAxY=t%1FCfc3SWsn1t2RVC{GvofG911oQp?xMb)+fT!F^P znOA9N8WwgbI=w*KggJ&Oj%dpNy7UYFtn`Zu`9*OtZ^l^R zYgfD=yo+$Jr_r=z7$ce%j*Vsy7GLvoDfH1uus$N1 z(8$JMS_2;%<@jbz?e&)Tvk*0mrV=YkFRG$^pjgDX)gow(mr(oFHh~ph3QYiNs0uoy;0Cx*C)cjv{15-=?5JFqYGWf9UVeGUH>4-X5q3t7s8lLN zOqNxZS8Z8lWe&k;0p7=DvVxH$xEznxA`BRwAmIcta(D-QHt9%{IO1At6KR?K@bh2) z_|2w?GhcjhQ)=|=1AF`1rj9-I(Cs7MUhlMUP+aeH&x!{H->#c8(!vT$0?E}|p1Erv zaQjm)e)05}seflk-@oU9v+tXAhIYJviZ0$LhHbu$x8FY7<>>Bq1~v^88e=w)=2dis zN|m@Kk#$})WJMX(oZXQ!TkXkAI#RWR4JQcy=Eid`zHokf>-2}d_TpT2;;{{lq`&uQ zFmdYiZN2sz@B2U+m)Zes)irS3{I1X46%QZ&>>qsL+&qirz%jn=!V(l^6-q12vN1w7SYK2fEj&Q9n!X`PjV#-s9eo ze%=NXsoUL3JYK7HbmK;^^u}O!Xx~F093UQ$8>V*MeDkgkI~@+^6!8q5IkPtuNJwvV zZQ3+qwR(w%k4tZ~y4_Z-u8p|88#j&EY+ceD10Q^7U#NSK%C=MZ?uW4yC}1EE+I!{$ zgVGxSYh=@=F5;<;oj5Mws;vf-8%d-894Z8AV4`Ylte7LivYE1BmH2ba3r_hob>bt` zH3_F`x7_b=v?#w_q%DRX*m{@Z^ogmd6Vs&<{aNKN>K*9+H#6way{m4JG)&-B?WPSV zUAHbkwuPEm>)|faXmX4jei1{3#nDy!#Gi}%R*hCQ)#{o|&Oj_Qc0D8g8;vWb(Z=Mb zQse}_fN!24mYNDI{Tp2fI!G+El~j28koqyYCSDbRksGFNL5Et0Lr1a>kRvaGr1C!U z@J#v?t*7@JK`70SkWn)Xo&0y+l8{fYQ1cezR8B15jjY_$W<|TtJNtQ4Du=Mmx zWdE`-;P#7Te|3!F-%_7e*;ReeXKBkAAUZ9uxf*DtX(kfZEve%MlwJA_!pnKZ))nkXTJD&Pu&~Lx=^=J zK#8-LMXoi$*_L&rwV`Y?)SF_PC=}K`wP`8J%i{UoCvUmsNw2sRTSSlf0}SdE;D{^j zZ&007ol|{A^&()4ZasyY)I^wnP)lQUQ|U0SwNW~6G_vP4!O4qj9kno17Nl79Fk*OV zHb>x_t2%61q$xVN*$G}-4Qi#Cxhe}g^4tdPxGarg?P=LU1Dmh0$rdi`FT zS>K{jYxTyi@MqfE4XygN%&1x4y18qht7~A@pvN;v%-w#E#jMe|28Ml}US8X2O9y)+ zvF@O+(-yM$P3pEGXS}1uY_xV*jE0cc-@Ccj?{(Nco@k(_E7;*`)!N(If<56u=^GJu zhlX^vboAOf^Amfmrgoi{BRRfZqnVt#+@^PUV}~>?&aUBUyMg0Y8}pHr-PL8b@VwRR zu{bRLXrH6&2fm*6R-QkrF|?AWgz3%G0zI^;ZJi;1(6>6Fw^^sU#v=WHkg{7fYP-$b z9k#j+8eJr`Iv;U6Oa`5r;|Rxh5~78Fyhg3*v_{6#5ud5W6Alka&$T#=2CgTSbm$4$ zNu-NJ+t$+F(xUq+`Ba;RCtrJm6fG{l#rd(QJ=AF@+*n`)n+KKE_^Tjq#8vxLcdI_6 z`k3kq(A(|I2aMcj&SVV8V9t1GE7_q?w&qkOtj_Vg;!38^!r1^<^ULQ*#aZvLN31q` z#p#?LX6DlfK86qBk`9`&pb}BVo}+$l+OQZTa&mQU!)(M8j}IB!NV{5V=}c_z=G`kYJQ~y-@hi2_?gh< zYzI!Ob*(1zkke{1aGDn5zw*Y8Hg$_$qp_PkAZnR9g!vQ~<2he=GN9LM)qJP7rO)ru zxA5d>ZYJz#gEH-1UBN)A1MX_HT0%N`ju5rB-Q@80Os?tf(P{K9OIYZ&IXcW*PSfW~ z5MnmE&AvM=MyKVJChYCE51Y)b-9rwy({1Xoui3o@{{Qz@hb0_vbyzy=Mzh*vbl5t3 z{i8K`X+=X=48?VcTUPtH`JvfUG=G|*CQ;Vg_AfyXiv`|o#$$XAYu|xf9DTdO8V%0NuRisi3s;`YYiKA)G02x!%t(swr z%3NdK0MLQ2QjHFa*EP|*ovL7EU6VPi{E!G}j@8g-5lH~utVC5qI3hT5^_r7Lo`Kj_ z1mz0#)7podFO`agN?>D4Q`laNa$6R97Q~c@tuk;divm^kSH$96G+Mk^TjN;stukED zw;Ck!hpy%)dum7Y4AXT(=gRj~^x@jO)mBw20kv%l$d70y5-VO(X%X;&V@bq6EECJa za#0s1SJAIpLKn{x{j_OYuqa?C+rq0NTS-{g3UDP_92M^Zvmj`el)qda3214R8c{;Y z^MUd`v>J+yz*s7Y1*Ylmp`pxGo5)<1-&n))2iIC%geH0c*IY?C%9WR|ZK%#?iuWqK zuC$ScZy>xttq1re>DezRk~RY=ts!%0m86XT$&Gx5bvu}h(>Su$zBbbc@LEOQa!NLFSx@)J_^>d%PAzuF7 zIQf4iXIR~3CX?naHI8l6HugEQ-ELM@#{#y_QC`Iy2?{}$F2o|2NZ?8~D1^ycE*g}& zxT6T*%auZ<8_Bo&r3-eF4E~Q28b`VRg{4cRC>CVCr_>RcaWNXIM>ULVzFSGqk|1bB zu^Tz!VA7!ulVn6dKhx?2rUz&opis~onQRcVq6wg8L&FvoHOZ2WSBe*NA?>=$Q(Cr6nebvdXs&kkC0F0*B#iq z_W+de{2#tBHTA+DK0j5tGUJ+@nRLwzKla!#e%Q}Sy))W0z&#&mq*=`E2GkKwOBGV}s#2 zu5zL$^iF!1`0yE!-uR@0hZ{mhM};|fggbn5PfIY7IC2{~zu5cUH7=L*rJJwhcDr|d zW`rwf;*0&K*I(PRn0RPb!#mmKwwtGq?tcwl3-mwca%mTP4(B-Q@cf_dYKary$GM;UQ_`valk3d;)+a;ZBL_~7Z8AP`a(uHP6h2CN*$rcg{9{}?MPKZOS4=0f+i?k> z?7LvL&@PZ+Fjq!Kl~d(0XIgVV6z?P1XeR5>Ix<;YC<*jhBA7}t6S2Z2K^x&6KrHAx zA)OsATcV&H!QG}#s!x4AeSDfI@{?aoQvv4u6(>Hg=*-x_Wjc|f@K6YkcD2mIVa z&)*C;A~#8)5IlPG*EjrU>(0>!gk?h3i_+iO4Q(?YolM?(uy-r50F%_)&a>tXRpI#DbIU$N=Qw5>$h5}KNkQ^zYEO2FjZ@sBn~ojmusP+(V(!rjB{-`^Qans=!o_QYk4XZcWMv ziAkitP*hgMVzF4LB!{ioI(DjWgqbW(|3iP?R0x|D;p0OJya5$NcHe*wo0#jop?t>qeX%Ztbwsp;>kN z2Oc@IZ@5F_9QInfCZz+_96u|PBzC!OFtoRHjQIn){^`6+o0wel$OHR^xa@&5Ycomn zWWqJKzF*44D#?a275(EQ{1>2qM?nU@MRkYjm@G+vpn%>YG*sGYf(6iw?Q;Gay2LSM zNm64cUV)zxy68Wfs%8Q}yJ)7G?*q#TTJ2eu^umVrdRr=r8C1yK>F$W%=Or%tz-nKR z5Mf>KkRZKG5<-_#r|qyhJs-Bolp@n2}u**d2ZnLx;4=^q+TZW?IUb6=Hy zNvxf5m&wrHrum%os)o0loz|4w{zse-MBw>YkF_%r8tBiB-Wuudw7NV!eW{U@H~l|7 z`W6c@S}}5pKI-*Z3aGD!Ub|0OR9wBQ-ZyPfG4ZVJ^^vKw)JM2d~HXprv zPiFGigU2TCFs#3Iy@5Li4F~!v9P^>m4{qZwuD;{$f0>mo=m%%*J-s7038txoW3!XT zCMS=riN;s0ipza6sK!iYqky}gpd}lf%TWQBxZ{d^KcRX-LSADP@iD1VM=j%U>#t0hm24SG@@gVDKR-ED`+b0!mK?HKP!?D&@Z zxrYwDzSkJ(>*1bp4et5!`|U;pJUKY_M2l+M{Z+qN>kyt~ys zHZ|B9$^~y-`=!rKv~ZE*#7ik2GxzzUrs4ZOzdbvC@YOw(>Pv_3I5@k>Yt}h4zJYNl zbncalTa)WLyWGy{ncMcxoQSkeeC|tYZw;&twGK{=xm$M+dr}jv>WPn%FH%x@uv>?9#hhoF} zc1A-NrD19r8k*)|izt17b$6Q4u_PHAcT+76B32`*ffmWUBo&)ji+&JmWGU>NeIN&5 zhT!ekLP6zBVFEF8C65|R!#L#%blO4JR0{K{BrQQ070f^)j3rs~a8yIX4QQCla3-ky z!GEl?b7U;CcG#QTnJj-SwKECdVF;_Pia&q@LySYgD zSFT7T6^W3Kvv0NClCq3+rPoHJM^Zad@Soh9+L0X52LsO5RwzZMgF>X&LQd%{ydQLt z``wWTBJP|!(r~EJomPcu9d1EAJ(Wc(w~1w&SwcM8zzI@pLy}WSb9zOh$)O8RUogdd zrd{u0Q3mCE*!O#OnS3#BZTTK=A1`=y+&TD;mlx#>249d<21YMjfX7U`;00+x4pTS} z-@8n`Ug?+cp0vQ;C+Gcfkb6X`K`0N^@uwC$)+9zvj!&zLO?w;zBFXu>_%QAqHTWrW zP*kmWO=HpIIJCwXv;r$zT4)k|76lEcVcqwnoayAc*L~~cy#eF^7o7H?-J+m`qR?_LNeISHB2eaeLJH>flY^+DxXlB0Dw@zKe@uWHR5?m7k2DhoNAy znu_pI`W7m6J)_#R48~1!&1NzCEoh?E?Jz*L3kz)Pi|Th%GMZHA80dy|v?Ud!HKnXc z#TC)nQl++(1Ud^zMl3JueP=-DW!Wv{EKl^Wnl6oP{Ghm_b*yyH?nrRTyPuiuFnG*8 zBi_NTq{-m!=uX(XJMG0=%!V$rkhVt+X7dAhJ(70y+TE{<){c;+KV|DScC;G?*Bl(R zTcVEPRqkG!n|o`^`}?ASu&sAOShJyTTO{J|w#Qfb)5!_ae(RBBf3(LnFxj2EVaxuV z&juqt!7(%~tjWz1=L6#Cs)6Ca_;h$YbHmK0n~gh8KfWfjDm1w^I=Njd$++{Qqo020*iz(3AH*D{2 zH`p9gxkFyRk|mq(3kN&_i*Q5V`kNY9vghzne>CPANP6OZ$yK@a4NMUq7*6#LbY-Ty z$492;c8K~Nt8e&SC08mj)w3!i&F1Q5`DF+O{S(abY)-WjbC%D7fY_KMi2LE+OK*sm z^CT#}mcJ|#kMzc4@Q+Nh-5tt1**CZIvh;JZ>GBK-4w2x@WwKd%L;9)o#-k+i*rU=G zwyQ(k-VXeis`xa=Wf{mTLaNvsj;No7In+*9s1Th{3pZU&P}dpTFh%GuJ{hPj2&ge1R|DwXksFjqga8a-V&ETXoK7WurGq6;Z^o zA|RSJhGm2V)glAB60WN7ar{Sj-hKSNC%zo;dAhby(B)*#W_3D0IKN}(Ez{rHVoOfG z^S(U8;b+^r5cY}p9>04hMTYy~^esDg%zx17wAyk9w#>hP&oZoPK6}im)K0T$4WjMG zV#A%6f@twc%b}_1lob=2nG+ZtU0D|o5}06uOv`PW&}hu1N!!vrew(+g>5Vt8EA6AQb=onyHhBJcno*zmyFA>SQq zN-T#%E&jNZw&5VkRdn4c6`Da9pIXVt*04c{F~)lLBT+lU8J)5 z$1rkU1jU1U7Fa9`>IEDe`MNT3pDSg7lsb)Esz9qOq_q_)1=}bXKETSK?H0J>h(56> zzzl5hAfR8ExhMva)x-0xM1{o+qjPgoUU=b!X4GKt5=M!r8sP{l(Paq(O=cu6Y!-CO z5cfjS=0*C%7hY&a9v^_`|F;<%EX#9Ii)%Af))X=IlOYfz6`MF!QB$_C+KszN#7Z&BUR_?4@*W-phfb)YboK`4s4h6x2nNk@xquJ1mYvCve67SpG z)wQ{grJhKZVq@Z1tW-eP96|~QgJA|)5g?OBDsod zpewmM_&2NG9UKGD0VpOFxk8jMn&k?CHi;f2O^W4?u7`99qqJ~s>S780Ed^BtS6kz0 zV%|mOpQ(JR5Y0HQi)>LG?lC3l)pOUJMNl7L3?J>icBOX|#%|?$PMe(JvQk1_xek!~ zX`I`eSQy4Qi7Xt4n`fylS&?%2Vl@m$_PzW9#-t9EXeypLA)?XBL2bcw3EQz-FBPPM z-tGM=IZtCKr%c9{fBL5uqly1RbYzKQRfff~sBd*iX_}xpqQO<_^+j^eVBiLghdVDV zEG=EUcJ1OtuC128#6w}Yn?N8AAv=I+H+6KAC5K+xFYVVmyyOdycisDi_3OWIZx=0p z++fmt``a3mf&X)xxBRCYpS|1p#1qcDpH-=p<8%kjs@Vhzx*F5Etgspl&W?IeJYSwB zdnmXKpKk{4+G*Z*?H`}|k`gFU@NOx*dUh>kP<=hxmg9VLt}nxHWp3UcYMD)ejN?V4 zGw!8`dC`K&tPP|c**7;qa92j?RuOoJ(*;4m42N`SHeC7$`Kitm<@u=RzC@J&!6ds=O;4sJ4yVZR$Q zZ5k}b#$Ir>Mpg@4UxxR*1n+D(t>`lwsf~Rj^Od0)PS=1fn=UNjs{L+)1dSZk_cK|v zh%oaWT5#E2kdg#`1kmz0YN!L)2VQqswA{R|HB}f>#HHkUeSP=}ZDHK9JZn$XDyc z1G*4UW?{Qqrs#?;Is2rRl1eGI%bR6JY%J3hdk*bi@WozKJf|(j{Vtb3E^puz_4{F} zP2!eLd|>G{_AH6N;*W2M`(MF1#%udwAl=rM4*bxDg4RDayBMR-SAD*2>W@+pwtUze zq`?v9Fu7DHl(=ZAR4Az3Vr>_O>Rfe(`s8CQ?u4aXS{hLkhQW(T-833>52jwSd5emL zsTW0%tP3o468~~R_88-)Lu>;gX#v+R;{-#l(g|6ufbRwP{VQTX)dRXuD!Q;!%V5D4 zuU@-SK!bl_c~mfy0i87D_*G3EF2Q%>hXxP{!`O@aqgs~ZN1;S#Qy^Pxj)sU6V2Lh7 z{&nGFEH=(lpeIF^fj?h?POdJ?2oc4H$_EY5wK_3?l*a1BhPfE3D*$livl1^aTLF%j zC?=Pne)m+SdYCt>h)EYPNF3!GOh<-Ev{+1*Sb!Emu z9pDKPR`hs$pT@G`3L6&Ub_um{jD0Uvav+zgX^^WjDJ`Gno~U-(Mj#E4q7(pic40rQ zoU@D`2v1}nX&+|iWDngUu;yd&(fpkeXpN)j$+cjtaYGbxjttjDAuDf01zmMf9r}I4 zmK^!d{Hh7RKRc73o8#MN=H_PDZ^@kZ`utt_-b8}@EgX8`r_cMS?Blfu)i;!GPzTk% z{Hn)4H@hx7GxM$Qek-4+2X-Z&?^?fgy(iy$=Y4m^dhdMyoxN~j%lfW=m%Y7RHtBO@ zudS;oZMol$Ht2M}30b>D@wXrd>xs3ELG_>8|1{r}+YhfRvu4Fp(eUM%uFPF*-&U~u9BBlSGS4Z?VPfIN+C0XzygxhwPu zwuU6kash>9k9MT$<*tW>as+oVSpi3*46DHSm!dgPg%_gCmg zTpTcRtU>Ptz&FYpCF$sfIv8pf72XX?KVfL{8eM8_{=>IfcwTF<#pieJ+mJi9xudiD z>Hk!q|LL7g(BJ=6hCcTL-H^o+xqW?`cf;^VDr~h4?;fA|=;<-+VBee5Y5f7c10{I zfeMkzN!_!Kx~wY8Aj$PI&wKf8HYAe|)R3O7?Sj4x{xBTS$fqJ3lDYXBIig}G_nPfK ztr}DfW6lW+&epgwG4AG*!;#aGVLN^}KrXSfU}mchj&zH{aJmwRBB?~&fjD*-IO2pY#tOV zmvOJ?3p#5vSBrBI=T;Am8O&!(2ymT;HQ0=c!uA*5#@h^Y!Lf z*HQKoZX>}`tl$@nD!9M3(q1!2b5I148b*gz=gzd*9JJzk45t9Rn$sHq=C|;#K#!S}(sUkTHB^82Nuk1I|RFTO#njjsbfsqy& zP43*t?vzc+*iySkMCo@JYPYx5VV?Zh(;tK51NT#mf2hwN8Y>JB4h|Q_4(0Vk_|~M1 z<*2ESlHBxk4rt)kSCMCVYfh{0M(b!KW!5k=J8t$foXJKqb`UQ`GHEc2|NFm)9Y*q? z-cjPtJ)(7)q<)wHo-(?$U)7onl{FCRd#P{CO?SSf?|VtD$e>w6%!0YlX(In*u#s_- z1xhW_wXzpWCGL|QZq18oli}^d8h3{@2*v-;Gv#ySYd1cEXChWevFpUrMdiPxJ4UU9>9hjdXWs=| zY6U1I8}P01G*YqnRI#1F43`b~hHXl|GQ&@r;h01mt4Jp41%@SEgUnX6k@Ho=7Lqb% zOq3KAc0naR>FdSFBKz9VVn(fI%VH%~++O8-iba~-a~b5wC7MUSSP*Nu3s1us)D5## zTr~nS?^bHB!#Ij6A`_$ux|nwtjhDPq=&^)A^mdR!Kw= zQ#%xkF2$}G-CeqT-Waj=Z4I;zI46R>5l72Fa0hO3n-gU+l1lP0(*ledioGu+r*>w> zWO~@|Z5eR5Kxh~UhEqf<^xMfmbW>` zVH)?>uaE8vP07AYYZ3ICccom;v8tY9IcVt=m&~B8Cdm@I;SwD>&Y^z-of0fH9Vl+Y zxZ4sg*0Qn8bFn0v>(J$ZvZpPX*{zXjqB4k^li_%c+n33)&U7RC+S)S2W8^o$ z#DU&!7>uLuf>I_nRvf!-yu`5>)<|ruYR@|jeRY#+uj($$3x!Zhx1?y%7vy{QiimzNkxqM98lOD}M^srND$$a%EtCWWaO z?{+d}Jk~-YYlJcGTzT5k#dD)QkyTnkJW)SKxY5m{Jl_@V;`z}{qrA&fzL2nVw6>(j z{VnQtt*KMjUcw8SE50swXoT>2SC> zyUi$MNv6kWbvUfXo^-lr1ksB6;*p@w-;ws2+jK4MZKf`~VC`ye?-DG_UsBcVe^?I_ zs)MR~X(qSptO*Ov+7%L@6=^Ye4u9d!wUPe|HB{i8Yr5?&7k4o!MhqI)>ae~|Sl>nd z<^NX2mH(CZ1l2@)_^`npHfr5|HSu|V_5WvOviW#3$c#*W$kTq$nP|dJp047E3OuIm z#I1K={N!O$$)Z;*iHpcg1S=7D62=W)?ONO%8mf@j3HhW&N2YGl%&p1rU7h7?on3q? zv)QyNx#5GKnsILW29@d_h_3dU(zD^#?u}O7bzm%gbCxGTPm8%z+tsO_3r@^MdB^dO z-s_RR)9G|}l3{-R;oauejUT?TH5lo|eAgwir*~#HZ8B;)9o@S0>eP;u#h23aT7S1w zRc)&^`ubI~G-7x~8cEneX~Ykyrz}`Ub~Z$J3&&K1?@qGx&qsRK0MUPaWR3I}b(C_) z>-q2#Yp6|dgrYi)EpUBY0FCD@CFylMNm|T8vQuM@_|28I@9L*OL-5d3J|0ojEK&wC!T5+S_P+5=)vk!c{*H$paqx6D|Rc&N($Pf_i|->h_+V`>=) zxbY**yi#*O=v(9$Yrv}VLSt@cp?S6`9elEtZ+-bvB+ZzQ%or&Yj!L{RUI-kAc@^W>kM@j zsuXjhG86gIHSx4Ah#b3>l|R7gnvV-ZXvOk9xK$EOQ&w7%A`3N7nhQV_6>@3?Hqt*p z_nun@I_4VVgUmaLAqQkdObSSDiA5e1P{v#qCp~VQ0}LxNjkG={kl_|&-fox>DDViPoSpw~P?(IEf5PykuBfp-79w}<80L8-J%3!o{*>S&hR|FU&oArro7j6?G} zFUX-LNcl40<<5al^PWGx}7NSiKhJ*92Zmsj8^QAA=|sihuc07qDHN#Po!(_J5A{%CWUkp%=6-X&kVZ6+FN;n2QZ6>4 z1d7*ln1`?_YhdnF&I@k9u!m-V4?32#?5114)aChJGFq2b%<-*ui*>Og)9;qrTOJFx zgN&i2S!*3MTbL^1A$0$M1QCLfXeMjn(X!#-F$r2wV+XO8{POh|C!g4yEgX0(K>kFE zw@J>m#lwHOSvp0Ei9tPliSiY4wq{#K zAGTW62K8!HxnX3YYkMM?S&mQfTAS74u!OV`3}>~3Et&K%FYw8XuIU=munuHw@^43^ zFAArA@ZY|kdH<2GZ~i!$JwkT%)P7%SviNe--6JD+kNo(R>3yVy#BV*4B3oV|@v;7I zPw$i7krv^C^x`Yh;@C6I7F}Y;Z5T^*be$Kr038i515LC^OQ_GEpzJii6#tkH{IMvN z8(TtCUm^c84auXkx1u53vz%{`;dw-TL}gHURdKWsMXFfQ^=NFv1wr0hf#$amvWx@` zv53YT>pP?`9jEOA)!`bdm}wi@Nj+e4U>4f#B51jwYx?hb0fOxY*li4-= zlhj8Zd;bj_H&XX=X*ox_U$=7+b0AYLJUmdl=zftMwkQVu}yPxn@6Ol>En0PALIc2QT{K){i1N_&_<6(sMTu)hyLrq0(5%N^l=mW z=t>B^F1_)nj1bu$h2x{dgBMoB?mRxju;Wg_!@{Fj%ArG*d7A$PmG*k-d?IOcB}uBK z>bn8$$+FbL^m2KcTCq>Jr~F*fpK3qNJR&Z>bD{iKT6qoc+Ip`I+3fA^_DU~R@{W^u z`Es4dMpK7d7)GG<%GgtLzC}B6~^=h^lJ&!AGln99QKrZ;%3CIf<>G)VL`$;U>vCFe3nr`k6@6 z(<(9d84@0DgC}9QkFh(<@!p%SUj!TsM@hI7b>;JzZ>04SC22p30AHDPT8>x z$;xxdUtjeyJFd#?s8xJ{*jMC1c~xV(sQ8WDG+R820#4H4D{7l!@hX+D=}NQ^S}AbP zGwv@e5#xUtO`>$zeDvH=^IzG#V==Oa1q2E&9*iSdJXoLo3~+mpS0MUc^__io#q7%Ub*&L=+_ zdi4ozzM>Q+libCpTTop;b@Gmb;}c?E?~}J3TmUUV987H9wztr;_L(PM9okBBajTc$ z{u^Tc>!JK>;9AR<`J&3G>O_e{Ig_W*U_tg^&?Q?qB`PhFYPY<9F<)1PeMu?iU>d#r z=7y5$?VD=1lq*RWUAn{vF6Cc)?TYlx*RH%quDRsq^I!NL+9B)dZMbu7h(?fc4#Yfhe}PDPi0e%6mSMN zC?i+Je>gh+gYl!%f8j|@)nisTI? zjGR78!!-YyipfJxQEWp%cW$yuDuZ&=%c6Dp$asViNve+PY=ksDHbu; zh=7@{0ui#cUE(U}GG-N&XoxoNjrq4tRUCm01>A17fj3^;AKaLK$7qvsH8jb2nPa>H zry&|WwH$AnqK5Wi#xU+;BbVyXV_RfUrZua-r8r`cmt3ipJ>cDRKcJLiM|)eelKPZ7 zk*^kO+r6KfJ+Wn9Y7EcS?rQd?7n0p0;~TagI6)s&)#B~3?9_^-TT(Sk6UbvUSCN%& zXSEF2zY%N0V3D5Qbo2JdmPMw)(6sfI^OLzrnRcunn1LcXp&<`lnESi?PfFja_?^7A z(hDyz{g3H_iZ<6tb7L$mfo_8vbTk$uoh2KtT_GE08cGy#o#O3Pyf)H3C^QzCNj2k9 zI7E&~Z;y>NWaWC`nK9CO=K~EH*pzEOY;^TS(-H-TJ=I|DvswK_*BsKm;JjF$1Z=<@ zXbS%G=7IXmZ@2FZKCV*m-hiA_GL1~VR^vGTnJT*#{8lrW0hsHke>K1ruU)yn`aaD3 z^X1$8b)_iFG0=S)>x+Q-iU(D+A zS5M{Hy++)9OK{Jkg9=0i5Ed}j+Mxh(?fH31!jG4M{Dg3d1{vR-jZ9lrPa0OG}Y0HtY|C5|lEB28E%)HOYz$?rdM-a_lv_ zKD^?1rOsI_nF7JI`+F)5S+$~klvzVdAOy`>x*$qttEFsLfWZaeKuCdk!0RE2<=fVR ze2al%BG#sw>RehF*gx_GWhW1jVN6P}-MC=@wfqV>?&F8oVNrW@;4 za+E6@p|turTSrIV=%}r=)jm2BH<|28AU}Riz6f_srufLHUDep;yPLP2O0L?hyl?OS zq3uloo4U??ah-d$Shf~x_a@o0EXn&KS&|nl1GXi+V0JK@*)CZO1hPO#2xKFHkdV@( zQQ9O;QZh|xrwK`4ho&jrc%2zd+iB7nXF8AeP19-9Nncw!ouLg?(S7fH=iIA%C0`Mf z{{I+jxsuQMzH`s=o$q|#?>ASWkDq}e`+9NNj=sK@@^Z(V4ppsGy=*Ra5|pZtdqH)e}or& zTxKk&0eR75?7t=cCOi96Z38>&aA)1>nXC1QFXIvnW&ToJ#WLpS629IpvPW~uOL1XI z$y^Y$c!N@54@{w7BQp%{_c(cx4`vUJ5QMK~98+BouP^35D9m0q{0o86vMB`)y@hm& zITIIbM$#&IoVZcQO7SSpT#)Xlf!`eIx_s8c-IFFv6q&X-;(dV%)v`WJ- z6~I#Rk9Car`EJA8`WlObY&Sm7O>Z~bPX8{RXv9|(o zm>Wf1khl&}xRmO_pLba+URLPO0cW?p)L^LZ2xGYo4t?n=6rXcxZfE~#eNAVT2g}Na z65(>AqoTTD;a<1=BC-fq3)ZX_Rrj1(65D@H7oI1h*hmXT!O;>3VrxnZwxQM~`l;pi z=i$y!XE4e|gZSBOmcMzMx={0`)(tglYZ^^GJ*GzdA{xzm$59umAmafnqXmzN9)Xbw z0$_5oq5w(cjNu8`Nz(QpVNa{W;}uf&T%v1DJ;C9&MLqnl1$p^9B@w$qU1l?W5aj(m zm6n-8)3{kVQD{?vkn(p{L10z>zQ|u}U&IOyKA(UHuDl;QEaSUZ+y+sS9F4B`d3=8CC$>oGNg=Ht(DU!ls+eOB;rpQ}YvviQgkOzgY%) zk_L2&NHhn*{E6fn{6FWn$MPq8lBko2S!lny=Zwz6{v#WP!?IqJZ_MO%mVBGFUU82( zr$ZF(HdFH3K6lIcQr_MDuzf=~r~`;9`Ce_#u8J7_^V_R|F{Ze^yim9U%x%@uDpej{ zdj*N`D$);uG7OFb@ULQDyui_@$G%nQ!l89?zbEgEtZ!P4B^7?87Rps+9P@UC5vY(dUx9mH&3~^(%=F zW|RDdB%?~AGx!>cCmXILuFNL!3&Cfj!{umzgA?_{zF*8tj{;NN>Zsmh;wft&Ms zcm*Ja+%<3FfZ60pRIMzK5=Fpl@^Mt1$ZJo>+yF#CyTA6-lO~Y2D7sxxJ-=PE2PB<8 zZ0ui2ynGZ^Q+_MVhRu(Cjw0=R!{65;s3T0<63N0${ zTLhI^gyV6LAPE_%UbqR-WOFYZE&#GLz*ai|hS_5WbUeIe&R!G(pW$knMx~O4;xrRb z<@K*hlI=R5+5js3S~X^vK=Dd5*^5wfe!Y$Js+R=}4BfSAuEcFSJCiJ4dv+Lqo#ntdsq|F1>;ORQ*UDMUQgG~#2F?4i)AKzCY@e)YKzyueXM8UGJ7lc$R{7+ zTJ6gg_Ka=!d$*j*pw>_-6~fy}j$`i{7_i^)iLJpa;ARe>BXn9+2Ok>w+HRP9*3XO*>@HzmJy z^TY2C@yo^!d-heF+C4mYMV-t#!1aL2;D{5^@^Esp4 zw)nQXml{_-@!d@?+*s-UcA#!8a+Qy4NLZYxyl-(If6rF;o`q<<=d~Scp8LJR4FC4$ z)PudKdev87zO_oX`BPt+>K%?pyP4qn{@(RL#$8{BZu(sB@XF1Js~41J{G9DjMIsks za{@ed;aHgbvPWVR({jK5QW688Bfcx4oUlS2Fwe9K<=v52 z4ae5u3gDl-l2@`PnJEd2aDvYIB=4yJW0BA#wlY&(ZgzH%?4Ll6jX!)GqUf)4gijq3ChrE@w(fQTelu1yO#iAEP)7=Yt;kk5sYPHa&|Vk@qVTH zusO`WPd`_xlmbUeF%(sTeqkCMj08Mmho+!8i>m>!Ix@|LYOp+levjfhME!_*u4~n! zApq5VJV@xzLV&d4RlG`_hax;Lb#XL~RVO^)j`Ad`M-c^Hi#CnQF6J9-8RDU+ ztx351SN6LTHMNEB2|gO+=2g5Zmz=^+XD{XnNl7Nr zCloHuH8=y;5MRjp5plHElCcE&=dL*8Vd%08G#bF748iMhM2JtZ)wk-Y+uYNYHyt~< zZy^cr;0;UeT~pD#eOMjv4<}w-wW4pp*}|?|w0~*C(ALJPHHVjwppk{QeeBqc6;sQX zc1Nn+?)bvBrIJl_jPNK#C|d}rkwgLNJdBB9yWudh7U{4t!azajdyLMMc^61&;f| zwu&2%eeAY{%+&DyA@!1j!{Zfr1>Q2z(y@};xX4jG+*voUIh6@WDfXGyXK z3X-Tr9f|@7jw?WrSzlw{Oze#GG6nOg_fhm!BT~@Ag~N$*Us? z&Q66|9Dj+wwEWS}jG#|7qUps4Caj*e|858f^*>1J_mWu2g8FTChf8dt7}DB8*iwQ6 zRhpy|4dYfUCe$BfEoCxh|C`AyIl3dn4sPi%c*mR-YYy~`jVvF%=ds?TlCWB>*k%l4 zGNI+YH$A+>Ieqw{zOkMIYbu;$jfsN`^^M7#4i8CqU3iU^b*(7y==vaY9kBZFZt05w zqp@$nn>TQ4*L5#_Vv9NP&}8=8ux(3|z|z+A)}7pn)$6s|aCE)7=kRlnts?29!nk}$ zy-xBPAwnVuO%RbeiMo7U-AeTXPN0s+aCX78r~SqQ%~Hx-bMxrL*EX&nPS)p%1crqm z7B_nPE&Y}jR*IV1vSwvZpRcMaJ}Aj~nZ_s}S^rn;{YCn?LLbf>OYMrK`6;A?F51qT zSXThd`(hPjzk@EvwsdRbT+F2ot>3d}eMs$!adB<;7KOUG-tBugb!fZya*2wH1h=&9qV=1x`&3pwtd^m)sZzzl1(k@ z#=uBo4ZrVcZCB^AmEYO2DY0a@v@G1cnr&@Pj(%Z$NqdJD3A*3U{-?@G&M&29P=L|E zyBNG$DAeyHXsPJOQxjt?t*tF%6H{n<(ViaT^1BBsHXTGY{OO$=)-4$D*HkYWKF@7m zy(YSDY)Mly+uAxh!5)P_cn$t?)6EE zvC-xhnIDz+Xl`OuV`Z8+C{598~QHjVZtsw@L&1VbCYfiFtP;-L!(5h$7%_wBQLOi7QtUuVuI4Cb)8i z)hDlfka!*cOMGxep4$q0qf#N7zLI1D>Rf}2-=WdD%*f$K5quvskq*WY?2Zz=YLdBO z*HR4Yb`)WzjvYI;;TZp2G`(ic*|R9h-@t$O*fA76yI~DyC`A{H9wWL?YA}@Yar}~x zml~KaZP>73!G^cKe6Y8d-T&pcQ1Z)fZTP3RzPx`y?`>}xojTN7Qo_&boJM{YzvE|1 zN>D3)r}_}N9sUk1Jk~zwceuQd*8wW<9GZler9`nH(yI|dY|rP-^VKs!N;%*hkY;=MI?VYlHz6S za#XzPBjcm@-2c>*M-GimsNp4QzW<)l@$AK?;0Z49|02G^`^=Ric*1WCEFNCAhrGmd z{|Nebc>F8zEqNjNg-F`Dnl{ydfdF;SipHXcu=7U-%<^V&4a$R;DG%e@I?t&-m*5YdSW& zYdzH)I_mrDeduznd-F8DAUsJrtRs7qxWMNFrkROpXR(~vK=V1M3#lIww0eT*7LI@k zhk`8#VC-Z4DB`o#Yju#53#J`&e)DH<3%2cF?SJs)SD%=!4BfiCZr{h2aNgc}#uM}I z)|40wB^tb)7B8sv27_Lm=28m}G_QT}?g4Fkx2ARVKJ~PGPwNKQ04R!ufF`C zKRMIKpAOaaEbeQ-mWtKHaG|_+s5R259k~0&wN1C&efw0WI9IO|_FgMgTNN}^q;-a% zCu~YPUHw8Xix68#c#K;Fu)uI6_MvLuJvYO@mP?nK7(=O=qr{I~!TZd7nqhWsE=(xI z8ExeZVT{asohfJ)d5(vcpaiIpjVvO$%@6CdX<+xmbR_sy4z~a#`(H2YT*4p3n|lvD zVw--LE+6bsY!9O^(s*HYuIwD|T;ZMyX&`^l1{^JZIZ6e(k^dgL8Li@T|x~7 zCkE>1B>`~p>24v<1pND9)dJOsYErdMwGn(4kz4{2^wu1@Bcw0na2}!0=2Dd$*rW{P zhz4mwNSFp#I4ll<${gS>(B-t4o;04z(pR`dGLdS>$4L$oIz^w!HU5z_TX(HLm0co# zMH4z}(U0k$`-L)FDVC0i{Zfr*cZ%5o$e)0w9Ml1m3!*JPD0iA80oIBY;8BGTUuFu7 z1j|>12z&nb6y0i;%b<=|U*&(8CVT}4o#q#RF5WO95)MvUu_dg_$zsE@1SHGduOLKD zLI8hp0KJ1FCV+JRt(~jfwT+u6a3*MdN9^kz|20iYB~F3^3l-gbp`Gik6R`AmnH-j zAYH&$FumZ-OUya9&RT?m?BMwLihPGo-FR<-2#5Y>l0TGG+s5k(7~;prcONPcX)k;= z&;L|G&_I;@Pc{wf59TPIm3&R>`L7*DBjAc{cDt4RUhf>n-w9D1`vQLWHqsO3?fF8i z#+Hk5ny>2%O+x+Gl2F0-#oS8tN(oZW@66anpd}UMYN%@EFIBZFH_(RGD*jSy)n9U6 ztVdAyyqlyF>O)p#d6Zm%e+21~wMw+RgnpweA*w|-=7fSM{E_tdS>-k`j;BfTC|l4! zuA>cDKU>5#JGTW+q6=ro=dJzcu_2qz?*qkjx0#W$Q#P34GRmsI1b|0>f!?TCl}dNM z25|4@I|v4`%qr>3e1dSJz|KHm35Pv4i*0`v@4ap92yED}!$T4cv_YLS#O8n{Iu|Cm zZEKG>91X9pJ-_z#28SaXtf^Vr&2=xWsR@=&M57b&pZoX;4G&5tGxasD=xua(D(Mm!vO^4@4moa#qG78a>^OZ3pgi6xBW5@E@ zNlZNzLI+&%K?IwpIFe?z0Id>rtmS_gjq*QSi#kA(8)*Bm|1Q*!{qGQCG@Hp2)ci}K zIp$H9?L+ILdKRsVe_x6LmGaQYi5-o{o|6c8BF!7pl)YF;ECYl%&SPgz*gbH_Zuh9< zF>|bd!RIYjVw%zi%qjL16Cilug+&W%kHneXd@UC19R9w}OViZZ_p?GUp}=T;fGQ!N zH~{E0#0HYjC3(N#%(rFpS^5csw9pbcBSjP|MQNU|zMCdy z9&ezbn<;^W=SGtEC9pKJN6CTA86mY-fZS+J!vV4;uPsFXHn35NqF4~baYlgAH3Eqf zSbvdX8kdpcQW;W}Oyl=y^kq8VUYGP0;xKbfZOO4syU2#qE7ZiE%c)3dr!!C;F-Ko{n^Owt^o`Q~zMaD@1wfc1-VGvUg>V-Ng58kvMXnYUk2+B|$U_FM*1rTEi$ zvvBpEoa_>E1ZthD#Yzcsk6lT4yi<}c(iwn~Rt5Nba=XD-%x3a1alAwYohC+cE$5rt zjz0VRgX?Q+r-r=oFaAb3_|P>pRa?9M!RMbn+IHYKUyRSOr>^UqIT&YS9=x3o%-g71 z@#O78+KEKN{a^b0d~J;XqaC{a$rYi`f9d`PS$=D?`XxLLu$`@EC{}w8YzsiP99{r% zufoe%e4PjXd*#4ww;gx|UZJNx2t}ClkuH`)asI;E+y~?SG#4}SL3|F{Z6~{KNU%&Afyc)VPN0xQN=rRcuS35o!&V7;m z$uK%PN4T~81u<~^!`dJQotg<-6r14rP$atjzJy`}l!xwn^nvXWcIijdA6cm1WPbXi zI8kVx>SxnJbImUvBWRg-h_Z55WTmaL>Mt87F^e?q%sU<no!v$M0xdyzE$WX>MF>$;*-2rf>siWOSo%9Rg3n3BJ}PL3c9JzV|J|q;V*8 z|1GkOFZ}q&7fN^`VEY%}MbfnqZ;nKtC@{Wxkg}j;6d$|IyT(4U0xYBzBlb1k+Z4si zkP*B%)?FW@z`5S;*y3Ca&;)76#n&~quwXHfVzHhCI*3!yJiFIWq2R|ro%uFy3hUyf z_`kt=tcx&1<+pQdUgoOgz!Ui)DYB{%-b!eL3KCHAo4Mx38zQ#V(MFK=c6lPIBy+Bv zI~s!1yArsWdlsn*+Igs`R7yu1AwoZFqTDGl7jU0M2r-b7s70Dt6nxmRre@>rU8~!N ziilsNp{X*sojc-IPjW{OZjrosxd(Whlt;PNs6G-5M99~b=Z9}GC5ZJ`Sk|;u1nr6Tscv5rqp`JZU9-C?)Do|BnGKe|8R_x1 zmS~X4=8g3=d);cpFjl>xT-iE%uXUAL!yx>hVYGT{WqDJ(t0!`JS;D1d*}m@3K-U9r zGL03(K}V(0P_8$#EW@Zx^_GnTZi_3of8C^>#=C?XJS#&qor&?liIvvR*tEc-iT_7q z-R%s*dXt5m!qSmdJYd7k6zhgi3G}1&55%22KmFzxk5vC({u`113RU;*Y6`Zo-1_)! zPw}g_*5iNQdf?uBAN*Fm*IWOs2k*W2foIKSd-izTo|WvZ=Ydz=d}ga<=;8HyYEcxq zH|#)d%>gb})xP}6eG9V2t?>PC<(I*9&CICHjbrZG{C&QKGW?R=JssyhvdbqyxGimUAUYb@*gL z_`MEtwuv`9mT-g|X^PnIVy&=^Ca;+&Z|EH!?nRfmG(0o!%n>0c+|NGY-gDm`_b1@U zN_eTtlTXA)B?nDDF`k;7KNX6b^HIp$Ij!+l!uphEW^LBuhQnwGa&wa903ty+Vm-NF`u{MKRsQyL+FW(%?L z_*Xo9r8Nk3Wq&9T0v8b#4g-OYM)JWemD=Q5wd#aUB#uQSMDZy~(N8s`+Jg5*$Tv5V6k=Zc=g?k*h1HmZ7CgA!sr5Tn#}g0eVRC>>IJH1%B4scJt&QvK08ybPH{t2@DqmLA!xY^VUATLHYe~YrqF)_dQL9VT zjH0O0)grfH7Js*YN0%*FlBi*NRt#vXH3_#z@nYfqSx9;1=6ioMqSX$%LAF6VVMz2U zU!L!60Q7Gs4&3`5)y> zZPfcVM4Rc={BI9)A-!Jzbun=lE{@T$vv zgNB4aAjqG@7mF0Wls`XIsd`oG#k)=9Cfw^jX@5iSUyw{ySP8Ez%nWvvBo^8wOmGgb zEHDlB^||hiRbi5hJT!&Ba@P-jvEhKp7~&2i8;vqcd;7hX-Ayg%)bPTA?mLa}8UI`P zXNiiP7w8Qq`r$IE+Cr~4+;vcwTKNA zpMeE6j?<^k`o@u_nyQjG{{0euUF6mXG7C?y#*%pIG-}WhqlW)Jd83kJi^DzYQw^ym zKGJ=vC&z1XKf?|lJ(SOQ#MzwajOI!-}sW-3slYcxBg4+>%LK<(){Y*7zfFl!Ldi3GO-4`+}kc=9NsbbuSzqEse%Hqbv|3 zveC|PlpyyLOL`a{-VlzHS<%8-xc}2%d}(prWJ?Lhm9$LOEl4dR`2E?7c3-23D~rM4vn?!Piv13oP1xrU zcytTl``mk9@;;z-1VqI+fs`cR@9a5zJ^MQ@#asfGaJPdAaH*^nP|YQ5?g@@Dq?H z;G$9~S{Q!Ho9_(-XHqVl28b6Z@vYCnToNS%gvSf;Qj*J>!FszLc(qHZM14m|oVCiP z^O7G;Fy_OZ#g?gKKIhD?_cCV!{H05l&o!b)(086vSAA~x%ir9vVP!gnn^2{a;h94j zVfagLjQp?~|6?~)W9#|mSk`W5e$$8_*_A2Wq4uH6$9La_EO;%;T2m?6K3c%JgxC!? zqUaoiE}2BTL^Tj=jBg880`~Gi(?ASpH}e7q1Oiv@QCIahrJDLvG_#k$x2IBgCnoo= z=!G~2!b)I=)UYVJc71FeZ|HA==$-7vqE#~iSjxe#<1QwHDLIHTE)*go+H5z=UP^POsDqCnaejyv(9Sd(zD0_iC!nw} zefCR{_E@o^npmMb{|ux~Q4K0NuHbD^b$Lef| zdE=Rr&-`$VsbmuTx-k0u^USZZe-OtZ`%Cg&WA58!D2CXWjYaqU`o0S*n1#PM{t5n< z!6U~RBmbE-Xv-nin|+J_I@<3*R{pMK{G+*?B=r$&y^(#k&;iMLgD*lOy)ClH6-rqE zZ5z!+ueeZ*W{%ef)K$8=<-`u;bkXIstrr<+$QhGE zJ+WZ-a9!J&^AL#oq^#YagbP>!$#6l_i9>75TXo@JK|_9~wwBs2gkLlkaOtpZ3|m){_yE}u zG`*%f56?noP!c<$va+otQ6C(-eb`$!IsAvol3;zZv#RFAn?@tCOxQP-4apQSONIvr zI!Y40jp54-4UZ=m4R$4QQ+ewyCUdQ;lJbgZ92=Zc#f#p1)J_75?6hqH zt~us)EFip!UDNl8ZYgo-|JChmjXNzbX$c2av)i5hTl&1k+~jsQc}~%HMf`F9rDL>D zyPfe?r{x!V#}{dkH2wc&6aH&Y(=AdQxi0VigTHiCwUT6z&ASf(-~e2%hnPgo97{YV zJcq8^pSnu#Ff-bhETBpaY89H|cl7xYvj^JZ)oV3{LLc~?mN7f@zpy|9*VN{G6e)fkWJ`KQq;__o~Zg2vf!o{89;0O-FXn{W-Uhd=4DT>!Xf_%cgrAC&WCHqQ5G1^pJ1zV}hunWq)xO&grYv{t=dGFx`^G<3Y z62dE$ClncwUVdHa;sCP2)7|2G@LcLb(=^m7^I{cBxpMShN;IIyE*!=e94TH>i;f3s@tM4i`z%ufg>}%vD zGibEhZB=e}mCbH7?g=_wE@v=9pZ3T(kLxn68vs38j zN-~fSAgmt$MucC8yk-LYX}~R%%YsMLG~WJY&;=q=hL7V1=>E)9fn)+oB?sK<87`E^ zX<{R&Xfip12zPH3M@R;Fg_6ua6Vtm5((wPN*P~LM6D^kkM2RP|2D}AZG`P72QH;pb>si}Kg`4Y>1)@|@u&II%z6G-1vpl6-Cad=2aGvI zoqq}UK}p$td7SW6$C_*C$ijhoQQgw~>1${-E1SzE@LJ`fXVqelBIlgBUgeAAaU2nh zJ4lmpxHFsxU)?{IoD%=@-$SkJ(G*3$qbViK369?<`wBB5o#oT|s|k0Zs-WVq*u`BW zdqGBngr#6t=IYN-c|x$KdvA^?k`P3wO!f?Fm3;|4m*W}*Uy8`v;g&}h01~D~NO9JQ zE`axi+S&KX(15&V7(MJtk)@iG#xt&5m`n2O@D|nr%b`X*W)@N=*!TOJvS*t5aZQkk z0XUi@OIfJx09e|PDU&?_k0JcST;k+Dc3NMdJ`kZYM~}HWq@c&*B~#|hmbgvk$nGa8 z9(cu-N(Gs-7YRTU$H_|uc{8|1{&cSWA&12!#*^S)EB7y{(L2x95v)fJd>A2qUk*q-XOm9ka%UVu)P__uxgQoEiKdw&MXq+pprI!* zB%@stM3ezfzy@@g69Ohq$OMwzC$UuvM}b$=R^I2q`vFS6&t&NxTQjwUK)PcXv*0QilTyGTFI`RA=x*^b_t6do4Z5tx6Y} z?=Ix}oy_N0CD;@+Qw%oO6qKaC1LcF8hW+FW)#0w2Xr`INlc1Qr>S8M>kYrJ zqKd>8H$^$EEAyX5SA{1FwLDMt|Lp<(->^Ukz zPN?RII!LI*_rgFJK;>)oQalD=u7x~Ei#!ulQ(!@{=b#p<8h8vLdWYUc{Ky^!2P)MI zYfkBmsfm>5ixKg(Wk9h5NM5Th0&^v_E`DOqabgWrL#UU-cMT7i5X>NAJ)vC9>FhA^ zBEy^__#c0T>or4`qY^@%|qB9g?+md$;8rMCP=p;#u%M(q9XF3*G zYm+-9mSzYD%Z%Um_^n~n78;#D()5mde#(Y|VC_eS?SP4ob_af>N@>*M#0 z=jC^-6|vvS^QjPQI;|N+bYWf07sIc#aIFJeX3;?irD#X^4c@0aU0q@{_#g@Yfnaec zsYuGsdSvu^%9lRrUErwkYD-E@X1l$#j8)s>6T?ZHt5eG$jn3Nm*`7ts{W^om%p#=K zY@QkJi8$)b$O@&tuc5l4zr`g z*xc@6SvAwtUTL@LO{Q|Yt{_KgR~{Oku6yOMREBjI4c>ItAk9^LaHKX5|&Ai3bY~n3u{KnJ_^l|Cb z;j?ECqgV4jFyXI?a|+bK(w&xGlV7rpphY`KgdH9>Q|Jsj!ylScjr;7`6ka#fDxQ3Y zvCgTB9|9p#X^OWb`MhD)B#4l46tR#Dh`HD{cnD7SGrgNP_w9V4wY|U*RawdWvb<(; z`-)o6vM%($>mJ*>>41d;H0+WuDp< z+b3%*Xs0nTvTNVHlGFO$eY-{y#+}A^|HjR4uUp*}Zf+VK|LVr|BMF&5YXa}oEqF~k zNM=3JF)O?v6RxELxupDjdeAXQQ%uMxGQ%jTrLRDJZ3eTg($}Ohm@O4fccsBpR$f|GVkmc1*9Ys}E{j3$D0c?@LyLnA9=G0T zsqio-t~haa*l8AF-HU^4U#bamC&Rx}uOsKj6~n#!6=vACKV zJs!M9s{xNPZK=^-QCr{DHPDB@Zz(e{t@?5-rLnZcTw*lp%my14$WkKrAubj0xgY`# zlD`5#xJFv0n>H?fsD<>ESeUewFb_Fs@{TSSt`QbrpkSErM9Wuc<_&{!@lctgJy>7u zfW|8=7aGs5?dx+I%F8QUHPBcVJv5fHsy_H%u3CH>>b`*QMq6zy8qcI4WZs?qI@zP0 zZ|X-sVi}{6)hw9XJXJ_nQl-=!zmYd}_DlwHKR8-kf0IgvsbhtCNPz>J#KA#iJiFwv z$M~zFX@(cl3P6+Q+>`{{OIG2Z0x}zyy-2JYR#rA)B=OHF+#93}+qp`Z^LcgfS341d z?GRqZ*!mxsX`J){|88raQYDOsPbOBQ9W9%oB zU;8dU74kKNceAhdIPBi;mD#T^yr-)#H9Dc5xq5T*{CClr-cuis?b+TlKAP%V!3>oI zTD!e=N6ucO^;jU*T2_+{#gGX(5v?$oBf!NSOsVq!fwnxzd+J;+wwg+jSXS?-8QabU zhlZ+ZZ&j3tPx3E5h<@&$o<<=mTw-}}$M(@0r*FXmm+{t|pwhZsfvw8Uyt4!n?x~9j z^Px;*&s_~x~%hyG`hOwtR}E93nO5i>L}xQZDVV@LaY%j0`CZ;ZtJ`sO<<(c`1! zO)Ro;Gyj8ctQs5`V$j0=_{#J*n4X^gQFctOQE$Za-bPMF#kqc&?N*byGc4s1dOW*E zjEQ|-FN-c8;^VQh{-K;-jy=bI1-~*-wj+nvFQy`~;tMh~(R5zI5#DqOaZA~Yxu7jp zXty!ErUwWzu>*4K92A-uQYdq9pS1N57|zicoyJ_gb|%OKRzDJKq(M`=+GZ9lUq$aS zEOyLiN_yLOMGgGF?%%O(AZ~cNY}LIJ>anMd+eatXk#o9+`dv}CM_S~vzZyHzXKa3gZhx_@gU0bK9OzEYl{7hI;y+6z-C4Hv>GkTd zorZmD1mZ-evoSeW)a2SdqNwYi-dZN@^{NE!T~#a+&P`Kc2k;n!1w`E0;2lbF%q1E| z0*OzO@3kt&-CIxsoFTE;(8`sPCLSGmL2MnQj^#MN*>fZYszL#)Qe1WfdcZRjc}O^X zD`2z|PtaIdnbh;FL}&rPF0w)ezY{kHlvyUHz-LvhfI005M<5m)g2VHfytt-D>&VoI zwXr~2=Zh~|m#ypRS+}f!D@y^C_YXWIXijjYAhWxm|C| zol7Xx<`7taG&wHwaAa<+l>bMlJFQf8nh*h{sBC~`B#oP9RUgF0`-Qk2>PLdggZN4< z3dag;u@)qTEs9^Y!KRc(G~%}bAKUpoqt$A>`X)S{@7z;rVOw7t;63n``2svH%ucZZ z@|}zL@ijI6hu($9|F#-y;W~bJwygBw?^=y`zl7iO&l;`FX6ZxzR~q)atcECEv<{Zv*b>Im zGbez*q01RKO3b7)Xj<^fo}%YOt@5(8P!^(pjq-|QPGtC5el~*#o>VHFOoEsE>bp{@ zxi&nC=h_lLHANOm?PRghfJY#(p!6N>0%ZgN;ikw8Cn$MSXlm(rXQ*^=Yo}rOmPL)h z#Ur0d3^%o~i*6Ylk6@V4qG2OK5Wz*FOg$=EUGGY_oqu=E{y=16aO$JBtO zHqoJdZ} z$X%eacKVWl~9qRgW|_vK6Cy zeX)3>wsiFapLk$(skSj5^X(liL9=fVq-XTw)las~l~1=JIr^Ap%gN(`%8s#v!@~#1 zIw}LlPj11IPiHb|$+iT1xl$M(kV~$IKAnO{ZwRH}_woDi^qqmDzcoGGj-k#Zc<7S+51DpxEjmteaK!UsnBnn)6w5OxUC0*+;?>V4 z9Gmd**-N=)<}Sc&<}#TS&31D;&cnz2yP_AJ{~~GZQ?y|z zgaE9dABzx^{d#4;Se^`=<1l;IXaAJ|S30mj%=WAA3ibfjn*L{x;?MX;&hmS9J%hhQ z{;cgQCA!alhaRqx|MVY-O65I_<<%BQJAmcYkO&l3NF2wafFYDGcyXE8I<)B%GwWvd z-T*>i10tOfB!{!De5skh_gdZvy|Ih=JqNC2`~^|=*|}m%c_*+IQ{OQeR6a)#0_1!# zy!mF2;?WAjB_ljDC*<$oS@ID>S#UmU(Gf;Liw9W-e9m1@D4j&WJLtd`+EBI=peR1wBSSz!g);*B&-YVA;fe=Z(dhwG;`y@ z3jW;kv1FeunAke9q3gl5qxYOh#F68kXZqJY|8Tj@a^klBhDZ*TQ>LuG4x%`SGp zv;1kDxw2u+=7`U^j0P8I4aZbl9RtlRo~%aQM){!6lQoM7`~IJkA=+j(%zpuJek!`_y*7 zyZi1%lP~v88f)s8EpPi@3hmGA>EGAka>N7GE|bB6_T9MG7qvLrIpERWjwe@0svHk*~ki&zF3hlq9ASZ~bhXMHwY z6zgUEx-k0t->v)4PoaOC;_K1B{pYK{<3Ei{OuU-ikL~(J53q;%ZJ$Ih@ExDz(DVFu zT=@6+e?sjq-I`lBA5yQU*p?U$)|JH*Z+9xXa}lT(nsrTTA8ak)wp?u$i1&%NXI>8NyQIXlLRq0ArB~A+i!! zCD@gf0tsB=uGAyj>H}PI!((Im^-sO=+HsKsj$cQ)EOOj$;}5Q~ME5@Vu|1VHxek8* z&Cl$rjo!0P5GNf{~5odS9JWJm}ftS|DAdHWq5iS z|NAL^CyaSc4J!h$PuX(uGH#khD6gt!QZz;hM& z0rBdKH$#_xZO%nvoJxf_^~A5uj_mrJl{CviE~-4ng0M&wmInSm3+sdMp}Zo$$KS|I zWw=nPpj-%^*v8)oR$pNZNuiv;0O|jn^)CwQEmft48n03P*->s`?S^#`RiS=uMfCF%*I6$jE(AE2K_)yq zKz95bmHF9@iF&6magd*V!=Np%t#@#c5I?sK$|LJG)Gp*kKU-E`YtmO+nnoH`Qoai0 z=t4YCSTzLsDmLIfr;#kVAVE1=vEy`SKROvjg6+jkuQYZX!rs+OoGNXB^1I}3I`#ARu73R>Va-U+y7 zIsW&UT*Vv<0?dvO%Ek<%f1yZOsFnZw+PY;)s^iKHB{%)`H@};Xj=3w6H{Eelvcf&~ zjHGH4^?;)vQM@nk`hwUTy4-q0bnPd*1a*76KL5?ntTAQ3%6}6ra!u{KZDTmR@wRx#TI5G zKHGe~!7rq+i1YRXUm#NF?A#-G58H`%C<)b=YEszQL42WrH-Q%dpNWAdn($1cIY~}# zl*EFI$#xwGfRTh_3>%)u{P>qJB=39#K#3D|5|8ZF>F|w`YjN2!` z?Vkb`6miT_9ec5k+f+MMH($S&Y(c&mRhK1PUnFB0@0Up5cZI=8=R((`e@5T{>Bu$1 zR15CHJ*FM_*sGbB8^(d?zy6*lzeXJSM4pv z{uAjAwll#lAudSpXF>#!5d7oR!3k?U*`0vD*d+^YA<(T+V%P=9d3%_~2a!#V;?!~u zF{Zk5i_TD{Ez_1(yV{(N5(uwDjA4sa$7;2k7M1cB)=ZA~noSHsNUe4lYFKND#Zv0k zuxbsX(b-saiN3~Cj~pfCWx5hIV_vdM`S7e=TT^OrSW9%;l5)L8Tc%@m`jWDea*eml zY~-4)wz_KncpY=p>+LVCvzIxrSS6)8jRvV1jaeUHSxt%FTHx0kZ^ zPM>UU->TXVn6}8n(q^E6h(aR>4dr1eon~Cz6_Ov^=EOWEv5K&n?m&TDcoxm=BU3g~ zgb(gn)Khiyi*KxBHEOMOi-9zuw#4CVb5)n(rY$q*d>-6_n!d*NyVfo;G3pXsS$T=G z-cqA4QL{Fk8vh}yF(XT<#ZqErYYYyx8n-v2(;%n9ePj0wy>{-|4aSDb8cTUIXEc|2 zHRZT1^|(#Tv=)7NiPmg&SW0WO)fJ;(`J0dVTkTA#U2nnnkX36d9lj=4iB*qpHETsS zy;;MkkyfoMEivfIk)zCRHe^*rmbe@*{4FG#075(wgstm*UP$wbL6VRTqCW5>%0!Jm zC_7bY)ACas%Uftl*oD z(IVv)>X9WZ)fu*ApjbvNtMfEJdogi7b2wFbIDIxgn<9mycVrc_+xXw{_VKf{dTd+$ zM$!>t%yvTTqu7xs=^h=AF%c#@B#uC@5O=22%71W2BReh{U>nJWO5}bb-UvLaOH7ru z9{+;gC0$+5-qqev>$Dp58n(=At8)7ryHDKR7OZv{^%{mhU82P|x}?l#cGxN%l@6E1 zT3Ti(U$L;IEB^ZWzOL5p$%(c=eNBbkVk|AuvMgez5W{L%wyz~t*A(!TmreUaE#c<2 zy4p&M(@|UPt*mc!Sn8_kD=HoJb(Kytu1BjcGg<7;DtDbP*xZJO+j{P9t}b^}mb>1r zvexKzW|P%ox7f{=vNHWW6*bj?{B{F8O}i{c#34i41GH(KmT+*0O$ysl5(4B#UUbUs ziS|#fT`}G_{HbLRZC=~fQdhfgNk@$nU7j2sS#$dhD~G#lb$4yQ@veJs-nl<}0A1GV z1|mImKBv9mjJr0{wPDTPWlIvf-O+(iEkww~+LkUDyz{LE3kMeb;805DldmK^r7B2n zh#(i9GJrACZbs+_%*54u(C=nX&X}4_kDJXi8EzK8Mb$HA^W*r^j1((UiB~HcD-uRQ zq`?KzQgm1oyv58U(GL@RJ6m`49_B?_SoS;21b-!&OlHtOCHRiNo@HL7rQ#2^;LD~9mocOeA*_LO0(Ox9IGRPb%weBIZKM_( z{{$BPmN|@*8eCZ-udV<&lMk3!V7fbOArq%G|x`xkCx{f&-uWtEcxwblS?f z?3cU8`%nTzVE;oG+4J;Yed@phb>h%-s}}anrN8VQue>2oo+|Y?@jR$-UDC~Wc+t!( zvw+_6tN%$(dRp-X;Z|>z=aP@(K16&YdfbH^u7Y9~p+6^i&A!6IPLaz=uAoeDAFoxF z!F|>vC%MBU2Ax0%z`O1!vj=S}F`2V*v#A8Xs^Xs_3}AHk%>Frh$yiloWUOV`DIxfX z&6UewU1101Wn)DOM-QSeyyLh=1xx@fd}?kT@)(|)Vo3cIaV??@x&Io0-&3|fE>Q5L zIs3HhVkcp93_kPQscl53ii@PQS(_$O=3}JPsQloWyk>jkXwVztcxYaN()=%KgXfEzkH-S%0pr(ozr%tK zVX8w+JOlDxlhsy<+)CJ45Zy$rZoP(9ioJuXNYp)(r>Fd$)T)9cPC^kmx?U$}6z~HS zXqar`$+I$yNQz3#@n35hDnozJkDxB$MUfn(c!=JOP`bOZq_u}Us0!{wH{Jsk!(c9g zB<&J9Q8b7*eLf0O?7I$v5mArIwh{dwN=DG5^m+a`tEY2%^|ZG3z^_VGs8<(3$@~cO zN#p=tK%u`Q_bYLR`KUdLjPYlR_9ftUZZ0;yAqjfE^A3an%x5g0;u zv@w?RFKOSL;Md!@t=t@}PN{9-d{Ty|jt!VV2V*7_I$OC)rz1rZOkWKz;E zdmvb^Z>h9vT7oS_a7QW5cDp#Y=Clb$+Ziy>;1D_=mKq!Sklq#Z1I{?UQ9)(EQKCWF zdUp8!FPwd9n=5?q^lQuAUHwOgr5pFlWDV21Vu7ZLzZBi->ljQ8VioTeR6LxgVzhhx z`j_sEx~5aFe*Wl)wz0j^=a=dE0synK(G|5mtZ8NC9Chcr=J~@yj;)a68k_H$r?fm= zYoKIgOTqj3cjhl#^MYcQFx9}pe)Kg@VIjZHF_e-o?Wi?RQEKb{tNI8zp8+4CmS#qh z!wNiF;>d~Qu(oU}SX~|D--FD@_wdW5H{KZZ`GPmz$iFXmK(i_mwN|RsEis84pt<3C`v5IKmKZU>W;Osea(H-VcvpT^F|i^ z&#vUS*B-sOV_WRdq1d*Lo3|ZUI<)7Q$Z3M*tP@b(YM6R-YZ;peU3%I3%enpS=-$3~%Y^{5sRr1tBSP9x5IXzq*a7JOPb zAY4SB`Ckd|=b?~rBFLZ4e-`g^uX-`vg@ZpxNUnClE?g5sI_5l@&K}^;o6U^X++;=% znea$`o&WZ084eBO3;3#;KLi`}*HQfS+&zUd)wt(E29OSgV=RgxTS4*Yl@E}5|JSde z_~ZPy`{z`{{NV%s>etaj{DqS!p6x2AZY~c((aaY(ye*RT!YL<}09=WPx%U@wdP2Ai zu6_R5E?hB@6jq1~pjywWa&6A4!z!ohTY$PEN!&f0 za+4Hm69Q*toPm>i$?YE`4oYmlXoLAj0$soj0%uDAT^w?SYLS#>ES@6x@_fNMpVp>z zy1G1I6bwKhTeM)XO{*^{(;IYZgN9-1D$WEN*r404w`vWVTC1LYF5n7Q z*6OV~4MG|<(wU5Qi_7k^JFFI?LEp1h&9H`LWh~3oG}W=KW%x^2m=BP?)Yx@Pl_A@2 zw3v*}iu%5KXL+dw7l2qzncw6puL;=wgXOFmv4|}-*{glE{_3Dftx-Fi?K-{D>a3}= z^wgRho}juuaJItBu#C=aHdbqO#tKiz^i8YRE$nG)5BRDpZRLhit%im3jt0FJX-kks z$68#Pa_OFG)ZMC(>Xhn5@GHYj)d~=Vv5*uG7ND&UCt&Ri9M|F-<-^~E^B>v0B-!G* z`zuDDheIy;{S&{5s|r$RnkeZj;&mxclZ7?G1whwY+$r!b+URziH5k1nL(R%IU8z=G zJ{st1GL<8yvdS81U=ibCO||APRW+6}7Hg><^;9#crqb<;tk>zwEH+m)+*5s7skzKl zqF>b4Jl0_M1v_ghj3uSQy{uzUS$Ti!U|k*R3e*RxE9;vLt`d!oDYfa#btNWCg~M-L zudQpUVOX|onSo_kox@#Tws~=lp~lUY>Pi}FP1aHtH@QZmukPrKp82fVT*lU_>nqhv znIWsM2~_vnooY?J(QLGq85y{#rABK-O+#bHO;i2N39r#!T4F7$5N_uyf3tJh-of_r z5{EVJ^+c@|PPnJILu<9AmQsUBUsi5HKQWhUTox90#1ed$Wq!D767N%~kbUTLc!R7f z5{{&3N+ZF2K|e|p#KLqz=HV;{@fj&O4;o8Q^xVLM2FPRurAJ)ehz=Vzjx<|$_0_x@ zGJHIQE~MFW`QhxOnp6fjyYl>qPQ3paAuD58*#2mBY#8DPkuHejG($0)&+cI$8wp8S zV?L4!6>~u>BQg&E^(Hb+wznQT9KZFc7oO~CV^ZS93Rg?+D*qqk)GBrVOmYVQzdyyk zwO|pMQkOn4h&(Hv+&93)`?h3l!qv&KC2{`W#mlG(CfN{2|5)-z@5pgUsZg|?1#_=X z7!)q7jMl?K&TkzZK7hujQC5Wg2d{eM-WNYN8oC3O-G0mBg?fGW(A)a#W_o$7>kj@8 z(q+UI=z_jJdFGS1hAhqN77s1lebb@Cw*~k923Zv@en(jk@xH9R-uvQJfTj1&g{8lq z8>K}yz@<-9TzX24l=uGn?wnN_wLbs;t(fQitDUdH*LOo7{4ka0e}jKq1f*YX`&2@d zu(Iuwn?#h&4`DJl3L9ew8N<0q4|`1iWH#;;DEOw8in zg1*o--?5AYL9cW0-X+L7|9i?`6(udSE!znvd=3jt<@5GR;E5g2@AG$&aw&8H zPx>-^0W0NO0h*a`-WjSTh~VdPh6w;lA4Q*B`3-(Hfm*)-$b1(w0<_!-hdaf`g-=v@ zWmgv|8*jCOaL8CtI>+CgKo7k)xAcAQ@rM%VVHr0VZR0?3&$|bi7`(;zpg2?PKp@Z% zXfpJ#8nsk(A3gnGSNOpq6ys%<(N+D1roiNO+(KgcRkDCExg2p%;U^kIWJUmze zFk;#fu*_393_K0su|?SUv_bUe#;w8iqq`Hk+6D}5yZMJ7x$p2yn_-}BS7P_*`ry{a z&C}?UPgXtYU4Spd?oX6Vu54~vT9UXwhW})N7k^S-o~!c);^oS#650qRnEXorS*mlp z?a1b>7q@P@*S1}%H8?$uG*YG3o6mH1b#Jf+-(r3Q3nAnkTXz+ zEn|&5@HsCcxZm~ctp`xafm@$-!7Kg>e#K~|2~kdxhsiQZzFs zMf3{u1ju8>{U<6g)XSs++KZ?yL?hmE(}a#fW#xw}%fx1;j^;^8ULCz@^TxqNF4v-k z1ebgvyd2!P`KEyz2L^7u8y*HEiYs-MOnCBq_1(7CWh-{>Trt_&-rhP1ua>p89Txr+ zKXAgI;)h&2@4|Mlo8S-yV@Tj~Bub&6ww(dWMh_E3G*ZT;B@TAozdx5?|1I(I;?yKj zqI@m0XtZT|xZE*TXY#Mwb36ZUTW_Z7O@3SNUwvyod+gJRtM!S`Hn)JR>z?Bmj5*4O zr&~t5Zr`)YZ(>dchz>V?yZ_eJe!bvJrn1%HnWIM)$Fs8}8sx?40P+PK{XmY2pImqX zVKl*LtewR|3gRMQHDHfOf-WMGXEou3x#IYRcQ)^AyD)N%V}C75zJMsg{JG=Kp_~3{U0L@HHD%t>Z8x<3=Cp4#V&;}CS-T-M zT~WD=DulMOzTu6Xs@xa`db!GH2LdMC+wX3q!n^w z)yTphrv~XlZnIWza9Wx>C0|Pw?x*E=9s(;tKy<^VE->F|9U8@) z4`vEY^QVFT44#|%`A0gJcXTY@3J;xv_kD`vPctVVnxwyp6F$QaoOos>`2qy&CBH5Y zzz!UkfV)2QQ<}Epc92Bq%vtu+VptJitf1CRMz;Sq;*|pU;|fai#|Wr0I3@9hTPpJE zt5ZxGz$dtZqH9MWr=LToGE(2IBDmUi;_2xko`1Wn^H&eloAuq!j!i{uC)H^(d$vN7eBBcZhO`y!IR z1YHJcuuwp$Cgzv{qO`0WB2#`jHppW4O2se%Fr-1I?15Z4r!!aImCFNp+647QKBMZe zF#KuWAWljd$WoyNcooY z4Ys?hFbj{O2H{<9T_)E`(=;krJ&~bVWkkO?@l;6Th4S7BEEs@o;|B?ICn} z1aOKVXcP<6R1^qy(0RcwA{4%tP^*7KXW78axCt?h-Bw2pf5ukBR#~;oOL*Gs>@6D& z@jnTTmi2aaELTtPv+vZ_vC-*%HL6~|Wja`C)3QhL_p=xA+^R9H;u0*I;8vM5_-~~? z39>oy>OM@Q!}1XLi4T*Fa6`M1j?krt30-&x8X!5IsI|2R5B03R?i$i|RyS+V5@R`I zHEQqz;b6_CC2R}P!C!t0o)%(l*Akzruh!{S*wv0|J7cSHsqHIt?x1{KqVvGq5kRO( z{Dfyl)^nJ@ejPl5{2}s`KL`xu+Uw*|?3>~^s4O}X2nvLTAVMgO1m=IsE1WZ+FBGY> zGMBL&kpp?0|@ zcgrh95m#qn9y*#qm&M$fubqbTZ&<16 zx{b|<{JP2sRssxmsXm9-mbZwr=kP$5QeI@o8%%(?l;Q6j`I?Y2GkA%ak{0&-b;v$v z6jGEZ`P6*@Frf+tp2z_y-4m_KK;p?Mv{OuJswU_&unf!@a#K)V;rvX?K2GMqYSJP( zK}A!I04NdgA{29o290R4@$p&Y09>N%#SA(JU`5zso1*swfRmU`_z?Y6vf+-4`451R zL|k`LY6Y?CY*3ZD3Y*`VT!T~7E(m3@)7+*1$J?90w{?|?;yU+g@uJ1DEXkW}$+9HN zyCqBV?!@sHFIk*8apJ_;ZkA?goNnosl(s2tLz21!h`lgrOT!upoemE&1B4C;%J2s! z1*QdFI|EFH2b}@JgD0Z<-uceCt8|q(%>4dsBwbzWo^LtZ_kHJEuqa0}BVk~t0Tll; z_>)eSjUU81c!e&2M^hk9#%?Ge6eW&I>HiXbQ^@Z&MHBAmQ_NjvyS+H`E=PGe^TQPM zL5lzMnS0l*yY~!v*L$}zHuIm~He1nF##73+mU{HkrhdmADg2UT=?95#gpXJ!vY@-| z20QGuF&PWDKVWsONy zyHtjTwMaolOlw%aM{aTy#%2;qgDA%)Z8v9pD)BGLmiw`knV|6EY-%Rz_br_MtQT8Y)}(J!IC;rIWH*?lEFK;(wQd zPv$_~ihJMtffa((b^T4*E_Wv}8aPZ=I1As8nCB`%^6V$jBkiIsRIblN*p zn4PEdAeD-@3i$lWZTcW)ZZaQMYMHZ{oZ95b{UJXM6Nbp|exe9Sg>xaGn;vSaR<%fk z;~?>R1h4s#2np&&%}IQd3aOGJw3trgABB7I-y;!^6aO-j=HT4Qpps|Yx(Km_tEFL@ zCDTdkdJ6~wCQhk(FXpOHCCslBm?7UUUM4XhQd9ZiaYUN*YsVD>6xCRUvn*PfbzrDy$lO;W10O1^od*n^5?JMSuZpuO&&R}Bs6RJd1>b(KU8WZ~|M(Tb9ULkL7K zsJcswG=aOLwl}GQhjaYm3qyC4#fkp{n&uZ%Hy}nme7`WXYSjy*+}szqRWFp>fTC;} zoz|LD_c7GXgZgDznw?s$6B6Xg>xn3n)7oNMGCAINz=)GavnJ)yvK4EnaL1`}wi4e` z9qLe7aqx^wkog8_sxQk+^0{Xq!ya=oLK({pOO)&c-Rn`o@f;|OsOY|Otr&n2b@(a8s6d*I6KG*wv(i^ zff{V!Aw%+OsXBx8CR-<_BZlyJ2!ygr*WXkc$-LZK4J)dg18awC3tr8UbH!W{Q{>#5 z7@Yi2*~t%+w;%bS#yz-D;!ASIz+T0j1=EmBR@PhLFgmK)>u=&a`YDL)%v=ycJUM(H z|22iKL8dMlPQwl1V9l@2XmScC8rsk@_uw}!FGS{TNGxGi!mXm`Jr23&RghstO47cU zVUdbS)Vgr}O%Vc7i=aulT{x^GZN%)fv`#hzc7`meoEiY$TFLx;n^x3O08!0(H`Q`f zql-#Kc*}E;3RX=h*QOj#QTbQBd1r=&$YRtC0VeWXFT{JR8?;uC7^%R*I*B0WcW7x< zSf!^ii3CVeYhM>a9#J#oQbo<#<4)FD3kB<%REZJmra9Ux40{7f=twowOus^9J;_lk zu(&3$r*kw_9!`durL|kum5E(#8QL=Dg3}Mh!}ICNnG0~Jfj5Zd=*i4!{8NIDTJCmd z_q9W&T<+tPNU!?PKqOINx3SQQvJO@6ImkGrCJ;EUODg(}10fWnwg8^HQg=Z`D9F?Y z1v`bh)XMeGo`W^)stSA|pSAjUMj_kD@?)N}4WH(j3})eC?qoOj)gQ@3_I}w6X zQC0^0A*eekq@GcKb#(0ZrrmS> zcF*YcoogHP4>@esV64+ojk;%YWn@2z9MYnatnU~h;vPf_S(%LB_o79)wNVCWs5m-y zR)pCzlf#j5fsAT<-Yg`4u5k>ZKo z$Xev&IZ`6%MrDwMNV2yWz`ATB>FxBDygAVk=kIroyKAdx7rs9}OV zJtWX>$C8pjt=*?Wf+ZoI0_k{>qac~nvYea-;E;VB_hRthya^1oG~q=RvUNT4WpiPo ztHAs>3Y}+4$eAlvzy`5cu%`zBHQ=IVyk`?V1FDB#FOTE^hfM4gyrAJ{A)r(0w00qq z&6~%IftV5m^(x1sfnQ7t%1^FuLt3F$D&ScZ9MqDY^SvWj>z+$m_4|Zg3g5t>J6{2Q0aEoZS7*8SMw(U zUiMBpJ>lM#f;x|*aiyPa7}>a{2jyrpH#`4|hD=eX+EProntK4Y{C))cZ^EtFkJn&C zGiXgDHpNH*)ak${oi!_DCcI#NN;z2}4vJ|GEr&q!8)4 ze0yYbR{W}{w*+pawHTaO6v2=ZctO_GThJ%DJ%}tnH_}}G&mJyKJz(T{2kWyS$i^iacIQ@k4 zCrk{f3n|S^abwj_aYEfJ;b27dUotJ$!w_wW6;e$dO?x7&HPIO6KogANUPM2$EsJ=8 zQGv;^En+?-IXcp%dOnp3DTaERvp_9~zTh2SnLZJFfvHu3~Z zY81rW4!lk}@N;SYN;>k%Uvj^MN1x<3qfemY7}^W`N6;R$MQ)=;|300WRKJSz~19@Ab({|JYYg3y2&zz%5-9X{PPKX@bxaK_?n=`vIc_ zf(8?Qq0L4>?ic%C{pc^bQ8W?RIo^Jpqiqigm>&2JMfEncky~0lCff+M>7ib8BR$&{ zqB$VoT&i`3)d>~^DdK-0?Hpj-Cbz%L%3$a<46TmLzVnA;KkQqYzW=s;ef|A?`)<1i z7ty<%vv&;6j0`t~xz726ZLMkg@$b@YbPPY&7L}fWi~FaS(8}KVNVs8mWG1#P&Qwfs z^h3BQ@Oc~YS&GS6x1x~G1hMXeB=#y41coe{AYVINEONcxX7<(GkVSK7S-kiW|dM z%7A0?c~qqkj}oOBw6g0&V1^n=Hf%S9|M&tJ|5zQOr7`L0xlfrL9PCljS~|mT=}Z>t z+oSRJ?gvlk4X7)#v+LRCA4d;6Y0eR!Q=?2T_nzw`lLbz9-Nu=+>gwNZJd71Ca;%>9 zrc=}4BNR+)(O~xlL#Db=!qtm{B$fai{G%qIi&AAbs0dPiQ4)mi;V+@T(d#|WKil=> z<7Eu<^oPoAR`g+00W&q-g*QnPGLTq8OcPV6Nn2*Pq7oh6xUC}^`Qrz=_iW$W)xXl! zxpAn{TSvBYO){lD_N1;$Hzh{<0gfiH`GcXy2oXdvJeRG=6r|U9l!39u4n?alB{U)s z@}DK5H4Ipbgh&)JBKB?#=s9*|^L%TR<(PQKcyFkgWy*}JBL+6s+D?Yp+=O|&vE3D& z#XrHrd{lpu+)mwodBxoiRC9Md|GtW%)gRxCT^YfhETg-7Gn~u%QqpJrs3Xk&VQQITWeIU@XwPaN3s;c}Je< zMEA)ibq=STJbz?I7OJ2eCUD7 z%ENb5Cq)K*0?1$7IBD&O_Sm>-B0tl8`~TDL1v^!s4i43XPCr1#Ld5~{GDmIo^ve5-YRfx4-Q|gXeb>QvEw1l&*jJWX5`k#KHn#W9!yDUL8bjXlo!$uG zxUX~Ufk*c2S~oedV*UQjBmMq}tMhd7+@W6f-jR2#ojB$jZL8_p5-$o)-*)G1q5A5| z{rAf8XH#;%Ksg3j$`Ec6lJ*;gy!=5S3M@#;fTtk!3!#$~O3+9K+FaV{a$77+-L{VY z?tRsu^3q7>$kf_!Fx=AN^V`e@bwB#g%UJ+O=lOP_@6vv$$H;m#6Ul zQbF|^TID6DP&b@4WLE~qyIM-#B2!Q?llnuG3f(8E*Y~jK+noe=K3XB*vgiXs;d)3m ztQ$ZED*?)`5S{~_nIjGW=Lrs}yf|FJ()cy%xlK#83Ug^dUj@}=A%BjEbwE~br=Mg0 z&T2D#;R`04_4*5(zOus1f0O^Fxk8NbqR(J?+5x9^;)4k4ccxU&GCzLmDYTGgUlvkI+}zEaRBA*PR}GL5v@a zqAilIhv1aeAVv;r`o2(_(`pudIPx~10*{_6?8{03OpqVo1bsx*txm#@g?zY0#GJ-k zKj@!v+!p;7lK;6?7oiz%iRCs5=^bNHdkDgV@e6kdM9jo|RyjMd0S33p zod6$d)J)=m+k3a!Q6;y?ze%dRd(U6NgX;?aOZ&E7AxIcw9vK@O%e2j{gq-dt^Z|c-K$S zTb=xG@mDLd3eO%OXJ25^h!!G$A&R09^ZHr-7pMx}?B_Dy9%DYp{{n6>|A@cnq&)y? z_BN6ldU^7#%Q;N^bykMvjZ0)%0*E}wX619v$!s#;nMicbZ$Gl`-HZL?VrFzzLpa>9 zYVwiCR)&-!V-hik)PbkBCU+Kp-~+`wlUq6YG9q-&$?QMSOMXCID~!Tx zC$-P>K+KaWN6es|2aUXp%ZFL|2Fzg;^T3mD4%~QT-)PK=)w;8C2Ssja9NzLMyTx&| zq{8u0{U%)r-L)J+RkdPL&jmKEwGAaDD~G;)=)i{Ah7~7vwi&NavNP8|i{+v}|B?yr zJ&5nGD=AsAYOmS9`Mwp@olBB;p?$%QpWVJcF4Zk&U2aD{XnPAf_boPbY`yz|qwDWeoF?v$mKI?>Nj6XhgDY-HHAuk(}o_{@>Y`MR}Pd zYFy+Oi7UARSF<{&0R|(WD`EOFe$bcsBecwVq4X%kv3nkl$nlRNo*GyhFp}B$@n2!R zYQ$0yD5_KO&`5Gr2yP{Q$%%)U^dRpBT4FBYCQ6gEO~Oa;N>8F|l$pdzM-&E~E{mUD zElgR=PwLkJOwB?1KCt_9K)MEF;gE;=b8uW{SfXPB!z&hh52GEU{RWB!aaRq7*kGLb zC|ZqMc#v>r2m7GQ!-N@+pNFcFS>sVk9HHzV zH}Ou@97(>ALzz25V_f0R8Kc=FRFH75kbEm*28o-~qR1hU4QH*CM2WJ_ zNodn^pOj5PgQS$4P(rU7;}v=6f}9eSgijHd z7R}+dNB|)P91R%R&8l0{$#JArq^3gy#QH#mZ&h3?N&k{3wsmUc*$*F&y4(2<#ZsBd z7vFlK-5ovt;b%vr1vGDntBhAU-g}!!Mop;R7y_@z<>J;FC(9{1QsP}EeqQ@?n7t(8 z^(F}FWLd0|^sx@Pv)NB$Hkm?B)d|-iZnKihng>@n$-YM0^Juk5VmFCzpx>U|?rOYo z;4w3nOlP$&jCTm(%-X9eG)KGO7ojzSv!^dOK9HOU`kc9YgAq>?LFJ#d+7lMaYA^Y|xc&zH5dljHs0wHx z2cFO^&b(kLbqdfjeFhj;4#Kr)4mVSTUFWhVIB88a%awH068~C_6;3PmEW3w(p^87t zUirk(uT)A1KvR#20I~Vx854P8(6mPgvZ=$+@~n>8p=hdcqd7hu%2=_`|-#2M+^O#jABj45=1)9cpKco?e93drUDVf3YioErhu>veFZWK<%s@hDMxPQvd567jz-52 zG0JL>oVCPDT5~1M8K-T!UQLW|95Z61k??rqHD=>5FNR`tL?cB-9gz+>cEnll#Q$m< z8`ZdFe(sUuFgy)e@gu0LKI|_;sJTy7*NyTgrdxRf4&6Au#6|NGV2Rw7hmRfkgG|bR zl(L$pCQUYvXA#k$Ake5LXj$W*x|wT_{}dKxwT3?)n-{rdkAD$@=J+Qda)-YFK{@^% zRN}RlWs`suVKP&^xuqfV?+O6wNSW9Up9BR9NZGM60LP7GR@hbi+Jd2Wz>GxQUDaK@ zQ3+lnYz9>B{*Z)6S}SZuIghGo97pcVm*5*>Lf}l!N+5;K*k)&K*^<^D>Uv8T7D{{T z{_uyVpDr!x?k>uj19c>;Se`jx@;PNrh|x27R}G2?2WX@;RVN7>bvUq1$gPL$eTLXl2Mr6^+rzFHzrL*t22lc+l9f zrUfrvG)_Z{CwMbM`&)*6=J>k#$tI3QX=Lwh+Wkx8F>-Wd4Fy&V%2e9DriG=|eF`~q^6yiE^czyDv-u_| zH4(`OX?Es4G=4mtll%Op`X9SY{V$ysVu=6$(ErRrLSWfWpAgrzL)AUtfqYTjyMi3~YSt=p(Hi38_ zSbDuF5;CGv*fOOwe1lLe#j^q2DiVaO{asT@b-c6g}(xE z07)!%gTMXT(8u7mF6EjzNuDjjbE8g)MIZ*DIW)A}#Y(BTBm5=qFj~Q(6^GB?&87e=c3-_c(+!Y`~0 z*6$qZWJ1R~hj!Kn`F~yc_+nM?F#pEj;b7I`4Bpow`2AlY6U_1x)xW`(Gn(@$QzT7UsW1 zVXKQnN3zKM+_nd)YcPf z-35f|K*SF*g&cvw$-zLXt=?N|FEo@`OcnfZ3JO?bem0xBRw_LeB7nWzDo4Q8yw zWaaN1EoM9>aL*&{VMvdJJ&g4`5LA6h_`w6r#M~F#yNW+I#ukq9@3w5^m?{3p9`sxO zN9ZAR=jio6jxkS6aon@QnnZjr3rY5&D&<)`ctaAI$wzl{EG1o~J9irEC)eQE8M4!m z4O%?5U{B#4d=bJUlPOUSBke1*CS=P*#2?omgU?o!T@$ZxTZ>rMVNa0{Xrdse9jO3E(&!!hJD5wEe?yP*CzuLgG5im`1m|P29BhMiBBy#O*d!qh zcg(LWU&`!x;NX?9vj@MnHJw$!^wam_Kb$*sd23oJ`?Az}rCGr=6m^mu-wAhi2~%dz z*7Vk|9XvaB<)Bs((@*2SUOsdV|5c=)#3le7im@9vD@66lOOd}W`1P-!`#FC0nR9<^ z%35{q{Sk`3a_$%Sj~_Yv$6W`r1fe53<^EEGrAY!wAOL(Kq0Ep_0*G$69Wf0ALapd0 zpFH;rhVt`s4|H$a!X0=i)@d-#&(3iBzPfU-)X|cS7dOAhH@CGS zX8+tKZvU5iyUmuh>(=hx_c@e^y04|!fakd16e3ueemFX>-JQ~OLyP**x5%;?pyW2 zb!u#xOA1Vx;NZbW?|!+X6DC`;7=r?zcC68@kaaq3j10ay5>{9PW)mSSGh|Q%>KL5OTv3eDoB!` z9IyE_6C}w4=_lElV2?>TMX&{9#`;*nl56}bZ6lN`+@iY-LtHLJ+89}5pRLejM{1Gbfrp;W!&?9+K1F;H>9sv2~ z=s}JJF;BGUqeA_U`*lJ+yAtSlFLZPXbUIXfkHMP(LUL)bcN1uaLD2Ky9`5lne9g=~ ze)qAVk&&TecO$EK#qUnkc+g|hBNHgjH#?55otfV?yB=$b!((fQ2l}>_qYtgQ-SMe( zICMroMIQK_x{>RD=o%lL;7_vEo(^uk6Rl5fHeU&HHkIm1lJ*ty^ zc&4!gR442>5cz~>zNr;S$ok4e#N*7=!$%Jdtui5W?f%zCXI6asCl?zS!`6q(ub`1= z$HgO==PS>02RL@+z`?`sC}DKRxSsi~l~3-^{Mo;>z}r#XhBALynZE(vo~BFg8{*2_+%Ud!t$%)c zSA)LFJ`sqPJ8!$qSstyQv{&gHc1_Rw*RC9IXjU5YQ*;>?7Gr~g#;v;jx<%c6w@f9} zeqta-8|py9=3I*))`*0#Lrus**k0P0R)$sPoDYfHjZfZpmdTDaPu7>Uwe?$3cWWPO zZ{JvLayCc8WyZ>xHcz5u2wA!sdrDkuxwy=?+bF|O#jP=pyKi@2iEXG&Ut*nTA8QO2 zd8^B-3mV$kf%Y{e4t?{AlCrkp+j{xMeEb!2KTYYXi5%D~a+fT0QeYS!9rn&;jTjP~ zK79KTZ`s)T(X!fuhsRhFWnR@!8U(5>~9U#Ztg-4lZNsS z44s_k4sajQ&FJQJ+)c2jK_w=84MTdr21Z0Ao)}=rkbsN^#1?VWagdM5?d#UGb+D+q zxy5R*wnbaaCU;f2(Grfd+6f&_chenvxF*ZMw| zV-s5sU;!W{2Eg2iu*~ZXy=**eD(akzMCLkCT(H#ZRsFkBxBb7TcO7L=Z94>R3V3U0 z|C@UCw$7~ww{^1|Mx0v?(aZ16f!KV4iOj`{NTriz=@>&g2VAc!#B(>M8&cYwP^5-2 zQ3;0Jp=Do!11u;{CgQZ&ON_`-Kgf!`m_PW7XqRFvEo<8iju&JV;)PNsG_ql>r()%g zYMR(kjcGFE`Ms$s$WEF(p^yj6MpUL@f=$y~!dT}Ziigt^+%VBzTv=OL#fAG?*-1|m z%Lc1v*ruK)RwwIw>q)G62bOXspqFLbn`DywSyX`G1OkCjK5CfPWGW(*u!x$LACSUk z5M`73y%t&eDN0NV9A*f8OXQ10ROWU5JQf?!f(CKo{=8nuIM+=m!xB3v)Dls#Xe+`) z6w|}{v7kU`!MhT~m_tT)lH46nxVPim;#L1DXo=jvRx(X9dlr1vYrC;*O{UMG_CNs& zgnC#GzwqFTZ#&$|N%q9%JzIM%{-Dp#FG3{`GDiblMidJjj)e-sy$U@;z&Aj8<0cpj zW-D~7Sbv0s$r4GIH{T-q1L!h8z`UJH0=4z{^wmOyF-=iz2S;J*G#rOQND25338TTC zqt1x-L_1v@kIa;IMLQFv8*krOn&@1$Ar)O`#rHQInX&bB7LDE3hi{-SI(HlzX2uS0 zFGT~T3x~(X4lg*Ki41g}r#Ak9mPM-=O8Bg@CeBo(?5FMQ&~@(~?z zk~~LF`oXNCpUXr4H2k#D!_3i7`cJZ>RkB`UB_}JdFXkHn+1=-4EA2;~IAZ_5_*dit z>6qZq#*IT9d6UkGy|k7@_R|LOfH$`ptQV1`RM}iaS^(w#Zr0I=@(5Y;$<7U&1z9lU zlx_g;8DKryV_g?b_1!jB6zeJ7cw~dKGYU7t(_V?Q(XP^&BO6_vQRe@248#|D?K_T) zj~v|L=oqLhf5stj5A~OBKRm_^AKKy6srntNH4W&-ZVfA`=Cnh+@QD|%8Dc#`0M<&ZY)XGUcA`8uB~At45?M19N_@i zZ5Cj$h3GFd!habHgIwFXcIFtV9CZD&q}~aa6eExl;q=5FCy3-lC>A9-V!_TN z(7>LGWbQFrCMPwpN@gw)d(r}6kCq@)Y!SodBE}{0{u<$+;2Nobu9W*-imFM@kSUgf zls^Cm9x<|rM#W$o!nD)LWQ7u+%sp`Yk$DO*t)OW}Pmoj%DqQegj3IGqq3klMaB09Z zza6Rp( zlnGQTn~$8j(ImyEm=p|SPm#JS)MhNF6yS(+T!fl4y-;6D^f;1Z@z+Np)HyDa%;DQf ztdaNxyb>_>efH3Du~V=PH8ZCpH$@Oke`YLA+#F59JtW!RHjB15VpDa+`;n3QOThnv zF#t!b*vl?C*)Y?id>0^r5|W`-T=z zvB^?uE!7)i9^b$_`ubX2#da1IM91U%Y=uS0Zr}T% z+2Nr(?$S@e`xA%0dd|n%iWf>MOS~n{%7VgTOPQrKqGwB*UFMelhu3tMRWvmt#2Sh$ zF1tNkXwWw|Rg`tFd8Dt!Y;jijP8XNx>&|`kAi+#JL;RDzUv~;310jcB2v%4^Vz3se zh!;#QKsn`$NVv1i39$<%Bgp^=wy`*g@W*@rGg-(F{s7z>>`KDp6lVo=dan{8zg zVoa`$ljGZ;TsK)=8ysGxudc6RjisTAk5u>ztPNhK&|SH6?P#R9+EU+ATyHhm?IugT zxuxDxT^t!*yR)LaknuKHOpY@5M=FA)2DYlcTHj$1#^WA+9O8|z_TwM|6r@Kg#9fjg zUs2!?S~`S^Eyc`5#$eDGsL=`#SnPM8>Us1&^uGCxd^=iNVvEg1%mskO@+^jRfhn>Su}ka_ z|IhrlPy&U%$e{s)31P55HHlzNjNe#*Oa}h4PV~o{(2rt0)HCtNEc!;#)P3{j&2z>7 zfd1nfMH7?vO`U3(C+b$yC3iG*>~VXgxE8{Sn~Jc1>Oo`=2N#tR__jZ=AV4-uTOAoba`v$bQojUu)J;w!nO!_JsX`=wxIlxFqT(Z-cfEqK0KE;l%=$@GV{PPbD4?pz$ zi)$wORyTL|4oRK4W7F!9t;PJ`GN(N?`##YdtMcHV!LMs;x>h&2%cU-B2t6??$-LaH zW1q2AWPW)k|8-{FjIq43+&FUr{S*JnU6P!(mDGrF)7tKih#QeT6B&h)pvV+Jc9bx= z6Ud!NS~`Tv=}MpqJi49)2?l{$%aiCwS(qKK&LW-%h~b4~yH%KI8OczWCPj z=o6WjP;f2&4>i2iC)s_fl=X2EVCRX^qfiem{Q!bA$n|zw{1IFYxJXjS;24Sg`6WD< zz!4pa+0Uh+QV9{oAkc-QXQ1@OT!Ko`axN%^^T9d^szfyz5AwHx+h%qv&Y|g ze74>-(cRM38a#CBP_VV@2qyd4TpYJHKmFOyJU%t`_-8)*bn_Pfk%u4Vy1KZBA3oyW zT7Tl9b?Y8FQSYVoK=cy+;D_oZl^ZmDQT;}DG#GH1qVbSqDAIOKefd?R@l^|Y+G4>M z{GHTtr0u90j0pcF)p^M#NM8F6$T;kXx}@A=iKuj<8w^namkRyslFbpYI?#=4*0A~EF#eCZ%|^{AbeAYv}1h?yXj z;?fWciod0to-`zIfzLF|w-l66NRu1vDY%uwKhM05Kkns2!Bkc z()jXHGOhG?Qs)1I8bV-A8o?uw%pkh0)Sv*}VL;W4#8pLwWQ(QdkiAyt?H-#RT{#%{ zy_@lrv~={gHwN1dev#*DI%{e=`{50Z(;k1P#z=ncg|=Y5tIFkUSa|#yXNkSI*k^m` zHnc)`6u${JP(GkFx)t#)X1uaW*$q{-iCECpfJ*TB!@3&ey^OcAR@R`T+MwwsFOGBc zvs#Isg0fYoI>X1m8-HYYdTe;(!0kbI#g?-lf9~;hR_1L53x1|SZ%7#Y$7BL|?uGi= zqCj*1#$SgUtEy_MXI^+}ho|AddoR3CV#q&gCailS`+N*?4HlCXCV_V~g(U%LNr#3S z#_jJUu8>$Utzqy&%E&(C{30nq0Tm^l6E9HBng=Hg@AcO`w_+sPGvC>=em^I9sUJa? zRX-*di)FjdtlPO|_T}ym&mNdB9y`z*$6JRuCLbccB+bOSxlWC-U-p#O#$F}cVp8xE z!H@&wVZ89i2AE(-rbRZ9pyphvX5?&?=*rlk9&YD))AaVCJ4U-_N@JZ00u@eU8l-Y^ z8p{9SU3_ZImiGjhr@W^(j@~zI+*`2zj(ru99Uts0UUGs7VZU&!iw7$yZcJ=wy|nOK z9o8@!M#6^$%WCNnQW-dzPA6%#qVPzAWU__RI{Y1?Vih)Q3Mae_NJ!dm@`5CXf?x-} z0qD#>2nv@aKQ)LebF(%SAS^ zR{;dX%>lSnWOH;dTJZPW8sx0-)kj#v^!o_iF7WVIbC9|>V!GX?sDhD~Cnq`nH|dHqXO!%OOl90E^x{W;ucV7sy>VEu}!+Av<5 z%IqzuUz4_d7zc|G4QY~{P!cMrNIVhL*FGZ7(yA|KJW>zS<&^clB~HFJG^_%b`MtDA z(lzo)tl!k)J|&V5YGqAO4!7b~$uCIiKZxk$rUwd?qWFF$+O z8#}St+H&CBlY7f3nn~4%jPtbMu>{_*L=cOMg?cE$rWh>PvwisT&eQ=~o~cqj_48!T~dgM^+C&KK~J=w6RAO??u+ zY%wDT8i6nwazjk1ztieA{ zG{XPWn`nf1^Fmh9G-Ozy!9^bDacjBh32re60U65pq4$$~?jc<#$r}T`1La1c)>4ER z@%(imyGx=H%>7vG3n)FXRA10P9q!-Xk4N)T^V0YOweydk{ph#eyZtGwXA)%-a*lSdmCY)a`WBx>9&xHX)L_(+6Jc5XFF(ETp7Ka;Fby-o!T;4V5Ki9Hf|ceSh)QX``{ewdkOcA3z%!TUXr&>$hY5n7JfVAEx^he>Ue9^R~ws z3^e!&TQ=BADMyljW_Ha?m<%4aq9VfSYlBRED1w#e(=u~7x~-*i?#Scr{rV8@`v$VA z?uRnt#3O=aP#Iuc+8zEiM>Q+-IWt;X>R!3B-CkOL`Eq%wy?y1%+`e8_ z;V_E1d7U0)v)ju{OWRhiEWiA9{A^oksdQEbIMcpf2mXZr)qc*R1`F1;488@2C^n`I z1&x1c@1lRnA$x<7F|ZFl2=As+lYVYaZz{dD?)`oaUlyRH2OfZTBV%N?Y{75hdc|HP z^P-9DnOJdy9+nk0tXM!u1eOO#C15E=f}Kev@xIj?&Rhuh;)~?PNZ-1x9CC0%T}%9i zZ)1T9{N0xDCC9DnyO%d}LJdJy0Xs~px!nvp3!VrcQWxWmIVqN=j%?{In= z8IL0l=E$#OZFgvKghkg@92wG2Q72MI=5=Q+gNJ{kql!G5d7Wc|_y@)CQ+fRr@u`>N zSn^EC)G$0OBB^Qn!quTql@X2eN8ZM_gd(gHv90EaCMx zv62soJmmVIp3JUPDkA4bq4kwbG!B=PQ6|+Nvmy*}%W38k>{ppmr3s-IqFf+MHkE?Z z)H0Y%slxUSFkE<7tkEIUxJGr~bbb?EOL6Hm7?^|)om8V8>Z{o?N2zDeB;>)*cDK1hS{{k8fRJ)Hx$d==S`hl=D5yc<fBF|QhZeGX%4B-dNZ!a-w4lK&_iri5)jB|jT_GK*^ju@m;#+$X>?@UNu*deTukb0u3fbai} zmFvmL^kk9ERx~-8ge@{F@S9uYuN*sunim7MBCg2x7JsET%qjhi#W---%cI({;EpIc z5rQy&s3a}m5t4Ar4iNv}96<{$5WJEEt)y0{xQN_jk{~xpQB%dtBT4UuYUCuZItNv? zu78$f{G8#>OEKp3>{P;v;4YuY2r@49V3!SfDT-aVSGH!7ulP;QSTWZdP80ECK|XKc z&%+&jTe8K;dlTRSerR2i-_r82LPF_hp`yr*(c{@9x|U?G5>wz!k%ZD}>9lnIEy|8^ zXZI_zdeK*Bmh5;{%xEE3>4uPMs0JW!qEe1ANSj6r1+WU3ekuvw7%D_}vPx-D12WC2 zk*V{2V{m=__+~t^EAV zD`Qs>>PfDiVlQ`1u1@ywbLawmO{}c*y)yP1{7kkXY|_`0oGVHQ5K9UE`fis2&NK@V zF^piHB!RUOV;00k00GTsMg!H(I1Y-pvJnFm_fS+O;DKi=*%`Jor%k?mZ#? zV`yh+&+gUu$sdfKV{08AX?|3a8Uqn2PZ4A)5}oKskx1fn0HvY3Cr{P~>GIDhD_*|AmAwN;Ic zRkbodDBM-cgdC@$8#q2tosA|~65b!~k;cf^KW z6%{wf`ueq|#`&Gx;hyH#S*qHi4d5+`q*n!a-Sik@U4(wc4ca zb@pX4M$gAw&We_mtBJY4t}d&)rRs~{jg5^g_4vp!z{F5pRxc~ZSutde$i*Wh4lkNn z7v;f*jJh#jS@pzjF0^V@aPRI37;hgRqlg`yqKHk(h>>wO7Tk@8m&@PR=Xc>@iHF?Q zu^b$cgdWJo>Z$aJqd|2U8qQ=Ipo@fMXC&5~na|vlqY9hY9Uy1Na#k{i|*`I9t z`KR&Q13kyd40H*zQ=2SKNf0MZz-Y&((`z_*?I82eD$P-e=4bG@u#>tOG?)hl1qnNJ zfD0p(`zB1lH?pS!=ijz{q`chE|0n;S{_^sX?c4mNi~h!f=)UIIiQ}!EWe#7*BWto| zD)U4g{^|TSKmR*q^>3TU4b+vQDgSI+k)zUU3Ac2P4WEfWvL~l+CKnA6OS2*LFW7 zr3&F!dXlRP9Y}umV-I-MCk;IZPCa^fg&`Uh(uAb&$L^*x7e4XCjHUP9_1Q-Y!}o3S zRj<4Eoe#E_lVG|lN$OuC*JN%cYjk!^=4e)BJ+gDSeReVOl_gSsza#x{&g*F>0jVqBb!c{GpQ9~CYFaIN#NyNHkNz0 zY)U-JU*SggANuL%)V1raD!dj$Dik z#5XPrE37y!sW78yekA`pieGsi3`wcIJXms|18Jkm|3r}^Hb1_gRb}JL4{$1UIUym6 zvMnuaqfj z$p&u{MX=6kkp(gmctqqh3jtc^A&ASI+ju}EBc&J< zQ=}iOHO7R}iABs3Ef0=GIT5#dP%AQTXOC^4_Sj}r9#MJ5IBJ#w<{RoN&??x(uANOG zoaTesGYu|{&=?0f z-JjFxS$rV5CUScE#uZQGByQPk`bM4_A(5h&s4-H-!813ib)w3HBJwt(8_37oWfwTf z$Nfi^QQ<_pYpyQ8#EELH^yP9M3P2 zZWk8954(F@S#vI^v0uXK5s)NEDl6xJ=IE@u3H(KI@#b<7(dkrcqbu)9roD>YU;$J3 zY1mbKmG=p;*rbrFS!4Yr)^KVIr=VOFHq?tj{e!LIozwW z0$iaACHpc^B4+th0H<(iI7%9Q2bJ-^=1Fj~8V!m7K}I!}YBgqY7R9;K^{M{-_wVoL zXhIs*&fdSjAO9l@Y@K5K=<)cer@JPTH49M|p{SWoE9P|8bo(@g#}U|RI$AQHQ%@|k zL_rfYRO7cwYu5P48FQ4DqQ;+?%{jE*gL%f0L(pWyh?-d3ujDK=1*a>j^&IH+lHS## zSaklxIx<1PpO@x;*dfFk!2n9;A({z_p-dbdV|u}^G>`ZE7(IDILVhi(yoZPr98nGN zm5D5HSeqp=IC9o-tj%h=ujuPgf!=kL4c-UoJ_>p43#a=_(uhR5W~*Rp=~ zhN2$2aMJX~^iXK9$9wd^k(sT2zq@?hxv8OwVh=<QwO@DR!jc77Q#vb&8z5)!CPM(ijYts(EJ6l|7+GNAr}=490jHnJl+r}R?A46dWMRMh zRn}r+-lXMUQ_6ED+O9*+hplMYXEy}wa4zN~;-sSa>kpy@w18zHA=_~_n9TYQeTcc3 zQuth)B!2uAWX`H`I2sg{j2*;JG#1rYa({k_6RXGw@$?)yV&gb=hIoSsH9E(#knS~^8BRlL)f|{9XdJ3lWP?@K_hPS785t3lQCC+V zo@EB5N@iH$^L82{Ay_E?yb#~^L4{+RUeUfwsFjli11du{A!k7J zf_CSJ$@PX){1qWXMn3T0NrrpVN$MiTDShk=f<90scx({Qh5+d;tT5T77&IE&DCQ%8 z*9-@OY-X4SfpL-R<&=eKGITJ1X~xYouv|2zED;79C73o+|5d0uACP;J0Q3u3^phg( zV#Wb*HO9lVJR-tPQ#>vZ>79-z2{J_m@^zzYLIPE3epKpDlKJ5w=U_sObg|qi9!&li zS?^)xk10a{{7ev%htezt#0N=O&5uZ){p8qoZDreQ;H#?^$c1H1FRq*8v;W3-Ui7%- zx0MCd{3b@w;$s_L&31# zOzXr1^81P-n-)p>Eb(J+iN=#Z*vVbJrBJ%fnW9k53LSo@1jMJ38mP*~{Gp z1s&d1gD-4({AgE!$v+eb9o{(8*i;ZNC};_ftlZ4*K3ZK}7}?a>)x7n|)yD3I`zPmy zM(S(K4a_lw`uEg$4gRWyU$fB-Z5$DWF+V{Y{d%VvBotq@q#K)>Uh2^!i;kq2o?9^fgbE$Ve5}EH! z_8%B_SFMf#ong$Eb|3I%_pGmmv6fcWHRdp;qJsalHa}#03d9l`$zG*%Bv8T)MK!a$ z-9&>ynnR9@c;k&Iecd(+{!Wi^{BJHM(KpqT>%1!8EQM7}^qmF?p4}NugdDzDD94j9 z8}NtT`<++Ndy<(8H$s3P;@|s^{4)oVOr0hw0^Oe@G5#S^p-_3!3Md3&rA7m&7Fk)T z9;aJ$`O;UCb5_pj>4@UR_xqNh?d9HuE>l_NTV!t%Yi7~YRc6lPQ0-t?mje7K9^lM@#fH?6hpwy|GRPz0zA^rR zu}L8rE8ZXGxYPWh)Q?wP85%mx@lqH4C;SY3M%_<O`at(I(2s96XodKpHB z)yn^o3Cfw4(B-UHB7j*+ z8yvHt^&~=+N(vM;qiZlO_%Zy$51=J=4EGcnn?#p!_}p?nRM?i?2}j6h!doy$NyB1! zGL^a%$!v@0D^p@D3n_*`0_H@TrldR@mFiZBmk@3eMNJ{R`O7V{ry!}Q8Cpg!le(M= z03<;IClz^6)>^63sI?**JRk$ULUKSWiTs?t{$`daBP5fDST9A6dmGhUa$5J3bc}u{ zaU&LuD@r)*{!i6Bn0&D2Q=qKSXb&~O%$ZRC3HEbFUSdns#QotDpbKxwG4PefF`uhROSM>f`#oFp31tk+ORsaX4ylF( zl`JoTHbUXi{S0DG#W?&@Qb~@~8bZRSApryH`h%p<;}Y>Q#V^b-%)`t*B#Lr@o4kmJ z)AHK0A+7dOSUMyC@Lc|YK1C1|1=W0_9w)2##POM0O$E|RHCMLA|m&*kj2D97} zY^R~llv-~gYb(M!9f`^|kqmHtpCjZzeiMXdW7#3TEk07)YA&!_Y<%}!ci{I)r)% ztlPt%IW?rA!pra!b>(0m@Cp*Fs+ylWCrmWQ5t`WCoat1G96Jap#_kc~=yJA&IXMTJ zWN4&#JoFdi0o4l?c%aMwB|Ly1X57CG6pwr`vk@fwLk?iHAWNwc<`NUk1`EMm6m!%} zYI`a0cql(VV8+~}Uno%KZL$}i&%uldssXd7ayTNc-BVca>&LqP2I3zTao4bJm(x{d zDl=JGFoo2G>O!q-C>RTNCOQ)XY$6_ox><6KjsP{@M&bq~%FNvE`kKbkebXV9L5N{P z)B8r7Ji*IaH+RbTBNT`R@IU^`vXNImg@4*GmH&Cg&9qFXr2-lXY*rY84HC^}EUWr; zn{`h>{DQLJh$<|cYEKX?4#i){nUo29NNLtk@&@*xI4!>?mdu4Ja`3iXZZdO# z8(_gLzo(RIE{$^})$Onbg%|UjvZGF42s|i*py(*49i0IXM2pvkv^uUZm6Y`>fI%() zLDBwVtvWPKRx_y)@=5 z*H;)q!SU)khuf|%FQ_OF*7|BnOCB!m4_cfh4y&=S(9pe9+SgR>MZPwlFKYw)QCV4i zxZXGTtu>Xd67zOPnZI$LrORDtoA*?AR99A&``3dc@c2!~fL# z9jtYvzKW(UlJF;@LN;Cy6ftG^dz_XU6Ig;d;)W8M0!uJQZ1`6se@d*ACXA{ zadLI4GNGoY$rv0&G|U7-tObAS7_7=3WOO@WY3@e}@EmGGesUk`vGAKh@OqQ-`^r`S!sf_=;YhFj^d@ zomRYfBK+nYE2uITyt&%yupn#E&LXRo|3RI%&lqFvu2TI5eL-odzT|*SUu`%1t+nVp z{(Di6)nV-}vg#|l;@fxpZ0EK_!mw0aQ2w`FTelrNx?_91i$5}E!sB)ObdkkU^bVt8 z9G)6>?ki?0ip^hyo8QB4W!CtnP35T2bf(CHEJfcbEH#;m8X7DHmnB91{N+OY*q5xp zS{fI;kJ$J+bu+r%y1lvwbx(s894T@g%ABUA@B~{1j`oF6EWC3Jh(?9Eb}X9#{LG~$Pm4aYmE zdiT-sQOxM-`;U)~!__&T?^1=;Uh2{_g=@Gie$ScG`ue-L9e3QZgS(19nD0#$n5zoL zoMNBsG&wBBp8?Zwf0UP_H-^01>;`+a-gclwUs_s#yQS1+XFE+Fw-$Bd&gg-k;;uo# z-p}p5bN7x!cXwjP?tk08(AC90U}4bzBkfDz+p4a-b>EZpY+05pYqKoNwk%8XzDSnj z*s&ZZwiU-qoYl_eB#vwoXLAB1YzYtogg|JTfS{B@2?I?FEu;%{$-s~C7}=Vch8P-E;4IdQXdE(}^R!Mep5v?z!8!=brOF`8rcU3Hs6S>H5N3 zw=gP%>TA!vc&@gtuJ&Bd-aH$VH)-yMBvz_bcR}q8Zo|Eh`<%`MH3e=CUk`5F-;i%n z|cpSLy?P!fX`VV&Jw^*8mSq)x|Cs* z==5}C`r`DXC4uoHhc;FguH1V|u2HXpQKAGbSsys32mspy$5YJzis5f9IJy z*V}5wA(V4E7SJ*Fln_%eEqUU;kYXgu+?PLg>hWWJD~~;KYFj?~5F|)`MzWt_JOhV2 z^4Fbs;>7y=@ZkZ7Vhhk0qEQTFr%BOEW%x5^%nQlL0AL>C4}hY=FML$OQLeMPmCD-7!3zVALI6q^yDu0d&1{7lw7DBU+Jr(rL`h+yXf zkHubL9BlyyDcB;1`tt-sKWFc=)P*hYUi?=_jl*75%0ft@B?0C1wc9M=I=Fui+5R>; z7@J8=tQXO%tIsYG%R=+1Swv1&a7{CTW79l&ni(sLsy!%jdcoX3sq%-+ty9(f*B=(j zdlRMu{6;J~2Gf9uC0Qp@Za1Ua4xA2udw+?&$hI=~ca{!3r@VU+-P=F8D>^llD=UYd z>|}`LplJZvDKv{Ineo!HBZXEm$xo`*eR(-hCfCuhScU@22luSaEgz=k6!1y(7GRIvFit!HCItU`#^GiKt=!qS*|+`Vn8}} zEs3Kt23mN4j1g_H;8)O1lV8uI$-=~5%`IDd5X&wh*ctq#>G!p=aAvcJTAx!{*GG-W zKqa5DkDX6xC!1r=B;kTij=1ZvCopMR(60c|ppSz{Xkb7?jen@-FALqFv<)`|`Wr&E z*(sweaRDH5A(|RNY?E)W(c63&-%ed8sZ)3^ZG)3dMT3*_99^YLK>oa-JDdR=dN>1a zL;7It#?NGoH|Qug2|E>wmF&fxSCqf}XHYk@YrFw0mM zlFbl_wp>D+S%iKNh6|jkh~U7!Lis2-&BX!Skak4HB4{&$L_|gii8deIflS}1O&pHJ zqUdtcr+~^g#11fBqG3kSSc;}Oi;N=crxg22L25HwY968YWJxkJ+01dvO|1i~DSV{c zDIoRZ#|dP(*zm-`7KRxykRxGfN?U|9O`?6U3xHPW;6f|KNvj9y2Fn!yw+pR}woBaV z=zw!Z9A5Ytap=KAy3B4*lFqV@F!GPQ-f+Tr=D-<3;DE4no^AA}BMuxF>Ia}tm*)~s zmxN=93ybRm5M?d14HZwsfjEaa6(IPg6nizD<;@&WbE<8QcbP!7)5_Umtpvmx8?cU9c!lJ zL9*S!06Sm1yF}YKKRZVTh{T(8AB5@^v$nf*X#$b`ae73BO zZ&CCa(@Kk%cytQO-uBYRU{Wio$qM6R3RK{z?_r(oO`kf=otPczz}GSzs~qD;7ZU2tc5h#Q3#1 zU4mRrbcVGk%n;ulqP91?T0(-BmOztOLP2Hm+JOg8ys%y6=?|A^H5&b=`v=*m!9YwP zN|&{i`kUL8#nCIzK0eexaPwryW-{dGZoT{7%Y_pgcRo+-CNw#Wl2u7|4t7Nei32TC zpw5!5s)7c*gRLtP=8W!QsmZ>TK+`2{8Xf#aVw2I(yJD;FK=(@5GmrgxX(#JzX$;qu ziZphwO`~f)F}-hD8E$XcxGd7Y^Tb{EUQ#h^E=Q_CiX&mdR97mRG38yEI1R*_gyq1a z)8lpH<+K&AaZ|SK#G7v6p$yOlIJ;q=C!pUKcB7wHEYWh(~%sg)k)&MeZqtEDLwj@r005+X29*+M{`IoqeJ0QGzfU&*~)0F@NyQ|`f;1A zAx{gOa26A14Ys&bHYqDO2!9yzWG&{&#=4oYH^*k`_^!~5!7vkIeoqc0et@{mxDWrn zy>@17oM}V0T_sZld}SIFC_LEJnV2G-aaXTO(F0C%JA7v#~1lH>i z0QCGU<|F#^KdY=JZ+FD$hkv}wq~|O?=@NfH6G`qnWgX+I7k^B1zt1Sb(EB( zw%T2rU#?slJG0yE-hC#vR9UL8byt7Fhw3tmS6x)&ISQpa>ZvKJHY1jnFqQA+BpNwU z&}J{C*&lE(s+52BNB#4ZP`z*g>*nU>Eu3#|!NLjS>1t&$mbUVV78o1~t;oxHk#!Ew z1$VHkr}-bnzB`Q?@sxkBHda72u9eaYD8w8@RJXA_kz?ph!bvEBtDbyp75GU zZ4`ms1P4?-Qq#>?F@!3v5%xKKUSA)V&*A@3O+i84t~@>5$r=lksV{fkTel|wc5L9^R|EAwt3HnRfF4e>WWJXm{pNs8=#(MX$hnHywqm!Cujo} z{S^MWKxhQa6WzD9hk9CD8gSL*6xNsNa8e|}s)5Cpt z)z;^uT!Y!8YHIDgT3{+jYa&N+!^mhN$*! zE3S!BI5FaW%ib7?c=c{-k%wlTRM1sa+D0JrLoaj-c=N zMm$qfgLbc>BUJ>`CN0p-jjo=H|uIT)jw1%u4 zf)Ch1;?KvYeb_zkuLfBg-`VGb3)QJi=Rf3d-q9WDHQ_$#@79aawG zGw|}EME%4g8SQPiuSd?k)?QL?ow%>ic5mUKh>*%Jf_Z3;K zMJs0I7x*XfAs4Btv1p8WKN?GHi9{NYAKzZ#YQlwC0ngsIb<^lpcw4%NNDrYO&}tLf z7L>^C;JWWVCX`UvyQHj@E zg6u!4C@j$%D~f$TL0@Wj6k6;>%~i{;H7tYY`6Bcsw8mq<#@js}JImNTGQT-J*%dDb z)VXZdM9GLdoS$G^lp=><_Cm^(ZX)ys^?h0sjUr>y)av@Ezt5jd$#5x7U7vjX18BU# zx3OjRCzXD`dlns${DSO?9EBEqV324zNR(8d?gl_g0*8!G3A%?4acB$Ol4s*_wDcdp zYqP9eX)XGmyP`d?tmB3v_7yCRtZQrkS>j>lP~u_KhZh0G7N@6`e-)h`=?K`ZEE}p% zj%f_>Tm<`bAw&^4%FzvcIP<&ZY+*(#Ya4w1$5urfhj$D&f~QcD4a|=#P3Bd{`f)jr zGz~X44ma@+FbAWw^wGp8l6n?s>rTaTY6lK6YNeJPvI^}w4AI;}NW^O;K|wkEPz#X^ z#ZJMTjx+}X&4u!2E;RDOrizNDNCXY1-AI3dwMUxoe(-L5OV;QckKeuBv9Q!a9io&xNq%0@(g1&qV!mgXQ;EZKbk}|k&f$X-KN^eUKlF>}oRlWWIr+ph zi+HF|8%LZNfvhl4IBJqS>k==(aY~+3%op?d0CFJe1LH?{+G0}e-o{Osm`Kk<=;yh@Til0o+S}DOR=o!5v16pw`ImjYNftJJA7Hn;f$UEpt`aZBZ#PdZb6Gn}Uhl4>C zsZ=@;AayGKuN33RVMaPGk1=SJZ{{!@`=*Kjv;Ch}m1-@Q_&ZLkR=)awh^FnyqK7IUlExSsKh=h74&uxYDz++iE5zt&R8lv} zFWhw1Mx}n0`~rdDhKES~7E{Uv>uKpkLU<^31%fMTjHs@FJ!pcaLJv%?01Xj?C^XVJ zvsGWCo7Oq1_0zh+!6@1Y~D7TJe#4v zBz3%%WS-?3kd7^7!c4$#B8~w>eJXeZ;1MC#+y2Be53I@Sy#2}Zcdv{#HmqIu!^!C2 z@EVTu2VUMiIUdE2wE0b2PoIB$Pfhu*vumffZ|&@=F0ps_d}sI6<}HWw^UEvby5(Zf zB%oAml+oLEPcH4CfMCkvj-`{kZzC98(puCcw6iKjtD=X*>7BQYAq#0J4Y zlIhxFRq04rF@OUoMTlO2(G6UtwI}pFji&Ip){X^%eC_eVs>I!zyu#yo_M&`U9=_Bt zr!-ZC#|!h!@U2Pg%frV!U4D@r|C%>n6GB(U6NBSV_`f4gAvE5z=_^SKzu90jNxz!r7L(cGlVaHN{Ra;kI+s^hFYiQ$d^EBr(OoKK^f~cN9l{jK z2yOU5oYR0bHnb7mLo6v#BAx+G;Xas_9h8Ie*)GzP)O2(dB(eR9I_lIkY{wT6S} zsz9&IZ^I!(%egKuxg`Ir1T@qq5#@t+`1s?F?_P&R=vCLw8Ff?}{QibcCKB4Noj$}xd2jSIIki8n?e zEDC()X=gOpG2mB%ndrQ2%qO-h(Mwwz3&i$CrNPi*dFB;tOpOcm1S~yV5akO$%@umX@Mw?^t zv??6_#4dNm&Pct#$7YXAE&(n{d#W2nq^<>W<;3Q6ot(iSIUHXgd(w=^wyEGB@_XVB z1v|uPNE%oQ4SDg>VwTDmR4f5SH**S|ksFo7a1UXUX<3P%sh>!(uJklXC~9XQPBfa) z^n@{Km*?2>Iq)J(CV!RaL8WKnDaJ$q*EltTC1IkTsy zHy=F=^dG%pvaLhfit1>ayy0jp1-oJZw_w1Tr}SF=L`xkM{mKP!MHfuHsT4FIbQKpQ z+&3*n(5;J}6}m0pn7<-oIbJwzaL&X6p!#PCQ-L zAko=S_q0N!k?@+@(q`a^aaK(8oWxtlFXu2%Q!O(1aFVa{)LkI0?ubC|4P~i2vIv1J zAUJePUU$*dwn6Akx6xxmURWp0iGnPcoy-w~u2j?(LavD2D$puR3)C){ZoHy|G>KQZ zHJN4N!+d3-jS*pvXf9i$z8i9A1}qCQt#NbM9%c0%4(#QleMgeNRQ24SfRRvJYL3m zR1iEuDG!L*=@L{^YNDA50oEBZ(yEi?hzk_SR^%&?`9O^RTh1{gDy z!h8hZG28%sJ~Za@#qgXZ4-m+nc|Gx6=u<1sHN%`s+*((vePEe9$5s;J;Y?ZMdP$>bafq;?5F?*xb zqa{wv{0N96c*D?4!C(r1F8PxB7kPf(`EyKXQAVz@7_b4{U9Ok0n7L>ZG=Nu0G^U*e z!lhaC$Rx}m!bV*ffn5#s5188mUJrqlhj=#l4~!+z=eOA2_I(o}>s-ng*a`MQ5 zHA6j#FIoCa++|93tp6VGP~)DB_q={~f;0QAbhDS2Gs}<`MTS4zEBhE@4iGx(B zPy4k*EH0ristNnP1n4rvWt7-$0KYeH$ee=Y?LFUn_&*vOErFZ3cth>R-P;+bcQWJBE^s&RH(s&AX?m}sURo>#$1}xj8 zt@bfu=LU8INfTubj~v20d9BE&9Qf;3*(>y28II;LViTATF%^g%TguzunRZ8N3a>yf z@R4M?eX_DGRfYteA_vQSkJk+zszH1fEJGHe3^2m}H0TE)N&)jf`?<2bi#eK)6ncHm z?JA~`wG<@sa^KdKFcm20TX`zo?{i&|*$Ddl?{%uYZ{?s0rbPF4ZeF6m!ZtFh+jI2# zj})4mi+N?-e$_O7P?0PX&|)OxsseTsICUce`vfbA5!H$GXmJ#NSfMtZtgio*BgeAp ziTd(AD@@g=XBJ5{^Llyx6RRw_C7-IVK8c6&gQu%aD_&T1NkmLTJ3*|0krc4M<;^7* zakzn5YhGG>S8_Rp^s&2{;^P{9EIb+mFI z@l_!pq?E4_%Xt;B!$+dTnB`fka#3o&QT`@=FS<%m6G>xW;+_f*!%#v;LQw!H69W@s!G$uP{9w0g{zwkuH= zv@}VCmK#tTuAHUw5-YdsHo@*`dX1@|hvYJ;z>`25o)zbyBcxW_ETw_D1nplY57Rd9 zCHh9(>JjHMWF5$z5apLJ0d#!C`an70zw4HD`5~!6N}b?UA3x)xI6UAMJnA*nk9UHm zC!;gGi`SbJ1Jg&;m%dcmEV!2H=ILlXHOwi?iI*`AJ*7I6`#+24~FA4Kl0OC>2Gn28`jYt&| zH@>ek$t_c>d_KRqI9hDMQm+bM_$>Is?Du_7*nOOL=9{wHOE)?SbKBc<3mqFvQ?591 z_g*RswEq@G$2{#H85dU+p+m@o1ll3y7Ai+(7YXCq_zHiR(yeK`UMa+O_MA{B&iQ2v zF68Y*Wr)MG`sx?&4VV-Ek;(M76Sh5%EMNY}9vk}aO6$yX>$AvE|I>SJxB0&N%)8IY z@&+E3&nr_HWO>gcOC>X&PgcD4Eh%47A9alEgey=fN&&KV5?Ck|6gy>BdC|SLI_Y`! z300Yc|A-d+HOb3?o4t>p(^1 zD&U6!0va2sNFc*tr@MYG(j4#r{<(Ya{khrUyZgjUkIu^1QxdA$*?lw{)$}hpAY_CMz_ix#2KsHDzzuzHgIl32oGhb4z=f7`1AZM z|J{5GbBg7E#zOS(`&ByKwOM*x#oUY@Nj!)YGR(t#(egVj-H?G}4PIP4&XAez6DO1VA_HUvpOQmHs_Ci8^$YO6IXwmB<_sZKC<}e}^Rpi$ zP~8XVNiwg+rV}Uk#-^ED#I$RaTQLWUVVq3!#gMRtV*F+P@<=KE_r=494juj?obh`E zlcfRvG74`@-X~9-NX1E~c~lZygkX8QQ`};2Z@Wye6x;1rm`K`gx%|F~S8f?w4uU)f# zDheLwiEh-GA8y~W?S~`loBh7#4I@9?wqwe$Vjl zAp2nQF8Q55EMRO4=~7*FD6L6b@obqTGiG$Q&4mBmxO!k<^^I`WhW<2v{-)U__`#u@ z;K7@Q@GDCq^H7x9w;kEaDhpPYy?ZaAN}jCU8x;#`rIh~df|ZavqwL0v9*<;k%b3v* zGx~F8pXbkz3_tzhinQ*`-;vqp(F`SBkw#xB)J>LAPKIt4N}5V$AM#{z0VsVspqHKdu zvhEi}Zsw@8=3|uLpE3t236xLjyDDP)9dH?(0b|Ap!kmhty6!B^lsPrWpO3;18Fic1 zU#qE)KL@*7t`p#*)@vJrMI&WPG{+-;V6mAAkkzZ7O)vKS;0Gz%_J*D z0^itWHW%6M+dMkD`952b+1yoq@`;l_$=WTF@;Lfb&*n`dn@?ErzZ08BHf`=%-rvvr zvyiIIz>cQ$+DWwO74y)nvWD=;qRuh`X6@J6%fKK0+ShF3H;q4;tt{sBIEYz`^x)UN z))Ef$r?QQenL!e1eMFQI5xFTBSxg+#3--jF3{kOIbBQ}yDJs_M`P-*^_0{@Wy*}bX z_v&hV{N-NMnHYLFGOKLm-__UX_}eRc_4t8meeX27SN}TyMlTBUu7@KLQ5J{%IO5Gi za5nYG+KKSeD>Gv^&Q^s#%pCuctL1ddG+HyANrD~~^OqwZ_VPc*M6mzLzch^>b)hwt znZ)S%cPb+v^u7bcq{d{a$Y#M~4MD65&g(L`X`COq9`Tm~=p;m)NXP$3d;)gjA=VFn zo;Z=F=zD047SBAm$S#B58iMEsxa?G?ogSv;uo(9R0u9Bo`Yk2?Of$!1_+l}c9-Z2m zR1k?Zo25wzw`@#~T94P{z98}kywI%mD68qo&2>t)9jJP&ijbR2Xy1@j`7)I>~i_@%& z#hodeMbK3t`$~gd)!o&vZ9VkZg~txHYWur-Frk&v4MWQ>FCW^Fr6kO=l%RgIf&b6I zx#ym`b@}pJpL*_G02LU_{EQ3b@*lXemP(-ie)eTWuA+#@gy0y(f&Fv{BDPz>SCeAL zws^c?m#%>bhlu$67FD11~;(u&V0d(=QGr&vHXI-4Lc5b7y}?sc z^{!<18^}Xr`{}Bs_AnH5o6N{B@9m;QR39Pa+Qxds}$W+v0J7U#5ri zsLcj{pvCWVAn~B|a*;sm9j;(QWM!p=;mV2|OK<8dH!00_XM=C%$ktG!*}x)qajjY3 zvT1mdogCiOqB9zb3N871gjkj4k@ekcs)~!NhP&6_(A_`P-+cr6f0aG9Vm+f|Sgl%J zpl>O$YSc=tnp>Bv$0Mj%F`C*XbY^4%DR@N4XwUj z-$!eQfw5+=oY#BnzmYT{b4jnAwO-G@gMa zgPGOb;V*;rA*jABMEZKVx4_9IlZ1P+kth$STCKec8^z`|m8} zR2qh1nH*Jtu2Nf8+uG_bW_PvgwaP*hLZ(8*YW3~A>N-0=x1rAAVL}M$jeAo~;L z0I}mBYfofVaYirx?`BC5Lze+oL(J$jD*Vy1_ugCfBUCsB;P0_0%kh@4@>kECLE5ic zm=zQO5nY~}6ZYhUbS2NkWXe`Ng>oUQH{_i+k7@UgKFiv*mcAW-%#xdWQ%-oy=Nk*> zFz4m@((?SC%o(r~Sfh~R(33Hkv^W_7elv$#i5d4dOh9Hpr+uIzJ^{+&g1PREJEA)_ zcC%|ULpi+!YT{l{7&DErCH0!eAJ^0`i3xo8y%2lKkJnb6^HC&8`_c-40}Zy93wc8b zQ|ZNX`n+Uj5&Dyqqy5*RJen!*_h&Cma!qrE#F3)bc4l8nc%?8Np^!XCjoBGs*J2rv zn*2gMzB(~FT%wzO1>z%9%{=45Pelc102;YWtWU_#O8iZlAxBr1JY50m?d>$QcsO}1 zPEee@5|tAW1t>PNgBcYhqBucL9f-zKNr_=;L`1xdilKC33d!ytH!601arYkJ|XvoF(0XiG4lfR zJd5x9{*orJ-OA)D(J>9z%J7#^H`AGK@)A6GtrCfI$gQ*?Dnmjx1F-vjOM$xjBeX8h#LYw z^UlS=9ot5?++{Y}?5DPE-n#v)vs|ZZm+Y&H6%I0Pgsz)S3h?}Yy*z)WzwJM^YSpnA ze6gyF^AnKxw(u1GO0Kg9g_!6*D~Y-w!a?Cq)gs}t7#on<1ZHNKAT0QLqND3)@@Ld4 z?Ra~2ln;k%tXAml>x%pQ#j#kizpuDhInY@D^v;VKv%30Rb$jd^BSS5nUA<&j;oq{M zmX+|}NBB z=#tm&AecE2wDC%Gj`|R1eMcpH$UCSG-r{E$cn=sQejs=yfmgyu7!hIhLqn}D@ZO2U z1?GKB=KF~YY40hM?@7M-vXPKWNrk8(=lGdqd`cnUa4aRsMer;6NtRor<0FEru2JY{ z35*7>O2{4n$iMd?`-(7g*8!XZZ}{M-l&_e^A8{H~GNEaZ5Et@fz8d-LXCv>XB=tt* z>8B&_9!=xRKsr63B9JA-y#B!l2{}O@esEhlJp<|VAQH)sl_&GVci-)O`suiwo_F8H z6!E_kQ3L7w!33z3UBrr=S??1h!R)9f(on#OKAgm5h{eQ7G;QRi z55aHrDf~@PALgMc9jTSY*^}ixG3~&Fxk6SK&=yeP=4Hj7Mdv4jZw2cd;jv^PQexqO z{vo*!>gG}`mu1m5(28G6=;9=WxtG|_B)!Bgr^JD!X%>p{yi!vI)M^rVR&*znC#`1U z*WQ9^6kG@8nSg`SF7#~Dmr>H!i1s)wVFqVI7B>bb5&cNi5b&jpHmu*j6rCYbT%wyC zu++=XM49)O?%z;P z<+NboLf{u~@!^7%ibm-b@EAfT8k*Xc9^AIs9|-t2Z+ja~mbF`o(7V?!^f^OU@y)oL zPiZWBRQN!BRiMyV~>%j zlz^|Bf@u&8xy_s$gj8AF)VO}bkEf!8Lj&5p)+Jj}e^fHzR31xQ*t26>=Q3}ZBeL?J zrf=A^IrRFezn58TDrNam1dObChExF%5eYD1DZQB*8gl`f=J@kp7~Y|5tREV_w03oq zkCjKu?3NknWF=Vj%&p_~Pj1nTty$gB%r?{wt{y{bStw1J{+#k}1ujnkvB*v$jx->$ zkU}8}R$&E!7q+D20Y&-EMnVfy%4>ROKK@G)_VY1`R# z>&|X79eNdTDP9%YFU`|Q_D~4glMrIvAjGp=h>Wb!C$mvhjGy3Vh1l8_9*Yg^I8Q#Y?3JO z`b*i67Y{rgxE>M5dV`ooFA6iI3@!j07~Vqj&YQ^Fe)jqPq1Kzm0{oR;_E)`IR(drP z+F8D@WXrxi>+!f%uMzT`T6=P}+BIabM0U5YMz-E-6}{-Dm7RTu{OHx@u+b5Tw#M6& zbK)N539?(`A>KIiQiiMzNJXe?L_r}Yl6MhgCO&(txfk)2*g<9Q-Z5jpWAnlkGdqrP zz272K4;c#Mp>@Wfe-%)_au-lf*SPoKb(WK~Kn6E{i;itzLnM409^HdJYnWj_vt(CT zTeq>*m9ysIFMjdiH94-f+a`R(JaBA*~H*um&mY)R&5wdfemRnfpCa}5RCkp*XrvT3LU$Y(!M;WjWJ zW|RSnZkTC6NlKC1u;;~H+UUg@qgSGpZEDW1tHtEJ~3 z$oagy!Y<#4ugg%Cx79z~P|(pA-s3`d`S>F$6?*jAmx_w3svM5VBNy3os(MZwKXv?XC`zIMk37XiMa4KF=4k() z`sHg85oeA>4j@rn@CVR7m`;8KeI7nOdf-Qt#c;$6+0Ub2@FPCBP$*JxbVbZMg%A(M zhL6>dGD~ANiIJ2@@V40~S=7Fg^f;cOXRu~h$Z71vy=O$ROCiST2EZ$?3mg{6t{RD9 z3j2U5zv9YpQOTg4eua_W=%Rs4Vf!7;b1oR{R>zu#^zGH{b*-&+_@EzZiplO{(LG8p zqxh8kDnb)E5+5W_(XW%IFbm)b0}{*C5A7Jz=R(@TJ)8zP!^gVTL^s`&M|G)3g+h*j z(5@H;pG?3WfaVq!6OV(mtqMV(t!I-1aIB{vqG2W;Gsb+Ap>&Td?x=3f1qA%(F-B&1TbMq;WwpC%`IMhnowT z>0$l>si%Qrk^_6PZe^d$+yi*p+r449%~s&|8odUc(Pk}Z47s!2%epTd&DNs7PMz>0lymV#p7{iG#*cM z11u#oN`NUTOy!v*m^D8mKw2jblla4c_6R2=UY2Iwyj>KBO~_x2L@ClBMx#upV{Q(O z#bR@ELh$7rmesS8LWz;cN%76gVmpCgdnDwAh^-=aCTL6Lwi8Tl>~8AMcy|nxbLjz> zd{O!`KSSwj=CRn2l!Ev}{4O~fic@a2!JjAkK#78Ek)~%L<0KiWI4HIA^aeJ2 z!LzpVjj0UCju~=!em>BCx$I;0%k11)bSF&X+M@f~SQ;x++D|A;`=NZJYf1{U=ywK4 zSX?TTQQY;EYDHB?qdqEF#Q_~18B?#*_L$zp6cK?*Z_>+7Gum1EJnhU0b5<=9XF6h9 z>l9`)VLAj(r<)7Cfs8;*oD$}X9_9a-dY!E$hB0A;KuoA~nmR9;6iesB=2;{&vxE2i z)AhNUz15zXkGZLBcg@FXyX+!4zSzdRe4(0H{7jO)dgN`qHcJ}^Tc8kiU^V0QZZPD9 zDCFMMVG5>ZI?=f^E`8yrn7X z9|FA*omHKgmY8q)e3e~mR(I%k=^C0!$qt||`@HU}?(-E`f*zaMpsTWp6YFBy;`~g> zK6<{L$(?!T`Rq*kU$j4Ve$Fkn0aj<>=*O7zv$HvgiSn|-qG$k=E<~W}Ln3aHm#*a9 zRx?>cxx5Xi5d}ivKj62PA~fIq_q@vP6EA#ygYBV--8Yj0w)nox6x7t%y`09U;kH4>>~kjPTstG;vq}=W8{?oDC=!;{S4(RQqq-O5jsma=z@A$N<4g5N~9emoWleeFTz z{elfhn6auci!5dnSBjg1i|p^wEeP2930i}=qv2s6ec5^BkwH`G=G!||waaQcPH*H# z_H4z}sQkXs%|F}mXyw3412=g08m?&_`%3S4Res0qn@dflWt&&Ge(tm5ftF2Me!6W- zXo=c-_g1~VypmgU_h4>FY?C5A-5-Y{AFO26Tp+Fc`9BV+sCnsFX~Wdvnp7jV#g`!A z?z?e+yP=j%)ix$=iv~!vcG}M}+99)~zs>*2_;-7Adb;-?yoa=w&hYd;WqW@ zBq#(SVt>Vfp2C)UzCKZP-@571kw7Rn^29?ERkr%6*Uy>pBT>1$4LFr{Vn>BD#?;VA zk5UxDcFbwvCrT)~8XUjp!MmH&;smOEA%1r7)XOiOsXg?Y=a$*W53y@|?;Z~_L7ysZ zgl<00zrN*}Lv@wY!}ev*{pL{1YqSm^`X|9XEQWm*HE5e!JZ#1ZGb%Wxr5u#S)cGmV zO^;|S#ebN2c9Cgk3uK@yrl^OBLLq9w5qeDOcbQ9K+D0)YXU54KC6qZwkNmB|^(9KE z{C_gtXBUy~Zv;Tcf1^i!TDX2z4%jFVObz-07ZD=80s>E1(Fc3gC`6iCKm|A!MB#-e z+Z5xu6tDuX{1@cxL{`=t;=Dv@W90C34MHM1|1hfHKl%iJ9_>9_ahCJ0+rMX>w_w@C zft^p0l}R^zF)wyZb#zSK245Z0?ZhCeJFeTgbBlVPFV1ZH_URpCd)eOOapn@ty@|kB zp!J46d&#Ql{hR&DApfTD8Z1|Y#PC;Cx{EH4v=sAC)>-+YX zC0hC+KxDxqK*$e;u;LO~OIbk&=ykC!kwGX_3Jyjt&XvL^r~D!wMd62E3LTG!zJ0o{ zbw@{T-Npmct6iq0gwAm_BZu}4mlh9v+Bae!Z?k_QW|MP9c5dqg#Z@d8XF}T! zPWD=ygM0RmSiivk0tMQp`>d`t2lsC*QwM4*e;(y$q+&~7g8wDh=++AO=3;n0GubLv z(-5x}$zXB@!RQ~)5)hB3e&fpKI`1m4Iai~}HRF@I=9QVZx}wT~<>I*UHACCRzOpQAx4V|KuG_Gk zmgK*L@=c{&W|VKu6J4F78@FwL*59nrboX{|+H$FXRZT6rdc8u6>#1Vm(OqL$%7QUAS+)B$@_WtF1Jq~rhq zRJAyRt2m>SOh|x+7a)i8I6Ks<%@g-cabGK@alTEkp2yN5&LDZpURig~(eA<>_qFq3 z@l08q=)Ur4i@_ycE8H>25R%PA^MimSz0U7qm^i3_rf zuf3HrWy;EyPj({B$;?S(niaBO@)&(gDuE(7F2Z}3v^SGPrz9bW9FS5}B8mT(WEV+k zFQwVq3pgIac!n3>hSU~wwPCECS+Z?gTWl`Hc=Ucl$?EapveMPfcsa`dK#|sNDzdj5 zM2tYiO2}wAGjp-FZQGVG?PCp@jfZ~%wM6;z&8thx){GC87{vCYT&-NDC~=-wWuW2~k0g3d0125=*W8uWrX0=(hKj74r`)kwUS+gg#MQz~I$pjz2VXVzt{?S=$`ZFu9D$q0cKZqdap@r&EQL zY<^c&1yfPBZJjr}4p39psB|>j4AsT?dS9iX!jx+(TQ}-ztuqy@+24M=l`FPu)b<0X zdxvgXlB3<-eB{QOMh&B69S);Dk1>^KZTgZWPK{B=76uyj)p+qDMr_YkWxGPBh=Q#S zUFrwHaStz5ERv-iaS{Y3kqCu4$}m?2fdwF5fdZU@;1Nh?XkfTnfQcs?(eN9Sn`d?u zhnsRZb&e^|w-)7C9i|%Zu7>7{ayGhEZwXlVf|t1@VEwfUwJ#Ap%9Q{B+p z8PMs2hyLNvR5TJPw%YC8z2g>-!C-mCk?$zEW9^Dlw^UV`-SyrU=7?vd#pEe-6uDPc ztGmnAb~l$fw1vi+>gZ(MfL&!Q(KWBbj}}&!Fa>!kb&1hjt74T%-yME_!)WAjV_t3b zx(zdvH%tt#_2%fR+?qA7ZCJDVu+>bVqsse=F` zaU=?p@e8k#J;= zVr4QW7Q|Q%h~XNnZ*L|b>PUESE!)VO->4qitIkZj7S&#VCaFN@3tjpIu6T9Kso1xFv;7KwLF zQjfeZ@uuYSL(`*vl^H3r^5Ph*ndwW8oUv>fK?oCBgs<~)NuSSffF9b=?C%rYe`1!1206<*Ralc8_J~A4q4pwkoxLA`pa)065CE(Xei?wUnUmE8<_nac{jXvKx)fMS$;;`gQ_!fM9`)~UJ{aw^IkXi zM2U$pybv9J@R^>z>yW|xHqgq?9Ekq?@Plir`cerJ>l0*mYj(df_)C$=Px0EhqiHr3 zc)UkP_y=UM==Ed<&z7PSeE8unQ__zfJvx`Uy*Nq}M_0u)(r1*DiUJZtE#1i7T0tNi z0QkWtKsrEk96vWaeC|8&HQv3mq`bUj=Sg}{PK>{D>xZ|#GAva>74*77#6lPB6tZd##`XYiNGt_Y ziw1Tcy>ow`xxAV`i!LTEpzm6X*d;VhT-VJTJ%$x~?>y?~2coS^i9MP2Q@HQL2xG=; z6R-qC-Vlk>+0wx1@gfC$H2G_5j<4!J{>&qLj63sJO&!?WvSioIE!qm?l?dXmb6z7RbFgCR$$O^Tm4RJ%KX~hU zgFtJ?RL9DeM*Hd(K;V6?(%{{E#{+kdHEO!{t`Mokk64VZcJv2)6JBw03C%IMez zCKy7j+;@h#@~i%{hnFk6Z+qmEhe8@J3OFP!uX2FDtI)aa)MNK;u~$t#6kE<%dAFpr zmCE%BiPHwWcLAec;iLP|nZ%!z1O3-_u_u!AF=>~jSYBo&x^(Ie_zII4<~!g^InlWOz@drCsujKG zd+5y7bG~;)RprE?1M3?TZ%X4gx-7hczr?W|x2s7!7TE=RWDdEEYS1ZLQ^^{6Y^09= z=No^u^~*=BYn~pH@o-|~@h=S|uAsXtOF#LoFHA&J`KL_EDUxlr5aozOI&ub_0K@@N z`QYQbwu*fPkKAVjYsqpfuO#K~fiyc!k`fyrKBWeT)?^fqLaI@SffbvZi^G?c^lY5S z*aX&r#F(Sm2zB@l&L;=YZKVX~$m)b;Id$Qpl?XCDWeoF&=>58D@9OT4K0;!X_WT{N z9~Kyt+s{{hao@f#R{aXM_}R5$&8!7ci}ZE6)*<<62)cg-SyxbRd6I7s+?kvq&e?#B zDHIq*KOX|T86Dj)qrLX7c4ot9ZeX+oDYtAv%97D1lO)k8999*$1=N3beEhTZjfV`8 zrjsX|B5ZzE;(~Dz3-tHOJMm~h`JG}*0uihnxI452@kn7nXBdyUDnDY+))hPQ4 zzEwz;D_7A~yn={=nIMRk686fS_^gol-zX5opLEZY4U1PJ=zC9)YRky$ooJL@`!2tg zITg*CW@GO6$&UrQp{D^i3-z}6r;zg8Wif^$0J%RR`hUK=M@xmU0%Jak{nYliKkoYU?EHpkT|URpoBdMcw7A zHnjv{g&|P9cYN%j3KreUw5@4xU(?3$_p=objg9X;nKTgk`PR+BH%eC5(Oz4(y5x=E z=B+=6bY*zkwZtNbc>M``Rem4X1_?V~aHPi>WWkFD=@{HTt$Eiq@}7L)mMs` zw}*~&bsZV%+q8*)HhKEvY!+S3+e%7HOSX;E!&{Dnk3Ij`!IIFwy!$WA*JT&ievnNm z`qGxZ!3%?ZTZDr+2CP@^!gDb3UnkATBCcrzWDfwA?rU?fO#iQHr7Az?S}l9!S`q#1 zRCd5?UF${%@4lBGpg*$VUCkaJl9^0$Ax%>@CFI!7#Ea4(WrDDBR|FgFCV-jF3EISRCiuP z=ZNgubF)8S6`&Ea>b<`i^#O(1Rn_kk3L!v}N|qnRwFrD%`&6soFS1yJz;>c(BoG{n zGy`N##eFHUqa^;!&z*TWQ#n6hMhR1t89e!z9Qioh_|eB>1vD-xZu$V(JF{ci%?UHS z6kOPWKtoJI_LBC^S~+C!vTO0YMZvx)_~ea2wFP0^W-kj#pq^%bsvJNWel88iMu@pyE{GF#fTeIN9+t zaljsq&VhxLI++(stYw6_r6dv}NV;hO8j%pN2aa=~X(pfdr6si^u@iCyAEh`bnIU9x zR1Bd=x8!im6Z9FOeXSw(#7=@3;!GVU=rtZ54E_MQU z5%8mMQB*;+iRj`8qda<2c^j7FZDch{@&jouNa2RD+>Y?-4|%P~$-c2^)UJ1Q4s<&7 zyqO8=bo_{}2EKIY-sy|{Q_Ob|w`o&xe{W4qZ$EoF@z3I~pT{Tok(c?W((`m&H_u#V z!93A8{#z(lcr0~Im$VcSWhLUU3fLmh)1)yXbIaW;?Prs5q5sZ-aaU7Kb47BL*hHBID1PGMPuoiJk)*|ziX3*ZU!ad%!wke25uKm+nHU(RA8XMP-?6y5Gl=E47 z{7A82L9e~(UeQw0w5Dm>@K8fji*MuRA8*^z)}C97qFFgW>ubBR4|5_9j~A0u_B9_Q>i_;$po!p)x=kr3Uappc^h72p&uGOImnh{F!IeNPY!=2r{DsG z>*nn_9^)VQVZ7XGLJxlnKauFe&weYXz{q^v=s6>}`>K*O(9xOnUIgIwvfLZ-5(GLd z?0>8Lte3Oek(=ezNv~H_uICDjX~Zb8$nZH#De~^$A6>tG!=KTOfBsc|v01|!v?h}FMt!Q)XR^&?l<-{X0&glPT( z68xqgPcERu6yOZ-5GrjOpsTUy92Lmf6Ny48ibph22ugpdN|*H`SpQX$oelY7E5*=} zBbrVpNQZ9e6v;F(=!de14)``7?wI162q?#j8<|s*UM4PSgnalpn+<=(0l)*+ZVG7+ zmeN&$=~@Av%1FNUOW9z^zU^QP(5D^9B`l2y(HZy9m}Fg8AumqGCPhSMR++d!BlwZE zBlCWCtILcX41SiHHCB*9L*Yd%6A{Ejs&_KymC?92Fedl~k;dr~q#QpLe9-0|kJszz zndox4-L5Y5m~b*dZpStqI*gdZhc<0FbeKPUXp3;bcX@o2;cPQ-xPocq&(!GcL zFvip(#?w#Ke@!n%`SY^b4Bgm|2amFTbd{+1crApZk~s~{(g9JK%#+%Ad9!;7sr-@$ zpb;+*a2>nSU_5#4OO%lQXq04~#Wg5OXo;aSFdij!%;J87Q-Zd|B~Ipp>g0Qm05Fdm zL$$J476ym86qnmL32EB0q-hXXnwBb-t%OdRk}en{(Jm_TX^`-VT9l>jW{_Q5xu%qZ z8iLs%Wp85?bZ_yDfGc9SLn?XUWe+o&8Er)_Yf{Z8i9MBVUj^U^jj1qFqFs5$PD>1n zmXoo7A6oD$JO{&#CEP>dRZ*^6~SBXER^UTu0Pl|nx|!M;M)AqwC)`2ecu)o2v# zZeXb)JhzU$m*{2`2t*@jt6*;^J7?afvH>rI?O@lEm5-LHZl!aft?4muEM$(faE#Lh zAsZ+>N+WoUjdY-#UV05)km~5KHacbBUTtk5DMgSpI_C&TvI;(~9=uT>jq! z-A%P_M->VqyX%WPZyVh{%otIJidE)uef&Ebq{-JELzTJ3?JJscE5c6x7lGmJqqpt+ zqKkirzg*>T*EV%45&vzKE?-@o@2s_7*2GGJt<#T?rVz&_gxA()7l1TV1WZ)C zC9*`>;-jf6$+10$U^G;RrtBn?J!%;YZ2wG=7q) zgZJU-Bw}FuXeJJ znM3Sc0Eae&Wi2G)n!qOwMt3d_8rf)AQF?dt{IPXj=FoV{iRouksvQKUb7I-B6sT6 zm9R)bS?{{jC}^U~@WlUQ++rR{qeobE%Xim>TW=BKMBn9NL5i$TdX3I&DV8J)G`Gy} zoZ9;BM^Ch2{uWW;EJJe3jj~tTP8{7{uXXY-5-INzY>Q@yZlJ@IWUQA->~Dv#@2uvq z3>gS6!lI1e+x*U+oA@bvBG4$2m9b)b0vweZ1BnZKu3e&QE@NFr;xD3P9m1Fc`)Ht% z5q8_i#7cv`kkCz5d`AeCqb#-?D@@Nma^{yEoebkJUexFitFKooxxK!NHx8-{+>RTx z1-bd?_KQXb!*q81^2{U8n#)c0e2sng_M8IM;Efl3dpV`DUe6$;6WVPqiT~*#5{D3{ z7||_azdSy$iNxBb789bdjb-QMFP-06gBKOUG*mFU9NZQtIS|<&I=0hUb3>;jZu1-4 z?JFPMG>jJ?HA1XwZE$Q)M zxGv9a*mIlFUTpMMKXvB8pSE`>ab5n}RKn!8=jIe#+Fqr<2L=4!y7kxtwjCqg)n2ym zmKtPXo(NC4!UZ|_A*RIiYh1y~j`p8Ec;=~UuMxM4+x8gTd3oIr)yb+nl`L@Nt`kXKSF^|1!`G(-+}IbU2B7gV z4O5GvDH>;P7pVGMc*7FG#c&;J`X^_44^A$`nYzh?y)%=@sQBOUW<`x5jMn=vp}ab@ObLz2rYg@NxB+{X-zr>OYmJyTED)ieERv>g5ayuAl}8^@JD zj@bpUEGPs)00c;o1VI4o1t17^Qf!b&iXthAO)Mg{>XuE(vMj5*$VG~z@ZtoQVn?wO z$99TKnw`YC%gIUpxXUFuJF;`}`Ip$aq2+}Ny0>8{#p2O`&^B#Z(m2t&alq7r++yj z67uPX51iQ95}1Cpe~wup7=dLF2GEen;|>-q$L0E1BGo43d#Qgu8_l6WK;=qF@RwmG1F z0}>Ff;D&%`_`)JpGvba>b>)Ta6YZ^bdr4E{=;qmxhxZrkDLT7#8#)z#!%m@0g?6+h zb1OwBeCXC~ThA8lDe3E--160dwdLjQ`vBm31a&x<zrcs;B%Y~o=)#3C36q&0Cvu%79dedd9+{-Z|YIb)ge==Q~XZrj_jW=+T5 z+t8WtbKy-wMMG1#tBx*(YaQyrwGTWqySV)*zWAKcc+^j>WZ<6oHhew$nNVSJ)Ede1 zx2`MPB=!SY#Tvn2CX{H<}z1%+@-ZuwOzH- zy(=QYSjzXP|eWvaZZ`YGD46$|~e4IMY;T89evGwxj#@^oA9Fm6NJlfsF*nJ8?D9LUTD< zBSR{Q)DhH>1p;tkkJJZVl~6lYQac8es2makO~QPo+SjDqn12dst2xGq{GNPsdK!~% zNaI*-cAl}MwRn2CY@oT2$>-EeI+LAVQL~|U?bQ0twzaK$dI}oMd1<;G{QSCs7Mr!J z_uD)8;n9&yT~jO4r`Tivy(9O#1?pmtzt@uK(3?E9PKUv1)1%g1o&A$cLCgBG>Jp79 ztvDlHoxP=F;BHSTau*-!op|2{dCF+C0mKDEWTz)UHkd*d&P1$wLGS?u?!^Fm&sgJ8*v9#& zuBxJUsM+h)&GG!v#<8)r@gF3pnEB$S;(>v51D-P?5p}MAfsgXw$GvBEOK)drVErWi zzTp3$a3pV+n5GRhNxnp;evKqBtoq2%(z(Tk@% z_4jTm50{sRsh6z$ljsQYgFuP!%&~+k@iM%>&?-5n=F?1=Knbf*N^w%ySDJ`$A71CHdCY!~F8`7i+dQ8NK!n_DU43W3qihywu&jif> zjq@jjD;o#={(+51cY=?jEU?K+F900fV+}=&yB9i)V z(Q2NS3ILXr=D6>PI4r3Rf=?s?vaIO4H|LA0Kx(;B%V4Pp;Bv#Z!S0l}E|=LKLEL}3 zn7a*GbJ%~3zoU0J^h|ap(=A*`GZ>jmMnf7ta!7Sc?qi4@#AEU(Z>|@ zHrA4q)=Ovm-omL-c}__9@;1tbm~iPv;(!d$;RG*F^6D-k%!KihWxt zO~YdzlYHjB{k4 zqoL0SCUzDX64kK4CSK5*L&3vo9*xkCOr?ENPAarqQIVSU$>W4ZS)=zlrr{fQl zTXUG4EJwBlnZIh+`a0~B*=Ny=DJxBLZr9Fqi=IvI-kYJ-q_G^AW-;g6K7umxvdmhI zBR9UYiM3}~O=d^ee1G3Y(@%8f>@uTHm!7t;yNldeG{f4Ym@DwDfW7Si>D?9z2tk5q zT}00^OHo$@6xKJ||I6)h0TT$8*-Gdb605T1 zGKzxXtQ%+`Tv5b}X`igJlUT#YMA3$|!9306$7gStL@{f|mTkZ8!Bsi^eqT&EIMigr!Z-zv2ixPjVBt~rn-a;=KHiCRrh{& zBFaLUj29Im!*w7i_t!@)PQN3vDgIkps6j1>h#>551rq?X3hTd5ADn~DR;2|er0KeNs)Q6XQAA_ z>EzPMP4@DI9=gvdBGFuqMk0bPg=3g(hlMzWQi94y`M2fp3rSiHu&5+^m8Np@O7sG( zXcC9QB+7|w{M24j$ex1Mo)(8a<&XFHdASgLB*{LSg8NG>lx!;v;x*Sg;tOj6KTLv{ zW1&YulaD|U;HNB3Q|;MeWknqjnN-~VU%Xh&-&XxZ=V@8Q7PrU`#My`JUetj-@Tzy$*&(Y~}?7A;Y zdeF1vxiI1Ra0D3N#Api;)dgZ}-dio;rll8q#JfTeDH5+^PUvlVM%x*GvQx|GZEWX? z+88*ZuXRq~+L&W>VN+E`3f0yw+Udhy0$yx!`_y!-A0O zALFCT?78FWFxGd$gGgge1dn*EVksFH`dwJ4H?8>#r;ZkcqrwEbAKfne z#Yu9P?9jB0R%@Ts?UK4dWSraU~4#=k6f& z?FW}O&IM=|#4Z634tRtc7|tbG`hg1xCDe)lla*h2iP6^%*VHy;uJa3T_}67N)z%FE z)Z+9W?#^u4HIOBIm<)cgNCaJifH$ye1zQK&W6_%7T8&{N-^a3j{6>QYClYg7ejI9N z1CvcL>Wm34o_HpWfQ3z#zed%gno-TGwu=#_M6vMtfbpBezkwSb7Sn2TQ$55hsv(jI zJGr1X@QidK!fj@QF%fxd@MuzvS6=QQakU;LVWPe^VzEYQmZ{6XduMvlC32cXmZqqK z+PrcNTC2}uvh^A~C0bacVJ%xBq(vAnJSzmH49{tQYAn20Sj3}*0lDfUp(+x@3T20o z)Yn(m5nr6gaU(fuOI{9xRdIFB2?+ZtJxMk1l3I!c1dBcdjPwgI zW{c}(LVs47s9MM}aV)#(@*9k28@-{1EPivwZUY zMm~6`rQTI>2TACI51iFj?hVQt6}{)r!zkmvH>jFb?YQ*-wFtiw4_Z6fW)!=;N2zco zfm>*(t`bxa;yz7!E&6rU(FfXFs!Q<~;a^k3!|&rsm@Y2{64%z}IcjJiaV#bNJEd$< z%I#Cts~QQ@*tO&aB*~xwRkNBTkav-cP?ni7RNQe-Yg4%c0)1Z-=CIy-&#A>;1D+5i zEjj)ZqIski8}L=0t@7p!+GmoXE84OLYe0-`U*Qj~v7uFq!@j;Z7txld5L zza95VSP!T2HE@~S2B23ZI4=+&FF8AEma!Y6&kB#QMUAF?5A8FNx5le)GG38BVJFWo zb46$eyGYljO`pcEu2?K0uI^;~#Bw~=I0@G@SilMqc*hZ47(b%*vWEciF%#KbMb6Uz z9d3g4UdGE$Y+BSWYBjnAy!sZ}+skb>0#0ag(!mz5x5WeXU`^G9`R6h$+Omi7vi_^% zL-ieN`pAG3OS+I8$otMz&U)aKyPl*JK?e_r;C~hfhHCIKl@n(gah?%%0C65#U48;b zR9v(v79AR5GB(}Ye^UkG36N3!*3w-^H%BfP-(_8QxF?dbkkrO&BVEUCPf;NVf4?#%M;>-uN*#%`lUTn^|X4L$in%I zjF0n$d>xE0q@E7DFPDTb|0VqHtKsJ^yZe|g_PH-V7k>5K@Lw*6OD?;^Qh%iPTc8${ zN!W}Cbs*-8=&9tC_WbG`>dpU^dRiDyPI1q#@`bOT`;{b@8uy=dU?Zv!e=ov=M zbu|q4`h2~^4c%Hb!|3t?b$ND^HOrR4v8;weuh-Npx_4}x4m33drZ?^|XDv3DbkzFn zX2jGx^6KiF%CgMq8Jso~-^{A9mdU6ywOmHJIjgLxzAmrG>_EtD_tmOoJk<57Ue(hWogxTAwS-gMfr9cLiIe&sSjjC`cAq;p zufFM1P4#)XZd1BZgQeG`W$UsGW{aoPoPijYTi6&3Zd~A424&>_)TRno*jYf$I%9GP3i1Wdp;n4G)z0oTdz151b|=w={!k zpUNNUURPFKUAC@!#FRNzlkfKxnzInHWZ5mgvTB#k$fax5daYKk)~0htovXUcXR&8l z5Xv$a`us)0l1-n%saaO5#S(KFdYi8@y~JeB%WoZX)ve9AeR{S&6sn({zCB}IP4VWo z!rYv!l5`T^pRU+bq|8Y)YLM>af$5vtSu9`#*APoMjQ;Qf&4ehq1f?TDb{$E`1I*H> zG77jDM7g~J?}Co#ukT>}^+}$9Lj%4XiM#Me0kVcJy?OWmTL%wn6sRgHmF^lcidy>W zl0uwFNc>EE_lV5ICh;?s)Vv6E7rpu>{X~~U(TP+mg|Cc8dHR71OTQAE4PfQ*t8=3h z1a1>0M+g25<{iR;jQ;^GbNoq>3H{X7V`@ht;t@+oKBLNX0iVE>z?uWYn1|E_BF+nC zWH$+k>GKev!UIkTqz~U{`Y~LjNbKq{{1%H4_-@I^+ktzEoZq04lD=r;?*|^HT)@vl3`Dw zB`jD3FXHf-_x{9b5Ga+S(Scx}pHKA5yO5W_f;8 z-#omz$G4%~>?}^JYAJJC6ut&>Jnc=fJc2?UqS!$q5uFc!TyLCYw1q0x1r=&y57PV*FQ%1}x69ma4R3r@4HMn=S3#G}J8V52px5WdN5c5pHhwCzx&w zgx0{~uBXOGaH^6a7bsMo$SFqjEJr~epKDJ~=bf&?7GI7fTiOlpjZqInc9dvT4I4bJ z&H04|&dT=5a*w~*X0I=y;q!h!NlD?~3s!S4mX1^IbAV}r6*~X{B7;t0K&bntlCQOn z|4E|F{r;+7Y-+w@V9RhrW>HVlxG zWuStm%_YY%4H7hh;shs@5d}mZD2SpAHK-jgKlc9JQyq21IX0H}N9V?dT0@Qjzt2~p z9$edbc*oL#rHyCIF}tqGzhT`5zu(u^CGB|v7J!dfspS-L9v+*R8Rt%rPK6o*xQJV_ zb?X+UhleWG9(MV@_rCkklYU32Wy9vJQ9sYxa*FFZrgp#ov6lx1&>w2bgF0PfXn5US zuFXX!4*UG;d)8L_b@rI~%tkEIj>Da6-x`p|z{~M^sWc8OchlNvw!&IqZUh5#pLFnetmpkT)3A(@uv*AdTw!?y)3-q zN7cPwoSNz1P*_m*;5WAN8~Te1^9KF*`mg?x*XKHPFZmNPRAU)nHigwF2Te*`ENxbt zKLN2^E|bT``dEcb`vYt5-D)i;Yw!BT!pxG>X6On9*3WQh9!W;e+TQ0;#&~S}2MQVg zd(w(Zy@B_K2W~ZImjt}K76X$#j}C6=lqBwS6)`P-VS`^NmPD5N>IveNUIM#b#IC(O zbS4SjK-{#!6CZO%T9;Z-r2=Eq9R-vWxkS5g8X%miGkKHS$Prfz1l6Zg^6(nK=oebuPIVMbrkYvPBJo@@xIBNgQz-nL_rcoRkfVC9Rz?bxT%M8tjq)9S^K&sl z|0*`3YL>8R1AIGj%Rqgs{o{sm!y_|~ESNj*|Ke9ZT)pYh9frZb*(^M*!01DjA2%2t z$yj*gYoEWn$+>I9&~f^y4^MiO=zNJh*HiCFanffvta-3FTMJoJiyrval~NS>J9m|r z@OL+u<{tduk+qtRgX?x~8mXw#H-;vrcJ2FmFtu2G|6NChweEGdhK$1}K6KxNe!IS{ z6{4ax*ZFUqO(7=i-e5WRs5`J;XCN^t{inFK0w+6@W1zY%?&oVqaj47!y4#Gj$8vb z`?Tcxh7fBNuk-oXq@QH#(D5hl` zsG}n#%%r%zN0T1^IZiY;YFRFg zD=PL><>dI#U_)!MFDIwUQ(T14vfWmley*=~aIm*;POq~rG&VOkE~Gdo)S4}cd$f(s z?jN^=q+~5-?;4WVmkoMOYrbRi=30-Zmb|0QSmqpqkn6D3JM;3K^)`EUZZ7WDdV>Z1 zE^#t9H#^tfNKP_(5mzzGV89xJ&S7u#6`M2l#m4N4H9BogMYge6pJ^`kH99J{hxSRFR6&0)<*YiI}#5*O4yOLOV&` zzrKs*eSy87U}Qq%bf6lwv#?qOb}5FCx%gHT;*%>@v5@b$-pK`0ukE2SmD9z2p`xl0fC3C?R_DbIRXLV_sk9-7+ zXsaJ*x=M2c<9Whw#sX?Bm#t+7?;Xq?nPE1bDxVpt;h%YiXEmlY&8Z&>|Kgw2a_I&p zQZqbPI^{=~a`C(HFZcMTG-@@=vG)($UskP@KO3(en^MV-67sJqK3Xn*PIg{a)?obq z=G{`CQCTPoe+x5?g}=oi{Q8zahAFQ#YyH@InN~=}bWCRF6jt&? z@^0(9UJT%@h$)pARlPpE4A3q|uw=g7a}?Y#kM@|Fdz$lfU87yP6T6ug zcgK$^kR_R@vAgckN9($c&f?;Ge6_Vc`(XU93>ri~P~sCRZM`tY^s0tb+f@5j8E4GZ z45=cl+%e*&o|gcz;gb;CtF=)O$6$jGt5+J)N6o9j6DUlc;GSd+SpkNY3sRTV0;Ek1 zx%VApFD=iiSO^sDW%4{u&Q$D9KdQ|{p5V5MtcucHWXnNl=z$9l3?XE;B0=vgD<~*) zqT;-cVpm5Vo0g%jZf>sDnpkZ*aj`}PsUvdG6{|Zd&FCydkJ_>wjIE@|pf~2?N&EAt z$Z1S7l~k5wWM+nDLioQfBcsG3Mq?bbm~qZInhXxHZk8?9s!dvEjJRkQChGJaHN=!} zQSrD&PXWGkJ6lM|&X2C(d~vTUvFXez+2qEFEygl(E&Hz$&05txSbiZ7uehKVj=`bs7RajhPpUA3W;WxUK@>g7&Pr z?SSy^{#!e{T`o;kc*Jv*naj#XmLj*Vz}5CZxBuK-E~nmIl!MG!MJz%)$EIG}GO-IG zHhzx?-84%-w>8uSO0`Ir#T8eUR?T;(+cjyqt@Ui#b2&v;PF-x*7q)d*s(nSpk7V}e zpwhKv$kSufF5m?Z{u>(Enr`nO>Gh(Ve&LU4&SIyY)8*UBsu*U}ny2Fo1?~dQ=+>FK z54zm$;zK=pT`?!_#nO*A4OsHlNtj8mXlp=jh3lJ?+oUAAkJpu(o8vk=b`!hwzg4 zNzba3v2j*1b3zETEy13{2I{MU2F-vJ_y=ZpP668xLZ+Ulrig^Owu(H$a zIZJ@87R{+P3n1(m5KLCGH&@UdB%X-A3UO1T1u1zH9vXkVTUWK_nHN4jYw9`u+*dy| z!5)9GvYMDOjtjrdFfh6db(De*`}yO@oP0(ZAKKEGIoH!>*?!@LXO0Jp_I+|jFZ`_I z1M5jvQJ&YEvlxnStUQ+Len!1TRfAWIDkKFe5nBL>lI}n@EdgjE76GE!g9dLzHZG*O z;bNow`J;yq-L++FvCCEb&HGNCyl?B4u#=t7&BxihI4JjB~x1=!EZv+Tc_VWVYJW8Os^XlR;#P3KR!1-IrV@u-)L-13k3h; z{59%Awm|?d1F@({K9ABoqzQ5~gfEHj{L)*Do*g9)jj=#k#Yzvfs0kFWq zTZq_@mwOdiTp^%&V2jA>X{8g<jvvRuSKe?mbtJt1 z)`Djv5p;!*;KCFVKLPrjc+~+sMgh{c4L4w&KS14N8MX;cAz@G2m?uZt~zHvH5Sj zllJ)o^Y%&a-)x@!{F(B}z(4%_9|Du*XFd<{ctSh))Pq~a)L>PhwKY&RI2G+azNu=* zop?&jwdDa{4C0P^eSyGj1q&6urc?=D>TS4905KE7 z6$vaK0WEF_QZ{opo5V^55Di#hdm6 zj{Siui?Ehi651XyS6GnQ!r3f{d6A6tOlbSgqX)q;N)Q&=AG}4zdy9GZnlANQ=uUL! z>37~ajqVi7o=DTZYN{U27HmPVDebLDnFTZP(U1OPJ{Xn2xeHNT~$rCGImjmHDo ziZ*-pZHV{xq{}&jq6CZ!FzV2pJVyqHHuF)mgqC7r%He&^LJ1cWr;$a_Zqt{^?~{ZM zayDg(M0Q@1`1ik0N*u)IiJ<4d`AvBqOT<{>S|TygLD!175?7Ep6A>08BA#6l9Yui! z6b}l~q!j>bGo50iB~#=!cr27L z8O!fQOUl`Omf0%&8D-$qGlW0m*=|wN8vb==ORzCYxWmBJR?fpkd_gQq{RFlv0@uh> z;zPaI(>==a*ARf0I97e$`!{5+CQUMSNYiR7xQ2vc4thH=0otq~yp&^M=Wi7XwcTs- z^0Kn_kB*E_ez3HZL6htI$0tW>{kJUiIkQ@~?A<+56-m9KYu~(aY~pOOD?NSt@cQwo zM{26H8t;Uasou0}&vcWqFuV{_DR?-+pC_?^lLeR7cX%xY%Q^N!V&x|1NfvgaA9&%5 zXZtfJKlc2yJwKsKHpONxUDC}ye!yFM`13DZ-0KLfNz_>-8&hcs&IJL9Yd{?0(h(39 z;dTU^HUs)08b0@uH!qLLFGurzKvdO-erT&~tv#^2JH58H<^Aj*glEsc za!~~6M4@)@k?z~$zu}vv14JbXOjGa@G~07~cl`6hUi2YdcxMZsUgF6TUYA>ThUNNj z5Po74(bs5B(D)poSr2Gd$ubH-)Mj5^F}T1k%XwBLVL4$f^|!~WRu@3*d+d*>XLqEY3 zrlAA169{pz`@=@C1mS2_M0O?2H7iaDFRkMr%C@PES?3I%Qja0*+a4NxsNoJ81r(8E zy+q!%m1odLZxt@b_UpY><;L>{qtOs9^{4Y`-N6Tz<5SY|+VPkhPz|a!uPCp=(xX}R zmzyiMypUu*m-4jmxotOAem*r9mwXm|ar1TSAu(TWrdV6x@eqQCRO8VAtWQXb%VU<% zIN9M&zxBA@DqIvU3*XjTAIS=|z5CpA&(*qITkpANtINe~>3nuFs4*DgjgiQM_>+lt zk3G@$E^2@F*;;Z1zD_YVs88b&&kd;fW>ZKLGAZ-ca3l_c_~B5`LJjP_BC>@RjibuH ztdS*QqL(i>=itBFHw+GLxE+p!Kb)(`t=@iQdv$IFdpv&fmdGCFp8O=)E?>Ufgs&eu z2-hDR!gt<%zWnfFclYAqav1~amv{vkQms*KxDFl#C7`j|%>M%%irKxHfkMV#7|7f^ zyDA99kXmi9=$MGkVobn-~YS&9`^xK63Txl*H`3 z1lFZd$O#^SO{%U`k|L8L9Llu%C>D~Thmzz*mEc|Wci>P)^p%?`LqD1&u4u$TO}NNk zr${1})7$D@coen~gg+Ot4&q@GqVtIB9YNWa;zZF?Xx6@^rDY4c1mU+n??dC`4|#on zodiQ!v}KFkz6Et0*t+!qDjr)uu$Y&(IIw<9rcw~+YREH_L;}|mEgM#y0dS)+FVC9w znd-p}%VOeWuq%$pVBc@|ce1u5y=w`I$|4#X+tY4Oo zcwsH7Ts{`(sK-RF2oYgg1RNKkT5FKk?J5Sm!5Yw)JyI2AnyM-%)yK8= z^xLS=x24;)$JMNMKC{2fg7aevLYA_+P0ITjMMMO)><_C3v_}zF2a-xK#ry%tJy^#2C za|G&uv$ZqwE)u@! zbR`l=V)|gVJyKCwS@FoW!r|jRJ;#TO+GYZQnYN;~!NIn~vn9(HdM^?JSN+XN*@~{* zl%T?YN&E3M9=3pRp@|F@ZZaf$-4^+~mwd&Y!X0`3iHrZ$6OObr{ouj(eMI!uC$4|6 zH?4Mrd;aU<6VHF-eGmSisU=FC*2$J!v_X#hpmC--G*3v>l$?`knIHgy7!|$e+gf+* zK0;;SDUB4G1w=+K&FjeS9j$HX5|x7TQ7QJ8)dYRnBMkzSxJRO4OSo>CTnT8NpqqI| zBy~$rzmdwlL_rNB^i)J9egl$v!ep=9BX$yxkwDO8Qj*NMMXVF@@+}YHfbS5s(H^52 z(?9$$C@>3WEl&J+T#|+!d|eDoFY;!vT=u)vTM3rdHFyO7yti-9p7VX@_UsAo0ZjkD z7>#iU{bcg@;NQ-L#ozF$GWd;r%K8c9LHAd#!wZPo&OOImcy@0%+y@En35U_|l)3$f zu?)S6FZsl?d-}rRy^wb}%)F$`6*4hD9*Cd6+6OR*PcZ*rS_oF`h&EQ^$kK%(I&5oauN2eq-L6 zHc!Vh@EdamCl&u~UrG2szqH6se?#~_$>STy51(;1)xJ9W6`CG%MM~x0;iwkBp&eL+ z`%0@z(JlCG1Bh@Hzb)a!m`VKht;H{?mitY&LtLc>H!6NsAf9!goSN8b=WU45{F-#6A1?&&tn&!>f2#P5B*^n1k{;S@E-?iD`$Mnx!Xe%{dC z+t)L;kMB6xE`G;Jk?+-LD*o+ja21?TA0rXi%`o=C$d?#n@PKF2P_>Sr7+7H8jxT^s zmXOEfNpi$MSE4*!Ue9J{GN$ZYT#^3V>}Fm#mzfRNREuxrxN~ycrSKLds7CKtoZ(C( zGr{I(-@@bN-!0ksY{tg!cE*@F+08uJ9siBOQA3?1Yh40G3d_=lt|v7I*azn260>g; z*;0yq_0xcdohu zq!LN9P~>g zHKdD{cF|X?8a0H7&ufG|#pyUky_>V>;)iq=Znv7@bj%!{@C@V!MyJj)rlU$uZ_u7i z&&*6et2O93HZ%S{ixbT5%sEc2(aSN@khc{^?NqskT&BR)5UTn#c$F3l*&aWE9nIAnaZ@viMMOW00uNp0oLjsUj-dkbLU`3GdKesvipqN*er5-YS7rM8Lqcz_)q zWnO$RktyV(VQehrzJ|LFksZ72}R?F07698i}O@z1bvpIhDFC!LDG`i2P$Y5UE$BgU-pwEX`>iX zWemVva67;=O43b4pGOm%c}kvm*mlfPgK=VAcmT%Pb@%GvkYUMe_Czy<{MAfs0Se!5dXGQx43zNPb^aS ziOq|;oj4VtU5pLiS94meWAe)lr}O2#z(KN4F>o_dQ`4vjkH-0JoEDd&gR#=}E7)nT zR|Y}`%S;gd*ig-BW4_m@KAkU$dEN3{B=^N)Bo#jYw4pp74-Kbl_9X(~X?xEQ--r@o z*R|L}HqK1qHq1T~*=8|G-?6qHL|nkb1(-9juN406N6QvZES7!r#i*c*z9@eA+rqEJ z&}{g8d_H_$J=nRibR7c{wf39_7r|{@YFTEr`GgKBY_0+ho zEUeWZB5&7|XQ66$b-WMWZ%iiPj}8aY!@Ib@eFDp6B%XTpz%@@0^+l0fL03>CvQiaO znkrB7*8r!r1nPYr`oWw5<2J}hP2A`53rTAf=CkYM<8xtW)Oj@y@9IH6rPY3s_y72O z-a3jS-%z$L?|jm?zJju{ff&pR&EzZNrORhdT?X1$6pRR@eJ!^?x3GH zUI3Vxp$Ozt=_^wOxL9VJR`iBZx~_wJWMG*mGPv=>)-E_}kofIa_crKt1w{`{jBOe} zX}6oR@7y#xKDlmB*C)r9xgZxf-+np#a`4#g!#4NSoktdGGT9IASvNU8y6Mhrv)z7j zeAC#(Lq!ETeZ$^R^D@un$a-o2&o%wnsi`_S13w^vxo!fhs#(|LAwdT##X zWuq#t?a)E$HSj*eqi3xao4GF%~ZB?{JwL?M{}xnJb1PxJTyNy zJ$KHTpJlphYJBUq&(#Og(tHC=%gVa{yGm{k|_J_JdNfkwS^sZS^!nayYCP)55GgGtk7b+{JhS$$+of%x%m$E)k>-w#;TV~G{ z7U&HJ#y8I`Jlz;F7>d?ctt>blt47ow>AB*p(3I_X!HS!N2y6`nz$?mz zG%MmonTdmDZS~O1M7L8H9GR&&DEz``G#X0K0$On6Bct$(gB3F)L7lUEVrHmXYZkVO ztMYq9JIOoAzaK<-#3Jt&K8{l$hd7C(Jib7+Us(sHWf@hQ@p{Kk#x{;(9<(!7u{0sd zqGOYurj%v5+o3MquyrP!pVcVon^SgA*5t3KGF|0Vc`^FgGhIy2Ie{c?>1-N0MrHNM!mDi={;!CFHty?;$(y zFbD#|-tuxwTcX;Pts4cPPkM87ry)N;!c~g?Bl9JRjFd%1(=I+aG?RT zUeTbG4!!_!w8Z`fg2&&1mK9j45_Bc+BpNQ*=!{=XZr_tF56)+IpSW+MXv1Va?c7)( z{H3o&S<(dez^R7nd(g1c8UG}1=T?)mPi*JA-KMz*4+Y(~^w10AJFpg+(RY_vz64Q= zthcXKw6O}UXws0>+N-xM`uS?DcQC1uzq?vnvJI;=*ukV`U9(#2CCbvE9>uzjPZbc$ zvb?1Xh=g}DTFRNAq0y<={)k3M(+HQ%^+B(}Xf7CSLiuK+ z0gsdBeAG0`7MzqCNAVCQJ#<1;coy1bLUA8@Taln_1ItTc0|P{GKr&I8#g3+YSriDC ziI;}3hKOt-%h0eAd=9*5&`OxKV6%<>p_BETRsR9Km8-vB5u;K`+frdoBgmYv1w;Px zLm4_<#*oDIy<~ApT~L3WvaN&Y!vA^c%y{|cb8~K+L@jZ%rSzjKr@LpmPRHIuVHe?i zY}x)z5nc}hTV^Lg@Kw$ZgpwC)=|C^2m>oQcFcu0}nPRROvTI6*w$AoBao3u!7<$BN zHNEn3w$=LRP*N8}SrU~}TpS@7r#SV!IaDz}*=EY`o0%UfQ`^@+YHhcgUVbGTe>^%w zdv2f8)QX>m4<-U&z%G(#&lF_@eDEM)QcWsj2$mt&ocqj4}|kKiA%FQd2t>glV>F}A?y@>lbj2{&g1`VS^NT9 z^x*Q`A`xXd)=Nmas%3GO9jE~w8;zng0M3}m$2i0}(c`2TH#zTr!(FnTh!8D{@bi^ljlMxz*X7!bjO6K7}k1DoO%} zn_{VoJ`u}86p)ScFSiDg~Os* zCCej{W7Xd!4j67VDc(%FjvS~#FuBaR1l11bm2moy;jJw>TI4k#SUr)cv4MTyweV}L zOY4(`3J9O;x+iR!KYge!$I#qWli@=9@pUzUWU<#Tp+|D+4xOGih41MqEXt_qYF5@y zuBwL4%Bx7i0h(%Z4M9vR3-UFDtYqp&s|fhP+CWl0%=MhC`zjT|kPvAVnQe6^dy*?W zP>a4sidj^cD7K6Rzn=7<)ylAnc&lVB@0Ta)=jLnY#_QuI$}g=G*W+;sq@qR{i4e&Z z^k_^u;OXU--D0(z#zVOfLyQ;g%QEv2rb?p(h0A50pM2wYc$7Nhv^-W&D*RFSV_Tm& zOFei%<1mSwi}f=z!nx{A`5(T=X^BQHPGA1>&zGO-M}KQ_Xe7G_;J#Lf+?olgsKG;# zzd}0Eu!IPDbkHS9mLvw+CkaU9h23v>N%Fyju9PQT78Pdsdf^p72v^B5pAMCY;P6S* z%We}{VFL>^UT#BBd4dIckdP}M=aF_Qylzwc9|n877HmzungD4Qc9ilc$Iz^QWcKEyxZmhD~6M`*KS%k|Xt@B&p5$mVK&WXKr2W~gQOD^*xxm^n4 zDu_=G5Drh~MT;|*2y2VcKxknx>a;`vLOhnBM@n#K35$d`i}qJuy`Mxv;FcEIjR{k2 z1a{EvI`(6F{nhO{JDw`hKN$>KLCqC#f?8`ZB;w$d|BCQsbQ~QQzRXL{Pmj7ASaZ!Z>IFbLd~79`|E7K-An5qr$(WKU5G5LVkr#lq$=UQOs|)kYK42MSJ5R$4vb9850H zGM^(B&WUTK7$K7`S_uaGB+e}Y47Gmw7pG7LYydbvdA>TVZp8Wy@mDSe^C~FusG)$x znjLCKRvSkqZM=}-2sI%fLo=6*Wk$ETzTRgr<{*2|1N*}!U)AobKM$VyK<8(@dAa@D zca(CMFBgm!2j2R3ICKl%yjcN5tJwH?92s7J0PE>N2#WmH0~CuHK3*L-ia!7uZ10`AQP!JLJC39YqdTCZ|eUmomqXGo}5TN-8^3o&4|8 zW~0YrY#!cHWz8ydxeBwaRa=Hrocp^Kkt%35)Mj3{X>HE2X&Y0~U+!|150o>x)wiZR zTV)GZs?`;1tBo0j#qP10vEt&w3}bbwljEs^S`yr@^%Q}VRGc3emb3*707S8*0*i6Y z;R*zJ{B{Uaw(!za!^LS8xA~>W!*K zutb`@a$U;LQld)b8dW?|v|^J;2lpBb<=sw8VO_U#pvQ|wN0GN@z}a0_XmNIzU+XvY zTLs`dH*&-GCI8m5V*H*^PvFt*R@G5JDtxbH3_*myl@OHJ`~lbngfRp!i0XsHTx$Tl zEw_R3l92?jj&dxiyU}e{Yk8L~uef=_(bbrz*|}4b*VyHlXfDpPb(LS^x0>=!SDJ-O z^KRS_)MaGof*Uq^(>P0-tFxT^VkAFUG8O01(#rAW|K4zh$-hmk$S_$HOdd{Ue}0fz!+ei!v;h zP%_vt`ZvKNc+kHo=CBiqd>F4VzH*MD>1C>NVSkdQiP!WRPcrv`9FQqxA)E#b8sYSc z*T#bwFN ziQjpg61qrI)CqH$wM-)&HR%6%kMf(s$1$5QDOrFeGoV~EYLE}eWziM9T9kN0n9mFU z9!3R^qb0Qi(7~vO94r%mE&MEuoR15Os-(2@Qm5^P&K$%!B&YtwFK~AhE{2yU4qfyY z_`GtBUqU_F2tK|w0cnf>1rqd*5`n5%62`l8<49$tzOi9qYS*@j&5e!v?fSmny^AM_ z^GaLuj$KF)o(rR4C|>_|eR~VgN^GhNR99^n*>-%_j^;Mvu5xm5Z*Sil!n0wtK~Y{R zQ`Jq#L@MD1q+&XR#V}fey1A}ckC01w5KG*HV(?lWkoi2+_-(a$yo7KK_iBxm(-12h zTg@;}{8iSNO>;0*#$pL~%;=hynSpg>Xm;o+LsWbjy zpYSJbwkboAdxEFe0XvLjcbF4$-gM zKH7+?R8^;HCN^cFH3C$hEhKem&MF#~ahI0k_@}^!#WI zQ#m|8UHpnp_e$~f{BR{xGde%rX%n6lt;!pcd{@xSfvUXf?Z>uP=T#l3o$D{j3{K2X zG#iRa4%F2hC@C^DPqZjkCi||)^+s_XY}B3sTd}eo13`=(C{Q0WS;HN| zw}fwXgsmp#$h+slmr=X=#1?hFNzf0TD*xdR%TEoUE2ez4@P~KL!;kWQB~9N+F#lHM zphqUW&ewP#8W;k;Lbm0(p^pg{Ys!%ZY07I(;^*UX_*}}2Glzs=U?TtNr}HQL=%2qF zhAYn}ml5l)X3ugFkc532bbkYVEGctzBm$wByxP5GWsbt5@Ka<(Im=SzVv~#MVG~TS zILqZZ4kd~zT=bLVQ)azcDrx|IcS!gYl~R0`s2nL|Se{qPq*L^Z6m=HFkCb^uZT%z` ziLFvqG2vni&8F%T*RCsbfDO7=n$ZDA`uOupgvTOyZdZdOx{Xj4kez;e5#^MH( z!^t}xriPTg@a3|u4%4fznmW45mY22sdi`HRLg67`3bm)mS$+(Ji`S7t@hsr7A6CkA z-RD7B``4)V8>sT6yz)}^BbzT&g8-;}MPK^d!})hUzHZ&)cjl+eDgMs-Pae$u(1&sl zeo|S_fWz#A2qdWtRm_S^xsa~|6(Y_SlZzv4Pc1+jGvx%Pzv3+<_&uf1}_V61VvzJ59hYY6(D|9Wk0QZAJ=6gA)) z?XSQN6R2d|jXZ@1mJ8Y_)z>GntPnreMm>TE;1kDc#qB+?IeHtwSPX9g*5z~IH4xo3 z1S7Hq_|) zY}c*u7UKE6Gc&Kv%AH4Vm z{KqR~hm~_nlI&O{v&)P{dM}cHr^x5MaP?xn+mqLRQ-Xge0~HJZCmn5GU1+J!2T7fK zAtKgnqViEl3D{~~R`(sqqY17mdK5UcaefWv9L+$-eh;a1&;E`9O^*4aShuaj3*eM; zGf$#USYSCV!Z)+DZnN+&Y|sxC?+>!5*6h|+Pfh(kp1r&Tvit?K-c!l%!(HC2y-DHg zYC42d!l{m$y7wSElZAAL4hdJXm}|(M&?OzJ9KtvN`n@S6(sn0l-7eP0nF53wel`}1 zC=eQ!-a?n2@%wo`%DydJJboO_Dy^x}n84fZLO*P>DDz8K8F6g^+N%qIDNJsQk2P^Y zx5*rIt-un|gj`^XjYjz>ft|UMl>alrMf?j|iVer#VX}u~V9@pZlZ1#!x&-Akc0<0& zal(lBfZ)LpBC*9VC7@W4jKA@3^9ociUP+eC%!teuvZr~YZ;njng>0g2fXo!aXQhFxw9$sDp>LeNLWIteq6eNBWBuP;Z zD~$=GwW ze(@7s!q@KO;WkAZp1^hIA-kYKIxDV_Hee&z{uItB2{#h zag&4-xeubt+Hz2>QTWQjCNN9m$$cz-gv~b2g%2o`0|05Ts>eRt>}8zhc&pjTc$+`_ z*w}sOGxrsV&`~_ERtvx4h2|WGBL{tlM^^vOe=clF_L)t})3aKx$Ymz+{bCgaSIHT% z@i7;(OAvVCG?FU&7r;wBx@WuB@ z)j`O6(NbW%UOfoEjQC~g{N(QV>qIi<48Eq-50@wHnI~iv`}H-XTv1^+A}RWGQuRfy zE3VKk*Cx88l$rMJHuWTK+XA8|WDi ze;rZi*89~rm+>$XdG5e%2#AnmyvEP53sg7ScEn!`p86HSpi1Ve_V@>wr*jK5C)9bS zcoUWcKl9>dO^x{Z4$pgY1)a%4oVoCTkefPIPa%Ujk*CX?B#U`vg+PYPt^9H^l4U?k zBxj%oNXQ~QpDYEPqfe>Fi2pyX1q#~1Ca9aigA@GWnRoCYHg&c?eey#uJo`}b`VY(* z`|cmIlP9S%@=4p_r@r>s-ol1s%5hpEz0+erUe9bbDV-NZq!u!_&O$)P1*fY61bCKEoiuLdDr9pL%Fi z-*R}wP_^s)>Fqgtty8-($M z(FG_ej|RvZH8qFFa{>n*`P?H10y*R1W`4h%-+na0vws-%Km63=C;R$NKK|6h{?WeI zkI2~`d0qG%Y}3m5QcMof=TM$JHF)ZbDEYJ2FkWyoT;>p{x_6(zjgeG-(8EhORBa6SnNIutOwk$--ljE%H!KF~94Y&h_d z&wS)SgK@YgP}|6rZ$5DBz~*wUu{I!~LT};y(Qoy=c37^o!>{#?2OfUnv7 zn_aP%GdK8cX4q}}_`~N9#lIW>?xFJ!e|-OIvwz+2^oGCAzNU5r16!fxwg!THTZ{0m zk`mO`+$PoqP16Y2CUUCgV$K%wva6+CU(54#fz&y~pEMmiWCst-C%|*2S6m^$WP0IRM z-XBfN+cX`eXiO~I<15-R{ud^L)MX;Qy{a_g>kpc*{3TiU%PW_% z6!=#Fm1**c@R&Z)e+71&yps|0I`$~Ddw=6#saLw#3F277E$8~LJ+Zd48Z|^F9eeWf}Ds?O@eudhb;?c z{_puD+5R7GUjpCMb>*%5o}{OJ-(|^`Wl7!_$&$b}HU?|~2HOx8gTVw4A($m5B!na^ zS!fm-60)gV(oEAPB~2$JlWFLZeog5z`r2>gSoIR^a?UlmF*o3%xSK2G~R=&j9OTzd`0fD)V5m3*ce6lsm|PeIi^NML(;z zJEGD1Ha8zg)tc%Tw5)7uA8o5&frgvfJC|=*GkiQY(6e#Duv4vUU)_R#su7wb^|ZOsG-)=U9?S4gWil7}+b^eU@8o5%;71TaG4LF4%Zdb_ z4YU+}F~hGz*JUze#gYg4&Wo4n55FFSAH?D__y?&CUSWSVBi|0~H7r!2Gw6>b8xEpA zI?SzTy_5oHJ^w9YsCZQXe`RFld1fuqswyuO&w8)TUU1>>A*l{6`x^Em1Zz#qBq@xp z^0YP+)H~^zJd+IsuTZxG2+`tStB}BkmC>NcvT`b@LjD|q5PGIGYfc%hJ+tJ?q3!<> zvHfXemmAS`qIB6B9zj!~KML)i=AXyS#9YA5#6OP~i808s_Www+{VSD-tda6U`Chbm z_JWxNzu_OHvOj`b2K*_&%^_(ejt(l9gR{#id_+oKv`eo~34Oer)E@m_N@s*jVn7`* z&r0P(4kM5kVor`UyhuW&MlvGI=8q5Q%pwu~Q)=`Xp@qiw{?ixCIvJtMD#k1)C6kw1 z3EqKZp&@{z4v2#!d23_f9^!Pk!^8+mvyXsO%~D8}&S*$H5di6f-iIUoF+D=b*uGd7 z%d!mv^$&Z4AQmqcH1FMl>n8=Ge>KoKvNv->8uY)Yk-fW{rWQ6K5| zYVv^4%?rRP=qp!S<7{VQZ1d#*&WhU!r4N5DgFBayB0puwUF z1dS7p%k*i0<9xqx%JsOC&N1NkyzRaHsN(g z-O8k?6KX2RaMS@c90zo+Ho7tk=v*WOoTS+Z(!$JLMSnM!1f=LebV7pCst8MXLZ>zk`AP9tYDyK8EK6K$!McvX!jxbohF*WVm+ zJIvZDt;y!9a{F47e{1PGb75C}YR_mr=Y#WXf}FqF+PwU5(52OyJpNjX&Sh3Mest}Xsb0eRN0+c&aA29^nO>cs>bFL=Lu*7Kkm<)Ni>zK7lLL|tq?~QH9<%X z1lH76XdQJ-aIKVDM&4Y+4=ql$bLxXBwTswX%&AbIZF0!sv8W8~2Oe8ZKY7jMlYi@T zw}yy~n}Y!qUi#R|ZV8>zl3 zLF3jW^KyiTS=74bVvfJ_!bY_)ra`cti27qKxxX_7_BtC89eP2;Iz!llxEJ za{G;2SluMEYI6TTpUYvx=TZ*P-wHacbO+?+bm6ClwT?Y>`sf{#hgsc={220w3*Wqc z=XLv-#<7Q%bR$&H>R#gCC0{EW8n(*(e2Gj{lHrzyEx-t|0<>u1>@-9&$JzJdFttvj z2|#oqR(cYA%|!X9&lT-$v`jCNMk|&ISl88vD=(R*%$=T|Q9k5OKX*)I~ldnSX#ygi`BGBoW$9hA6m%QmIoz{ za?{f@nIdN8mUOyBh>^l9Lc552m_Do*O8clJGZ1h@;_izW$jNZp3E6=lMKNSv&O$#x zvh%`WF#shuP2*2+ue^8JLz08Q(1MXF#;s6TF+8w=0R$&q?s$WsCr2lCvl$@{A^gT+QrxVteq+zO(5OW!gvNI#+OgA=V)p?PP({o788aNYUHY1JKjFgO$L*`*$ zz^+9;n?sA6xv$v@x&%-7DY1E8Y9ap%^H^-v54bzW}6>jxv!>K zk2nomZ9^uD-p#1h2DOdx>MV+4Y=vLZqc~6OE1>QWiPMBYg5q2RSONZHi40m0P!r;* zK1A9bB85pxPkaQ!BW`;^B1;ol4NG56AxegRgqAiTx7ZhShm3Rp?pRLj3SmIt|M;VH z9uo%xCN2#H@)gSOK$bCfY%w;d#akN-MX;L8;r#? zMyshg5O6a}U*V5Blf$azRBl@&)Y{p9cw|_m<}4PCT5E8d3`>wxXVvSK)~ZONTdOzd z%(Z=tTFEsq%`H}&(WMN#Bja_>TFzy(S?iiD7OhE%yQ?p3*6H=yH9a*hq*W=cI)~C} z4wy}P<|#vWS51e@<8H?N(z?Dr$Z1nOA(z*0wHPc)jmn_+YOFfFMdQ^Q)N0mZG+8>j zd(&#Jx>c=ZHzXFeh3jhV&Xvor&-Ah^r(_t5!5DTTwMy%88hkCmCLLqc8uVI?S;zX! zJ}uI6td6s=xWCOhkIKU7SUeV3hBce2Se=E#mC_m+^Rl{D#Lj z@56IJ6|u9DUJ!a$+GB>jWuyYkKMvBWa4~=YOeRpv#=b>fZZXCQdcmMXtp;MTM9n%fjz{9MQLRZ0y zeI=jE=HjsQ7v3V^R6Z>1Fk`#{Px=$|C6&d#Co2oGxh1SfUeOT&v`@B056O`32EXyTx@ z#KltyCrbXYWG@P1NylkIR1M(7%cKufLFh%1;*&rY$COI0KFIFtMT}l&LPom@nO5jb zCWjFr(@L!gzuQgl4LPoaU+^gt={vAO*S59a6kFTD@3Of13vZL3$dyKXiIHVaZMTgd zzjLeg+I!m%ueYo}eCV3mHT%gM`4~8~#=7eIsZs6d)P~KAx!!e~`!tKz|JTCoB2(4M z?VD1_WkIhu|LfQyP50XMJ<3I6?Y+%hLl=1yWUQBo4Hw#MOtA~{zRB#kZuy6_{6mB; z$4-C%<-#NvOE*^Pqisw&*~-MiwIt6lN3f_;C7N5FN)OMM9FTcrU}=3L+dLRmwybRa z3Uw`fxvE}O_7MvWJ=zNhxvY}mZT2b_%VF*H{KbHih|u^=n1gDRyGdpig*|1XTM0Hd zK^Fq#WV|NI0uj!1{>!KJb$Vy+2l3B7yN5NH4D6m~QKT3IjT+uXPkqs7bbW!}|I=FS z>m2^~y7p@`FdHb%S`yt{nQpoo!3rH^Vrqt)1+%3hJ74VT>+71_({c9Dp|c%(elZgw zp(2Z$+2hAqwe@+l@V@)_zkA*~UJ2Vkz@}$D0AyfD;gXOncg5gM=7W5mpu$ZHy3cZD zrx2+RNC7B>U*NFK;@N<0LRI`P`2+kfQPpYK4o--l&?Bg-@DPoMM@4&LLYW|Q4)Jsm zOH+k7t2>mo(zt&-DF={?|9Ac{|L@3!uI0b?lb@i}Pxy^lNxNnTzii_Vmm17#O=;UbSSI0O`eirf{xNgxO+a<@lT_HkS`;7S+;YzV0# zWylck(0UTM1@vQiBPwNO=mido2oox?`N~ix0EyvW_^ND4v046pfO5#uhLie7%&Ph}!7(X+GFJF(B{h)2T@W8s@JxMLJXs?+WkNQmVyr!>#$g!%M#(+o z62t(npGOBJgW>lG7!N*~M%IiYet%~{JI3v>GZQt*VY3$s$cXlT2N`ZLiI0EM&i zPsm>MtJRkDaTV6|TM6FT8pYD{+eMV_dR?E<2O3W0O zj}}>C#%M3`206xzO5%?`laTvhKF?$c%E_$HVlgtWmZUtsjpRKRp212ck77t(R=66! zF~;KflH*G(B_0$c4Jnq1h@FC9ywcsC*dn~91I%oi3zHPy4wswgVNQGkCO2X4F~&T0 zXJ+k$*RACkonc`*Ilk&l&nH%ojakiDU$kxAHu}sHL4zHuj^U1V3D#mzeHnl1N?*J4 zX1qR2cSvQJtz%=WKQYwux`Y)O#ZExEant$) z5H-8NHiJ-`WSZ7S)g;t3fP{9XyXSRvT;H^kFNhO$tzZko&J>8*EBV66C?sopr z;p=vG^*D@QHag-P<3XdtVN|Y?ij#`BIyP?{dUR;)qsvE!&4!(f!MJ=?;^BRr*|u~- z!yzo-8x|N#s_aEb8(HQ<$A!gpmN!4#EPtuN)$%<*U%-jcuqoS z`#24#pnKs`L{GyE7NcLVavhb68IMRx=Ex`IoCrRa1(eiP>%pa*^pP7*m2 zb8=;5-RU+|Mj3tkNOe5vz!=GDBQ(n@_hH{ApQ76~U45qFr{ z1j2H<%m+fLdH!iZRW75786vDr3rtCJ89dLB^?L!y4@4Gw3p|cBAOKik#<53LYEbf0 z@cf#H_aR)>O6Du!y9m94V73Oq{z`IDshP2RZ$7wWU|`9?n~@35mf^F`7x~{Cof?zz zp-bD1YLnZLSo+tS#)r)T&Sc*Fy>G5IaQ2|F@LOB0-e%i;^Q|`?-DJ^ebur888+Ps6 zqg(}r@&8>~Y@u%7BBjaeRMz-=R9=r-b8me!LSCgQ7+|YVN1M9ZuhG4sw$+8yepc!B zb>iYo8f}Z)!LqWLDaZq`P_bH(6}?4@Nwh3QpAd(zNiE1ne^&F{hq+%?TBCdSZ5;HaOint-w~qYfTP#~7fKUDfoF5AJ{TYo|VsG{nd?&ixLWpMAK@*7J=|9nnA`sNo zixMFk8t7!#66tX7mUOmdbjSD-pR0F#`!$|V`nMF80~iiTUYTX0q5#>kae=XR`L=CC zQEg{aYbu`2(VThkFsWob)R8=SE9T%tHN!)R6?h5>JgPzjbe#m634DUUS;i;7L~!B} zoO#B9;maP%JU``YtzyQiT4$|6R_?CDjFGC4N@c5BeYqUIU6>=1%EMSY^O4+?pjl`U zfbOayLMHbZ{YU`NwL(^R_CITqE$AyM{zwEpRL8%w5UpEyJK_fUKkzT3H}Xi&Ka6hRe}lN4>qk)C=+{Qk ziKYCzOVPjcPo>a~%l||5f0|F_J>?P^ZABzWC_B@bQbeH60(C-l2wmWpSkc$4{Kw+x zBk>=vMxj;tX>fc8=jk8s9NB@kZ+vGX$}i?WzqqKct|IHmV#TmxBiQt2tR+~s40GXD zg7kz%W5`62a3_K!uRte!jen1&i(e35kuVsZz^gbSZVg6+uVc|9{#xlP?*B4>6YbVz zZ(pwKj#MXt!9;bWTetGotiC%Egpa{Ux4wV(bxU;JQTo{v4ttz6N`#a(yw6ix+fiG~ zIPg*YvUDN4yCwX3xFwkA=?t`l|ACw(f-T{fUJ_3EhH!hW-@$1#4*wgq?P2`sN8}r| zmUH^0HP5GL$20vBlEF3%?$Ja+08gWYJpm_V#(?^TId|C?5ozOf=E+ZQFb}uWAmsL8 z^9_Ifl>FnahacW0|NIn~D~X=x5;Wk~gk!XM0a17sG^1webb4Ak6%22vx%4R7;T~0f zjQEk@2QK2rkDwh(ginp|Z=y$@dk#Iqzd3@czk?n?wst&nA8zMA;BP9<-*B%AEOHcK z#wsi0V%y9AeO*~WkKFRXvsFJW+%jubuB ztDgNpY%}1Kwwc6V8EX?2d7}5(<#(3wR8j{27O8XJGsmK3#i4pq@lP1{ex|f9v?Q|8 zu3`a@gN@k34#@eFhLsF!j?CDP(Dm=?`KS1&^zWkUZ^(9Tp4_sK%`RBe!zw?)9m4AzuMMXjRNkLRzLI9(-}u{)>sFB{Y$LtQg> zB);*wjfup@gz^i~{%B%Y_ge7u_FYp%7y}8FzsnZ!EojkOLk-dT#R0FkCy0Jh+qJAK z6vA({$71R9NIG4wT-Doi{oWHdc)!RdHY5@oaGAGqxWL67qkEodZ7=$p7Qzv;o~!lO zueDmtK4VX}*MLsecGW_W`0dUG!|C*Jx;TfgW`Bis>`p}&*0VDu8xAt=ByNBRjQ_B+ml1|c zLh#ExS9lJDF?c(p~ugz`7wP4nN2iIY9?ppphMeY0!-8uS>alwN1W7Gq?c$?6L zZ{h3p-=P?{P!Ll^Fg#&h+PP+=rB&)XsSa`C**w2m0AL4ktV*(fPJMo!C;nF1KfPKH z#EBkzp{#PWe^%nU!CVn0`RYv!m+WQIAzT+{D-(-233#M4Oh6gJNx^F;9F>g7;Bk-t zE0;KLdGY#HcaPgIPun-&F|_-Io1LtSAT4A8a{)Dz5NzWv!uNM&xT@&V?&tQIcbV24 z9a?$&TGKA`{iC+@Df~!drqMCE`JX z51>NW`xl-_;=3V=qv*`EfP3VWIH(t)aYRpf9|IF27b-mJ@F-oSn{o z0~KUt*ddM$WK+&*Epa?`a!KX`wbjcM(P5|2CB|!2!wxnrjyGhdr;Bz&$`kRD)gpOe z99XnEVgH^B0I%&=qoJbk&M(zb8(F{KZ7fzY@($TB$+gSj+(P&Uy*r~IaQipYIQM}WJLe}WJ|6iCxF}nY*F9x^Xz#dg_rM>$el;oSLCQl((_F2Wr>Vi zX{V*!Nt9hn;FwB^5@Yy2LU^z`TzL3F($FZtB4hQ%NwcBCkcQhu_YD~jaBqCOb-5XTecHA;4l zNZx=-{K}vPt)aPi_r)tP|9I!lx|;P{)>lV%b~3LP_Rd)o#>c-fvoeFKa5Pj`7mC)Y z`5(<)Et&o;**^}|hFJJ}_gF!9Fp1gb%;tZ(G9nW>d zxE;?iuVzc_AW{a1N>n1DSjavrB?ns-EYvKUgI*SF>4cG-lOMhP$c?vr16eHU!nfFy{7w9aMt#i#j~v*wdGA;I z+gs74Slh0H3lA8J9PFvOJsZO|zuC)jA?8(Am$V^!HP#5rW2EWPTYK=O> z3wxZaWNEF1OFyuXeoSj79NB+d6HvM0nZi5RfySE$bD(tST~|x7K#Xd43k2pS7ARuh^xVp zcmOrvsSYcXGc%^MTQ(P#ZQk6_4fgd*_^rEvpUO9MLuQojhCKhDrE#hGA+L9+y8+Da zAPyGZB3Dk(p;kCt63?kF;}c@;y655)i%)nBBm9P7)~XPbT7lb(z$kwacy2~#2)fcY zO9N6XFbx=Dd3ZST+39#$OfA9iAUO{xK3yy3dMSw%B;hJesI&t1852BCutd_Twcm4-?tkd9{-6Hd%sH@^K8B@g3w5CSe z=2;X9E_7?!LL0Eq*~?#S=$2Kta8_P9bSW9*c_v!)ui$x)dT`Ke{z!E|)8_U%9b8)o zk9on@iM9d7$crobuokkB#7mYp0bT$&=&u=}+$>Q8=hqTSUr9SaXJ$)!Qy7Am=HDQw zxuh}psqAz~$T7N*jQtQ@x^i>KWNM1%0#YeOPYf49L&*XlOT~<^d<`$a#bi%{19lvS zT#lL&a&R6enTa5@EuW9$f0)x#4c#QnE8E>rIE+W?DVl?sc{MIQ`*J=y=EDgAL$Q)= zZ)0V|p3sHqc#)^$0zXN`Lcv=+A>tsD1iIy1CP+$M$m*1^ z3omFX<^wD_WQnvH&tm0EIEzDeY=Sk5b(6gEIMzb}=NIH+V3f+n@i$S$v}fY|k4Kkk2F-@KsH#Y-B&+~->c+>Jl+gs# zr*IYzCrmv%7x`!|o`pkk{XM1JN%DXx5bQA1ba-J%q}9ui%--%)E2~DoZv5EGpB!Ub z7e)F$x}M)S^}nt+o%sHnLx+N+t32w|#Qt6E%OhLau}}TYs;+0A+;-Dr z%)$79Z9UpXK_(JuEts2{U5b<`%Rql+HvU5hnkn^2otwGB0wHRq)XP)wvxK?XL69*2N%ZjPm(f|kK=BxnW121933#hLp%-u~Oo=y$!%`mCK$wB;A_+Do3Ap3*d z<+pQqVx8e8%C3c9*!!d_N8#-InaM%)7y+g#@(uAgt}?LKyFvfmV2e^WorQa_!`#mVDyp^RzNn!^+PiK*d$cjbW-w{J`4v3QH+ z!(0~g+gidaPg6i zSl|J=s|TR4kUtu>3y9@cn5NSaNG;@W0VXxpJeetU((1$uKLn~chT(8J)3ncS$RS@(u~rqF>wh3s1F8m<>7d{Ig4QEjteIT)wacR+L&2gy26EDbmf<)eVvf9_l!udVQ2p`(e5E6RXMmcNWra*fBv|3{-~s z?lGK(3X{#1?EH5ciVaz`_4pK4lC>hGSO#22(`4Mm1z5naWP^y%>82K7)i|Qm)V4B$ zox&QfH8J@5Ad_I8W0iQFM5?`PR?|GHLm9$$3%JIt@)Hhx7l zE};1Q`bnH@E$)FHvT92lx?$6sFxXv;ECF{h;2JQ|?UG*|Bs=~|>pH^Vkt5-ru%oWs zcjTC0DTp3{pMa4gIZvYp|3#8XrSI}l!rPbeJz0DUzuebe=Rg+(TfhYT$S;RGQMaeD zz0s3gnJlioDclFZH(=P1AbJ`>pJo$6P(A*PA_*rJkG8)!I5>Fp!NJon?@Eg&%|&nM~57?2&dK zIKmYQVZN*cG88un{tB2?_GBg}U&@5}3;es2nMu?e&b&A|nc**Bwl3nTvmyNZi|{-A z>WAN7!oL?jk85xdH=d-#_5r@PDz=8Ib&Cv(Xqf6%>oSkI$=;`zD9Gr(~Q`pa-b4}4>K1OBd2K?s6 zYBNM&iJ!~oAxOW*PZguF@Yxyh8~$n8!~{W8`Dp@Z@+#n&l+JoZITJ8htaQH`04S{? z@*g&+tafpmG=V1afboWv_EUI};PcBKFs?FD@IoNqFPFf{h<}>?TB^4d_o~bB-@rN} z*h}Fh_qJ!(LRf0yY(5W(i{MorC!GW9IJJD!JQ#A>S*R1Bnc0QB)nS_3J0w`-ov`f$ zfnxx4jCr1BK7dMr7@ebLP|;l@o2PyjDp~oo?;wH@_ZP8t5X6_Tl`ZS9Ji$r3L~6iK z<>N9jovq1{WY|(A*qV|~l4G=cD#f)6a^|!Elua<<4>{+8Nt5BV&kH9FD{FrjtkP_a@mELyLvVY|x!NkF#0DMlQanA%nfO&pSffvu1PYsM}f$$muF zEFq;AxQFdJWlU{J4eYaC)Gr*JxMqRY8$cJlc6HWX#pb3y>kCvVW z*ia((syU*SCz7F5I#!2OGFna>68K1qsC~f0%RRRmHAaRtIL4amAF7Ku)STXlP<2Ct zB?eyYY4%oxlz>;~t&X;&dRMI3X3}d;YK<0`x4Nda6-8^RtGikkc!J*cuY83|m^iHD zolvnXV)dq~P~zaG#cj4dne~=n)5|aaE&q*r^#XJlsZ>U@C(tlrGua&he{FSLAndKO z*;F>YO3T`|4C(Y1o7>a4xutIN@Nk3KTDQ2Ny}B{HrXv%NXFBvMwZUjJJ4{xc9)iaG zUbi(Gz!E^TwaV{9(MF?jPkV+*ZUzL3p{*r2m+p!o%Vx7&Pw z|Jwd`x8>d+@W(7>r`e&?v({BgC96UV%jyhvcTKqcncPsLFeh$iKg4HS6+09+DUN|J zi!%iYl}VBm5)+z+@P;(BeGK|b4T%rj3hIRiOS0~<0n4G{sb$;kxW#|FB-aust*J zM6}8u(dpdga7|lq>GF;HTG|%3xaw4lTDg-|GpyC7HmsmrC@X z5_k?pi7l7PJndv}IuV6kK5>T+1)0h#Qn{}T6TI0fvdmA3Ec2f%Gle0uQ%KP;3)g7J zOwFx~^P)d6p7(ag7yKLd6Sae)jJ{_oMu1?0;V=R#Vho#uEe zEfqYN@sogc=?W>!_!Ad1{JY;OEk1+gj4}NEzh215_pGa>abXp4D6mLJ&XQI;VB^v} zzj&0yLNjr1K#+(7x)3=WHN=DWpyqpmaYF&IroDx{R=}Ab5b@^uUb6cxgj=9cRVbSc zRq;QY<_%@OJ*pBO#qm&q%e0J3@V_FQ&KSd`oZe<^4`5OGRG{7H0$Jtqf3TWt;WeYc zCMO(EQ6W!Y_tI~?!E83@}&7(EMJ)Kop(*V!3CdC590F7uPf@&{PsW~SW z?eJMT5@Z5czv(P-y$Z=cl>9>S8S{pvhxkhdCfAT@X3n+@HRlRji!eUS7mMfoPm9~U z%&Db^mVsIW8IcT2n@iE4=*E2v zxLUh~wVl)uSB7jGnh*!)xVCY;K09gB5nR`#P(gAE--4e;YWDii1S}}I)?G}rf-9Dd z^vAT2LL`fu=#LJkk=1IsKogs78)d%QKH8Rz1vsO@Y%hGYa)T8HEk9Mh<^b1AYpqI zV+7?f98I(Bz;w95{~ZgzZdWR8PelPHrW#e=iuq}?Qg2i#RXulDJ*u^w!^Qi&jPqE< zT@UotGkT6;8Fkk-t=@s|^*c4M>O5RbQ6BrT7;{!>Gsaz!T>#vTq)4XPHVUE?Z9`63 zHWF#0Wq-vQ9CI>W^sg=lw^rq`-qC|AW7I2~^E0<-W~o$^^XOjHIQ{&s4!w3;7Z$r2 zPJadoI`!9yFC~PPTZJ$!D}a91wla9E35GYJvwBzCT6f;}@%whR+E({ccZhR{qt2`R zADZrX{LBr#y*HeB{Ekaf{4Xn`(L^kha0lqs`5uyC=u1gQy!E3iJE&97y^qfNR%5>e*Y zPVuaq*BwHD?^QHf1IqGG$ZEp>oA~6G=Ardgu+TU|$q3nUDal0pCTiwG4`wc2%#@k5 z&StZ@)9}4quBZ013OmhUn}oF$6ecbvr;s5*Le2ce&!3)2B`bJDP79QZu>@ZwIGYMB z3|Jj7U(5axTQN$LV& z%&x_2p%Jf!BIdJI2v*1IyJUrnN%9?7X4b~Z;Ean%7`M{Ho%y_S7488#{IK3pI4r;y z3V;`9#C>LgCiQx6nn4wRfZ!Dg2S7S0r9P2|M}X2Ep@-+oS%B=2)cJS@C-OK;3-xzE zn7RNe0(nltRo^4OaW3}M)0MRJn4jZAogUz1}Wr=_U=LDpyYX~Ac1q>*~P$M=!5wb>(nm9 zx%-4yTB(fs{ZalpPjBtnL*|B{`H-CrdeA4MyLa>BnZ1K`naNBTzm&?@?%i-*khLE& z2OG?X&erzAb$&l@8r+-tJ-+65_$9V2<)dR(9yoBw0|AEa4$~J*<#RCf*Zg%}rRiwc z>&%dUgYXs(bX_wCbNlf<;iD!czGrZ7P`Ilua7~xM=LtN{w4|-@3_)iN6~UKiMSUnl zv$5G}93uWrxe8LI1^A!yuc_@^lg+H^;$Lg%)_hX!wJ-r^09|0lXe4GozJgKLm>S(b z?{3)Ru%RO+Yrt9fx>Fc8Cy1WgK{W9hWI$mejRtJsF&Sc=ctkN~q{fPnJw?)U|C2M_@C!i5E}W%Nto`^3(oC*j5Z?IvfH!8Tm;(~ieWch<%kkf96w(h;Ds74uDmV+l4HwzF#%8CCX(b5~VstC_#B z@wSf0jn7U%o(Umc!#lZYNb56VZHl`8&J#16?EH?p2VVZlqu2D^w2CHY$nsx%2MtK{ zA)iE4(F|+h6|zSNEUdk9(g=Zzd1Q(ZnJM}n&@~c9wE)B=Ez81WX%(V4V7HIXk90*A z&zVyYsX&|^{*z3Q{C^Tv-A;8?J5Bnekjq~}-uo+2RfU{x0z3e50?P@#>?SO`w zn6GEyQxL~6U!OuOwV(+ZelpFPT?tJ`g;(o}06A#k?=!!zjC*q#|5B9OMC{L&St!^m z)g7V=Dw3^Ga}>mKz$}~`t>902AHH1REr#_#QD?vk3~U1eoH7AUCNRqQ3xN3t&)tJ7 z2A8j}+au8zZ@gju!Dnl#z1}Bp*n9BMhuLY8L;RlQgDbWiI=J_SC%xY4nr9F0zv0Fg zqY=CP96WQ7a!f|kFGO(lk`|dkIR$=lNjBlM6EUu@=gg;8WV$i^p$_s!!vS8^>1+@~7S*lO)N)rj+pk zu>)OK;H2{4B=h(c+1oKQbHKweu}@!#(^&8-U80Wb9MFQKg{GA>#G-On6~8O_o6iBW;%|Ocp@ZZ-7E7J2c^J3(*c#bR?uWV zph!v>^DmOzgH&sqg$me3NqD1x3E`aSpAOsRFs(4J7S4)!h-Q!m-|;M{w)v7coD=MM z%tIZKpo*bUp<<9xNniwkj7TlMjh~Xv(T7E7H1?I5?OO_AFUoHOk0nOq-{`6n5>}hY zEZme}?4vUj!%aNG16Gl{Z8GN8&YAn7BA;4i5bJS4;(G;Id$BkPNsjSS2q}LcHJF*f z51^Z1b@w5pZ`--tWo3esg`c91PIeS`^c9qg# zbuHh~UikT5rW&8^Y`ej%*9BrR^VGIYnWt=U?T_%aOhdOvCF;MwQ&!K5A0+aV*pt!w z7*D3~UfaHFs%#bbxsc(1XO0C~gHma*S6#EOz3{6HNh%?VZ%Ev6&SMq?00I?KP#4`=jUJ3uCae16QiA%FnYX!^(%kn~>mJ-n_DDb^{rDy{?BR|>Nh zoI1kJN@rs39wFm$GLf8lChaxbXPkiVFgoK5J63iaf**&#n|rn&Seo9}3@*Sa~79v~)X z4gd;bEqt2tS_!-1R6bvLs~qo;(hbpQ(pf1}Z$rqqD#aJTG+2R$vzXAU-3@{#6aPH1 z_f!Isz}LRTL>sybXN4BIB*krr`?d+JDF8aI3BeEsyp*|cB<6=3anPYL@Si}x9hvCw zDFIFpI7U_T*_v$I9nZ(T{MSlBBi<6d&*r%&3H5|oqy@_sOB8EyP1PL5z_6w&R#mbb zVkH2^!u%?%{GV7C%e>mzUa7uu(@=`dRcE_W&&O5*x*3HHgK?CbeIJ^Oyb ze+@P7=)Nu08(A}O-wXcS%^TBGja?H7-ioEjANL-`6Wm+590Ra@*%v?B9+_zEy*<6X zZO`_@tC#M-H=8ZI{RFT;_sOrtd>F9w4YB~pNRagmAb7xS8$2E(0&{K-%N#`rIF+<( z+Jute?3l){>16EFfSb;IAaEM*J<2Qcc)rY&rpk6VhTn?w)M{d5hg`@I zXBSaLQdnA3MO5l&(k|>-kl-FSF;~X0;)Vx8x6#Ev&0pldV|0PkmG4dViht}Yx!k=f zlj-tBdSn!^{IRktifij?GESWY-vO{4BAhj?N?Th{2^Yd1Mx+>PlxE)NFaEB8ntyls zXa#;?2sF!CTArIM+_x_`$sA!SFt@vmx1zlta%XfB2~rGf3)KoqOA-(sOh8?UpLngh z{4?U1&jve#_^+_FnjF#TYWK6Qni|*VUDf;%IMmd@7fPS(BIa}W?RoxfxDM68d*P4p z&LI3=#C`FR{iZPNtX9lqC1Hrr&mkJ}Eau=zQS_!)VdJ2%48MPaBC3G-vR^tC0(yi? z8sPFgUEQe!AWNwz<*D-ty(#5Yr}6{<6$wF<;Rt@wgzy9rm8}6x)WQHBBk$pU+rArj z2mx5#2@(_myJeQ=^AZLLrBRH1twhCHOyjW#g=VA4_eqidmtUBhyo4*TCQn$AWV!Q- zDiYC@a9aicX7M2SumzYzG6w$E*Qq;(HVk#BdEwYe;Y{;bZu~y~X4A45^%lnO6mBt} zGuDgdEyJj*|N5?vz4D4q?+xE{v1Q%j+WXjqY3<>qJpU#BL$||gcE1u{d`$})7Roz` z%kzOvhxW2iCMl4N1pv6fW&3J}rl)T`Jk`CYx+c%oSez~Cu_1^VdHR}-ql-F|i_pzQ z*<8dGRM^WfC_zlh3O=uM6>jepa7?|H&(Jypoem7IB>ro*} za+VTRnA^&w76#dx3MKyncvi^gC@oo6h-W7xrofAPn&dl5C(^8w1X3rJzW2X%+sD7X zi1|Zd_Y*h2|KyXyH;*WNg)hB-^UcgBpBOHD>G0tvknMf^Pm0%taz(rrtdEIB<8>l| z3$}(}iyg09;TV3s$u52WTgM*8QiAH(g%=CU0C^~zorV-jh4b$pIl??v_~DTwFQQj- z?-Lrdt=B6N*~L?Hy(q2b2&4vnxYQuKL}LJO>{iF{n+e4L>zMk>Cp(iV<+_D^p*BNr zrv3D>F3a(EMyujYiRPwN9c}H-y-WK)bItP4uK(!Gdq-9_M0?rCy&6YPUBuMsUV7(% z`oj~=9Z#uqeH31v(7NJE||%d8J6m3 zigz<|iTuE%sOn|#*RC{mITw^b5H{c%LEDR_sRKGwh%JdBgdE1be{95PWAx5jZr?n%EUl^0b}RLsCCercJY@D%+1#gB-j)h>LI8n#z+V^s(*3s& zXS^1jCLLB9T`^@SknCT#`}Rj4Pny&u2@$P(gK`{?salA)l>#SJQZoBg2`D~$=%YJU zZKw_gt2bQW_u%u5!C;_zV;k^3BR!g>0uX@4UvYu612qv+(_SyhsgvZh)><^yE-{eRh4Eyk!&168KN1 zqpm7qwU+zV07hF{kO1XLA2Tpnfz(HKeI;oCUE-$*l7)m3unNzJMK2YC&K0uGFb3l9 z-J+KY5jfx#mstV9=ts?b%osm~E`fDLo(7tr)nz4}gYI>JJlUfdQS4A0fGFTnlRw$` zklZa1889iba~bKx4+R#-3Ft_W=zZxpJ;v0nOf0I#nt{DGhJQ=j9V zO~^INKERi&VzC9W82YBgZmX#?dyM{0{)v`oM{}>qYO`5Qz0Do5=5NI}q?Fs(mZ+n# z&ck-@ZEKA+HN{%n_9m2`x<*H|h25r1ZP;k8tFa-Q#nV}3s<=5b0F)NQ_#bL&>Z)x> zYf846f7Y?iza}u2Fhv`qro>oaP1U+zx2=gY$?Z{%(iwJ`b)IW%{B5>tJUX)@>{M!^ z+mlRuO&fYqXREHO)|$+1Nvd13|EBE2vu^}H1CVVN&-anEtCvY9U}A|v_zKDUNbp)< zig6P#7dsyIK^6j5!mTV9p{7of(*jY&JMKcMIB9jrriNZh^gnRhur{k{4m5c?o2%7> zkDTmYYq2?~^M7pgYX=VxZd{dU(5QWlUZ-wZ<82vhTdK|4l~@(u*m&ZB6OGJxQ0MeE z`qY~E$>jrw2etkIT^JXkH}|A0{Felo=w6*8Tp!k1tjQi}Kl22!Te@hz%aD~K>?Xvd z9)KoFCT5DZ%bX%v0Qg=hxeDJ)(gXw=1Im>otH6mkfM)^f@L62;G{8(u1E>*QA#!vdl7CtzYtOH&3)yLWXLCte z0AkTBl+k`65hIIcKYcy!hS4b&pM~2x*5N+_2%nA#HVL>)0YK+Ev0i<@+AY zH$_7#vLj<0Fa=}qRH2E1Ti1m=tGkU0(`2?tFEnrdM`RrxjAbW{gx4a1D-U}&Ps83KV0aNQ z)iZLxDSDrwcptbObJCqZ97Jc)*+G2o?+ULoZTt^2=qx{$DeBa(D38;uj99Ts5}n7% zIU(VSkVgs&Gf8p;cy~Pb-PSNOhG(95J}%~)YmL3{_T$;#@6KhF$EW#+hH%X$j}1$? z?3$O`pE+o1^~1F9Z#DH@kG?C-?Ua7!)p1}i2C~e~N=^vjpC?D63$cV30GOU2b%NJC za=V-%x&l^$n8b74j=ySYyZknE{o`v(WM?=*|CfIgH5jJWkI~diOJ<7LqQ5fG)hjH5 zj-W^vDLL^hjHjR^mMyQ0b6E`W;Gh1L|Jaw-9P=apOvct0m4d9~ma-q!e|zmz+?F{?uIQIFE4lqM>tB(BY=!Qjb^R|A?*_Uxcy7kQW0G^b z$kN=0>?G+3O(cPC%xrLU-uS66e(J_f$A-b{Rc2%1jM1#RK4RT>YM*txCXMxdbaVXC z=RS90aPY+Eo_jR@fx+!Ie1Kd_)~{dcscmem721K)tS7Tb1*(yBFPZGg%E*OKnsDI; zE@ou{ty!AvH`lMf>8_jB$4vdnrQ_%ne=B8bJ1|&@vv6C4;PEE6-G1Ugr0s|3+k{Kc z()H`5`I^JLS}1~*o9v{KZix{uGT5@Bv)&>azn zmL5VAspO{S#Zmlkar5TR6!QTdkU2Uo;UKPulwKY21D=&47Zz!z-L*9T7D*!6**Xgo zi}x?l3kL}8i!B`;Xk_aLDl@fYYJe4w5Onxd{jvro(qI2ngUpWv_FL6hT8I%WmCjx! zR%tZ5!Ia=6f^ibUZ`MBYif-nt_7=(Zg#L{`w)NQ?qp_J&Se_J*!`X(gyO~pmf4)IfI!1mAF`Am2wwI9Bi`Q1wyyc8bV z@Z^n&#+mf^XJ5is3>NjJ8>N0pTxGvdR_5CyW0bS`_s9~FQQAIhF`s~CNwkMFfG?=c z0H)E)xFS|TY_JzuEwaxZ)oPtxT}>8?^Xyrd+1$Lai~nzasxvXRdD2)xjQEUJ3s-e5 zbm7Yvb~T&Li}|-A$X8g{Q1g7n zCAn2$ZgENIk9C-5j_k&@(#7Ke35G~k4C(Xw<&rRtKsP@86{VK0)cTbh{hq) zm^#*rK!2`<2xb?=ThqZZOEu)r=7*({O&(sH=FIIy81e!1D_0H6^AtZ zY&DcWw3j}SS zRc5GZ$EHP=s?64FN9vW|6;^1U6Qce7Z%Lrd3j%XuqviY`FS< zo4ca!tMAA!&t7i<#ri6G^wv3=K`mklUCo^BP7<{DIn;*f={c1KJQtp;pfgWl{<5_)KcA5CR?*5bQASJBL^O1e5gwc6Fw&&%Hi?ZSUgztLLr>J~ zIiju^=$Ovw)LqhQOI$>ja(V;*RfC>;TJ2KH;sVSx6J#a-UX>e=^wp%YB^0uF+TV%^ zT*8EA`k_1z6rRT9(4axDP+VnS3f?WV_2mRSYgg>bKdmnj^>mrXBY2T;Q8S;;{Isku zPbgOrZ-2nKqWGu4krvAW8lv@ zD|!A5R2cb48_E3N4=MwoC)-;IfRcn#PLZ>#kxK;87Jemew**03xJbZDSIeQ)DXg{` zMPuC>M#Y+0Te!&;sY$kVMg1m?R>?93jnSsnn5=e>(Wz;+RjZVpk+jn99jfLw1`E{~2@^hsADj7~D3Ug|+InYL$Vt)YRLn-4T_#HI%IBuQeNn zBE4-sqlaNUrfU7-NMAh3sqD>dEi0^cma(~7@3?T^$5%Bj@&(%>>)ZRH!z;pVzIva7 zL3*{#pmWQ7sQM`)DM1gX5xznYZyRy+5-+lj0D;G4^*qj{0nK->;iPoWBqC)D64~(=_>&*tM zP1k6zRWoL-yVhXU8*I+n##G;`Oe*AU3Ha6eMt6tF;0#tp0$5LTDD`@uHq_LbX$pBA zdL!b@9+Ssc6I=Yv8>+mm4vXKc^eyZ<&^@|z!MAsxTCrf)f^F40Z^{|0X;UjT z^aqzQ)!z211oHRoXd7Iy-!KHcMrJKjWxssUUWHGL-T?Y%ArAVB51@!nuh;QEen5jPK2u@9 z?)BQ4ubF%n#G6Vn7lFQ-WI|W?QOM5enYs87ql?ciX5Ltwf9IX|=fzK;@KYvy59;Q> zgPikXP39*k`9oRVek|zFAo*$h55H&GnjEX6+WTSFuT<@4N~j$Vtr_N9(jo-B$nvrv?x|mtV2`yJ6dey z0rVz%^8tD3h-3C}R#JTSHJ(BIYsGyV5$n>2HS*R9Sen*^wFz;tussnGVE3BvcZ(n< z8DCWbu=z~(#>t_fJ$Gf%M+F4FbJ-!C*{mxAY5z}R%gfEW1jy}9h;lUtckHZOYL5Efq` z{h6gOSNx6W!9OaRv*-*lY~-`xd^{myiHs;m6eEf;#dgIc^`XSGRGOHWIGFO>#Ml&5 zODA~xtp z+qCNKwu$9it=q#38(SOBH?%fJqQOA4t*+8lwjE_xJ*3yy)jRR)JhdTz+opHc*Ws6P zq{7t|%bW*gzQI=S&;g+dYHA+U5h8UuVSLfH+@jc}IH0)YFW;J+e4Cl1EQkHiw1m&; zqF=cFqD>nws>UN?t3E_qd4t&Mf6-Qcy{Jn6T94b-fk|FN+q>6B$T@T(PCS;SSz=*x zkmqL&#SgK9zZVI7Pjw@EED?*~$BBeZBq48Egbmx%)ZGU_KSjX?g0~>Hk$6B6L~*iw zr{c<0|MR!-Vn3_hZW*4^dHQ-j(dQ}reE8PUdb_%zFqt5=(X_Hu@6QL-A9LZ#BFEY8YAVLp4FM7erA z&eTKe(3j>}ka%Xd@C>;|Y6!|vgGvYFy9R!2Ca4MJCyZC#&%1}R|1w;@-f`vQ2ZMq< z)^w(ltpF3lb3?#yv{`hzD!1LM;%sK#!z+N^=nEzVv(c^d>Wm2=FgQc{auDtZkJr|M zX{UJlQ=h$3JpK6x-8zFJ^dF*l8r;A#6r0rpgOz91yxe5f+dK}ZP7f%OA68SeL8sDb zE!y&)w5w!8**0Lt$fS6C9b~sq;R{Fi;w<(1P$J@mTgX%JNeEVO{jziUzJsno7ptQ= zQ8cRoWjmwNWXX6EMGGU`c@K&jMvf4ikKjwLt%~Q!Q_$E#xJfw_MSN}*85yf!WmT${ z2KSI|y)3ncBJ1IyD)cp32|uHMQ*Abke@UXs>!_kr@n!O@71>xV{G+myD05&EvgN*T z3vnKQEcxl}axFvX5G!S<^`_fC#{^-(#keRzz?+#uLF_Ijf!*cNMB!_BHs;6oJfs5NF-h3hR z!V6u`Ki~Dj3z_Yuuv$0`|BHIob9ot5Tv`U3+yC`> z#ZG91FhNT9ph#6P4M?a41=A@r`C8X4_%E}9-fxwN_$Nfx$?s&q|1!)g_sdO`K65iV zeY5nf^_wLkB*MOv5iQ^qmJ|Q$l^Yl$KVA#81hDV%!>B=J$1F($qAAH<4q4)#UVQ1< zSth5+Tn=?7SMUB3_-{mE&dz5Lk;Qv=B0qK#mpgidErV&he)M#vdvGF~nYn6LR9yS8 zf%W4|>+^G0e!Vr5{m&b3ICOPx>o}u|bV}o_{-cewt@Q5L?{*-1=PvjmgcJFGpojgy zx1|q6fw@3#iHVEu`X`wUw;d9D(Vc#VkMD#=g*=dXkR13H zH+hi~YGBDALVwf1u_zQPp0U9eU;(#2>F`#ztJF&0H4WK&V!ngd&0clZWTb80L&L{G zP%>-3`{clb!ZdMV$p}EKqDm7@=Gq&-KOz3u3#|9(;`aNj4>X*4QZi}RkNo5A7moC8 zSPPKQO*~%gNRE59`oU1d64fsi8v-jEQ~MD75JK1&&zYR71^WxF8sv(4gS6J*%%gMS z6^6pKFRsN54dWuRzmym!HgBv|#(~*2*y2cTy(1^3Xs>Rv{LbZ5`-*WGcG$9ns^TfF zQeVs=@^j`h*-h~zKD68Ed=Kjf~6P&)LWGXa3}gfDj>b*$67a~mC0c*t;Se@7gfze zsP!&XJ3NhH3j$u)V@<|9nhN7Z51Ulp8-6jXQ4nCk3$_5JFD}t5Hu%fCd^VTs@V=>q zg{gf%ha17CD0fnB-f2|<1yF0`Y{XjDvHR#Tz#luhy94dr5fB`Li#WQG1M!5}pn^7c zr0U`4AFhhP&18J8l6MV;=1^{8>z+^F4t-0YLP!|p< z+_X?%lej5SQx7*ydOdi9Y(6}oshhJqJ)R@2y-jjUy-UN>Bs;}(B(14u0a2!%(z$t6 z_^R~G;6QbxB6!y*)!W#dsT%ewjn0e;DpyQ|rwB3{Rj}GBHyw^w4_d5N%it8;5XE)9 z0gA%*3|gm3Aa|BD5(U@?rOt*$1SMiLBVnLrED3QbnF@lR@HTdzLPZ_nHJlv0mwj^y z$IuZogL0NMlL{W4VcDV4JC{)OUM=`3E9d`>q*#vZ=csqaXNbD={`tkZFD6-|VvJEK z0NKJ4W;D56zc5vNhNAf+CYwNYp;$Pn!8??!NfhP`AyB;M`6*+=bdpS5)&xR+M>LbH zPD{-Kj;9Z+)sUMf(!*o(hl?`@*f6E6k6y+!a$fu`L2>dQ5|CR!^~)@z?=u! zK`1)N%Wg3TQPjDbh!7StF4GIl>B0^`htsJD!7{icTB@8N5hOHnA?FW+6nVJT7w+EO zIXQo5Y2k27=h$FJZ{~QpkycSW$Blm~<)CRwJTu*!8B|^|F!W+?_aJ{DJM=L__tZqa z+CQ*=GNIUOuCeizyX?wSay@craul@6GzPtjA{lv^U(Xp-6r?W!z82AGVlfLoQh`E28B+r!$HKTAwh)P zQriav?XF{w^y;)qmo9mD)XNhFkE8HhK27;$<+5Jcd;#-F!oo|W@=)|9X(b%KkS>Nx zN=s;9I5-uTD3toKrO2243YfYUGR@<^8)Wrb4Y92S&yYT(f`jaCK0t29vbE!o;X--B-j_Ha)`` z)%_113L3%hM*DiIA_MK+lRc03caBnY&{uDkbCr?Z*2=1CN2QO~kffCXluqR}SlsA= zz-t;Sns1DyXYCHJ`|7wO%v17dlS%0}#&Z4T3Q}&gm+47u^yowVrFh|fs1?u2WG%({ zxD>F9E1Y)_m?U2Jc7a$rj_XfKQ3X&dLsNk-z}9%B;*Qck9PUIaU&B2Lytxjq zcS}%j+imsT3LQ%`ghT6TqxIaL!%n$|HXD>2!>K6-J`t%aC|W580aB@;RAIl~X(maM zAoMJwpiLG+$;cJC_v>$K+ft*#>m?oo91CS4M7=@=UR&PlfKOQ^%}}hGQ&~7T7qCPX ze1=9TiX<4lTj%i6w1TFLoI=CL5)=zS$?oZg7D~13IPy!Fw+1o0&{VgB>|$}rYDduo z1S;Sp{p0$b@tTw+hW2s90s^qZ`HGCM6t$4ZM|glk{(Wz43S>^1-1lxTP);dll!V1Z zD;PK|34$VxF10CFV_Malq@q0}6sP#DaVR_-`5s?gJIZY^*S3=L%u45rkk z;OV#a`9FT|PI3k;m5A{g1!tsaIZJ!WbuI%#kQ5b#&&Mi)r8tE}E!QwK%_sn%9ldhc zSjHK@DUOCSCMi|rt8zeWC&%G}K?d&5n zwrfp$7F%%$X?!mr3W|TXHLRxY9RKt$H`Iguhih%{2dPw~es3H{nYJ$O5m%vkoL{V6 zgO8|p62B(Smuk6|);J`Z>+o~nL#R&SULsYw#JFlD4!jJsam)>PrYQol?Z}DW^0 z&`yyfj2-VZNtVtfm$!C2tZ=lsXQCj=4~v#`D!fdA1a9=PZDZ0_BYr*698K+E_WM;EU-I5yjM=DCr< z-7U$Jcek}9W!=9GVHKAE@Wd2|>K6h+ryed32(A66dI+s#)PG>S3j#$m%V>YML zmi2g+E=^y+{}JhHJ|wQ6{>&#&EbPw{*xdWo?@mwj?3V~^t~hY@TyS;+f!T?@(a6{_ zOklR5#qF+N!USeLUZ49IBCtT;AsH=m%R)GZ1U4B=K@BP>(GW!Fc^Jze{|S-r3;;15^F`I|q*vzkF4R1sfCJhYa1Y9|}BN zd2#_%d6t$uWb=j3bbUi>cRKA$71h*aS?^Mt&|lHKR2#ZpY6+VMMdAqNq{oC}A1}W0g~>s8tDQUXvB9^uY5mtApaoz^KYW$JW|qPA z;=TCw2>88d0>3Aph>MSl&&0u;_*e%x3my_50$-NNig>s2jrB)>PSC-N(1Jzh6X0b@ z)`VA-NjD1QS?^d|L$xY$Yim^eLT?Tl0Tbf+VAcWH9HE-B&Z@o|rK@#pbhl#5u|6vgv*K5v731xn2&6J#~ACKRcc_iD3}XG6#vVZpp!Bk1C! z&PPg+m2mz^qy!8}DWO^Zb0+PAf9bBSKrk2}k949>^&nr_Dty7o30JvH|ang z>+4PG1g_bHt;ixWT6rGUu9yo!1m?1R6(Ln3J~Fm4HWE*&LKXelxwSReCBOr!`r7e{ zmEpliG#VKkUYQ)Ltydk)t*&msCz0Bz`tX+0n?0sGHybMzD7XX#tDA}wl;Zf2k6e~c z#to=R6ou_!5rj19AwA1qZ@&LbwfF(-`(0Jw_T@G4Cr#kUat?MLI8@if<{VfN&lKmE z0hw0jgF4oTOeSDm1qTTS87Z#_E34S#K{`ErVhUc?q?VxMF|u!3vh(R;+%StOaasa- zGYV)ro_+b*4j~nppBx^ZoR1{IUz%I`{b75mZlIfFn6iqx^&b(SdjLMq?O}g^OLMla zqKsj{j9yn&Q5UwDc=q;(z{9t*ywTb?Ug`Q(V{2=pFgLO=+tf6>FfvEPd*+W%UmI(G zYCQMN3?QtYGyq-S%uSAD+hW)5U7GL7daMLgcTH*|)J;ixVuB{2CMxLl#W`?5rpQ<0 z=tLR=<_a-s!1j&Ark9o?fpK&%Sr8GD7`t6^;~#@v4YeZ;4Xy9`Lr$l~;&g`m{eKS* zHjLCZWC9f)cOW)B+S@xi9jkln*~k94O_C#ccKpy}`-rD*d1MB>&gpoKN~Pg-oclV@ zNc-fW@sXK5{XL>`Xm+Buc4Bs@rL*(wc4?2Ld994n$jm5$5@`}FFhDCLjFYp-6iC9m zMgWOGcE86Ew+vgu`yCDg$7ZMgf4T;v%}uH*sn6t9$*#@7cF zkk&_`vEd^DZ6SSzASsGpd+pe3pkFlI_{gzGZlu8aiue?mC0f4nhWH-f-YD_bPyQCp zW(mpb;*tiX8gG30aBazqN=q&n>}Ql96alCPR8qlE1ONoZD7b__d3I0l(7w!pfIq?Q zbYdMx2a$&=GV!KFqA8xK5K;;av{B(#m5P*5INlxHbX+V$Rj2d%2&6eEo082Sj4w=| zyGXSWlZGgC7YT;_F8$HD)6wKPQmwEIEQmi}=(j4=B(#I&G%Fng6$=BF!m;VUNebkM zQd_vDR%xxxej{6Jz4%bgN0tWWMylD5W+qg`@@p zD(!*g(F9;e#xoMC^^s1XIDZSWuvlbiSv)alkAXi7-hW+V-={_o*LH-fy=Ib>(<~q!-2uBY$ zUiZ1|^ixL-R--LY(Owx9LKcB_)wv=H@(<6ziAYE6uJ5j%>FW+vf_Am?X_MQi@~G@8 znj%O56fDP8cm%EPTMk#!&xUJjWE*3`owAH<3D>;H1Dj!qM6e(*T6B=1W1ECg@Uxag z$0CWLb2M6E^LbDWlolL8gJ$-ai9wZH&{vV0(qzOwiFhmpzR);d+jaAUckWZu#`-8|Dlx%~ShUM~5T30zyHkiNsHDv*=tphxjvRrT8bo z{KTV54Z(5-s!a-phTIc`)^NwYN|rRJMsIBIJ2|SZ|5%STsL+};H7RRjcgW0| zqUFJ_F{GYELcAi|7pO4Qrp708(<6fgk>~D+-FEdiB%QP|t!mUJ9JvFm(n6p+4DGLEuDJgKxKROF;d zW9JvHB!?c5P)6`UQOd@#pa&}Q-#~H4(LEr(&~3f_QSsEkuP4T}!aZl$zXJqq63=U` zyjpEg>p3nQrpiqLlXe<*uroTIW9ZjSKd6p`Y`j`y&>2-4ST&ezxm2!`dg7RSkPKytcZwQXiUyt>)&yGK<@g@xCd%Z2L1YZiya ztp``x{kxkCW|g5R0~;maY&R5bfDkkgwiaf`hw@voatPJNI8J%>(WnYJ)Dk^VN#9g{vByni{WK_%qsxi!BoT9Jn5yj>d~8(9TT*_W?~I2bbK?W)#NG(e!p8=JUJan~NHBoTw4=aDUs=XQ?^SvAGyRd>5!LAnI+DljBlyLSYo!leB&o z+_$rAa$DsR{~P3j%K3c+d30bP?vEml4Shzcje=`SqIQ$etSjvi0r9Uu0WYo)|4N=J z?L#ve#R>zIfKk}{f8H-E`T%&GV_;-pU;yHvt=CNB`E9;3aI#K@cZ-rd=Nq<2_b~&w2wC0d(jX@JMB(OsS}5`hNg5jsjR@hk zy6jR28QATW*}M?$aCXNAX75fu8O3J25yD+FLbzM(-F)uJ%}$1pseK5U`DdOJLY8h! zjeAS8BOzp6!mfvKUn!QxwuF!^1FOx}gmC|Y5VBtg;X#-lIvqleejz+8|HEoO!uQbv z%$igE$JBc)g&hmw@$!t%6MUaY4BX_Oz{{BY;zQvjy|$&7CSyb3rkNY;Y*7R0d-j)l}J3`=2qg(ost z3yV!oVq%hMm%M`E_FPuhGlU}Y77)r&a~J zR%*@Qt}MPXe3i{j74@pnsw%!!<*d3rglafd^IVO_)#*|lx9aw5@Ts9z4O-L`S5u9e z_|~#li)OX)c&SkcFT-C)y*gs*s$ExnU0CbUzn+@)@vjd{eZ6``o>$ar0Dpr)A-tM{ znYq{Wx*@F^(dBh{-!M~+acv^DDc`2@H8aD_%wlua0*;n+YQ^tO`C5x_gJ&DhZRpSz z)^_HqotbJ6Uwh{r5=;*|(7hvVJHpe6cAfA`F}o>rNfFx_?#}kQ@b4nFi`nU_w_WA# zicdEjx|yZ!_TN(HEo%?D^)RD7BMzo&=qTl><#FMj=K+~0G5{T@KafiMr$_kpks^ll8&zd`U07Bd)!!L<57 zogwrZ0_RYA4%46E@(icjhkQoDFv{6z^EC$Ev2u>3=STGZh*snDWt_9|a*l^{g5MMD zPoUk$YJaT8C-O|>KhgOl7$(6t*_=&*b&BV7&r`)s)q`oCr{g-E?+iF*$TJh>S$a8J zALi)w99%v%3v+2c7nZp+`b^DvYRuy^&wPH4%Y1#AZ~qILe}TgS>jLl9LVgQjTgZ2j z9E;#vM5D!ew^;qfe3q!QL?4&Py_7ynaa;!PGMJXpVY$8KFs$&mVFhd})mmw9C9JFX ztujBWX}22IHD-0K{;o3*>*QXq<_3S0H^8_N?~Tqj^4p~EoAB9e#x}#YMb0hs+Twhx zy{%?ut9M~5-!Hv8U+U2|=iA`l=6Sok+hN-Q#}0gVHevR^;=9W{>@q*Q^>4SjyPfYb zOMCFz3&UP>un*pSeD>+tew+@_=z!V$8m5CZJ1FK542SF;hV?MbzM<(i`gTO^BYOEQ zzi-X-w{-Z{{!y{td56A(ltFV=487| zOJm1E?9saHNQmXMmvan*;4!Xekh5POpEQ>8=f=@IN&h~1SoSRDrJwO{&tN zTCNbQUY)^MgI=}pudOGw<$MW-m-*EZQwOg)eCmp=3v)er>%mk{Z|ciYANKlcyu$Yt zvF^y&tF(WOCa=lcP)sBF8sYppu5XBKET)P1YigdF%HIr*X1F(pvpJ3}tS#|vN#|Dh zwBr9J-mUqxRo6WkYbQ^8z3AY%qq9zOb>f$j#N_B~Ryyl%7r48apRTxdg`u0=-Erv7 z=Pf<$0e6oTA=cB{Q=i|)`)z)`aA`nPO0WU6|Ph>+ehv`aP;B-j$Xcl z@4Iw-mwy^<((J#7$9wX=FaP`AmA=K8_M8ksXzY#Fb(v63{-!hc^+hT z2ASW%`a9U~58(d*-XZu75j)h`P`VFOf0)@CE_S#a!)fK-jD2V}MmQTmgOTQDB)lW_ zbCl;%W_L6kqwS5hH^$x=*v7&$mJT1O`H>tSIU7gUah}JkJ6_xbbN4Z9?$(&QHTH=f zf5LAfz7y#-Nlz!iIoZ24nP!unO~H2x%;|Ea%RkjRRnMlHpK16`lV`d(cW!Kk+B4Ld z3DZomv&_LPXR~0K<$M;cW}D;LIL{ILsXCw1XResfXgQBApQ|w+-ud>w(3^#x7wXL- zxfbciBD@#Dx>$|Hcr2D{i9AdAETQRAx-ErmnX~0|T8{H_^SVM0R{Hz460TKht@6IF zR?DB^*c#_+%+^|cUW@NqbF+?~>-=q8$8Wt{>*3kpe1pA>G~6iPM!7bbr%nDwZql>O zblGCAw>aBkZnn~DEB`Om_)_gJ<=BS*Hu<;9wVftAVBaDC4jS*I-%dGp!v7U5cG=%$ zf4BYJ^6Y_W56pYz-3#Yl_4lc@AD;d6+%NwDx*SmZYd&9#IY_^Qv^i+@56O2(%|o6K zd;W&+5q{r_KPvvHcl|pv@g01};5}ykj^lHjUdL&B0`?Pfo`COrGxNP(d~g4x=aYPY zfaOQC{G%BlyFi85*56=jZhDoaggup6C0Mzdb+m|3%FUo-e}iKR&;D z{?*J}!soIXx&rSNdR(Q!RWoqS`8Ak-^ZR%2?(cm6Q0qEQ*X8{au0PfP3;w_9`469e z==P7E{%f}W8x*3Dn_UP|tN=?3k?-Be_ihyT*&9z~*Fuy?3DGUiZ@CnrTlw5pitP)L zJ2$$$dWi0*8=^ZC>_&*(wNb{?A-XGx%?Oe2-RN$4?vd}Fo<67TXZD=A0XrC?ENa~= zSJr+Zx^F>G;8)OoK{X0l3(W~p;p_~LWO^lw zO;+bQ`V^sMQTh~>w^%X8r#Ozq?H9+ngtY|yOY$j|fjNJ^G=uR4zhBH6qS85-o|f@k zMy;~=m8D5JwadX!o)+c#mzS>s{VS+d5#EYoDxMEfC3}^`Rk|Lc%Jiy?R~2g&zpFZ{ zic>W;t8EWa^_&d;>M+%SsivORl&2QVwQ+lC3={V<-RiKqeCyKIcWU$sObzt8fnL0t zkzg-vQ=QhZ zwpO#X{WkP!14|oN+S0wP{B2=vhi`j2bbzCSn2w%1nWq#zNYT3#`MdD%B7Zk^y1~?4 z{qxyFrEjC)7>(m-JjUqX7?{WM9Sf_wIdV5g`OC%A2d2tKeRR z=PGqp(PTBB)v&I{aW$N4%*|SL*NR!of1TM|r@!mqkql5S#Qui>fhjI4(8XbZEh`$|2#U0hV@96uToX4CU!|%Ad$Mxt0zZ3AD zFk|04KPlG_dh(;1Kf>#tj86M~+W8r|&d}=&zq7cWH8W@NJ7?C<(fB;ypUuI~H2azU zzv#~eF&8{v#P=fnzFDLH>C^vc`YRoNh4GT#mteY#?`0ZXv0lOFihNh)xa#lMRsPrD zxaQe6Z1fwA+H^l!#*MDjE zuX+Ekc5tn-79k$Xz&r8 zEayY~-gzOOH3yp*;`hPjn>U`V7~2)%?&0|Tuw{qofzoVWh(9RrgV#dbcW>N19M8f3 z;jC-~v;T;EkIMJxcy=SibEb#*V+BI|aabS6=LxxTiFp#1r}#dN=hH_*JhwHs-_OYZ z%*hacR=#KP$di%LE)RTp#3Xr6f-SFnc`Ju_KDqPp%bynF1>i40mx8bsl%tRwh3TE# zAjF@$X`H`B|F2X>d+9c26r`> zs`*{rSq=GWz*SS9Yl^95t)-8(aj8w?m*jkzR&{bR-0QIhxfzXKtoO^VLS3Hs+u$ zK5fOc(}Q+6v{R?O+U?=)Aa@6`9p&qIEW|t6@8mqitfu(g8K2H(pbIU!z}!Wzy2{xN z?(TZho$p)xdf4l!jyo~_HXVAw*~>f9+f1g?y$`M5(f@axy-Vvfvy!G)@8R&C{O`lz zPK@`(voAgR>UlqFe>?`LI}r9k&IZwbFieBx{J`oCj1R$c2wp?f8)_bg+8d_t!<`RT z??cZcXg5Nxk@`N0#-lushGUHPXN+27#eRg_IQotEeovss$9nLI^NFxd#Al+INwl4$ zhm+08WbgVE_0pZEJ5QHqDjd_)od&~nXVc}IPJ`PMJY#RB{n_`Oj5g?KEa|Dx6*zS!AfJz1g`OJQEhZy8;d z;lG@A%k_9Ud@J~_Fjp&`t%P+Io~!t*hGR9KHG1T3i?6|TEu3qet+TGPt{1aj&oIZoBa*hto9alwwU*=_;1DKORI0m_%=AV!?*qBO6MK=xzp_I#N#XVzk+8M zT)V{XmT$M*d*Ina-@SUiSO50WXCLkM(_uf{`}OL8dIwSC%VB-^#`8CDf8+fB(gJSw~RyELG``+>FMo47kdbuJddmKL|}5}%FXOQxg;c>8pQB^ zI*pwSiQG8lR{xpQka$*n9x=Wz6G`+*;+xm+ymgt_d^wmk|C*2}a5^O1Yl(ue6cXoq zGEvxhVR;H)2#I88$@F^;<|6!y!RJ0pl<-_q{*r2zf~yo=o)_~1dr`g8G%Ry4B+9lA ziE?t3lf$=SqP(~Ya#g^&B0Lp6SHzRmEOa`d1wj64gpExU0)u zomMr()^t{rMzyT9aHy@{wPAV547>!}%dow?B_!&|SI4<;#zZ~O^(KZyeLbjeeFd&p z)NEk38qoYzJ$g;tYw01;&|Ed5$Llu@hd1c_2A{^XYAkP)Cd>>pg|8_d&E#)Jx8~-j z1Q_56*`CfF%#!;q(b3wGE*)vs z364(uJK>UobBgoMFm#5$3q88P)D`}&aCGC_4X*C6c8B>b{N57R1EwCd=_yZ7`o1l$ zmm0nJ^v1h49I0Yb)$1eQJMg?KSDLv`)7$q7uz4ZzeuI$cE3PlT{p9U0=Kwt#Am>1s z2APvVau3FBu%3J%c8I+p{Dzu~VQ>udz7B_LxY{4${vrPnYK>5HgghhF7zxKH`9{%d zwBC=V@Y1Nr`bUMEou(|&dGu5A|e>2US@4Un;xo4Y!*+)WRj#_iXeM+-WadQtQ=F0n- zxt(YJK48gbSOFy2#_h30RusSOdYyp^^jebuN(ms>5x1aOXDC@_9Au8|9zQjI*pJG{?)ME_IfDfuGvG3L0+d_wu_4*CFh;(Tk3T9wx?lK<7K)~iZ+3CcFg?!_#;?OiR(NFQ9K7d{MHlplPM zjz_n#+AGo3#=0tq9#rkBCdgJb)~T)dc4s(HRc1@|D4IQ;FYiOx-z=AnHLTILtZj!i z1RYvDLE#oPEDYSiYqJxxcIcr|G5R+C*14nO;HjfhSfRxAe>%UOuc$ruipw(|cv>`R z-%}eb=v&^$u|nt@?mhDyYjlbR3?xY%hNR=1QFYj`TBjM3-V}AL4M`95>!h3HY^j@+ zp~#Y6wM#QyzNbk!G4_}`jQ5Pu68G#8sBf_3-=r6gb7EeZ-rPL{K>?q~004NLeO(2d zBSqGyyn1I1cXt_NGrPFEyK5%NOq$K4vz=sSXK{CTcQ}RfgA+J~b4BiuJ2-cD;4|G%nBUcGY33UmedZ}tky{ZBtmC}D&XK_pQ`lZ4D7Lu59YL*|lsWIkDu ztVC8OtB_U6YGie?23eD=Mb;+kkafv=WPP#$*^q2RHYS^pP040tbFu~5l59n`Cfkr< zvMt$;Y)^I|3rK~GkcDIs*^%r-b|$-!UCC}_cd`fBlk7$ICi{?m$$n&iasWAy97GN# zhmb?bVdQXf1UZr%MUE!NkYmYll1!1MWST4^=a6&BdE|U@0lAP|L@p+mkW0yB z?xOkVna5c;2KgrW7Wp>$4*4#5k-S7+ zCa;k1k?)gN$!p|w@&@?<`5}3eyhVOQeoTHseoB5ueolTteo1~seocNueoKBweoy{D z{z(2r{!IQt{!0Ev{!acu{z?8t{!RWv{!9Kx-li*1LMdgGQ$ZzFRMUjcqC<2xokQo+ zd2~Kqk*-8nrmN6Z>1uR!x&~d7u0_|T>(F)SdUSod0o{;pL^r0J&`s%PbaT1|-I8ua zx2D_BVY)5dj&4tPpbKb)j?jg45#5pQM0cjU&|T?nba%Q3-IMM`_on;Med&I5e|i8t zkRC)2riai&>0$J6dIUX^9z~C)$IxTxarAh40zHwQL{Fxt&{OGY^mKX#J(HeAt8|ps zXq`6b7#*ign$olBV%nk;v`sVGp-X5^yR=99bdpZdrF5Duqvz0b>3Q^gdI7zVUPLdZ zm(WY;W%P1-1-+79MX#pU&}->+^m=*&y^-ETZ>G13#Hm z`T%{9K13g;kI+ZyWAt(Q1br8MH+>I%FMS_tYpME^|xLjOwtM*mL#LH|krMgL9zL;p+vN8e^EFv2Kfj5EO`Q%tjj&0<4r zHk-rdvUzMiTam5AR%WZPRoQB6b+!guldZ+pX6vwZ*?Me!wgKCaZNxTao3KsUW^8k| z1>2Hs#kOYKuwk|>+m3C|c3=xwg^jRUW6b^<$*oy1ONr?6AmY3y`%20N3T z#j0$S)mWW1*ccmUO_s8=*<#jW6RgcL)?rIn&bq9}`fQR-v88O9Eo0}fbJ=<9e0Bl5 zkX^(sW|y!_*=6i~?ksyOZ6;?q>I} zd)a;Le)a%+kUhj6W{~;1A`vLnQdy~Dze#Cyve!_mre#U;ze!+gpe#L&x ze#3ste#d^#{=ojo{>1*w{=)vs{>J{!{=xpq{>A>y{=@#u{>R?tD{#UoXPk4vC0AVY zgwNtbd^VrM=kj@cK3|cq#8>94@KyP0e09DCUz4xJ*XHZ+b@_UHeZB$TkZ;5{=9}@KALftnNBLv?asC8<7k@W@4}ULzAAdi8l0U^iz(2@8#6QeG z!avGC#y`%V=Fjj?@K5qj@lW$-`E&d;{ImRX{PX+^{EPf~{sR9J|1$py|0@3)|2qE$ z|0e$y|2F>)|1N)#zrTmw%Kygy&i}#x$^XUw&Huyy%m2sU7ApuMs9=H% zA*4`3i$u&4Lt?g=Bj$>EV!l{WtRz+ztB6&_YGQS`q zQ|u-77W;^O#eQOcaez2b93&1FhloSPVd8Lcgg89XT@{kGvc%2bK>*j3*w97dGUhylK8UtiukJd zn)tf-hWMuVmiV^#j`*&4QM@Ex7O#l!iSLV7#cSeq@rL+;_@Q`Hyd{1lek^_>eky(@ zelC6?ekpz>el30@ek*<_elPwY{wV$={w)3?{wn?^{x1F@{we+?{w@9^{ww|`-j*v! zBB^AOOChCHQp-fnl0$N~oFnJTd2+s7QLZFcmaE8B&SKGdUAca zf!t7TBsZ3u$W7&Da&x(b+){2Ox0c(;VY#i`PHr!EkPBo*j>v^_k=#-4BzKm($X(@b za(B6h+*9r)_m=y}edT^~e|dmBP#z=?mWRkgK$H-&laq@V1f;>^4 zBu|#7$W!HM@^pEIJX4+}t8!Gic)naZ=}V%d@tvMn>&kxOJQyRs+ya#Bvo zrE*#>ljq2D<$3aad4ar8UL-G;m&i-yW%6=)g}hQ;C9js($ZO?w@_KoLyiwjHZn zTjg!?c6o=qQ{E--miNee<$dyg`G9;-J|rKOkH|;mWAbtNgnXBLw|tL$uY8|;zkE_Y zB|jiPC_f}WEI%SYDnBMaE}xdq$WO>m%1_Bp%V*_t@-yCVwt}A%7`yb`BL6D?CjTz~A^$1=CI2n|BmXP^ zC*M{pD59uhiYuX{Qc9~t%~C^Zwwj~ns(EU@T2ZZ}R#vO1Rn=;0b+v|CQ>~@eR_myB z)p}}uwSn4DZKO6Y_h1ybWrM6bvsA09O+D>h+c2EmcMUAM1YLVJe?WA^A zyQp2&ZfbY6huTx^rS?|)sD0IbYJYWrI#3;?4pxV#L)BsGaCL+_QXQp^R>!Dg)p6>0 zb%Hukoup1yr>IlaY3g)!hB{N7rK)OF)l^+I)R-DqO_i#%)ne6B6RNE;)lo}SuDYtH z`f5^5sikUKEmP;HbJcn3e071kP+g=hR+p$t)n)2(b%nZ8U8Sy8*QjgNb?SO`gSt`O zq;6KXs9V)->UMR9x>Mby?pF7xd)0mFe)WKQP(7p`R*$Gh)nn>$^@MttdbfIydart) zdcS&7J*7UNKBzvVKCC{XKB_*ZKCYft&!|tRPpVI;PpfCubLundv+8r|^Xd!gi|Tpx zg8GvBvigeps`{Gxy84Ftruvrpw)&3xu6j|uq+V99sPC!ot5?-)>UH&o`hohPdQ-in zex!b^exiP=ex`n|exZJ;ex-h`exrV?ey4t~{-FM-{-pk_{-XY>{-*w}{-OS<{-yq{ z{-ge@{-@s7D`=vrW}0iErB+(&M96`^+vs7vt=>*=uXoT3bVZNog?f?R zQSYR8*1PCk^=^81y@%dY@1^(F`{;f3etLg>fId(kqz~4I=tK2k`fz=OK2jg0kJiWN zWA$gnOZ8>?a(#uqQeUO7*4OB3^>zAs zeS^MH-=uHWx9D5-ZTfb7hrUzarSI1F=zH~j`hNX@eo#N8AJ&iPNA+X+as7mTmwvZ? zkAAOypMJl7Qa`0Xpg*WTq(7`bqCcuXra!Kq*3alq=uhfT=}+rt^>g|&`m_3T`t$k= z`iuH`{eu3I{<8jx{;K|({<{8#{-*wx{&6 zp?*`prGKP10`QPI7K?UUGhNL2_YoQF3u| zNpfj&S#o)DMRH|wRdRK5O>%8=U2=VLLvmwsQ*v{1OLA*+TXK7HM{;L!S8{i9PjYW^ zUvhu)K=NSnQ1Wo{Nb+d%Sn_!C#0qm3j0`uke%>7(OIxjgT4}qXMiyJv{56NG}=z_`q+ zwyOCAhH6C!)rwQqyq&hkG1L-;-;VbEw?;&^h~2S9H0)5dl{VT?q)vvEwbF5;*IqB1 zKu{}^-N@$vIJ@8NrDM~x0JR!py&(|ubiCP1K<;Io`5@Vx*Q%}7wDH!#EIS!eGErTY zwUGxI_;#(C<;a6<_!SE|HHsXs_MnK$jPbLoV>;Ezw3TA$Gg-)SyPjuh9m@iNahY3f zkM|2LpABk?AQ)%6$XP3^EuJchc6b3A=Ku+%S0bVGN)*J_=?r&!S>C|dJcLs0bkHJE z1RZrcU5whvhEJ?)SdgI7<+Wxy*%+?p)u~2~m9ETzK9B=_ATTbgRr5TX8m?zkr8>48 z8Y)ttp&|tgNu9Q0|7a)wV!f^7uS+AP|}APXfI*nS5~u0%z? z#W0|u490iTHr6A~1<2{p)QVG1z@J!bDogcH%8AU{tMj*Oz8XbkTCs3G` zK`ttb0!0~_K}PZRBg-D3jITMKvYoF-QE3*a8<(cV=-wO6j7=?Y?jB>7j(&;44@ zHQpXTYv?Nwik2O%ru9CsAlh7x7QN4KrvbqPWUXVg+Fm?d3o0rRwp9*7pfF}f*}5O#c%Jn;4M@ba4YYBSF#70q;(x{BryRLxd(84h1SwB6ijtKaBlS+806Y`0At0^xcZ zLTdH%;cRSd06~hfdZDvgwT)kTXk7Vd)~XMUX4zslMnc(+ovd7m_zGs+$dGX(VKjv_ zQOy^-XdDc#nQLMq7+mv4wH~=z2!&X{R-=c7hyaSe05%S6y(3(9uMD_Xus9qBwK;@& zU+N|jP6j@&)*3j`GjdTAyJ+co+8C=<{YbY&K;`g6Wza`u(8tK2kC8zi3kQ8HL~VKk zwCN$_Ik(w@q10SJy`q=Oi`K7zS+!pHbynsf6hz+dHZgM^L@t%sr4qZ0#4aOf?-qc) zTM^pB{^)2?dqb;UX5h>IIHm$c+o2lKa8`ig@29Q0$)7WifXnWc0r$#)`^bR%2&&Ry zFb0P(jopyOZb)O-rO~wrg)o(lx%R~&YihM>t%n~t8TrM|#+)4ZO2lJzwX&_QR z5=#^mOS2e0?|`WTIq(Z2enG@nBEAywBN0D>MQ!9@>M@3bF}U6+dZq>zOhmYRz@)2{ zVLvxOL3J_ISk`KV8OG1I-AB^6z(i*_Mb9!eo}#;t&91DvUAJv;L@C#0uuNmKDuhqZk>Q*;SZ0 zzk?GRQ^^U9sl;JrL@u6?50Y5qNE$C|dz7~8g`MXUY1j*VwJ+G*fS8V#mMLNNnRTT{5kIzV9qkY^JO*8o@WR@ZeH%c0$eeOxU7 z(Iu!5T@{a@%TNKQiUOYY8S(@av>~Q_m+TNI8W1QNWcVhYXU{23vJ*eU94Q)xmn&tz~XXJ(G0_wk&1^02C&GM%P}q)+Z*IC zmd>hJJHxB3oWbgMY<9&}jN$TJ)hEY}J2ou{TNZlS&%0(}Sbb}}@T&X_?0uG_63 zXCx>W9I;vfV(aI5qg|WE*c^h``gzxFUZQOH)ocA?{8`MBijiDCX@*CTqUG^Wl7l>y z{lif)qxC9Vs{>b#=AO4Em|e@Kc%LXJm$-kr{p#&hWEvhMz?<{4AQ`XU7?Sc0}C< z26P)R=oWC%MfWG#vk>Lk)KI9vfSg2wE=kxr0+f~qjZFAx=jAp^tOcv~?%!2)tIk2C2+CQf>Bx)%cB8V zn?Yo424$OPvnGN|(IDEiSaC_;EuO~M=DbnINdZU@Lp}BDO(;XEjO=GM9@)~gD4N%m z2#hK1xtLO11aF+}HiJ;K<=&XcY~zE|i~w!9IB09C1I=O@JH0&0R&htQs{Qe1*%wfy zfNiaCpq=FtIM5j6Am7M!-I_^E*nzhr`t6X&86@VrQ|&cV+(3&Ul*&Y>S?#9X;aXce zc}}A}-b#xZW7;mJDsvk}!M2JIaty#j2%s3Cqmz?CJ9(bv3JSmINZM{8DqXmnUR&!ZZ9$6`{q<9`re?B)3iO7MLD%Fq%vr>XxVzDl0jm?M`h4QC5p=uAubCeS3jT& zFt~<;009PVPxQNKEz&mNpruaLtY*X|=9mx$Fd+=UL5rPwTnYw7-*)_3PlTgyJH7bZ zPA}41-l+F$u|Xgad~_S;NND5(iD1>`ZHqD$`D&((mK%W%P*H3^MX>=9a@#H1uDFf^ z4rSFVn(nBqEDWjW<<)j~%$?LJQy~@o_TsiX@e>n~k7#owCPF&;u8WOeu!*>nEi)mG zsVvOwV^s`^5Vn=EFix#0; zw0(=Q`5mAjiLL6m?+!r*r5YLHG7_l7EaA8Ox@3&)fWlyCR#1d&pbxhazcLcNVx;c0 zTlmkidMsjqg^k)iarRiN-*e^U0caqr`NJF@L@t%srGf!l0MS_y+41pd#~KmLC2Q3q zQ*tPFtCZX-CAX21+epc6VaaVFY8j9lTEy6n-x0^di$M+yH0HoSV+Mv_z?8c286?;V zkYGkAhpu*jiqjc)se>HY2XMaYED>=?iyPC;3_JTlE>2?{s_zC%M693C*_D|%6uqf@Y9$c=otuxfGBpg%@{LGstpyzQY=z;_yn{ z&I~dRFY0;*sFJTvG>j}!aXI)ds6@mz5_dy`TwJ?cR}y1vGYsy!HUj{*4(4uG*2?lB zD|XHNbwT3gq8ex66mUS$yA>$3xV>FTU7OPxJl z=)<2&cEA>&1CbpJayI_)D(?P+grQC}I{1+X)@;VB-O}Oh5@EGFUhQ>pGs?-~Bsj>~{2Fc)$FUyR&cA7P1YrRk=dmRQ zQ{fp*g~!HSHH*=2uR31jYnfkBLfMu;(_I(<3BG|cF@FI!s%EchuK63C^bFA2PXSxK zW;k_GA|R)YFdFnAa;d~FxQYP4jWZ)?%RZ=oR?z%>5Q}yI*9S`kl(->q!wY5G(HHWh zxg3&Bx$bpt$Z z^~Q>6p&N4!a+v3K)_1iTWIJLg`m#>yu5AT`G4~p+;n9Y(G7rJZECegFB3MDz>vl4{ zQsMyAmnB$#mf-ijiPl2=-ip>&3R*CKZFs3&w#3@ufK43$Uk3uTS_SBrFJo+DPyPBR ziq_K8wiyP+myic2__poFPAJ*|8;JdO{Phgd_*^Y*n`0zJt*bXsFn*UqLr#j}OS|Vu zhn?>=%f~>Y#rWmB*tWn-(99UrkFH|E_$a;|%k5O8*DOLPY|iyo%Xh()F1DBVoh3)u z)&{#DG>j)w%$_MSMG#F~LMSs>CSCJz0GvIrcXwAVQ}%q-ipZHusPKTm+=%IA9RrId zKd(-py?6+AW*|-gJg_w+ZBM3MKc@D`xJgr2(%QVm)y36pxRCJ-dxWh4;}IP0!4y+n zw_O9G9T*tV4h)Q76;udt;Kgsdlo*>F&)Ad}$nSr7V2gNhI~_A;dfnnoiGWmD0#ao~ zTdmAuPq$X>U`rUFjlCH4WPR6L1r)ngN^X^s+epc6q~x}+e;E>p2Dw5r&bvpv(0B4t&IvLCONh&W7pK5#)POr&gC#Z(-QKUU~swM{RtN?(| z@?y5zsIO!}c{`*`p(+Zh-^P!MOku|b5+tga!G}duM3oX6DIpx8Awt<7ymK{7@zqsF<=U914Y|0O;ll3 z)e5$EECfG;@xX>qjGb@|7Da0_6J{3aci26$TD2&;@D<_6-5+C!vDK)><=yKtWi4yM z&1mO?6zwg?MDS~E1|+}#8enh@2kHV0uHA;av=CrOb-6m0sVIz|n|B0gZQjCu+h6A{ z5y8i#>8%=(4TnmjNmUzdNc*murW8bY>;8NmX$+c2;t(09y%B~}2*M()*g)RpG zo$-_iv_&A$76G7+0p$J=&H!a=kfVAjDyhtr{P?q_!aO zT`wnt#bCy*0NQWZM?P?U1GHbFFuZo(^#oR~MDj=^<8aW*&KMGlz-+9Pwd#WqtjNHA z+q;(tI|qYBQ*$l18$D67N=&=w!-~MW-7pJ{AlNg)O4+sIN(La73;_RK!)z0W?*O8n zdJT7mA7v=dqKS3&*NRXYscW%Q*J2lfKilO1gq+sg%)`lGe`zhxy0xt1+TDO5y%uLU zM2#S(plIoeO0r@hq{E#&^E0h70}ZY_{{j-2Pu4C{Vou%p6VGMJ_*ykkQI9&4jr`&P zJs0Rq*7#kc#703c*TIgi!J*O5GavRK2Zk27_%*GWG*nDWcd~vvOaf<+#^>rW8NXY# z93F}{D;f*C<%Go>FjN`9{_0?ffKtn_@qur{mV1nYPcSy~hMcSJAfpd=9%911GBzPg&4+TdM3_t7RhyX<}^K3Hp%R>&J|H;(*pLEMfutDtnBLM$?GkI3nMOG7dDtZD= zMbB$jC)4q;ZW3c_NA04jnw1+k?H9sau7gcc;V{-p@f3&yRv+!gR5zT(ilEhC+Z-6| z<&DP5#hgDKD;lckc=8};Ew;o}mgBFo9DgIr@dq9G>LqTp>UJ@g$J#pwSr+pHqjWb&ap#A_t0iQwia5{&HA}J2p1DJu7bcfHBhv6X(w=D zmujUfAFsC4WuP%Tmz`70CCqLY&f`3?)fADfrYKtz?3muF+vrqt^M1)J15x83+BA2n zW;Z-MI#VKSnt{OY+}8Q*PPK@~tz9{QF72M%Q1QT8y-7*Yk93+th2*x}oQ$b4aoCDU-JJtTceex26Dsj!(JP>U! ziMg5XxD8E|A;Q8E+UY1ph`<(K0cxrH0%Tj0QO^41djMbC z-LB}dmofv{^&4dKoQM;p7)M^MRio(UV=*@FYj)CFub-R4y2DO{TrS_me6!AST>SZp zcXYJv-Etgld$$}OEHN#gBrg$m%o7Md<|$K93DbCaDuST>BHDT}it?|ql^G1dJn535 ziAT`6784D3S|EZ@?rD3v2+*#}&*`K~8?7Py}{RxCD1Hm%vWu>?L`)&EbJfZ~^RtfEYu7?mPc_ zpa*suV2|k-1FW{Y?!Dw0q%|l{T7&Ya>}Hl3R&uCab!U+WC`fTXjb1E`pjBR8bq|T5 zX!Bu?uVije?SM510Hgh0&kgxXj0+RrazzotG+U=rE=&OEKgG*hD1!e+wbsMopa<40 z%zfj$G)EestnncgmJMS9W2jC0M`<0f71wNrcIqVZ{JzhZO@H=AzRGkAxw@v{~7Y2_lSX?X;$c-F|EY!2&D<3$P-_W*#JPeUnER zUeWgZ1-}SlIhZxpo+}3cV7~_R^Qu4WUuID6p256$jO8_zhVq(nT zqz~V1yLHV&jP7zoK(Sk;1v&syl4la&4?K%W8 z19JCeV+@)Mx6p>73ur5M8#OcbFQ#n%Fz6tMaX0EM|K^29=w{aVioU}!KTCk+mryXO$ms$C4&dD z{ho4wV0aeB^ZpX!!o|_oDk$Q^k_(nknvYg1lP>z@(00I6rtN^IOhpO7blXcJVNbTq zl>Foww#Q`#Dn__};#|W~j4}fi2AI<2paCup*Y-9j`#sVU5&H-iPGZ7^=U-z&8EQcj zuaYD(Q%S`abiS;x+zNBwMUkelhRvK)UEr`?D{ZAAchfiWwvtR!pK{#T3@5a87u3>4b2%*&iFjf-dS#Kl%ZU2tuVbN7hH(qs1P9veI$$ z8bU8~GovyCNd?B9lidN6TB2t7S}@bsf|-tcHGHexQ zX$;)0SH#4CkIJBr%Ak*tK_7TrA`qZ&525^useLb6T#Yc4eY@I$_ls@WI|R9EXHz(h z0@03^yJmsA+N~v4DB`NE*tMI96Is3Q`?Z*Xgcv4z^CH6F-Z59JeG407<1Q>7D*iv= zTV{}<#Wr#!;@!ZxgPY7Cfx?QZh9^nwZZLdCSAxtcWQ zen4c9gH#(X3{qkY8uy2jtkkTw#?Wv*#2^3iJ@Sy1+>``l7gy;wMk0(kX<+f9h+j1t zdGy-@5r&d-7)r_^sBS%Tusj@cC=t-u7YbiIJ#5cWyDp(bVK{-pZ~}p8&q672@lRDd;mI?Pz<#Ex&VHtF9cU=}nS`O}_Yr1=6SlL$ z$=cc7X;WX^Ob>zeAGWDxMcY%oVHg-=dmErFc?YX0j>coc#^(qdp9984^{VFWyajXN zZ?%QHIRQeds{UPf5N)2Vh*pWR)tz~|qUvlkAp9m9t!C~UD_foR+*A-GV_RZowoVJK(~5K&^26 zyu{%5d3eEg6_3oSBz74yNKBPkPVM7u+X#XMm{)J2$2$j!e6}Ub0H83n#Db~3+Tli; zKY0CU{)}5ky=H%6H2SH>2t%$cc0Xe0k!|e@WG;uBHgEz@<(4T3A&pl>Jp!9a!>TCC zP_k~ZISK2`M)C`n4uB1(6Fz?+`gwDSh&)3q?q^#P|7$Hny`sf(H9WLD2?xx^wAffc=##~6}iUYBT@Md1aBm**7H zq}hK$wK@dmYVNj~l{2@rU1l)UVvyvjE6B)ao#wRTtqcmt`>sm{5quZ+(82{TltHzV zSW+NCgM_ESdXxBV)UfuVAD%I?-ywAXT&9b`xjQuCfDNl}_Us{fP6mFo-|qF12iY2B zkyMjsIB^k>O}n*VTQ&Rb_+ncGA&ho0+H{5%5V&=sw_F3V9T=kc9oIq5mSTysrC4Gh zf8p7Pq3F2?-S5Il7b}3zuCF~#4tyozD-k~u@gotxFya?R{Gy1*1wEBj&KOeHcKF7(NVbp%J^EvQvRVDT(}t|LwKckZU!jZP+KZ~Vl5^@ zIOR(WWh(Lo57{h;eK{(MExdqJB7(l6=|P0Swk`JakpM#~?1^tzA_G*2Bl_)_2-`T! zOV3$2R}!H88lazF$Jo{rz@@t?gPd)dfU_+Vh_?2C7}bw5ukEcYEgJB^WJOYUc__8rt!vU(3A+|>Jt6%})H@==Y*_IQ^?$_C4Y;!-=NJr69L4=qJKV9=H z8hyIXJ%5@_6m1$T$wZo%E%<^E@OX79}2 z-F@!)QdQ@vbKdj*>_a`}rYOM$fB^siFb8S?)W5EXboPJU!~A{jugCv7NYxNE00B?9 zz{C`jxC9B9_pmf@eT1leqyTs@LMRhbU?JC+3*ldJRJzuC0x<^RVR}zFMPkwk9nmnX z`cDXpySVN%C&a7i_r$3NTh#lb4@Up-vRqR*zJ zqy$m{@4fHAfq`xkSaepIN|rrh&B{MUt2t_gX=Q6Y>vgt}N#>-5%`%vjMM?&I4PCvm zr7(pSar7M?Y^2E4Ts6;ouKu(`bI@8IhtCkyt!!dcl#%|_D&A*Lt$Ljm=An7+(%f+; zj1qmPCcQ~eeE#H7tvT_@fK_8OrpHU%s^XW%h*FrF$QP@McRVv2ZG|WDRuxbvhOL)H z&7bSlhJ6I2^ga@<5}EO9CUZC3jVL%&)FxY;3)KniiohDW%fT6*IgL0;Z82IVkIXoSVDP6>kTjp%y40cx0u_}> zdQEv8);7AUPi8XprwtBKT`G4Epch(*bypI1;SQebbg*8OBn`?kO6hxr?6T4{=2sGv8wt@CZ3 zg$6%7;1e~m<2->u9x}1#Oqa*xo$+P5*yVSYS~u3$PtQ*GEq+na=;l%Hxe@D0yd;hMooi7IO%vio=uFB*AiJhG z3)0|nQY(~AfHU_D(9&VOeCON!|ie;9Q0uV}5`>YNhIFz+ZZ2-2E%#fnQ`H*ViLUA-i`huePo`7WGh zIgfLjF`@^+PelFL))+R-DAd4B$B-3ujrBcAZ5rWU(idhtV!HD$A=LlI;_~L!q0jx4 zCNx$B<^Q@s@N*_(;;vdL;=V65+M0N&3dvANjd*ctN)X3Yqns9U5F8d+{~QpDwZ44) zyJqxI`hF@|;+`O=LaJ(nbX?Wg=Ia}OwX-s(O={HyatLLQbE!-9ZizBnw0mCj)D-*G z1mXol=dmz{gQfU6pk$f?r)o-Hr+TONj4?J!T>kBZ?CARY_KUG5-!C$x@L(EmQ2<<^ zV^V-eXo8*GHDBFW+!c(c1<6#c7v>XMD)5g4!$Xc*=%F*`woA|zgxmo{34$w5j928- z1sZ^nbHQkv0K}+@PZM_7Fv9I{b1(~-<1H0ugVk6L>kwShb$||B{U-4`V8AaXnfsk2 z-(W9~x$t6@sfDb~;sl}w(&zWTj)>>l3s)z~)($Dz*VH}T@QM6m^pw+7r%E831H>y9u5%X0$RI71|a#Y z6=JRh9#K&f8M1JoY|wgCym3{`^?8n!FHba7Ai=Yve)R~{L0l*!NaGcqAvP`#Ac&rC zC4xKtW_{Y{IR8f0I=J)kO!n)W{w(YFtFmTVcfL1Wsj{j_D4bM13M|ii<1|jU5n;Ot zKEHz1)lVPBtKP2O6i(g>#zOA$Z=s#I^?VZ+IHz*_YM;Uy@;d_*rY+bVeUJ5@ zJ|~P)!u7+5E*LIU%{}>uHfbgDXP0C~!8`8750|u`T~L~q@VaCuUdp$pl>=yl=K`3@ zA0pm?(Z9OfyDP{~Rr9c}*Q61cV?KHok!fgyiNt(v9?X9}8Y2z5O8u<9PSy?RQry#=ofOT4t zb1eJ@ThYkeDkYt$5Yv0OqNpT@d%Q-Odj)&*9dN`Wa@|l6D3PC@ zYj8`1Kb=*2(zN7qJ9W8yhmMR4Mv=>W$4vHx)_ywZ6L@LYZ`-3?Ahw<|7|b;Yrow(r zC9h#U4W;079RLK$oCHJ|8t2czrm`m!1s8WEmGz`Oy$N~7xR`BCO{7qP*9T>ol|j;8 zTR$&wmJi*`N$$|8fXKipiCP(A|0Xw~m}+&bo!N|>ViKF28MJjw==5RdyNEW|F-l>h zsJOyXf3XrKYKuZy`@0>x5)W<{FI>Zk>w9ciiwE@O2vVpJ?@CF+AnVsWq&RVFGgd6tH$GuCdXn; zs`JSk7D8o&t-|F9l!-B)3q7f6_MgaKS(UxMqU`m6&D1Xlmq+DTo|?4 zm++ru0{r192}PiNx@N=@gGZ0_g;Jf z!3OYs_JR54p*y{QYdf;^Ak<FWQU%d2 zg8wK|)@;$@yWaFKMPNYxhA*D_H2QQ6+5A-yM`R+;?{ELlp<7*177+cTt_~7`n3!FuPx-9 z{tZsn==vD8Kc3fz(|@%Pf;HS2Cqr`7`!9Tmf3*;bnrq2K;; zf3rv7kBsy8PEe)y{zr8Gdp3*%{srKF@8o~#Tody@WTmV;J@J_PZ@T(dKjGcnyn6fn zuW+pc(Ehd+*CJn&fe?1pQiHYpaA^kD$YzWW4a-q9*9=! zKN0*_CH~LvH&x*NyAnh2Ow~Ww%wui^^9}snh<|g{KP~k)lEi)5gx0bPNeWH*=XC$> zM3s}jtjJ{Zr|w@66INsRn+HDr5okNUIh}6M_xryABtqCHoxUTkH7mb-^RE&HAa@~0 z!mP#omtHpP{uh`0_dNcOuKNF`U|<$hLPt6dDLnF@3GJu*(!(3WO!r@eHJ#h2<--X=ip6Td+ zx8yHuEBF4V5`Wu2Ux(qJeCwZ$-xd8mBy#G!ooY1xo3b(L^ONWIhgVvj>p|q>155=cM&fX^3pHU*NL5r-X>(>vxM` zv6U`}lgLa2VwJDMv%^yYr3WEcr4zwyXof)9g>J0M^I&#ZtVpR|Dy))0F*cxbq|8h% zR>i*e#E~x|XQXs%?-%dh&(FR3?g@B&@dOCUxU?`RnqXMGv`z#{DG?NHjzGN3^$@Ta zC5je9E(;R`FMT3}QqB1!>%ZRvj_Rfv>82|0raSJY z%82L;xO%ogOdI9Q_*&m-9lwZOYuZX~P?2xTi^>*QwoccGN*-9WPV0^;*!{8V z^Eu9Q$PL6F!~l=d)s09gw!jb!G=wyQD8+!vkU9``FVF#2E}Q@xzA=u024x5m8OH>M z&ySp|fN{11Axc0d5ms|}sR`gm5q830sxF2!_*w(3$PjF( zS{2X~(xgPG22_XqQlg%D%o!`Lc;y+qnr7fZ8HIeCV6w(v3U-Bx?&CHG+d?Jx@g9SH z4TTq|(14=dRUA}NK;!O44oW$oYIhx`St~j2RGKDoSxB`8{E>LIGFnDowL0uFZM7<} zrJ(vVBD4lMRW$!oE}kQnQ8E|&#d?%5748s6es_F~FdgLCs_M@_tmm}wR|=dXd|$x8Uk za4tZdz*T_vX5+p8Jjj~PL?xExkLt?=4{T&nP+^=GMwNG)is!* z?bkJ&dRO?zV2<^+rAOqB_ZUV}V6%}v^Ezr;&wh@1%&SNItnnD`v(IKT`^t6nvakI- z`{`4U=$ree&gs4LXOC8In4kK+%c}Bf12R#H0`tKmwdJ3>9sf8c0P{8jhMZ(;0b+ddQ!OI$e&C%Xlb|8lVVf7O{q} z#pxDdpf}VBcEafrrD0e07Q4cs7A^-nKzdOV)q|~bO$eyNc=>1tX{Bu$FQpPchkDm+ zr{?*8Lih{hkR*n3IV`-$QWd%A&BLULoP4^1I)(~)BC_E_6@}Q#M>UR|T*~CAVrw}( zoYHia(Wt}SnW~&Z+F#|xHu7X7hf6BsF^{)A_Bl}M=*)=)M)}Oi8NN}Si4|H_oyn

    xj)^`05e!llHewTkuU>F+;4`O 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 literal 0 HcmV?d00001 diff --git a/public/images/3d1.png b/public/images/3d1.png new file mode 100644 index 0000000000000000000000000000000000000000..63cdbf6175a162877b870d65741fe03280971c3f GIT binary patch literal 3258 zcmV;r3`O&aP)#g1{g1tQ?bU1N4z19}&0BQtrx$4Bc^zI< z^W?jL3_z4WZ{$7(*!wMjcDSbpbg@WsXUWx%oS8g)Vi}j|e|hD|j~`N`pKe^bN{z)! z6d6;}{yQ(wJI@)+p*+Zrz5Ywce|H{;Uj)f-?fvq9c*ZZZ|8}`PChd+LNIpNlm_Pf> zu0YS<@bE*bQIAs-;~fzuvZNbDR#miT--K+sPVc@n>Y2RH)B<$NR{LGGi{NK;vjDkc zq3w5GaC7uP@;QKg?wM^sH^vXFMpg7AIh!f~6*g;w`@t`O#WtgBZhDJe{nMDL!nBih zOt==1>J7eS34{s@@%PepkgY|+d83k}`v+frb0a%>x&!({I{cVw>`~>INkh8Ev9@F! zOb@LYUC{o07cs>;{rk){0pxCkKR;@=KZRzwRHmdw5Yxx|#(ow@B2 zXauA&38isPi78T()bIai^6V)M-(1s;1B(@zvZA;sXpj{&oMklHn$dVOqw#u4qw|&y znTGEA$ZJb%EX+@?&s5U`(w_F2qaIj)u4zb-jVO&~ltONCJf|ei*7#Sesk+ZKT9_kO zg2e)3j&mb(3Zs#uY>0_Qd+958{+)jR=R3B64XWxSp{Q@hMk2uub1yleR+g-Z@UA&P z=J1Q0j0KI>9p;&|qIxVZ0Z8o%IA%enF2HOCW;0ru&1ui&f<_yT2LDaz_R)-PyY7w7 zgseXoV&gW)2q2Z}dHu2jh3|ZbbRytdkck`%icGmGKo_E~Fu*7QXp@s|GKxy9F3)K& z%V~J2q`|r+x^Oi;aO6dwb)4IwKefb|qg^z*B#&6fFnNjL!6gyiEg%cBwxR&E7LZDL zunMe_%V9-;t#gVh=mcQXX+_CpM`nEwed5{;Iykx*V6L|Jt(N)=y)>hAW)AyWXk%8QT zPuFLWmd+g|+6ovO7~~N%le(1a+SGlZJY`^3zyc^(CCUJnW#GX^^NOM^(6lk42XB2D zY*d~3x|rF;)m|aeOAdYZE!d3VFr20tR1`*g&LGVKC{I|+U^YqR!YC=vssgLZ&7oVY zvcx0^2zo1_>y)8SUjO=%=DcILHZ-|iw5h1O78?yvH3pc}0VE$0w~gjR(|`=u0&QQ! z=JygH@*1VUDt{Mt5e;~zp=pN$wZ}z` z5TnXqkZfWd*fg36swK%NkqC7k-4(MPSnpKKo{sD=ZK>|DF$Cpd$y~ zr{#j=iX~hydkm8r(IOmFv+0|l%U&ghH#((Spwz9_wW+QH%rOiMN)*WO5Il*8_ROjZ z)fLLY?|$qhgqbo}qq#zGUkuA;2QV$bFuH3A7UgT(0F+As;khj?T-{4|A!Dgh zq5v~WdWPscg~;b}-Ju-(=v7m?_r|vtYu+`uFTO{3C4*!~WRO<*bJit8aWa&YDIKG= zQsg@uB{wiYj;R8;ZO%{!P!mEIo8ACyv_(o{RfW}RI)3}V=$5NC{|}q~TEz6QxdWqe zE+E@9ya;yAb&R&{7hlx=hZeAFLiH1L%Tj>Z5ub!riYEX(1G^RNi)wo0&X;J#=G#H4 z?GEMj*$9(594+;XD%p;YI=E-cD9lhXt2}f#3Se42@fN?9wf>tBc zCduGn%4^oa{0io$1S6f0i!+IfpE>wGee3pD!CFn*H5<&Xg4r1)F`JEt)rKRr0N6Nh zW&YR#1*;a9LfavArIEfynkna3*QQ1vgBza^P(-*G=Sd;p9lTi0M`Wv*?*Gs^N-@Dt zUj8s`w#{G&_z}K}m$TU=L^U#0D7wYddth6Q+EN>U0#L5xw*ifQR&R#l10REL% zr|=-RyHdQs#43R%4WGjSdBO7)N>xJl-1rX6sp-kr57FzBm`dl3nY3XEU?bIp;O+yw zczo~`Z&B(rYI7Z-+jKsjIbJQ8l}!XMd_EUWu~Ng6ur_KXlGVa2*aWKz&g3^9;3U}| z8sYrz8{Vc-QqdpJ9iqRi59z(UWwQ17Ms%t|s`PA%T|)`0x+G@{)PoF$dr;{;8)mZh z-+2M#^{Rwz+`$7~Dj|MS%{;>iBFG@}sn4-CIoqfajd6bX1MkuR9p&oYgY@?0F`b`V z+Tu6iUK>2W>taQ1Y&qlo!|8=ab7+)TRkN_UkH>ZH=Xv+YItJHzB}?A;Nw}Q`$Oc)7 zJ&jGNY$K+ZO$P0Ir8ui-j2mud=D_@DFr}+!dua>u*eX++;a}+{Fi_dXCSlM628L!4 zo@{2Uc%A`(TA1{#vPagkr32PDs1r$w)3VhQfix@-gLt6T)-jI^>^BluMFP-n3hnM= zE#rKM-$&C4twS0UbP3aZNO^HBW%>1#sVyqZ7G)-rg^I*vQ0q+bX6-5o7fo0VXDep6 z#>?2bj6?>$&dcB(6c4rm$fk_o>Ch=Jjy*pvyeU}%0H?9blA0CTYgo^yHz9+SY)Tga z@^U_)SuvnFMvjpIbdg!`oYO>45iW~`*Uy!ClUsrsfEZxSP+S0r_pvUSU2!Z?4m%$l z0b$6M1%M_vLX%bPD+iVdG%L)4O%(vAh8+&QIz|d+2RYhsJbM{q$}%WY0i5M46k!bV z58%3@O*cR7oynNfwPTk6PzEM>o+Q}H-V=i&-z{q8dn41}S`BGbDIye}EWl{lNQ`u0 zUsOk>Hz8*nY2Khibh8|PEx<-`LIZ#tmN88*rd1-kWw3F+hh_k4vJpku9uG7t)2E}j zdJOs;3!@C0TUZ7tKy}E=wK$4|E5}Et44^6Wf7PI+F25O$lPG$FxK0ZL6Uz3O# zN-PPu?CBw$azttn5^D4iHMV&82$>Szf!#`&z^d?U=t4N8@f<-85VBva_6$qWY`HZq zWz#`=dRW26e$zo)?n0}x-~a6s$AwW*YD$mixqT4Mu*wc4J*nf|gWL?yGg5+SX}Tm= zFryrnP~}56EFO38&LlIdUEQ$FRy&+DS$eL z7mmf;YKt|8wa zLHaywbl6Ra04Z^jiByWQg4j5K`GzoAn&FQU*fNX}*l~=9*a|{XV$;$)N>s_NNX!uc s&7t)3O>>s2@~=@$C)C$y^GbOB2kf6?5jsCh5C8xG07*qoM6N<$f}CRqpa1{> literal 0 HcmV?d00001 diff --git a/public/images/3d2.png b/public/images/3d2.png new file mode 100644 index 0000000000000000000000000000000000000000..36aa9188f00a6747f1f5c707b879d5baedb2e5e8 GIT binary patch literal 2619 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 literal 0 HcmV?d00001 diff --git a/public/images/avatar2.png b/public/images/avatar2.png new file mode 100644 index 0000000000000000000000000000000000000000..7dac0e7fdd93d73dddd6d8538781db047299e17b GIT binary patch literal 3115 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 literal 0 HcmV?d00001 diff --git a/public/images/bitcoin.png b/public/images/bitcoin.png new file mode 100644 index 0000000000000000000000000000000000000000..622189aa8d3de3ea84efb17c6f2533eaef09e164 GIT binary patch literal 1094 zcmV-M1iAZ(P)500009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPEqNkc7;_qihy#p_io3V!gmhS*hGwD%B)2_ptep^w7HwYSbEVT1t^i zU7r}N@on>nL=g&+;n1j3abP2f1PLiSbvPI@8EQcu*$g5K1vKz@sx#ZLip)}1)19Pd zO`Uy$)P25;gE)Y7c3Q~!p`M4OL8&5Tj~j8R`4u8KN&yHeE(Q_wF~v%eu5 z55Q{NU#*tA&QPezA##7cLmaR=Oh)it19-iN3E6zC>XTaVCcdK7e^-}=J?5l>I*%j> zc*3I)Ej>Gm;)iw}x*%Em;8mmUn1`hKeh>*@v1$E|hz$G09eshqtBbnyVIR3|)F1PZ z5R?WafN0!TeRhAo4}J6g4llo$PIKa6Cs|u~Enx%uuy&t@*tU}t`k~8UX#B86f_T_S z0NHdb^lt6BM1QN>F_Gd&voJA|k!e{b;|_JBG}1##?T5AZA{qC1fXp}TCF6d}*;q_6 zP0ItaU)aFDc}t&`*H1Ptt7Zh^A)$n0)Ruf=kr%jgk!h*c`zx=H($M43>KjxsVg$#g z<#>puRcln!TECJ*ASgU4u&^=V;J#!UCQ9&!Yyt6_9^0ZCd*d`Bnh0~0V0om|a#HBZIKW9m+IYL(b8Y}{bjg5d3-)PFC!LptK5Z%*#A%dFG` zDvWn-ZD8_6@$Ho|vCJhsD0@ZJZ__)uH~QRo=av$ETxv3lrPTd;yVz!;j!vFP39qv1 z`ovg;r0|NKKEmkaYJ0mgT~Q|zY{;eVy(oSz3(4t(`OaK}2+)yk|Ksp;H6fp(Y-@{E z7ziC#HyRbM_^;I*nAL&n<>>S{jZFZZ#r1f>y3px>;M1& literal 0 HcmV?d00001 diff --git a/public/images/bitcoin2.png b/public/images/bitcoin2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb031f1ae4cf583d7c26a8e0edccb22be298225c GIT binary patch literal 1153 zcmV-{1b+L8P)xKv5yg)!)hMxx@^Z^JraMe;F z#0?gANk~yGXzM1ik82;F-R;c!C&#UGe%kbt;^RHLnQwOHo7pu&Mp)k$u<}j$psh;M z3zg6%1bFt(Vv6W z&IkUl5j=|nyyJ)Eud5|*!Gq_(ASeV&{p}9=U@|+vyMFuhKW9)z5>5bCEB*WaYY*l{ z<0%L1#^plrsJ(nrP-ibgTCfO)?LvNA__wm+C+f~qz3I)1m0rxD}OEkPlAsAl4(mTgR>u(s=iF|EKnPt_(Rr zs%vT#CX({nQr3dFPU1 zgS6vUk7iU{a1dGf9X+O9kjpX2E}xKU;q0lf*VPIVVb&;D4Q~7~P0DFRgxA8CP7;>1}?=SQ0HdDA|k*3rS~;>qU=bPKPK62Rl-m}>ux_y z2b^Qd^(PkPJJf_Gjb@99`ODa;8FJFVdYTAVh}#uSdt-I66b>_;hG_L|-mL+70a1U& zWk^I{l1>hZv`RgqBcS+0+KE_+WDl?J?z`MCEp2yu|J73+U@?-%yxURtW24ljUfAWw*l*=KwZ9w>JtwS`;{>5{efzMvF{_0{7@;2XbOiECgO-h1rN>;8@k|@Gn;?U`=g+=~OX-B%JGXNm8%H^sX~jIjS7%-b zCyddxe5V~JcbsztcsfTIDy>s4yk703!| zY=esIad{s{oY{e?BXoIf(fx6ySS)t?vMBnLp7_u6veJ5gIPB5SbJyYgY`2`p&avIH TO#nKk00000NkvXXu0mjfan2X~ literal 0 HcmV?d00001 diff --git a/public/images/bitcoin3.png b/public/images/bitcoin3.png new file mode 100644 index 0000000000000000000000000000000000000000..fe90ddd1389ae4a19a0355513f397d3bc03b001a GIT binary patch literal 1181 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 literal 0 HcmV?d00001 diff --git a/public/images/c+.png b/public/images/c+.png new file mode 100644 index 0000000000000000000000000000000000000000..58ed6ea92965b4189ed2a3d260efc130212321d7 GIT binary patch literal 2032 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 Y4~fY228$JQ%>V!Z07*qoM6N<$f^Q`!wEzGB literal 0 HcmV?d00001 diff --git a/public/images/card-img2.png b/public/images/card-img2.png new file mode 100644 index 0000000000000000000000000000000000000000..1dee837805522a342a059c9bb49e7514cfc699d0 GIT binary patch literal 374753 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

    v?{72Vy6HINSVvq!_rH%o%KE-Xv@n_qmP*mM%+ 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�(HUDSi> z3X^(aob`=Y-x#-R>l(BYp*1wnBGIAR+FFm5ZzW=QZfVlq4Uf!@BcPMIG5HH+nzXXj z*}3t;e(eNe0D0Z)f$=%=hQXT8xmfME;^k6lkuhHCAZbB zN*E)md>CNCIX_j!wJQv-y|X>Ca?)|@l7SuGrfB^e+qITTUEgWMOJ5A+I#pTHVljk5 zGlT%{goHB!tro-5&?|LMxnF@)ERo0xul_7~r_#s?d zT&KYMsrJrL!c&rBsMFa!peM`X5LC#r;G)Cu`t1u5<%u-NGuJ4HA zBKRcO`jFn+wgSm!) z&1ZC0SbSsdUE2NnvnV#g;QG7jiraF`eXR#H*1utWbHeF~^yXZlXpZ(R4L z>zpb~{42@W&6YQ9Fb%GtAj!o;4wnDk$c87XbV^!O<-Iy2h=CpHyTko9Ze}%6Wk z7luAE?2Tg>P}t02Ha;jw1O^TR!?>-S(Qx+2Fi^KzCpE}MbN{J2(O$Ln7-}|KZ9Mes&Oc6CD>-;zR+vEutmX;=;bq*#m%XqISQgt zb@JRlc=Vn{0RQuU`A^}4`!~ag=4CJ5ym7Jc-H+et{_TgGH*SO<_0Kld*}Qr4N*MQ} z(5`2&2fSvcTE%y6O8B_hHLA=r3g`<;T-#fFVQO+($-kh=dDTN|J`Y;&%(im-In$W` zqkcc}fuVF~N4Jw%ub?su;c51Rx@=GXc$iYP{p$5=tGRY6Szs&39?s(OTPOVncSW5Z zDg*o7R3aJB&jI#AH0@Z>6z~i8Yp@UL4RuU?J!aSNC}Ew^K^pVcGlT}ap|iNXyW!*m zy75*;-@fidtA@D0{`oI7MDDZFtsSgYxUC8fEUHol;yqDp!Cs-c6|s0t?? z5Rx^*hu7rTrG?(2p!(v6yz_cr6l=X%O2NKLRs{^qYa%zR4 z|KWI*)#a|%Q_0q1-dl<_S2veYN$@fnnbQdoQ0WAqU9qALh8}VI_{{BVTCccjhSHT* z0AqMVi@3M55$gGf12zfw?o_}5N@#A*TKVrxZ8wJ9T|KOJ_lGrA8&C?{6ZjX9vrCn43vdX>&7*hUe{+q zqXk3uaWn9Ma_<(cgXX_KlZ;pbE0Qf*}o3%yoSq z4DOp%g|S~icT=uZO_S}^bMMffJ5=S!s=O7Ec{lo914;(>AH1)i+Y=c=R9-q`n7Hh# z^H|sKtJDe}+ER3#sgguDK93nih-M~rowNS289x(@f7mX!|1ANcUb7?x*u0Yw?@s|A zqCtl`I+g-2&P!gtd9I;;tDe#L*tE{@sS35Da7|U}oUra6Up%t}1M{LAS8pho3&ver z^(@7BktU3`fzbRPPZTwv}%@vPQLmiDFcUBP-#&$3=M!@~4z7#$i_g62QthP5sP zN&WHL@57(J{mL#~xNpI#@!UhtaBb_rkO#|Kbai{0qY+f;nt%-Rg_@CoNfol~D&nA@ z_Nf>cQX#aWp)_*KK)4+$YRAWh!;2R`hNs_tsqS%0fxbuYtS_7#th>YS>>bhXYzjHW z8yB#!Us6$Gm?RBR#EPZ~8!u(Q;<`HwJAZo*Bksg>Y39isuAc10Wa+d??pCn8Fr;kZ zr^M5~ptwsXMqz#|M4+m(1wxZz7m0w0HDA>DR;NVp|iuT!_B}DFan|b!V2E z7e^RkLb1H6iF}b;pKUVjs1lm24}InOov@I<#3K+QHcxNkk$oID@?FN>em(%^-45-(2y1}u4PT>51~Qf zaz#eeLF-YwW-21VUSGVAORfPEe02^e#>xZ2@2PgVJZ-8j!C`lFArVOfYeTb~K@NCX zHbnQV>8VK%lWGa|(HwkUB2b4u9fl}+WNt^j5y`;V9O`^D%%ELQMM@*pvX`R>oEr9l zv(H_*9@dsM_0J!<>VVhJ;i5I&RX|5^^l*1eKkHJhbFgZ}-7XB@@+iSg8$y#mf$H9#ffK*8NUXMm~U*!I?ntIk!m?^Ja~J|`85 z4qDXXu3BxhRk%MA8`v?Hby?xyx2UrzsQWrbub&{Zzip~3vnUc~V`JnJx4@m}kS1HM z)KRzsL4`%j9LR=w4gZ`W+@2~%ByTr#3GD`~bJGfrs{l5nz){rsJ!4R>goUK+4Fzjt zHiia!P31!nYj$qd0&pbxOC_fbCAobi^d?J6rfvMe=K~&LP)P6tlLf2iOrp_)`3S*q zNO0t-+IJEJZeb{jk0`m}Le?W(dPr5*-P?CvSg^}7HZo!;vx3=oOQ$!6P1kkdQ#4(a zqy)atQXwu`C>+}2Ghy_Ye-EykN_6&F3KQJQPC~z`yJnjMrNZdQkiP#7|6G(Ezx?KF zL$!BwPuU({SzocG9b}7f1yG8iM$O?+%j{HvfXT<8-Yu*A%-QDk+%8qAB3C@C3j18u zWxMVeT1{Zvb5m1>BIpYGhX=xs&z|WF9ELA`_6sXjGQ0&9z@_Q*>@ebDhtYeq0HnCs!qYvIP+l;EeKaH@{`+3O{BGd0Z@P81`K!qZpJb#{-vyoHwn zpKnEl0#>NZ`!E5aa(=bEqTs)7xn)EXTlw=U=-38kVGI-kp93Jh@rfym_CW_dRJ=gg z4^5!$%?$G*eKlJKJ-?!*X9vcLI#us0lH_GnrZ>qtN~SWGo*^6byaQ zn8K5Qj*X53vO_JSV!Nr;vq)ecHk_GN#+{3blfQ`{i8MC!+xFgJ-|uwk)cYF1iVU3N zT5vXU_D5!}KVjIIXRGk?)El%Z%npzMUQ3}5*2aki9p;NTe3dg61*|7V)msg<&ghS}i3NDV05%6?6LEP&AP^us0_Ugn=Jhap%Rv5T)!P8p}q| zG)Gl^GSNodY)kkcjzt8Vjjc@$nvZp$V`io01cKl|B8AG*5Jn1kw>Bt<@O`o&b~@ga zb=#Y=d@dOoI%36MpjCA_t#RYIT(sT|P!!8CbSy`zQrR(}%YZfqM5QUKTJJ3nz?o0j z%TyN(0X0OO&cQq^hRp76Yq#wVnTsA$H{ApGPMio6AHSz&B{>=$GR31r#)+ z;M$?j2>tfQ7th1(o3}luVVQ4R!&cy#m%{F;I7h~(!+-eC|5*daLC;fv3H8CG`p1zGO;+vkqoH-dk2O++)rguZq<9$fYNZs>3Nt} z!h-R2p-wFh^-2yJHmuO|9#&u^P@Nv`g;NDVD3VZhsh*kjTYz zXTW-*>b8HdPjit~iwZ(#JrQ z)uIlCeomtYtJ_K*S7v7P%tpfPI}erc^mAF{ES(vaeJ4y-i$)Vl=uQ4-Hsz_79MG-& zo9u6tig73pA%OykIoQG#b>O=5mHeq=RjnHRGa?)l&BUSl;&w+u;huD25qiJ|@2)X@ z3p(N`M=Z9@rJnl3-~78Ld9`n+xg8xcRoQh`m4}VdxvEe==pCO6S8hKFL#i4!_D{T( zcdkIYr>SqJE_A!vj%{T%>;!Spfu{M(-~YW@Gfl(~cdTjN)X`ynew$lE^k{0)1f(aFnaU+8!OPA z3L`yKz#E%dunT-DQ}x0XtcQW2aSvl$oig3l=U7+UI;0E_TZh(*Rcxl?OtrbREhr&Y zBJTCUqsKPKpcN#UATLp|BytE>)E3jugSkGu_r4CLhT2%D>1AHOe#;#KgDAsZ=Fnzb zp)dpBg?oyx-`A{auu!hM1+SEAP7D|xWYLd@wx$I2{zpF#gA?<11Vdxy_kZ_qd~kMj znc7;TVFy8GY-S;x>$49HO*&a^t-K0jsw8?Rgzc{{3U@rTj*$nEVB_Ary$Bb_dwy57 zYQev+U4N$v&WJxP{}tYnLRNNPzZdQ>-@`m`aBzL@zy8<%-s+N2ahdmYDWQSM zvk$>=d{apX$PD%d&xJ#co;<mrm@cLh(BhWY*4$;Rt*BV&X$v>>o(LWcA1j_A zsqz%$bW_P=Ps7UxckT!73i?C%7W8OX2mG)tEccB%+QsEJ;k&>5$@8lXRq^}kKJH#y z2-mJIsL&{cJz>jFU%vEy1rr z!)##Sg-YE-h99w<#O4KrEcU zBmM6Z^1Mnubk|54GxL)Y@_~@fg!`*v#!%J1m-R<}|4|s0% z>(4(6w}i!CQ!u5X#Uu7o!SvL*b&Ux&f=94(vXrR-QW)| zpNBWgi{b5?C3lS-iL5%we?ST0<3|rdm%34`ND1PwlJ<25-{={?SbnW;ti#{Er5PpG zYx?dTVR2(kvnKs#`IRL$cJvI9x?m7{_g z0d>c_<|u?_SE-Vz<_zlhcUAnH?VGJ<0~~Kt2M=4JQ?mntqn#N&spyWz%!#2>i z7741Rz34*;b>r?MRqiPpE&y39VDzisKRGsP`Wj?r+ZcACk&$tLCYexqPAOn)tD=Kl z(5Z?86sn|WwJ;NR326Dj;MUY0L*+u;O>n6yr4ugzQE8^2>=n=(>i0%5R7SgSp``&& zyJIlST)SzmZkMp|4#OFOLlhWU;+dMg>fku2Og=w9Z*BPJ-+dQWm!9jr>}W80UEsN1U#`tIK93Y-S(nqS4JE zQU(7VDkr?=jK#^yZf(&Q2eU^n9GWGcsZF2xvyVPD4G}iW_6~!#T_+qa_=+y)gpvTP z9=0_P6=a9>yhnxx70~)ZPj9zp1&FGRD^U>qVT#~-wWGjIl?BV?*3DZ!H+6MaVBI}f z;wd<9D#)8zxi zI_)`8&9sE;ci&f`m2&k9bLnsX>R0Y^|MJbBt@H?y063*j&moWR@!~7ZB(9sKM)x{3 zJZ{-wbZB~1>EoSx_x2sZQ~lwM5+ZQUJ2>-wT^&buMVGYQ6 zM?VKCW9Z1-M_?d^mwSRCS2xyu9&#$IJ`o;IrTxW+kM$1P!m*xB7kXPtsw9jx6_86C zDwgfmT&q8U z7IdPA3FhjlFuLfrNGqB;2!`LON@HJvVtesBRen2`UL97YyuZIGZ0-lk1wau*s3@bu zvZYol<7KCWi(HR5J5%I+B^4?-CirE$%g1$lsuZ^?x*-JWi&JE2bHcpyaYIoTmkm9J zybLi3u4F?V1blyzP1nGf>4tH8QG;BxMpW(f_V&aj3Sn@lX%blWbh)8%ohS%R32#Ig zf$m{PfdklwBv4XCHlx;;>_{sKRM3#L^*NhfU#R+Q373L1*g_=RZ)~l3@KrCBe)5au z5HL`)B(x4H-jN)LY9TIt^(bLxTe=O6!HC(_A!oU2Vsg&1t^fk#`tQIjn6v{?ef!ma zR~7Rr912@!_yfjDFf4*Q!wOPG+^UKOp)2^nRNWm4$c3|$=p1Ha8Qj7;d|;rH@>$?v z1NC(((6$K+WGj{77wVz>J31wnThNWcM-%oB7&ZX{>RqP}UZ;L$pP(9+bfA;I|M&yH zKPYgRgaE}s+hljci()XpG%V&hBDYOq1ioT>7wE3d&|H)0br0^|vx*`PQ9Ii^vB1z7 zX7F3C);+K!=wlGwA;{_G&AYDVaKKvG*j7cUN_TGBST&0|u(J@(0wP+NU$8lSJ61@C_Yl!bc*xu$8KK0> z;utj3E7OxML#rl2#;9DxD&H(z}f-ah|6T&kEMn1IOx zp}l(b+S{9>qf_RL|KjtXYYx;9rWIfx-o0Z68wMVK`pcKb=Hr$occNs7VqY_#Aw6fF zEtPLBN446b=iOp?V)*f&fB3#SjiM74^NoIWGWTy@SK>M_Yj1LDCcJ#RXxyCcxWSv< z88c0C_L}Y1JDCd0O8AF@@t_!^M9KV#U6s#1{={3ZQ{y9M-Mv-?51S1R`&)HRFP0Wn zFg_25>YkVxqSXYOhZSzZt&y_D54_ zIS)gErRqwG-2LyLzqAZBG{v2@WmAe732OG2|{nQv#+e+kTJD1CY{4iB_s;SY;2R1Qzu)V7I*ydv} z1G50_=nvm}PaOlBhYu7~*Nml);J%|5_1n*WW_S7A@u|7!&_GE%C{tRYPG8g-7%)mu z@k}V1>C%Zi5&Ut@-8b%9b=FstU@9nWAQBDeukhKRxB`33DiE;*#GsJx#-2i#U=;p6 z42-spUR~UbpWXcIoM4|bYYd?ph|m*aTPHhf#>KmZ2Q$be0YYDOXH|?^KvV-P0yVYw z2^u-~P?@01CN1nE`w)XeGTTuAn%6)X+9O69EZSjeey(?PqH2l_P6~)NB|H2-Tl86> zbMkKa9AKH?n0SmbK&7LEa}Q(#+<}(>tS8hlAKbhV=BH-E!#f&aD;QMtz;4{Q?u!mZ zc2V;p7XC;KV`F1Bnn4YbijJf|T4Wt9yURw#h3jE`OJ>RUX+kSFs@vUW- z8T1iYTl5@|Z1%a)^J1r?Qc0Q1e)al|@N#82eE03w-stS?>eYMgccSi4z@Y8Fe)C>< z@9`)9f2RJs$Am;fmiO&vx@Q1z1{jFE^DzmE6d+#%kKU%-FPtUzz3^C}g$~@ zoyZ^*oa$$CccJip_1$-2eQn8b6Kap=`kl~%nV|q3b+F~DvxlW9j1;;Lj8Z5Bo<4pk zhy*j4MEL#JU-~{gzH>{nIkwP?;jI$LD?w7$m(stZfI~9~h>K*8F8rxQ>CWs71@tg3 zI1=W~VDCWaQFrz9!2>T70dc+E*b)Tu*4;9cNZ`k>e?UmF9OoxGf4nCsm{ZeJVP)~P zcT1r@Z=q4Sr=_7{L@HFx`w5sqcSfd_hD5Tx0rX7*wU zYJ6cU!7{@n0p^>LZ4|elt*uoR+$)**P>B$?|9!$*QZ9n9j4VdkZq7Gub$KBiX#c~K zI_CML6D};v&_0FJpYE)?ux4&JW=OkD!G89G=Y8XI;Y{Fu5gl@Z3_rY3hzlj<_=^eD zJ?O^Zaj9TJHI}Gt_V5wOTn0aAOcuoW<&_*8#s%TPx zo|~BtKmYkJ_5HeHm7=HoKtYnE_C^(0GEr2(?XZLaEA&16qv7BGhySw<{(-eOSg_)= zQH5bN6FabUT-PT(7E2yTb3WRHz4J2;&rV&Tw*$8@G*y7;R5Akd2GSTB9ns+Qg%`IJ8m;md3RH9#*dl-X@|6eg15i!_V{l3trAvQXJc2-ao^ssRNEMouuKIbhTsg% zvQO_at@pYsxDau!!-He5=(8j6^^5OaO+Qc|JyFr{o6mnA4psOJ2tu(?qV6a^`||Q6 z3=0lr`*uUm3OxM$;3Rzf!6zPUQwYvaj|$@HGK=a!XXo$!zyH7Rt-1pW9C-J;f{0oMK?Pr_W8oKpx@uzyCZmDailz zpMR#`JLOH&h1UzV*kl=r*;c!tqdv_T4)pg}(8LSl%dfsP-EvOdA4wBs03a0-_LU${ zmICkG|44UqRQIK5S?S}mb1&pkG&Oe*2|kYg0A@3SXej7j2!6_>qXY&lMgC*YH1z4q zQM<^j{_3)(<&bf@Vm%TC0~Lu-zUf{AKYrBq*%(!Umb)F6;N~! z-+l8%_#eOdbx1w?>~EhVB9v2hgrH<8p1~Dal*&5_V_4A6?r*Saq4vDR{&S)Kn zEt}w)@tGN2jJ#L6;iFRp0O4enz5^$fR=u|VrZNea9=tri#xY%!5>*MueV0VW{Z=T^ZLA5&Bs zslLEyyOfOZs6_*&paCHI|EPt|-MVkQt4m+}=J!kW+gmw)_6dyLL22<<9BTqqEurN4iC=x(xKiG^YC@ZeCG5L5tU zu%Q4BB*y@HTuG=^i3X*^o~{m^lbl`AZfU5>41x{V_ntlpe-sw{)t7(t=IDurgcIXq zg4c$^mJ-L4hmXRVpaS&zITN*l^uGN1E5U60s&2c@^6BmEwNuiXhParc-xgG}BTW8K ziT_*yj>S3n^kDlK%sWVMM^ub-c6Zp7t$1~A2Gy_%lCQt|BF;)O8SlRI2-3uT?e&YV zUD>0yxTIi9AlMfi0hs`1kdvqWJ#^7&1yE)nbT0V<+z3 z=7#X>@l!qb`antNR=9iXR_N1tSQI3) zry0PO?$Gz&e`kvE_Wp^JPfHd4!>3|j&x9mAj$j?q-nyI6uYoEU3{R+I?N)FGviR#? z{cHX6oJ9{&KxONnVI_qKi35$C$M^4qIz3M`vFIL_HkKU(ffw&;7>pOuD1*vi9a>xPSklwd@B32Z4Y5<~RRc_W;V{VYC*ki{2I> zAQk{{K##vgBbe)cz#6i#4i0E$m!%_Yj^DQKe5Sr3dLnxftZYaOHX=lmR8v=U5)ZW| zThunRM{^|H_-bpTm|!VkW*2I;ra=n%_kVj1*1NIGs`P<*#tG|l zl)aH^UT--D%5>EawPMA}xF$U`eaqHyNw8}TZ@p-f4BnE3IdgNoZ5}nWCAqPrB?BC1@1bvPtSDWS2e7;$z2+0Ct>pqm8+ni!Cqe+OwB+3>0g8;edf#S zV{4CWufH|@HJPaoJ%baWRFy5J%3yH|BapqlZR_LPs})ubi3uH_v$!@7{f{6IbH{xh zf>#Pubv70c-kxj_tdh}tMkWDE!3%Tm^-h)8!N=_y#*T!lbJ$J<5pY>xt+uu%Y;F{o z&g>5KZh2AAOsyF>beuM5OTg61xC`piGwRaM_*yW;D7ASb|YZfy(ZiW1xPIu9(ky?wLbc?e0rNwcDz?L7}3FO;0lK2VcBaIB4au3o}S?W z)`_a@+jKTZlvJm5c1Km+=L9RgP!;|4H(y%H8K?tO`${EiVnx3O)8OwEXtc(=nsc4& z{xVQ)*7xWU499T3U1#h_r~@+W_jM;8-?=X+b--++tYQf;+v>`)m#8oXpB@=@HQ!V9 zk?m}6^5PVGL2Q=~_V?Oz;_;pNFt6{mb98DtOGrxMNZ*F(l2GB;Sv;1=6Do| z6jSyDX2H^qROz^#T~q50n`%FkX$<|NbAHb414BkOrtUv8T+KXmKttj>0=qD=XOK;OS@MW^b*680|L38bhjf8kO`2DuCx>8iX~ex?#A5vLICj zgR34@6;LwYF1<0UgTu;#7F7uNE&So^4NzB{s-LP`+FO0AY%eTN-?MmmWI0=2Dw-BZ zW7Mb`YHaJa3gUp^pjKVR)ALJ13XOU$7&DS@6K8SC}Nd z7$RmxhRRTDvCrcq@EuTj4AIyaHcVGT$ak+8E)te|#jeAStNlSiKmCGJ&;eo|u%(O3Y-wM^=^Iz23YNF-hM8MYjS>G- zXszl&P_59Y=$pO8LDHtKhg>w;==(pd#@H%~~ih}W>KFtc+g!iAD*WJOUV^>y}lx+8`x(XJ2eUtUi>+Wg`iwiHKzd=AQ zqQiV{7P&ZgEt)gTs&Kl<=EH^pANS%yo%G56nm31WGppcPoAAD+Sz6FE2UQ4Mt2%EH z_CGj05w?}g=&)d!kgPh@-LL_Et>nlYhb60*uYS;+v#!@2g`z`!thniD*+%kLwvII0lP)O ze5vS*&0R{{ry*m$J9ou8rj;nf7~KfV-gYfj6$L6)ty2YC6FL|!=kzRrrzU3ZJ0@Nn zsK8XrrJHMOX$)I>raX` z1v7NauM7(%EY-{KwU))JrZ#`UaaBbB%m4lVVQzdfDcDFs;97?r<`B5?jfNiBr4<=S zs+C}g1de`2RRP>rY`buIUlZJsL?fTML#b@-7M61`;GkQ`XubeG&AL3_jcTY%@CPj* zRKsR{)}y1dFibF2wejUQ-+D2MmKAes%v5O84q(sV7g~%Qah5cAhFrLcwcZr4Ubv%S zU0#_|IOX?Hy$<~ZLNB6*D*NeB+KwXrO1C1aLiC_u(1CR}aZo}URrs%RO|(Ix)N7hfAAr{lX+ zB5POY(TzMZtSrG>-+li==eNn1=338fdU7(%&)wE%JFzKwM%_VwPmiTSe*eukc1z0V zD~3V2#P}lsb-eoS8(qGeFe2z^YGTgXP|#~xsse7ryW&8zpdS`qg`>T-aJjc?wp0=# z0g|}6c(zEyz+Uahl?c)r7H;0wJ7~T>(B+^K>iE>G1LnSx8)~R%s~{T;J#|Mz*a<;| zaPF}s1k&mq7%_dgfdRQKHe=zoBFrCXZ)|ePu21c%(3x{(bl#RVNJi$HWy-(&>}U2j zMm-h@^0mF)@VVeepfCow`@7rW>TJ(c;OxbT*-sYt(w9a+56Un}fXQ+RO;XBQpl(Y^R5NQOUNId0dD0Co1atfTw{s(eg?) z4@^G?->Fq_#6W<7A|HtA%@tNT68EDtXT51!Kr&gpFzZ^?9`}38j*8|=!xbI?5BT`_ zNL9&pc&ZPWY3;Q851Eg^2rUnqQ<~N^kv67;G4Jrij1MS6XOqIx0}{LWlB*UB6LMs6 z7E7r9;GC+WgLzRe4EjKLd0v^fpu@|h-BD$5tf~ZTxu!n0`Yd+jG_cK8JwuCGwdFcU z3`+R-n0bRQQ|ZvEu5IjTQ1r?Yy|tPEVT5s_O0HR16lkGUK>?3jJ_8rW<`Vi`XrW+l zXyw98Txn;{@u#*-7ZKA3@VgY-x`LWYNEi!0escdoSX=^cy|h9iwr5Z7-3{0Je6>ov zfAz~>==XN2BHIiH`>-6Et$Pm>sXIAW~Lr?s{5|e7st!Z*l#(U86hL$&dSoWp5dcNDI9?($4VbBvi?ITMDFjr97E(eOFT>>g%^AI@ zFB+E*T5P+zB8JlNpjjG&Z9_K$JAvvQ91|`!tQD|a5(9sip*z^}>D7&^o-I|3nFKiN zQ5aSW`}EOMvx;u?PA|ELMI;cm1>tmCl9vi+LDeiAYXs_0LR{V0bOAtXf1v<`O!C*l z+F78&DiOv8*fU~qZGv&Wefhl=Gg&O6{YIMl-rf7*YYkj&L#Mkkra<4S=g+%f3wd5p z8eJJ|B^V~aJ*S8Jf*j$D3*Ks|Ges0>?IT^tHf!iK>D;P1uM`|efL#bI1j3AprVcO2 zrTlzYA}gyiIoFvV8yhj>WLSv~=&eoflMKQP>y!6BFa~|8JC?JldDc}lS~?`=N19Rm zyTAIS?v^U)>q7Xu|N8e~L6t1{H3M}P4LjPqJd;4+tX;`*R$aoZz88Bf9c^uf`o8)0 z8$ms91ZQn~qm}&$W*A$`uS2F1EBwaJKIGA&hJTMH|YN3|~2~hq|-hzJ3?J`u;0d zz`Y89bk;9)x94Xk^?Nj{(S2i|Wm`oFzO-$aus|O0_I&WO#7dIQdc%=s#Ar^Cu9oJ+ zNWBY8-Z|q|u7ogxsSt%Enny}LkT;-CrcB967;mQwWMRsF2|5d%JxbpC_iH;xVQ+KQ zLUK2Pz`*=}5QKZUx9;SDmeTdrndgxvgb0Ey*EB|TR-_V2u_#7l5>cDfqo4fp`Go-e zw7yYGN3UA~JX}eWQ2Q;Hjc>w_V*C0c$R(r|tXS`bbKIdSazj-lIH_9@ROO%`VOF3^ zai*7sDkQST;B~pXU|*o)$$+v}50NSbNQq2J;zF)=V022uvyxjY z+IzU-Sf|yh!ocU0fzaxz+9g8_#n7RIz(Nd{G7FtiftI$G;TKzgTzaeBVHZ{uj6uN6 zM%6hmddiT}>&LNB{b@K>P}&69ftu^el-$&i&q#&amb9=W{noaR~y zwqFnxmE6easE48?33e(B?X^cpjLPs#$$-ym#)=XRjI3-mNCAJeG`G67o*bVJcT{B~ zt`U2Mu6QAUJM+AN@A-%8&b~OI!p3=y zH#&C=k#E!?!QR65^N?aBQ)A{C@&yzPd=HkXC`h2YLN!hlqjh4r!q)acsB3E1&)N+C z`9J>WP@@hS!otkhqz0WGf~!_Tj}jHI7c4J$|6tN=#J^g29hy}5T-m(jiM@F-^MFG> zrQsyQZh!An;q4`rhPNy19QCGY;A=R?QGvL%VSS>Jc|&Vz83Er-3W z6~(&)3o9~vBT3ZpcPdfB7}y6EBz%AV9oxD9?^e-7LuX)c^f~S^1Y-<*8y%!`&Srh1 zGgg*M`U9lR`%I*2tpeCLJZa1jQ{vT~11|xg1bC=+B2g9BXHB?C)h`#~{A6F5wnY!> z+zUcU>p&MQ%{n+fuX#bg29~X=dRy#A3d`V^Km8>9^5;J>FB);8Lk-wy{aK(oIlVG3 zp3h1W$ZCL7SKn$z3LU~3dKjwWuk%G$Iv7?EtiiGv`c@SDQIP~+rquy!!&$3d53eqr zHr6*cJK;-vT`ZXya(iqzeDdV6f?LVMMJQZM{pkq$RcUbfO`FnlYR2teGX*Xd*&hf5 zJPsZ#=EUVW>56D(&}V=5hd=17jhZUTdp}b0 z{M&!~Z*^uAG>=d0%WN~4%Q*Au(>rZcqMezYQWtq+?IaW*F+zde^4s74vy$MUDVeoO zvf$Rh!Q(S`^!&#ah_CGM#<`-B2d2D6D@K2AR7KbfI#)`5cW&R-KzAgp2$KEiqn}t? zpPhns4Zz=j_JKXI)0P1)TW)}}6GhxL_&vQ0E1SFFjs7l9dMu0Lq{W8(??3;-0T(Ig z6+wi{E9(C0>MYyx=G}_sNc&+}5Gv>EN?p;;@`7oqH-eb&a|Lv3cH_r!T;2Zfk)=ibBc?#)ZH z?kf8JU7B@ubgMv6QGBjBC(x!zFz8&B3elq&H#6n~>`L+b>N|#?BhueAIO)wnD3Wm9 z`Je>CG(NHpkZLzuyYvAYJ#>R|M0e_Zdr^Wj%eG*L@w7Qj&o_kcm9I~| za!=AA@SzS!)rE928qya^2GBK4pHo%atKfE|%KGH|I{f|r_`M*NH^$JePc?;yTaOle z_S$d+!KzLdy-|Pf-~3O16TV+q(m?7gT)~LYAh2t2M40u8w?60YJuz3f)*ALnuU!-T z7`nD8$Z$xG^*d1=v^F&zP9@suEeT&<-cU7GoARNBo_VT(y1%{VLyGY^Sag%Bzbj$a z*XP1z^*l=0HagShGmqhFT*WXnt>1|D389oR*7m@L^SKV6_YZ_t?7D^Jb}x*~ueS zmUL%d2u6ALW{ScBmPElY8HtSh^V8 zv2&ucn662A{z0V;BL)~RSFTv_>Tq|(o7iaDV`P1HwC&{`&P`D;$0;T$$oQ)2d-&*n zxclH)_^DCVRkHYP{5A1oHuP*c5QIg1{>g+a$r1pjrRxrYl_x*yI zbzn^Ut{}304Px&o`ICIZQMe^$6VCnW(ni#RQI*&%Gh8=$zW(;(w!{{a{j^7@ZDFx3vYh-(pvbQ z_raqtRy?D;I@?!Vy)yM2Xw`D@xZdUB?`DJ6Dya-;TUtAxgPjrJN;+tD8Y~p3%W30{ zFXi2S(9YQSSeQP>)8Ml9<-|=!--}iYY`CmngdkY|;HU=+-+%M9F2%kFla?@Gz^lJo zqd_d05FPmzC7WxO5|Bm~?o_LnwY#(KpzwO}rCOH5aC5pVNMg;#x&`ERmCfL%Hfadg zq_*(VZcz$qf^;w)M}y-6t2ccoHux&4{COF@15*|;VzoNDZC(54&;ng3(9CEUWudQP zT!y;1DY`nW(R116peZn+KMwtAM+3(T9Tezm1XTvN9Ht9(H|Utus_J1L!L}@|o3TG7 z3G4uI9AbdQKZj-ovjpm4)|_jGKG8tCO?c>xhI)e|L#ogg!$47b2jE?S3Lq7yt z=)G(lx9F@4s8Z}j3r86F>c*O%4X{bx8@#n1y0WPYYp1iL%?zwfRb(hw+8mtFgjP!#F8Dd z5Q__o?n2ObnjRSmje3_<%FG^6n`D!eeV1(|vwHnIFz@d*d`3+ZOum4820qgI48T?V zGj<$OHlL{pD+-KIfSdHY(DP{%^i(XM3pHjcE!`4{5~dpprz{_3(n(kQFsn%D%zF48 zX`K&?9&)zm0!jW#X#exS{r67b_|3lj;icy}z&f||jG%JfzB3=r^?NWxf{wkiykwGK zzs}ksU<@y)ZUu$37jV@LL15Z@liaGN^(XD~efZGj$mdrUaG#0v*7zl1@O_-@D zTRR4vrD(}u006mUl`v`)G^b|o>atTEUa1|t>y1eyTHE#c`-disd42KQU+Y30MBz1J z7B+4QtZew!DKXGCmJ&5~l8OPPDe_wR&e$2^^Qwypvw=bNjyjKPeg5s;g9uS6cphmw zzM;dNL=OnQGcGd4g7IT(%M_xmTmj|KbnFE93=A*{wkTSXr5jq1HBEXM16-Qn5A%>7 zVXn6nz*w*Vy4n&JOE5$-wMB5wSAX~yRj6%VvVsQ3fn%skdrHT3bADpytfWl>BBP3| zPlpCxiW?IxEVhxUdL(hjeIR*XiE09hmUz+Dj6lzju1j+r2HL<{V6MP41k2fpDL)G= z-EPg#dkKo2%W~CM8(s&yDqPq^rl3Jag8}{e)?V1!+w;x^c8FJ(StmFuSz09)f;N{H!|K9!x;JP3 zK6F7yQJ){~*bp2{7VlQ7N1#3MVTyq(-6y23!BttLDkf@Ofg_<17j()>kiGtWx9&Xl z($m_?vaA2Kl_k%Xx;028`7tC1k47E?92(e$ZiC8?s((nyfNo<|L2!2VmVF#ngn!pC zBhtK%&jXG3 zQn@!ZHB@&`il$UkIx}0U5v0k27=#FReV94$IX`~(*zo~~P(YgP2I*Li)!FTAuX~qa zZ!h{+oLt=4bY)~{K!bZ#+{v;DCHp5A`k9*w=nLMOCcuCF{kMt}13p`|AP9)ywY2!0 zA!`5|&dve4??XZa2*j7yC&ug%PRyXsgiUBNGH5F0w1@3!&sP%G>h}P*&fb4)h>tUb041^w4bAGB zYntNT3){DPRyfp^tVx#gP??{XWI+<1eOKT3b6UFTsd*3B@|rl8bqHy9sT{zFuoA>j zq~rjdbG27i4LPhq$qWZZUu1K2DYPnBQ(7OQ4M|c zlb;!DP1v-#AUJ2&T;5TA9#|vL+q(M4!r}h5FGIhuy!($oGQ`6c?+1*r#=@j$3iU%WN+^me&=WvZX{B2|s6^PH+Bg8k&wq*)XhjFnN!QvjuH zz0}Wb)}dwT1}Nc3fhnVd$pstJ0P6&!10}tryPdM}c#9X&&A>$`*rsbNGDe2xV32qS z#A##d(Y$0}Xv%FqRq4XpH(_;~OZ_%HzI#jXLCP5F8O}@?#0(FHjkT39HZd2Pl}xu+ zmvw-UV5o^LrV>a?SFeZA&CO5>8(o3lTt|K}cqL0hGxN92LZPAr4!Nm1WLYRJld>Ho z3Yur?D0pry3V?VI5DZ7C z1}dY~Mr9N@XF^r$JAI$D6KcDM<6Qm+ckg)vb)c`eY6esGc_oQZg>j)sOgzu}hPdsW z70%k;6}jzOs&qFo+0nZJE2g_SK0onLi>+@qLJ17>`u(t8_Kwc1bxucdqQC^*6^)y> z@7^jwUxl}NM}^#3*j#yIJeDL0-3~SqtvG|uq~K4?)%Vxmnfb=Kt>~Ves|#enPBBFA zOgFZLq48TzR%qlS-2n*!F}eo*&dtp&Gj!OA!Qg@bg@*f(hSfXzS>Jy9g$Il5A`nnf zf@M~+_-4_a&Y{jM|EblTf1>%*ntmQT5J!UVu!>|@3~bpbc&MbigW1Xl&mK7;lWhO{ zuYc{IeSUT28Q%8pmbXf^tRSa0i?uCpY-^sTJGimxGl*5;8_l_x*)c~#_Ml1K zz@@s{fB5JBp*xp%kYw1qr}K?!CD0VXeN=a6bYM7a2+AwkiKu9(vfq}MC3Q*TR#c_V zWxIZ2a@I)#l<2zZMh7{gf?PX69O^aOgUl{S_Apy)IFdJ_VbTnhy?ze^-e$q#l~h9* z(9H72zTPE2ze`o@DNqx*^2i^n5TFph(ku#GpZ5S^X5#K6EBIb&-p8`1m1616E6K>7 z)VZ6v`!t*Z#bT(`)Y1REsEcr|KnIO0X-qlgfR5BD+;}TCzy?4AhnHR-{bA>C-3^6g zU08Va!Y$5;Dqt+IYW31H`cUAx__%WMVam{g0|At*fEmSr&>F$80OPCWH$Q|llt5J% zXJ?l>2%BMkZbohJXxPI{TbFlhb4`_Tt2e@Sg~Q|1!%Fec=$I*wyGk}_SKtB#f17RH zp24wj#;`?0Dk@oU>7Bi3Sv>q7t#v^c1vF|h;S5D%T0Nv^cZrynpzWn~{D9omx%hoD814FKql9slnx(BvFBdJ@%X$~^o(+rHA>C+e){XXd>X&0fm3lG?pH zw?aw*VtaSr#TLo)N{MY<5E$yAAsM9 z!E+zk3C)rYRoTCJx8Q{_2ARErK|c846U$fAaZxOhxOk_?pR@_a!WS440s*a23F``W zn4bT&?j^;EVoXucU^G!lhllTf7E&70vU!Oc62eO?zJQ%|3!=!Dv3P4$ z<<)FM=ceXb>#9&~z4zfK7O+C_s{ppG>JuLH_|$Yr=+K@k`{iM`=u+dP&bH>6zErOU zRkYw(?a?wZP-zkthpHYMa#UvE;fGtRVQy~L&hI=LT2jmpl2t$2bK!%iPoAlo+gFm| z?|_f9a7D$A(-NjDPwzj}=e+Q${<#7MX%T#%$vn&oem23IEK7hfZmx?>Ktpv9o-GP_ z^-37tR7PV*zY96!+xPCf;^#1Lt4&0*wL!rK;kM39k#oTTR2*LO z*55@zvr`G?@Nm~dD`<8Im2D~L9(bia=MD?%UXw02n(BCrzFT?cM0s?4sKl`wVI7hr zT1dJe3^!pf&`n_h2N#_A3jH|DH`+wj#lc;Y6QZ z=Dd)0d>VHS&`4SM_Hzvy>m69>a1IWS{XFidv*99L<_dOI+gw{!%m1}0#TcY8cVMAv zTU{Lm8w3K{bmlipDpHWny%uzMdAjdJNxO}4`g_kl4BrUfzYq)n?e6ghpN4EHBN*+( zRhTu8biTWXW<$EAGfdCj4v!wa=eB=*YQ|>lDcs5wutr8F!t~6Y@K#U}e;@q6TL~08 z;h=`u?-mzqI0F0t^%>_W;DyQYNmqiq`v(!TSNGN|=!F0c=X`o{+yxDgQ;zM{SKoWl ztfRZ%_KFNE!Q(M2;(zlTff2ANywDwiRM9syX=hZUI78rl*> zM~cj%uuGEZA2E~fN(I}V5)}8%{?N#hK*wZROT|yJk~B1juR(WP+_t^c;P)T?<)54Y zfcq}4PD88yJ6-C|!M0~<*D6vj_BWI`V&_QX=J}(}j^$+xb!XyID#!@COPSbRTeIHE z19fK5U0H}*=trp*3JHs>DNeT!jQF{y+6SkfCoOMWQ?=$xgwb&r2vryYt(;WE9>Jvf zzJIAkP)?6_Jfy=_=0sJ{g$7d$hL9zu%7bmdkb*@Xs6qGc zJq~qEo#7i*MzpK6LFsg3nALy`)9Y45(3Dip^-_Te7>Z=kchMmP7rp=VBVT3&u=Z39 zkqLPr1YnX60Ujm^7a3h299jqrHyAYMm-fIJ8Mxy=p6$N>&#tz=UDZTwFNO zf|r_!sL!+{Om=%`+ZytD{k~?rQ^!=%F0WSY&yx169a06tG93Q9SQ^%;>!Azy@S{({ zH!oib;#pRJ?DF0R@Jf${SLM2+P4q`hyy6ydoPB~Srw?7%$>r$d) zM1u6PNg)n#8I}Y2Tq_Y^j)4a)Fc@35`RlCL!y8G&iD=%m9Lm07^`~C!<5*r1P_2qWA}+dDKg=_ zr$ZGVr$<}iknfvLd8rJD0kOPBJ%=AVWt2A4HAxF9HnM2QJ3Lo`pzeHgZOMyE+{wFh zQ%>kZBg4KQ`+`g#-o6uIK%EihJS?|my-_}-?)@yBsEEWt3zHrSl)wF(|ETYo4DVFg z^BiD|5%8F=-018=HHER&4}`0ta%^l|0sO{`l7IJ)|Dew>6Q13_Z-x$j(@lD(8=IT% zTG&p_o*p>%gk)sRA|>u6%iC<4yS+4_qMcoh)fzFU;7tSs{1i! z112pbSacTZDUE#W`EjVvq&T zN$KiSv(Ntg`86gK_>FoAqt08bW2y}Mg(a10>pkFs0!EN-R7FrD?AEK`z2myL!XY&n zJk=%2t2IUY12M5U98HD!yAM=h@et0#godlN!X(k7Az?6tB%n{KLg?-p3hTn9Y3~Uz z7>M-gz_X>t5(7&eEoxsG?A@Bb?_h=F%--RNH`452RlIQ(!r%g)|K+g;CzY!63(oC& z`Ec*;0HdG9MgQ>qkHd;y>bY9TySMJBg}e-VxZwyBr}8=mC)0!D(BwQ^N&4l1WfK$= zw(GlctHy#A@K?L0{CPO2Kt`bD=h*MlZC=UD6#l28pbxxqu0dsu z{_e!|v^nYMyyF}OPG~&Ot~o7XVL^j9eJ>K+psGJ`Z-m#7uSJI(+}azi*H>mAu_0)N z2dmwBJ`8wk>QcTS1Zt`Pn~&3h=y&j4NQAV5Hd2Pme-=Fk05mzsHy20771^X@SZ9GP zb%(Rlv*Cfd6e??0zFF@^^gG-ZxY;u1`I&wwGioaQUgRSC+#m(ULH z&E4{uLNYn0q5`)mWJFkw+S*u(pI5~|O+&pIDL`(WO17Dr=o~aOHWhA!N#1|_zGZG# z1Szbm8vybe8y@w1;Y8h8lY#&aO5S79_hg{jp-TOwf-q;9g{tknBNrmTM|ND&CI8{| z3wI5eYrps8ndbrfM|2ZchCi_;TomLnr|)sCpY6}5f&#hbHa%PPZtZM%%N!`N zrMbg{af~r21|B{8Abj!FH{nc4^;|&?!okJqg=S#o@cy%B>SSICLTU)tr-xqt;yoi% zf{Y3VGT`Zls)DomOT$-bJr|fkC;EN03dBwNo|l@Y#lyZR zdiZP;qGDCkrc|)*eI-PuZ?aOUddH@s zp;J}=o`i{91917a;#L}mC@7v)m0e)3Na2p%C5arXRGwRE^6rPv8O%0tm{f7`FMt_n zF|MfY6%ZQq7vR9d%pjPkPDA|E^vv_mw{-dz8wj<1cML~bmB29zBI+uhuUZ@lJcmMjY!_vl9 zSQAvi2JP8pAuQ|nF?eJ8JS@zsL5FW|do{Wn>7~@GV#4AMc1oiT47i)kHk5gJ3AD~s zSqz%M@GsR>P)Ts<7-|9s0DGWq0+rBep1=uYX$%SQc`O6TDOS0URE@EEo>XPUVhc`IhUqLDo$!`&XIH1IWiWljyErUV#8kul z4wiJFhhgDoV`Lp_8^#MuomJrK*T8B;fxElA!|ij)+S>`kAS{#B>5Kq7_4W7K@()w< zJ_X7nwcs4YmX;<B%_H*G7Rf{I+ zr{VGa+u?>ekE(VOY|5(^dZx3tJuh1qgw#OgJ~yvt*RPqunUei^*x6hSJDO9m4}e3` zk$x5nRnFLIpHB`?O~o6~^Zrn{`2kzkdcJ$YvTIaaAk#~6@&g^;=Gy=}Z*+LVG+Erw zfKHM9pbESY{4$_Upi@xHsk(HaNxUOAH`a9CE~0g$-p`CWa{^eVYTd~{M}G#A1)d5c znh}|UPde`hDKqjC-#Q80OIgma#k{xOLAP-ocd{5_dV{;|k zQK9$x?TSePu!|UWX4x6i|G+Q<2J=MLqG`dpK4}&r*$if8REpjV=CnJ=XB@0Ey05V9 zKsMMrsc-3a?1T(p$|+DUm3|^RR=Kk;M+d7&b&kuJiRv~xNupfcMm9W^C`H)N`eo7i zkN=xk%Yr6?=W8qL#GIh_{ zO<(y6-Dv&6rPr^++^t)}jn_h*GSQYYPNI_aFT7Hw>>Zm9^S2*{jlC1WJL_Tjhwn6q zRm&K1W^uex)s$CNajqc?-m3F=9@(OdO|ZMS?}oqo-~KM_YS03VbVmcE193wEL+KhkCBS4*zWTUfW+o19vvM7>`S%UI}Umtni8x_PJsGp-8>CXbfR zxdPCQSq5qq2ZjP5#FnsT+N@F~ZSkotRY)5O5X>^r6|wX)Em$H>4X8bk){6n|3g*}599){&>;*2+XDI3A7Yq?Kcz|20gPLq;wuTJ@A>~?6a%`Lp-3a zlighfu4rOo#X~`53>)_>Kha`(B|~(AMiw|spZVwn-I`MuA9Pm?_nL%{V?@)hv+~XN z-+9&o#Smr`0S%Mq)^tT2S6xP{4 zoe!Ibm&VYUS=2Yy+ii*Bfgp+B>dfrCW)Y{M8~FfcS^9jN8o;ucMX`WD--2cZbt;wH zRm}s@Fp#hD*-05PVpt9Y^Edy~Um1I6utz{`(eDF)XI9kRJ!rXUs(WNckm`jA#`|aB ze6ApjqAML0dm|-1qfB#~q149ume4;oV|+QEQx`WirFYb9NrCQOOzKnC#IIC}HetcU z0~OZ>W_D0kRh8DM7%OL*tz85!eRO2dg}}Ej7X-`hgd;&lbijxE>t;#;{lZbdwxwp; z@(GVLqnZ$;^~D#z^Y3`_;7NFJ_lad%5dEV%8`J0H`Lcb>X7!X{D(w3>kN8!ipTD3u z#P8vp1JUt&k;ooIWD)WLL0G@vcAo6iz{JrRVJC&cjQ9j)oh~?G8&#nI*KsM1g*b%C z68d+1CU?=AvC)az`HjxrOIJ7M>9bSeZCEQ2Bn4BpL{Y`+zK%^!YU>RhCGE*wj6!Oq zvJ(j1VkpKX)&isx#gEi`zxbQyYg;>NZTXn?T7&ObX94A9rs6h8gw&%?4V#o6APHF3Js%A#eycW|TtuP;%&@-hjn@%81o zSp}(vb~_AFi7~*u5k?D^#xhe;xL&KULRP^q6cljW;o%#bJU_K|IaS)_@t$9lrBW6A zS#|)ghmlfe1-u#$>gwz!lef`;DW$Y%dUh-gb#%0Owty)Nc)BY9+~wiCvjD(wwxPkT zV$!cKHgNA z1O-)px4CE05X>@-S z+!>M`s2kyooGMs!==-&|#2Le}s!X)12M$Wl4e}6McbsoVZS9M zyp~_Cm@CaN)ed2%yrx|}*6OpfpoAbBN&Qk?D@+|*1GabREENRb44R+6h7tJKhz-n_ zH7JH2N3y4LyU_3IP*SC9BBAn}@87*^sgOEVdf&bHK~PJ#&T+dpK37x-eE7kKR+W4u zNE5aP-82aWd1)lI5gIG%OI=-Mtzl2VI#DNAPxMxhD#zTNPV-O|^|-obmL4%eabRJ2uD->3 zIb(uY5n<~U4n8(M7T&&j6K-kP+oR{j64;3XJSw7>DoV0?p0Lr*b$`IR%UC+9ON5>G zPSDDcU>{^AsA}m9P*TMU;j^E7s?UF{<6lLM#V|0Hp0quQ$Q`r>QI#8kGKP*3+W;zrN&UJLI^=bI$V=oVC}e*Px$Xs zSQ^A(zolI55UjJ6k7ALfQd~|0eznSG#t@_hSKI{$Cz@844{`O2slpuwu|Ji_v^;Nb zLAEsE!O`mSTU9g_QxD<37c^u+*9OyE9E*w!J~0yU;6pDFNdSGJ;?1c8@q${lEJQd# zKqJEZhsWoXx$CXnGBnVq_6xJ^6Ektnu5zJ6)zN_-JYR+{)!x;wZb66na8pzI9$n_5 zFFcliEPO4mywOl%EiC@4a z(*`QP6C9A%YvJX$ns>y@NY$0s^J8{ETg_(bk8U=s*7F%z*06|{f)Co>=X!3aeTFK0 z1eCE z5DA3@QpAXVu^&LYz;$d7>5Le*ALxBCP-9W4QA7MY^RuCuAg2JD z&Czjmxs$lM&e?zifi@r%1Ou6=c;`Srvw`QY0D$iPu7Vgz1Uf5PF?BjSS$)p?NL-gH z9*`p~F~w)rnV8p{ggL`o%?r8!S3s!0b)GK;&#VdR>J~IPFMNDwf7jdV!&rzyc~$Vm z0EOXq!J6tf?sS05u5&lukse@K`nX0jbC&L=vYWM+51a-=MF%jl8gzZq931nhVS_Smxj#dYcJ9i(4TD8+Bx+qY% zvQ&=BuzZZ6l$;pJCfSl}OKhnEb5V^eX~DZ4#-_MwKUSC*OG-`lW!gXM$~ z6oUiK!)tEyfQ<{$szXXu!0;7(nF@{pSe@FfUBN-FSXpLJi-$o(jV?YHgvZV*In_VR zk%@_MFN1(DlaZl&jj0p3H$QJ?#U@yD_S~A&xFKPeXT2IFK>l~W>Q~E)WK+)O6p5(I zF*-JG9rrU~n{jNNFl92~1K8%x)kER249mb(fqDqwKpAZckWuC#YnQ$x8*;OLM91@S|S{ zZ=2ySM&w-z{2X`~8fc@yF+Nk0cqusX-SV;$M%HW;@3ql+qOXGlg(|In1vmmGKdW81 zKTBE-!hGTBqqzA{upx_Id2d74`ZMK~cu=}TQ-w8rux)TyJQ?`BV5N6p*%0jXGk~mk z9^lG#N^IcL48d72BN(iz+9r4*9*9*T!*`?>IHz3l+rsKuoO$``l{=yh6+?#y2bx7? z!ac#IbVpPA=RlSO+=1SH!JTtDXZf(CSy^XOy|MmP!KqODMm02LOVlcpy2r>wOioRx zP9VUV;e& zOh^eGojsPjz=f=?F0DDkt~&L7?`^EEu7}FaxtG0wCF`5j>9Ng&SYdnI#i^~Sw{&%5 zQ+rs`&uL&$jZJ9%XHMU{PUmc2ceY1e&cpln!{G3U3m$OQdR5O;DgfAnK)%|>F6xY6 zYn{>+BZh{Sjm|(TD!B|XRjDt(TlQcXn2C4(^7Tu1I<@J9XD-{CqcHU3A|@?)5ZrCE zglQMOmInWKOwjq4%{~VO7YDp^5)R3l&YtAtY8*3hIszac{fuNX?jKo2lcZ6pRR3IX z;I{4E?F2bg~pch;~*80x_fu>qp+n!VGTYgj1b4dB{dbx1; zP@eB^I?LD5Uh0P@HT^H@pyDn>1zM@8vlZVk!%hWXTv2G*?9il249l!7Rhk5%KmPIe z%ETHP2~%!|Z>oTTR6TQok$MJ4l>Os?mPEs3J6`T$Xi(LR z_I4UOMV8Ep4DWh0R6BRD$4mo843GfZd~BIAI3qxUdlUS+bO3>uR@c_O@B%J=a(L_| z3cO@VkPJ>#Mhg;)*_oFFg%izdT3ol9`oE~)sZN=jl`v=q0KC&xy^=)g#LD7XYG#_P*V)9BD|L05)^gEHca7vH(sfE9y| z4Ihsoacf(*h4HBNfM#yrf8ve+=O!c!Zfn4`zOfT-&CP{Qy^m`_6vs-6Kx=#I#Bk6l zm7_IbT7lvMW)2quK{B1cCKU(g)tQ40*wt|m*r9y#J$Q#XJsU13bi#AZXpmq4u3!lN z^7VoP$gXhSNzE|$cWm9h)gXUreAJZ`80)SA9gxJ?B};od;U^z{=sg6UH_#6Qb10oi zGQTlIuv&~F`sI@f2x}^+Ysq}SqS)zAa^N;TZ``{BW zt)gIaYtMLmIav<3W~cT2t`t~TRprk_ZFE)nW@TBcz1@r}h!}Jbg9GC(I|<0I-|&omS0H4(vE$_h-~y_#9*9+U-*!jVUQ1S1}v=BbJ?%x{MD z+!%;w)%gQ+5O`U7%#{=F<~s#DT34yI(K9n(Q>cQV2{=^|!)Dd3u@G0z#VYv>Pl?6` zOLAbEw6U?`bmeqU>i zm0;FHLPy4;leMuEVgpuj02Uh0ibTOcJ7I0B*x^uY82Ul}+4?(qQ%@^aHYmEnM|TS? z{R}%2sdQDpOewXkz3sVwh(0haPbz_584JuoNyczaPFFdGN4hzDJ;GQH;ub`ABc1^tc&TjTAiA{kQ9 zzt-=#e|tXs@r$p+P)|qbotO@Zm0stX$Z?kt*KBNC^xFQC6Q3A z)NAnE-a8z66!6fafJJky1C>*kL90ooryB^iP0JbPNNS*(br)5zuozU)(Xk;Vu|v0= z>>UPBh3s{eQkAr<0(30`Ar!7UYjFcq zMC>nBoAFjDqFr1v+BK?hxck}ay1GqS^m#G)=HQS_2n@V*9&jLqyh-Z8O}eLwOL2z0N1+O@-(5G_bvpVy`yWu1}P*|V5v?W@)P0A zduXL7fb8ls?5r=D$pk|Rz5P0`&8KYc!SKlXF-RM*_@#Ho7B>f-poF9Vy8mFfHZZBg zO;W0)AG-?z*Pw>YNBSK286WCDEef=2@0MK2-{>;lT%8$CiOQNK!!cBf(A}6RWt3Rn zDKWEc%Df1j6ZGUygwtZyeW)`*@W&e%td{3fuc7FW0^N|RXQUuX>QYHs%s{^U_B(f0 zUC1?H5P!HE`no#=nT&*Q7Z$^Be*ZiDvrSjjylEE1m_@+O=*MxY6fZMozM-lse&l5%)2*l!-1epJcQ9M>ggNuJ_ubRGYEFZh=>kulsX)Y0DO1;MsSpP7 zfX#z2;uNUabf)9(>+cG`_~c_dp#4_QVqKkhoeD1QZ4M15J(rxi5A)P@Z|I1A44m$^ znw#tw0o2Rv2TCwYW(X&;#h<-8tzz97%ek}hPx0u$iX|fh>g!9-+3fSdKUWL^Iw^YO zmNd)-K94R<(gWP0@2S-+8=B+dQzaHp%&>?zz&1ccmQaD1Ofk*O&G)<%?Fmy+&A<{H zY|f^V?yxMEZkOZWju@yEZ)JwchJV;r*YN4Nxt#h-H5SpSu5atjF;wJ2f-f_0fj`d! z^oNIPi1rLC{y#dc6pB$S9}ar|SUBEMMIxwy;RL+>tnhkPoB8=*rlaFCVfFPl3jBT6 zU_TO8esiYFp+PKck~&pE4XOlQ{_rY%^xjh)pzE--_{yBqv-2Yllc*dURi!U}{V#5> z$e_>%p@LaUf@z5$6EZx!Yy`+ERZVFum91O9MYnUty_$Ww}gPqXuGC*Jqw$YWk z$@iZ;wQ0!k@SwM4506g6dygJE*&&37C}F#xPT)nX6jwLb%;@0xuBZrtMYFlPCTOq2 zIP#|EJJ5pJ`l}IaiSftY5sI_5F4BNw`t>gP3|HRZOxe~Es$#tpc0~o!r4qg7P=+aj zKNpst8+vwh8)xeB`!tU@JiYMUhLuCnR9D}uGq`KE60jl$9e62RpB?HRwdp)ud0vys zG&sR_soUsQ_eShELQ6;Ii~x(i{dce53NBiPxTXYh=+1+f$o>asovz+R6p|$6yrDCY z@*i0;jfxSYDjxItc~DrHEudw@Tm@{MP4Y$+F|~CqDts@!Da+r5Nr!DEUfgJWac@&i z9WEf!iAZ^*C?RIXX>HPTFJ_w+3rDuZVXS_Z3m=pUD7LK%T8`?Nh^>_(DZ_rX40Eeq z8LVMv-8m~edX#y%ZzO|9W}W}$|U)uKO-G`oy{upLwM7c8`o)=R2tT4H;- zjJH#ZRZe)>6MeNdsy^$il2~vT;2|HFtNwgbOLzF`&wmlN4>Z8-ZgYm>Lr%`!w@mNp z{+bgF%NNCRI<699mZD%dH94?&GiC*zU{r0u2?kQB zt%==!`dzC^rdQVE0YU?# zdKiae6{}Ra3gV0otE;>atc1{5vIKWo5TF7#mvICRy?!rvJ2*5|I4)dl zF0X8Cc>9ujG|)2?#>U3NZ&ZDv!_FFiy)bMjzznnbA838=5Gkt^y>1WG$2o#-OY->n z&wp-6knVF;L*EAvAB2_lO`F=hPy*TUa@1zn-Q97Lq{?1b0Nmf+@Mq+^x2hUP_>E2- zohk;*5+XqSzz)+XM`}YNZGQ?#mZ&PyxB*yuy!$X6HM>to&WCYKWrFn&so4s>p zhyj7Qb1xQ_te13klk>p0Q;AuaWw;}J9fjEox(mU)s6*FET>YjW>vBiCaX*wVi)qm zKzRIfD)xE{KE?{&%TNSk+kOhYP!eKip$S$LkeH$Klsiv~(@YiPr&~&TQ7h6i>CB0p zP6YY`nQB7d&JYV2XczQ%YCWe^C$INyFWl-@eroj2r_W){lgNRdIOBrU{|ZoQ{f#1Op6CYFgUqBErPjWH=DcwzmAzCIh{Lqn637 z*T07b2ao+yfxoM>*Of2q3*;5DQ7kiox8)RQ63I9ap$a0Kck1VJ`1%J%UCDO} zo5iV$Wh}5U7MS3xLzx6W~Uuka$M^065|0s|7bX3 zXK`|{>18Wilep;bRu`2dcft|NH#f*YH2D0mIg4~OxU6R>wNdYg-@__9cqpH<#zyh2 z7UkoHJbU_{+ggGF+pujK@^%yabxGLKV1qcJ-WlwBcyPc2Jw&(gsjWvALkT^vwwzfK zLt7pk^3MCa>n`3K8Z@6eiKZ`X9M>Qgrz&=N>5YcU7q*rp*)we8^8+{RK^4{oql!Nl zW<4TEad&Uq!I@;<(%fJ?e|WIp6wlxM{Ho&qeaP->agIk)f&b6_2gV_BkN}|RlGq5S zr`CKAhL>6ebzo}LsH6lO1|GdF_?9~cq;{@*fL!wW_KvId9(5O^qZ8p$xIE{AMZLTC z9$3a2;k9!mXae{((jj_}tLy7Nvz#S5gn^+U;riF^uq-d4dw7GlgaSAP5#1b}2gBbI zaZN$|&aF8+=UMMYXS&m_Xk8wb9z)I4z?~w1*%SAT&(7Jg1O@Oe0%dHNvuSQ2v|7U} z3B%&axFi)K6yxD5a1C&*hNl!bu->4rM_4BA+_E`K9H~>+MEvoVdG5vxu~2n&gOCud zNb~NNl3sUBnH~(GCRzvupJxhVAXqmTfBv`sujk!^Q{lXjaL_~El~G|u7mtUTu)!}>P=pkqz3){uHetbLM|kl0-l`9L8)hTAfakgZD7vwj z(c01Hb`*{}CJqGMK~45Ex{Tlb;djQ_`=LClV&C6fvbIRU7xz4rZ{qeQ+BE6<7GuZ8 z!2H0{4z6T#7%9L$R8C0jX1Ekg;}LpVexqUWQQU~t-(f|(qKAzpPO~s&7#JR8>+j6n zzT+3h#Ug|AvzzMb{6c{xEK92Iek9!bK);){YkWCrHSwgyatu?I66WSWK6sm=beGM# zTS5|nA!X7!_cyKx81(Qv-RfZ=T!}{Iw2?5SYSK}P7`(YjzYEBPN&w0#Z7G-2N|RI~ z_?#*kK{W(^iL$E&GcPz8^?D%ak)w@sb9wBp?^<--L-ySGUjAtvh#BS?63Z_4oFh2*7n^ zwnJw#Iy|De)va((g~O486Wh{Y{%jQ!*wF)GY3i>2JvM}I-YhymKpKFG+@ohYJ~8Ea zT7!}zrYtOKp+I^hh>gSo^|MZ}CM+L@mFP^R%yg>_i?4ssfO*&AfOHD*(}`V3Vo)5O zs~hL6oE;w;ayVCo-KY1;`CNPRy^}!;(h#SZ5bcF?6$6#)3l}p;9oOsZKG8E69+?O) zG*CY~KhQI{P{Ms1x4%(<)Y%`*=m{k>PXTdb`&VrIHB7a4_S7v7I-JRj?{9Qwq1+$LO z)<-7%)KCotK&t8)fnFB#D0X`AqM&%<4x4!ce9OWWqLOy^%SS*4Mhyitf@k?c6f?8$ zccgH7SZiil+ze*7hBIb@MlHp8A`BtFEVz-1-W~|mziVqb;oO+U8 z8YueZFz5q^z7#IV%KD`SwD^9qgaWnmLI?hYtgJ(fI^UHr`al2d&%@i*&2XlqajC&q zqpB3Lc>em#4;-F7niU?<>Y`c)I(y|ITv-|P?CiuiEDy}fD^T6w5~~vDvlB#trD%CB z^!wPXJK0%r7X#glhfaIdC`h1NhnXP=kPhNu*zmDMYOD@phC;!s`CEcBpcpo@mw+G< z>(;e3e!-zSm3L6LhEB4oJesm*22#Dahgo8Qp-pX_hdV3>@wIc!xLwiIx#sBAwj)6+SnFVU1be{v2`06 zo^XeTu{5qzTm(D=NYLyI@En@->|p@GyJtX5F#_j$V`IyHwL3Wb=)g160fKDPVDRij zi4WCIweF|-c`TN-D>$URlvC%b8&(+qo7R{uT?FW&6m2rJbPuWHXs`whzn7M|xv||< zB{M9xnCEWYu?QS2Ae1Q4_JP{@`#*kVc!wb>2Hl<=q$AC)SplP8-NK?EwQIfS`f5RQ zt|EbsY+`)U-7B&Rzh2VC}HqbVeZ`oGSRE$;8YGjU9?OR9!vm(;aQHwp7xc;I;0{m*0OYNOmJ6 z6d*kps!2y3Ru(dK&yT!l*W!YVdjpY!#0OM_^fw&?)iU=7?IqY$eVTi)yh4Y3X;>>3 zM|_9#i)*uxh#g?xoLM}jfuN0@(?PS0RE3Htg_wUK-_D*usa$YEhMbYAdPCGHaZyaB zVL8E=NyLG>;g^~^4~nyT=B3=FJLa-cjCjr%J|JBTWW@*aP}m&LMAZOWl6|m(QW}&8T&KyS$>Q{E-J$V97uX6;)f~ z^AD``4aXjB66@sfC6vjK876>7CC9SAu$A1Z_%b*zl`oA(Q6Gl(l3)zAkIF84b>b;E ztq=pMBemTaC!C%fcw;wh<+i*loprUIWVJIv2l< zS%QOMb!(M})To14tAJ6bq3xAEJ1tvdb5H0Q9`lmS(D1k_a~%u?_tuUcQ#&!qCWB%r z$hkgJMb+ql(W9RyctBYkwM>Rp^OMu2Oj>WgqumS@wDmdYtG^bR8CcJ9N>g{M(vJ^-uW;QUI^+_EcD2D?|McobiTw$64X z_MD)V?dY+9M06>d-OyPv{Deo1s1<=3KUo%5n^p?MB@3|*X3lv}0~ni!u_;%RUPfJ+o2 zdA0h4&))mQzPMR?GF*fu;qA-^jt-8()aa;*0~fkm$LdbnTN=XcJNLrpUw>sQPRv=D zr_jNa(ab;DvxOoX(u?mFG>ksbd2A0WE3XZikW`=fb9rn7g%+BiV9Z8|e- zhv%;^q7SRSTdEkJKb!18W%vn~to;J(FYBNU>33qNmHF~*fFwow9Mc1Iq-KT=<{cxPV--Jm4g{bQ0M1eYo_PHv5k?^zCX+jQlI|nKRkc4w5o%& zC4B6a=||^VZyiADn_7$~9%=x@_8FHLna?35h7{ac4eM;kT`W~$o~YJlNdU4_wPK}} zfi2O9DRh-5iijGmc&4^FW+&nQgA;S80!78ho}RF`_C^)zp~cgf+CO~wDD(+SN3^O^ z$yrmHfe3mT1p=vF4%slLAViJ{bBI^fFl~raimH1X>xh7b#$<8=JfpO3JugZZ06zr9yES92qss0Icr#L_<`8&z>hd)SgCtoY zw?I|MA!A?$e#(ZWeRUaZYM?lGD{8G!HE?iXE9AK_O03&@zpzlSeY`k4vhOHVTv}Q1 zcxE?1IZ(V9%AKn!;yd>pDSo7b7?vg81XkN;uQ zJFA2R-V0NyPTkaJpZ?4+-K*E%xtao&!U>HH+LNmbbI&0FJiL3y33g1?I+a<;^NBP4TDmGJBgFQB@i6l*;7FjFl;uI zJcH#DcD)bq@X?d-^*7(RyQHcHVt|GSOA2LChQwHEvfbUJ!RNU;GiaU|lWgxqsf4$S zKiEF8v%AMzzib>c)Wup9n3v}a-@XJi0nDbMHxdwA8hR46cGs7@+k$N<8{V^b?xbD9mj$yJ~zG93&t(g*x z7Hm!_Vxg?UKB7<{c;hW=zPtY2?fVZrqoXiIf;h?Eg_31n?~MHw!nN^r2k=6KWo=>= zjo(Q)Ks>hV1SNrvT@F>~Hf2Ns$dM3B@n_R<$S3L+8KReTzkq&OOeEQmVCe4SLRQI1 zivlvWxx4%P=y21VXoT~To`#_ zht{%O)2Pa7$jdY6(omt<@Z|i^fsdCDH+ft`sBXRJ%S(M|1(dUcbq`_=1Va?{dl}vx zsk%Hm+HzJ0BSX{XWM?%RVS`Df6V8B0ImG!vE;2r#_5p>^GNRW3lZL8^mWHh|G^pWs z>qVL;os6s`Ito57557x>oC|6_7d(1(@X^^IsE?oxukULsKMs&8t+T63SN1Fbv0=#o z?DX{9_&8N##VghcbD5#K@}jwP{BPRPXqsH{1z;d+JdjDduvfNffdFWI(GtpGV1R_J z@Zn1ZSF%17Eq-^xKPwpqhKFn^2%U0V-3#*7-Ti%DSfZJLal$qv@Ju?>Ur;`>!=iQ?g&g7IK)x6MtU)3Fgc zGCrrEHfWX6Z9xs|3e2ZE7gTSk7_w;7D9pb_f%wIX?>%HC$$+)oQniaVJ+Q%^AWaO? z5pF|g>A{2hh91GsQE_Ei2gwNLIBAw`U}u=RS2jBZe)!DvOn9R?0F`3D@OTDtKt%)# zm_pa~d~J3&F`{mQWKFPU7lN)72@Uw**joa90O8_m%3v1GIUVKP%$x%`T`l*BeGQac zDO7qj2tU*_DrL{ZllMLh%Yx84Tbsfy1#)&!V2)fVc|#{|XkmftCTuM&1ofS^L~LQu zj8Te^0-jeTRTn02Jq*X{MD}*py}$(<378MvD$kCtt|LQDo%H_Uv3E(BWl;G;j)3M& z5r_OWQWdJ5JY1%;hFW~>{gF;no@@1PV80>G-K%7~u(;@ZH#MdtB8Za$uA#bU=^?QG zJZh%g^ZL5xNU`qew6q4X3^f1?23}VkxpZHdB_^zI6FK)#hogjXrP{eyT(r27Pe)pN z*(wQ9GJ!&y^G;w#KA}*GQqCzmQ6;PPgTZ&9MQ4_O1~i_i${o{XCqr}ttR!oklu{j? zea{)p0F^M{vk+EiR30>4P!$oCaj7~$un7ghL@^rh4=1(ib}lViahY_AsGvPIqKWU^on#a&f}kun9lUn!^P9(5fqf{^}MrYNOpyB_tEZ;>gtC%79R7MGBUJsUti2;}6E`RsV1uV}5!hs8%NM-2Q7t%{Ex-X7Twehh zC_r_veR@;&a38KVj!CCS>aJ9=^$rYs!HJ@Rg&mRuE@F7Qawg|y=WR~T_u1Ln@%Le_ z(bd)IVIy=wIMsAq>@1)`Pa?ty!p1qUSE%YZI|{fY!r`$=`^Ua{yWly=$DjN(eEEs@LD!g{=a|S?AI_2I}P6lmOu6Q|Wf8YDHfNdfcF313Hk`3k$}n zw>MT)ten_}5y%ml>>9yO;1WEO`x=6yG&?&t7k>Re{wa))4O>>BtGCZ^3rl2F`@1{) zZt-*3yx^l*|MN4QW!${Zg`q=MxVer)&Nj{GAVpA+AOTKc(NNc7_7@dCzP$EP)!iRL z*0~g|DRmRk?sJx?dt0C?}wQK6jEY~Syj%-{J)3toJAml~@)vU}w<`nTtJjx2+v*X2v0~*TNEGHcFazb@Y0+ zMG?&0kHiV71p^Uf{mZbQC0!=UAgKw1?s_;D}|gZdsp#^sDoqXRFpAJ zSa&OF*w!5TLR8nZ?v81hZ2PMdW=@cdoj+#?XwOSoLSULYhRrxisbzW&YXdC%+)9rZ zrhqY+r8N&;?=5+#!iPwv>!S;i2435n%l-gpuiLpOhoet)RtMiFfZ?f`QRUy+H)7hM zr8mpb#!GK1wCbN9?Chy~xO8h5HJHz>6#~vrri++u*$)J~H+!b;ARieN1gSb@;Ra+` zOHs34;WA9j-LrQpQ~P`=<%im!gQN4PjIZIXeg}FjXu#9v@e(hw=hOc?*j_XC-!nWF z{`?pJI;^g3`2r$Qz=9R~0JFCqg(b}p?%ug$9&w=@+cg%qXsx^jmx{@gq~o=1Rk@hJ zpmz=ro@$!|&XBN-keVvFv@V8iAmPPVVsN)ElFdzG2f-#QZ67ToG|iH6{+K{vGqKf} zzr1qgM~lu73CUk{T$uOZ5S6d$UYil%0raWAGx$3))|kV4kqJ`<}H!5s! zW+XP~+IX%gqVnINQ|_(4^#GcnLr2HF2o?yk$SmRY4Ntlwn3$ZhK{vx&iiLg!dlteb z#>TyvwYiSXUSrr1{I{p-lHcE?_xa-WLY2;(5AQ#H7$&Et!r%Xw|5b&}wmTWNV;dAW zkgP_h2m4Owy+99iD|P86>#o0B_&!We&8YKkH=_iTm6tz!>-kJqcei1%dv_mb1`{>* z8RmWU?N{MS7=2D~Q_fg;TsZ1#YxfKaF*`78U@6Q(?#$gW=Kn%-2fSIS3XxFYovf@c zdlMXaBNTfv^eHFQY4a$x{5 zHyIilcL!F0T%m$;S2GFXoHwyUlqsjuD0v4b9b!>miDZ>ZWW0H33duz?MzDA&)x-+! zU99{QuKEew#`A%2tIl>@A?w*!lR(k%bY$-!n*tM2Rkn(zR(A|7t=-|?)1QXMj&VJE z%{yDWI-YZ(z@l)VqJ0>ieqc@Ka~;~imZ7TBbUheWL+GEFH4a~}=WLBLHu!4U?o+Wn z@xX`*75s`InU4k$cDyR){JF*K@ie+P8 zS+^*(GR1Ntb{qQrKsE#~m>uwrYZO%TC@-p_zyJ6>FO(oq1f`GRu0oTmkc8U$-u}U` zvHaE*DJ+siy3V$O3$MP{r5yVa1$s@z#Jy0tNw zk1#i>GNoXLcq>t@_xWjLmta`J)j$XeI$-e9M$rcGSAx|@L}2V@FDdY{iQ9_Kjw(|I z>{%S0j&^Mj!)9#=>! z#l+cbe0)+E@SfnNNhQvQc6vg{jDU@4HaI*Ma-20}X}PF$b`%aI3E&QV6@U(I&kJ*} zL7j3U4&-qW)AMLjh1{yjkquCu=j^RJ>Ke{H4>}gS#DyclU0)o#OEgVY1r3!P?2l8y zFF*#&6;_v)ya40jIkZ<*%&1}>pq|RGj^LxSSFcWUZsxXs9!ZR#G%==vM=k#k3eekY zOTG)}zvG?E|J|vfVvX+Dkudj*-8C0YC{8x%96fsY#NMoIwr12`o*tjOOQ|ulD>#so zxQ>M#vvCR;0bMEJkE6piyJ!J{B2H*-dM);f=N9@SfP)=d(?4C~E$qB1!Ta|fnq~Hf zKYkuIx3>&+oamXsSwB9#G^P6K$3L_2_{}whiG9PrBV#k}F4;WJX_m%<*TL3CXlrk_ ziYIhW*iyBsR-ruBt5|~7GowU?qUFvCX5;D5J2Dws1tmjYWo8K77xA}defErktxdM` z*Or>*eUE9zK+HkIh%TT8%APGY8#T|nh3S)=uXjnKTOjuNGk2edB z=}?kt7o@yzifh@!U5e*IuHb-QwvK$P)DwD_6v6ch;&j0jK4#8C0)YF@8Le)>I=Vr) z0D?{?{PN<@|LtjbX(A?Qmm#G@ift5X;p6ecW;7R?g|s04ySRR)w{BvmH# z%A7T<{}0%$T0(*XgT@kWE2%g+$29pyl^xY;o8W>h7GB%i-iqB(7AIT6Dry(>kWf31 z1Tq3*_@WYI;U!}xfze0O)#$JV-H_=W?CA>2D{E%jFk7I4qHVgkj>ZDeR$&fg-P*;C zOagA+(!rPZ;H>#S1Z-Y5$uni8yI{H{$sm)7N`F-B{Q10IAbLMGIPegs6#rbZ5+O14 zwH4HOmuv{rsyeCuC|Ku%SFp+?tuC_0MkKyXztfsDMs^4ecxa_iw-Yt-8}=Q*#mX zL+2buNw10uhO0>hbF^I;lp|3~f`bY;JThR~Gq!@$Q{!P}Wy79 z1zMm0di!oc-=o`(U}*6(m%y0~p13KEh#cy7RG>5Jxu7Lwi_db-8b5E|ELe{RY@K-! zv{lX!KF&jfqn04v*0ani@iwUZ;-ONR)F z;YYS0gVR=vrENGVpl8IK0qrF({GqfQdm_z&H2>b2uDZJgb*S(o|GwxCOMA*7&{7D{ zg@7801v6XNOauF4;iFhdhi+9-2w{y*%ve+@3i)J>9h2#~aOhg|l7VNq5Iz0F`W>Cd zSZzQK>;(RNb7@U>DnM)(fo%|GVgUgRuZ+eE0Z#bvp{hLKD%d<;Hfd>cQoufpR*8XC zBi@@?bbR*1tSZSre)(k>86H-3m-oYGpyfp9fE=YtJ&+|KV7PuBrJK3j42kSfi31qV zjF8L*Z80WSIKTv|f-XKxBPgUWpG-wdWo$`Cf(w~w%3uv6+Ft#+i{0&*^BMjCM^sm> z8CdczEhrXf^*U_|Pvs0&OOS)22+tnwFO@$7URTN?dg-3)+3-8q+yyJOfy>Q>*($8c zk4|ZrspLWTLlwmyL)!Rc+VT`RU5*9?EHs7kN~rIB^l`Yj$~wU3tNJ6O8Z6@R%90Bz zh_#uDX@zjT`5!hu*%=s7fTUujyQ9Tr;R-E(v|ae^chRvTw7EC zk7~KlAiemf!6!f`Gb0L*k7az79> zOJ{$C@FGh^@Z44TqY#P>>9*iJ&N0OlMF;yq+%NWZT2!e+P@wxxyDUza%s^oT6oUy8 ze12vaRPrdJqQW~pHen5ZsH0Gqk510Q0hCd8Y_86noPei+oLJ;4>s~UCpzNjlrrMuY zF~jhfL`3%#s(!N$)P&DsgnjKkXzQv<+@Sa1Hj1U$*%qS|SO0PI-v;-UIM@v#il&WD z-U>YHQr*Z^FjD=s|z(i&mm*|DXF*WPSwy(v zN)4Qyp)tcN<`OJA0I`sz=`PC3gjfh-qHuGvqgHg;YzZI-hJswy-Gf61ZahP~yE}bg zIY99B8BFsQ2td(=rsVdJkO{Sm;S9sd_kQ|W*xsvlOK1^+-Bt3DyUX*&NCFWw7(dK2 zs*4p=+&pW75{w6SAE0eA(FaG&D|t0`cB|Uz@gfN{xI|SCyPyiDv#r%bw}*lU-l}TN zW-kpn@iV|WN2l+Y%EnFuh847)Fjy)K>uLM-`MU+*bgR0%&Xx>Sq-}wA>MoA?1fIZo zIs`UW^$rv1n9S-LIy~&7`xzE&v$nBm${dvyo1#>zJQMIyrAe>bGasS@IaW0dyi{MG z4tokvBf8f@(x2rYUy2&LJiM>7_9>}*!wsI$2H;AwdD!KWc# zuGr^+%AUof?A3*zGtUFL1{f?Agurxu*&5y6-BLCFO5I5$IdmxL(HS6kcA^0}@1DSR zb#vv8l9?LJmsFxC7-`UKwxiu0pI^>1Oq3Iyc{*uiMhGfwAHRD2GAzA&s~~*lq{&hi z45ce~;O8a?cmYah-t=h|L^q{GbYoKzf$+d=5M~=&!Ym8ogRrB7m((F{Z)!GKVtZ%Z z+q2Bu&=w-#Uh7#QS28&@t>^l2n4OvPGg@6+w#UJ+xK@_757-xls%ppBNXU^#}iMMCb7C0G7;D_ivKb zWm4|0tpY1id=H|<4jqPvrXl<&JjwT>Fh(vK@wWcaDeoS!#71YrE)#P+l3lTwb+Kf$ zqqfe^+{0V`AKkm@>rv@4Th6!>z1UmU8HkQ<6oIL}@mtRu8rsA7?0nb+vpzqv9bKua zxzIl{WbDt`qb6;q_^A0%GH-lmW7USahHu znOv&ULE5-fn^wi9mT7;}{8*|?@Y9}=X>(rLzDojql%nQ4I`&q%LzU74jhv_BQ0z($ zkmy9mM3t&<*5I?X6>mbAn}4Usq$gUCKgQ1zV#r6s3v*dV#veF!uU*U%&Un35B8d=Gtl;v{W;@=~yK9 zQdGtCc3m=Ryql+639j5K)fH$s$ZY)8Bs0dC*4s#1=?wPA;*)8TBE>H(%=y( z1t^MqUOWT*{2H3v4Wfs_(Af~7o<)62y@TJA2am(b+J??UqblV7kZEd<8`k*0^-*Ib z7di#W06BJa_p7k#bhqLYr+ajy=g(3Rcah)=EOU%4WNU|D*G?xFmIBK;-e-^R+kuiV zFiVyV>`bg~!R>4Gp0N)_Ah4#U$@781ff41FjOR*hUSnL2bPB%8$VoH^V>V58Z#$fv zZn=0P9yYc1n4Za2e8nEm&F;{7wy@f;;KU1<0<=!|Z_6TXS7AW#E1jJ!HOXo=SzsV}&5V)AxC3lA6*Sb0OvMoo4H#2YIGL;R|)x|I~v<{c!K%xrQM)$T%DpDvZ zUK|5M^o+LTe3g?wd-q{@^1&~{>z7}sP&_vZLvd)MbYXYTvnLyV+bB*lnI}-&R!jd6 zi?2jPe4SYcf)>|FWXxp^Rd;ppFsr(SIG|;`nrezmKPAMS6u7B;VAjBp05U?l*Hsv; z;_04w^=V{>Jt&F>7Vz5XI9hwh!tsePGBnNkUHbiSg&S1KU8+Sy0+yBddL5p;15|bM z4E=K9gS9%4IMZ;+Q|ex5!5Dm!QEThb?btWgj&?;-hcl6B4rR6c1wlT|8j8@)HPttH z0Adchf-yLHnPHs(b3ly0J}ZO7);1*sw)O@GOyeqe`kt`#D8Uow8&f6GWl2R#u_COZ zY7!~mM3)0K0`nzNyzv1-g0@)!k*G*qe=KDw6BKN z2n#^fh2ev4(!l6sNGidaZkEsag1ajymHg*C3jzXC(3+mR9X52Kc2(JK?Q9B@-E|92 zl}ln|n-ttR>y6H|&(FC637g(UHbfP?*t%{J1Tmrjxxc%sHOrRD*IKFA)rJv-^v%VE*9AO_G}8PMZLtKp+Vo7c74}m8Dp9r`y8Wj1Z^64nme%% zUA9w5!}*oMsl z{?hPI${rAkdu?4k&#iQ*%WvGcTs5x+Gosa~M5l6Nc8R1X(UuOVt+ByCF;|G9{M7*? z!wCFTfoodZpuO3y!c{U;Y2Xp6v`Qk{aiOC@a7OKt>J#{ZAsGV~)E9Ypb9WvIXFCg7 z0&+4KcLs7u>QXhe^?C4FR0~eUO^Z%aVQO7Qq^M4Ts%JpeV21^oydG`6j#k^Cafn#i z1}=!SrW#}AH8n}M^zd`p7Oqv2)2H-O5tWTC@@_7ioO=**6Xdai1grkusbB@*0z7cp zW~;TZ*0E`Yo_VMuVxVW^l0tO}A`vB%E1qXG`x&9FfzKxYUGK@3jy4rW6TfP39{IRs zSN|M3Ds-x9sHlYy@j&YVQQxqgtjZnHC>BomW$hZ2H|sLh)JG{(!p*7ma!4#B6$*x$y0pE3350ZY zoxOv?(@Wv4pa%w<{e6Q@7El`51|%R{D)^h$i43hE4i=_3V?0|ZXL=&u-0kb`wo4Rx zJYy`}FtpQoh8cu=RZmZ^yHqH-JeI7I#N_y>88bjR)-N(2I$=f^$&csLp`uu!GqJoGG_34>;cRJgu zu-TUV>W{w-9i8p=iiRw}GFw)KS!-9Hhv>(<=;xQh;OLCKr!S5*a6Q|1$IXT{XYl+W z&MxTuz_5{hAo%mo8mj_@M@lBZ$Rt}_r+60SNLI8o#Dywf&z%@}tBb0w(lkLC)>L)# znQ9aRKnyrTDC{<)M+Ex~=!PWQ*B56|S69_p8djJ&Q+G?|_&jhnbjRJ3#j=aWPYJsKhk@D&xinRNL`8i*z)Q8hT_rO0%g zfrhw2&!D$dsLp~Y*lMEgl)Lp*q-8=Wh718*+}b_q&+_)g?_69(JJS$`XYPhnYkT)| z=zIhZsxA8)GPn#?y_OI+ZYotj#6fjL4okc$$yygW46sThEcx_So9;z%n~av8~j42e`=?KNxZTwdMynS)INb-=D*C`>}UF#{n=E;G0ysq@`Pwj{1=YnSJI zs0jLS%8~80DR~|$*^LitvWjUk{3K9t*|>yF8t5JCnK3Kly*294j%u*fY&ql};jZT% z!nf$NJ^lD69yrprPt48OK%DP0ed~@Ok3mB$STmv+Nq5TMKT{BFt9td0j}DoE!h_ye zT?$i^6QQvI4}(oBax%!HjfPWxaJc8CF22uu&py;MhSoP~qmWGvN7vWat#t&IwO4S) z?#^167#+0ADEj}*0iY_LUL2VvRo~d`gfh*NQ??MzB$(ssxeN@A_;+2YQl)F*tW0UZ zy}A6(lE&P#TlXG^V?hdN=A(a4^*5|!cBRyH*%?N_(BCD+v&}lCm6zWA3prqFQHy` zKexzC75JzzcfIT^69x6lQJ=@$>~eGtD#pMJpPRtxB#?~aKYSQ?v9wSZ7Bi!Tx{ia# za>Sd-P$*Cm$WlNh#mEt*T4&IJiHBaBl1`l~j30wxm$1&Jt}bE97hc%mAEMvP;z!ru zxS^Rwy;v4{>eWVek5225Wo%zYCqd;7rg{It!?3xv?cvbT&Z>3VVUBqF6@08Jyk*Y2 z4s_XC=QYmS41Uv1E&k5D$QD(mZbx_T0fP{dcRHnJZKd&|& z{U^)S-&aup-qausI^4wkeYO0z!kU6#T+|4j*TAAc10^nN6)lGWkDLDvV< zi^VQXnLU)!fks0dJs~uDsOpi`Kv0fAVM;N|fqFMQYcyWS0(4_YGN1)NF*z*=S!KS0_AqRrN3IduYdU~xBb~dOn~e|@G|RkX7PJHP#hPeJ6p0yM_-+uG83%VT**ulve=%QTu=<&zl^};LfkFYNQ zzHieNiyLOcmS#9?ktZ8t*vA%2w^tKA1COs42SfC#`_dJiup@A@`_fLHL=db@5)-+?G(ni9WVj`K2 zN}0e|5IXEQSBy)J$?B$T!Xk`Orh`Q71X-z=HXBXDi`6;Y{~m|ao>2uaQ$@3@xS*Lx zl+EbkJXu#qe}_RZaQV^xq2@n}ik&gx@c)SIB!#W5T~+pNtm*0xnRAh1eXTW6?R#kj2{nZjHmVR9%qs4$I?&n2Ko`f9>IKfc^l zG+1GHdXtTVo=QvvV1k}KL^18EjhRA-x~sH4H-835hL_F&38?BCnP&wjHh~FbmV*ee z3XVJ&vUMWZJQoQnER{v7-U^UZ?{%uU2FGWu2?V2ofhI=rBq>(8@j7Tk4+Z~E9qzfi zkHU^Fq1rWLxlnE0`s$pVoFBMqvC3dggBce+3U~~e&vkK_Awj`}o4&U6#t9RH3s@KT z?%a2aj0`otsjzGKzck53b@E8peXV8BClJEKkx3Tr$20_?Ns=e6r@(#h~XF-qUuTvzAcX}NVweJtax zWJx!Aqd2rG$m|lS33RQLNcVNtxQomhQf2@ua2KM20QVH=1$4o%HneF=DWvRcTdb<` z+H2a<37H64nLA&OIDal*rB^519fzs}gyoGZkp>-w($XFg?jA zT3VW)+w%}9OtOUocntor+>8dduA&J%Y`50bnm3)}lI!2VeQ#E!=a!7se^uR;=s#>0}vPbrM%!psrY-C17pC&rCO{|)%ZhgCn9 zeGZoAU{*lUgB9~`ZNtJ{JE~scJF~IN#R8XR$bV%mmYkQFjs>?w)9X4{af1WHVUzXu zt*z+6TgBizJKHpb-BpD)>0#UQ`l^#EEBS2=QTL}C`3G-z9_d`HSSO~xyDN;1jf53J zJrhbgT?%mR>L4ZrvwZdWZ>`$ctVF|pKyU9**xKJSHF8fFHkIw|srm5m?tRmW!F5lL z_QJNhz$cHMgkx3xY;?D`H>#5u_LeqY%e_i=Y>}>Rtm=-{o1Fz6v8T6N0j?&zd;N8I z@KArBtyLv|zQ@wrSEg4|5KN3u>$5ky07BP3n~S?22+F~3vt(~;r{Evq?^OSd^@i8@ zyA)y!3c>l=&MnZPDT$6w&O}({_ATS<`RlwP6~w+;+8|q$os^DLL;*LDU}3{?Oc5ZY zOC@F?5r9h;#bKKuyekFV9(6Qh`pn;d`8&gTIH9>X!FE*78eOFt6)z0WE2-KrkK(R^ z+{oCN3$}y3J$;U&aDKSsikI_bxe_YpOxkloD)n`}^AmMVB$7>?Noc;)IuCbe=FEh7 zyR@nclncN3`JaU!7M8<~eje~LXK6#j@JqpHHy13=-8hC!jtz&Wnwz{`d>yXXDPR%J z@KBuv1S<*MpH!_YdSI7iBHme&Cu}7OKntK%r4WGmER&F_dQ`ZeD;c)r-$86hI3|>% zp$SQ(ToqQcz+cK8CI2Z`;=Tg-zkd%)TFhOAX+DR0Ra>o`2?BOEA;`e>uC@?nd(c-{ z*F18TQ`UrTvAEJTl*DAT)0>*Q7dpBJ^b6{Ac)Nx7Z3$lKuuD5%0?z&8Pyafs?`Yss z%El!hJ)|a0-mh=aVa{6L`9=e)bfpmLRe4v+%807`Pz!{ildlGiXvkakI(V-R#QP5) zg!dmm4THM;-@g1oRo;Yg&qD>P!Tw$+u^RDH`Fg>YWL^l-h0G~fz)weY(*k9BKCKKXvw6!9@IOe(vJjN0 zM0-a)Witzah+qNn{HfH9_@Gi**AUmAD^b`iiA9-l)^gQoxEOOW8DCGp>X=OM^`BaG z7yS9~qskt(ge+zWPKyTKQ69rg0?j?3Z*oXdX#LkU#z{Ynt8z4K@bEaD@Ma|y!nFrw zX}6;dg6Y8h+f+rOP)KD#u!4q}y@=)_?hey+cA}zHr8IuD!i8q3rZq=me5^VdZ)R;rmM=8m8Iwuq~`_y z9ap8{(GdqH27wIzJ6l_g^S)bN5d^cTMPTC&90)vQji!L z65O=Bq{8CZ8@Su+?_BAgp5KJKckbz|_WAoC2%>7o-@{CEiNLes%Sbn=0eSnp~(eSs42D2m!yJXBv*%A)l(cTf>y<5^CS%EE!Kv}&v zs_CYXwZPtw?i{G1OT{1Dbs*7(_I^K02GeYzU#gpIYOD>n?>@GA<&}o_uU~v=e}r52 zpWwzqFfe=N(Y^QVNy~!*`h4{8VYn=$)eY?^rfjPq*a~g>j#RkNWNUxiT-CEvy1Q-KmRl=X*Ph&bHDEGp|JQ*KKVFotZjM-3|WC-4b;eP z2xd#yI=?@B^MzpGXzm_|s3jL<#Y)uvf=PscTa1|{OBjHFBs0-;B+4Qvj@H2h>koCU zU51d$hA@8|#U)}jpNQ4H*^n$;Dk)gr0&YDgcpaM;pts|n8fkPkliN!Z!ni8Mmtz!R#3uC5BUBFrh1radgK_4J#Hn~Oqw=U{|r z7=swF+5X|squ~S!l;6F6qru*ht<`Wn`lE(bxK#OIs@-J6G8zE~RePJ(;YJU}AeDLO zrw*EyFktS?!&I9cA+8XPR8gU_cm^jNRmP@9wWESFz?)Td;HNvF1Tu%9l-kBF;l^<8 zSvil2W>JD*cyuauK6>tMmx(1uEKS9Olvdu}EFCHsjFIneZ$UmH3{U+j@NXS?ZzXMw$Q~x!F!i zj;Tt7^XM7|MXIV`^U!Lr!V=`3wnhs6-qAgzHuH5s;|Xb~jgjCc)pS_^3?b#v1~&p3k{){%g9WB!TY0@WE5fWPnum z)y6X@Yge(bceHOAfiwFKbbAR(*VEk?@D#oWbSb>#8qE}J679vjqF3f&*zD;n8SUmP76(gVw8XxrY=Yf};oS_X73k+PtUXjh`8gMws$5zGbfj7}bf(e=em z7|`s4?`eTO!=fkt9-KvN4xv9bw|DyPFpQ*oX9$XM4%BP9C;}mn6x+Y>@|l#ix3(Di zB4O~Xc}66oD-{)6+dJNyK#kInu96MVTUS?yo=@2YA>9VmEs$dVx)2ApTwdNOJ2e>7 zuu)6#sJODVduSRg&=>vysZ`n9t`JOGt3rCvf-m%E_f;6SG}r4aY=x7}w;@@)_FX}p zl{p=ksZkv+!NbxIoCyMYDpGElNk#@;oa1?ZpwCGn+*sdm7jAiCDv)G#0jo-Iu>Kg5 z-DdePLyLo6o&)GiG>xh*;FjWiHLU_Gt=|homuheCcuqxGu4WMr2olvzHw){heA)O{ z(cUWQKv_05GaaQj)$X_S3>%Z(-Q6=j%33rZ>_F96O(x-i9J=;oE*LvV4fl`Es#;nK z8VS2=I8f`PMP`TRm7m3WEioR?`L!u^CE#nij3T&#P*4D$e zs*g1KEjMg>Y5=B-PUUv4LkiPlMr|q5zqkg`&e>%K0kGOs)U(hbMVkZ+ds71(0t*-% z!!H8$seT@qGqh6<*8#YzKF|8ja; zGcyt}iLdIe&{6OmzA84;I zoNn(LP_mCgYCvynF!EjJZrwFrO=4?Npm@Eo=!4I58txwm9qR0O&b+(n(P7UWHg!%> z-E7wLMh=7RXwDaN1DHW{CHxMylUevdosvqmS%bh;4G!t#uAqhLdkqc@h50)V!`j-C zwWF>tj|FF)MC?_!#o94=Lg=1Q6d*4_r^kKj?&;EJZWqLGWM5b06%KX2Iy$=?45<9* zTzYNRp7owb2Sy&Jh_emZCjr=m07x?2*T9%Xu(6Q|W7!+3e)|<*859HSz`3SNMdks4 zEuV=}$uk_Nrl*4YC<^XB``G_?u!&Jzx`Z(|GB~Ca9%-<^Be0FKRo_$w?sQDH8)RQc zL8_y(Pea4iP^T9-I6AKL(;Bunm-Joo;px*4{AX7;cm3WXi6Ubcu{r{EKANpig(IzS zp@fHj?)J`}x}HgOE`4Up(INXxst_X(o*XLiVJ@!cJv(+pit6XN-fx?NeUrcE z{+ibkAoY2tW@daqX^~OxO!+~@HkQPS!+T?0#`I1GP*i)+saRd^>c{#o z=jTAM#iNr-^kjEkm5bU;^zhNC(F5PoK+#*g$U4AoU@!w+k);flr0jQE<;tVsql0>7 zw!w8AlGBalZ;XR-Fx&#t67rgoaS&$yeu#W}sy~Kt{C(6lQHSKxq9;_Rgv`*n-KH1p zD%6Mhdk^Df$X=N`#-+mvt6A@cii)bT*82uEJ|Sl5z`!V=(|uvTR0;`(!5O%~z<%(E zD^Zu54Zvj8{5Z}ZV*N)|U)$W_U{a?l3aaU?`59HUyJ1oZ8N8iNi|5VG0y4m`Frb@) zAwwBNdkQiD@0QO6q=1+jZFjeZmyHS<3axc(@Xqf6c0-gge|75L&rS=8oA+Uj`2@IoqvFGWWf@9n zgt50lz*h3)&oIODz&Y0TCUOAX8#=XxV8r2p$s?04+7p_*q37J(*&n)x=M541X_=Xm zhGtmK=h((ki6*OLepmHgrb>Gez^lE8@z@VE7tsi~ z+x}H?0KiMWu@F`^T%9s7*>oUk=xh%c!Yf1d@8Y)e^I!dKc<|(>!WsL+`yc)^To+Pm zkuF>vBi000yJ*3$oN@4kF}t|ER%6;@G#jbZ3KP|5CtyH9+*eh4X*N+M9Br-YKTC#A z7@#o>jjd1Fl~AwRcxa+atE&nkQL}=q4}C6!ON=fo>&ci76l^6{w%8gh27)?*UIRlz zUJL>!;{si202e3gDK9!S!&o55>HovJf;e?oYbb)-bhD>FZk>@{qVN*OxS|ve2^Fzijokp|06is5FPdf!Gop{ z!}R9PFeJzgI^V$HU}!{+qEHFEq3P(7TbcK#M9`|owSox8@3$TQ(`Sgy5)kVNey41kGLudY4fv-i-5Y)*F zw1m34b=QZz!*Q*9e&^P$@Q2_1-pQ&(5CbF*qzUNIw%6YJTqRACh*fQ;s{Ve>&yb1U z(4ZYC@<7Az+S-iX!1PcN_lM8F`dkHILpadir&D9I8?{{u16WoBW9$Jj z4Zi~3r1P!LtT13P z7H-9Z)#zKBPDa-#4lDr>AvIb*v^f|SCKHJ&T9%AFdc@0YK2YZh&JI?3UYVL`CJcl` zb)M0sOH~7Vq*x_A6QNRIf53d&+_klfY8Z6G2q;G;0M&XiAMrh^Yv3DT6;~n{KQlZB zzOsemwIQlXRn}N7n-XBb=K{T%VA-Rz^;#0u!I7m}g~tvIj2hQ$WVeEnTYty;MKHP; z{OixcPJ#smLkirR0)ZBOYg+@i-7U4(C&s!N;9@FM-&k)siaZrkJ{mYvu^`iMlf5(x zU`+5y3$A(8;JiumQ2nzG#_DdU&_=#=>4t9z6()g0*`3`n_1Vx$-7tm5h1*rBb9d1K$k^I(65l z`_(r%#bXN{GA!1QiP!Lif{3X2BH=@ z1RBgoy#Ds>JNh}@K0Dm2P7PVX-hu8~kV01H_N|`viSGTr;F3Btw={n+1d|Mgov-y- z5j>+HJlH?d8ID~N`v)5vtF}h%Q=)}z!j|{QiYQ_R0U_S1hAjxJQS>EgBZj(H*FL<8Kcg6jU+b$I>i`>^=p zD`oF~4|3{SJ9SYnL*LMd)#ak_Su*n7y@U|IKq-4sUH;he;EswKo-j);1UWe4$yC|x zw27p^6Nq*xSO71u)(_@)sf^A=pfbT~tw|5ia>x2PmYPK?hUKwR))|yZd|HPADjBc| z3=FbuR0O>?tO0J?t_ge27IZ^y|1l$p0~G@((YIHBwn=R{U6XxpfsYtU+eR?&gPk-t zAyJh}PP+O4yM<0_T4gQ49)tORIqgvz~ z@_s3-fR%X8K%jI?3@)vLsLym?0i6HgJQIXGRFC8eZvvm|Jf^FI{bPL>aQI_{*c8MF zUTgycr)+O-m`OD@K50S%L+!FF=Zy7IOm@(_#qh=Il?pnDiq-4}`pccKm0{d-n zc+ksLRFm8r&xOh?h3%^IS<`%@)!*YvpM`k}ohkO78G@9>1_j+}m@PCx7=GFb{8ae- z{_ci1jw$kBT>+zPYNmC1vghTd947aAw@_iPRB#oLeL!CeBON{0$%*Ok&5Q4ym^yTq zHk8nyVj^3Fc;!AyBKROwDpd?Wa<@Gh_CPijn!AUMx!afoPCeK#c6EiQNnK3WhuH`3>E-Wx zs9CFLu)Od>mDr(0hTi+^SGEBw>ERELPJ}%uZ7=^N6i(Mo>!PaK+uio6FaePV#{k7u z5koBoAi1b35lV3{08h&4Tld1q)V!4%kyU8z=nrGlcTD5!8=BTjysrz_9X|ZzXJK9K z-ih!?^Y-<#(Zjxf|FMQO&1M%}2#+f(sKG;SRlqLU6g=x;C)FVA64W%Q7H{+))~dPK zZI~<+@^Se|FJxe3N&#;&Y-(uShyQ48v_^!U#ep_es=8WD)r(pswvHagpcv`au=ppL zg{UnQlSMgE`O^V$awhxh0yn6YS4Q*Tht|HN?~&89NACw%fmV@s#epNhLbaqCzE(%Y z0cD>7a1L#ADrn3Xtb5@t~n`Cx@iO-%|0JW%DfG5v(?RaJ{{w&!l$7i1aj zDUs=ApvR>iRu{?p-QIZTt@8u|diwqB8W?|NC&l=1DGXz$rvQnryQ#A}8%TT9>%xQC zgQdfhK0vAk#{ zOkgaA%7`FRC>2z|0g(^@nMLIJ=jp8E#xB=m#aM7Ef=e^*Mwt>1rE)#w(D+Q8J%?X249(W{X$hf z!(bMtQhLDz)C>OaOyu5!`*D$rmJ_ZIpZ)BYVOP`tOd=XKN8{upS4hYN(58ZMqPyOw zi%K=Wy}53GSPOfp^-Pzewgr$4JoK8{s2k3K^b7McZQ0)wIK}FtiKu+(e`i^SlBe#? z8oU<$vI~Z^jMwL~*1P!;f=g8AGi+=&D?zmhQ{CTMW^8UO9Vn?q&od5>i(x=j;o$g` zD%=~lhc%52X2mcV?KOq8tV*y+!Qslu2h2WybLO20hKU|9qd`=O!$uA|n~SAt$3d`8 zKqpghVLpJF&5b$wMGwZ~M(wrU?OVTdOweIsL51X*G~l_Z?|iDDM)f^p_QkO&b|ef; z>XA9HEOaSK+_nifWf0k8HP1v?Ut0^EN(wley;)pzQYLugrgWx6c&`62aBNay+*MMz zb89~Q=AVA;;QN<<`R^PQs7{$DG_$(`&s`({Tqr<1Va&0#8XI*dQYMeNPxg#eEaJ1b-nlArBAKTI$85(qN7dSoB1{8 z?6ddUYp-ScYf10DXQ1Em6XRpk+801io!Sp;_G#cCVWQmPih3TgDgyOt4;|{I)Ydhc zT1zw81|&inKK}TVP^ZLcc6ufpYJbzfhZ5`A2;C#iQiKCxt&j+%sgj`{r;?_0Vh`$> z0R7yMAghD@ebZ34)sKL2L=WKdDl*KNVs36`2B{bsYZbc2<9#O$95xutL=wXJAIUAq zh+yCYTph>YW0hzJzVwxYHkA@#zErN*SnDZU5XOnvD2P^;ORz>(McI?K$_FcKH3k;( zim(`3sxoTYTfQRp`7Er+n&*MSzH9C2ePV2vzucUQP>vh4;IVv3A~tCa*HC&Yka2;? zu9^j+6Ki1VW=J-6oBgmVSSFV~GPcNOzW(qtWmS8Id^m9jM@L+Ko*!rtDbND}aYMy2 z7FSTW8%(ycrot}{uTPgj*dW4*M-vE{dYD&#`2PDIs-V$Dz#$8!!2|#I^ddU?psa`m8kUDl z>U9q)Yag8o%X4pqRrk3u)qt|579VT?3^y{`gtf>gq%&?lGQD@D4N6m!4adMnUiXTD zGaJZ8?cj)}NyZ`BP#$V3mF1&t3}Yv&q6O<}v_ZM9$01g7H zFO{cp(LSQ_$)SO9a;a>XPQw{*;6fpC%*nQCHg9gMDYHBB__k?^6-ZVem;;Soc}AP( zT+kdW1vYbJbuh|)Wn*%NTq5N&PLozC7D9~vGq)R0kzZxavf7?Ia5i*}Lcz_2MjKem#NYJn z^uQecKmTX{N)=3PSXSjR|K@oZ9valauw#xpy%Yjop^!A!x=Cx9HAWK=HWG&;<{y;% zXhkuizoe|#jdA1(%w(#wEC-n$)4eM?xb6tY2F8NM=m4Sv2A|(-vBHNP1}qQWdmJ_t zFeY>lc(2wsb_nLcPBf#&=bo($=e53>nV6iuu4i~^5(JqhYm7b=6l;c@m^&$y^6s%A za>r^y`-Vi1;kcqcV`FtWCK$MlG!O0O?OWQ{({7Mra84g)XLU&j5Qm4F;rbbRi1gpM zH})8gS5&Yi1#2M2D(xrMC=J|tCef8}VfjcvC;pwN!ofhjUKKx+v!kl?_VrFku96<+ zi@qCp>RR2h7=0ZaRY4-Gsb92|h{b|{(vZGpf9rQ^S~|6+#+)!#c=#tW*MMiJqL_mz zm0}WZ7*oH~**h4{voV=cIjVbTve=r3uxx{c>VY8VrsmcsNtX{1Bk~iVBr`Oiht}Gq zi=~}>6%`K2>WdLS;$f26_vnSNh;~-z!~W_E50FGbs=Q?t4z)Ql3@e40fkKruURsKr z&}fcP;fkT6GE%*4X9$%j88NS-f^e0~_X?|RR(c98ltuaLg=03ED@=oF?$z_KjfZY! z(mtYZ73k@#)6FNC;CXu{oSlONJq!*3HpbT0suxD2R6!*b_N#z9&^HzM~jyV}V%8vvVXmki>f$ftP)VFpU3sFSeibkbD8#>h3a9ejrNBHq)K&308L(g-2ZOH_H3``Zh zFZ6=;wiYdd$n#`~ZdO&m!kgC?HDuGFopX2)O>tN=8yibDw7EEq)2J_h_}WG{T#I`c zIw0ATh{&xjFX(soOm8GvxMC05t**keDF5_N|GBDGHG1`#CMT!@$Xw)9olK~|(iisB zTk9Vh3B!sPz%*}{mUSH|51P>ffVWNJX>VLLf%B^T=ocnjZI^6z)S~^+*o<_@X&l-k z5GNuO4iroEY_k!(Fe+oy76`dXfgW8jrnG@tV-KL{BpKZ)!@C}etc-9@BC-gnbj{`g z_^zz;e2JX`snYcw9sLuIW2wg0_9v0qTBcqm%A#6)5OM;2F-w9cA32`|g4D+Ks5Wd%yu6zHC&*OqOxyXm)}f-3?{@M_`Qhl8x*W;2{Q!$W|K} zU)MuTly%u~oFBXPFmw#eggq^yq))X8RUZwZRzdzR{>5L1r*D^>@z>Z8SbYL$iRqIt zq2>}={0wPyYO$|wZ+p|S=)g`XcL`|c2RmA@+DytuD8CVF8lSorb_F>#X#-AOzZ1TH z{xa;SSyPpalFzU*pdFrTF<|yWws9fI13oT8OW^)+g`<&kWW+$X0uv^Ar&`Hp&Y~3| z6Q>xVS5*6%MODl?D|Es`hGmkld_t9tk*SK%HlfK^+uY&NYs$@dKwgBbvO;I~iO6&J zP*phtp&5$7rE zC$C|D@eH6iCKWh3g&mJ8y8>d|-rII#d}ijFp}sj~r7(PI;T|*KgWz3=bV_;#Bg(L$ zIP$YoYP>$UdoL`ktT_pQbHBB*6&^o&9A3`NxmieV0ZRolo>5`^M{3%F2a}v!Q_tv1 zkq1+0k_i+!>2*|A3L5F}^)m#2-`_us4oSk=XzbE7q)FH$ND;OV@FDOQPzc0<+R9i_ zcBxvz9x$IhGrOclffj~V&R!D1*PFhGCODXN6M(J|Hq*NRdgNWfZfnr*tt~Hx>$B5J zh*p(&MQ#79i;U-3Vu@H8Zr->V`g*%9C()oPpxL@M6*l)-SzT8}yl#dJgMvG%pn;x7 zhsI6sd{w?48ZcT@x}$3XmvifC8T2~Ij#RPrha#ruf}KA6_{Y8{XtPYNa}X^pFWHoZ%)eG^=x8raIkUENm&Z24 zVILlzUOBKb3CwlROiYDA1^Bm1n@)Z@n2pdue{Fio(iUrLv9XPLQG62Z315QpY z3qxNH1z-zhm#TQj8BCPo#3Ohw?qHT17(fvI{nwf zwaH1nsJ?Lb?%nYDC!d?UU8e_ds0Q3uU;ja+(XRbAXD6n^s20eg@cpb_T1KV%m0m7z z0(N~nJ8QmoO1k!*zVPbBE1$?{zGIlOu{0N28){q&8i0#p1!1S7c2lI+*E@3nIoC7}C zVA9%1(Tl*c4%+aRX4Pl3DT^T>IB|k=UM@3fP<1F#xX9>dlzr~1uhFI~DtIm<<;)8n zG*!i=aO`shf@Cq8tB`CsgSVV(A@+~-cdoU6?3!t|Q`0v*l!sIW142+uq1AQvbSsGM zsG^Ad7qZ8;&UVWN6U2d?Vr7*w!vlQ#+T>KYcjKBTol80t2ry9U$egFfN5i*2{Gh*& z80*CiKg8G?+OVQ-v$EriRC+!h#OSyLa!0WgU7j zjt+HQSv~(H?G*&)m}yA)y#(v@^H=8L$`vugMX%q!49iPPjt}&(_DLL+%+$Jna_Q>k zY=6trCGDz?`_=R5)*h==qwef7?fpQHphM3B7F?YGXF!<0`WDECKwIWnlN18A?H!!B z&xXzqP}tJSlJ`bE{UjaWQQKUWg~4AF#8r`~4%gMY`|E%CXW>tO z{E7Z~M!_}dWTCyKA^ho2e-y@*0H6uy6;q>Ta(ZuJ_uhPB*Y9xr$Gpkp!Q%XkF zTH+$U8L$CCF5Vfipk!-C4f;Q@>B#K${5V9ZK-kZTGJA&RHQ|8-Fy#T(SecU~;_;EW z%DAa)yHY!SCE`8>-bt2RJtm#p72JS_I+|+j?t4<-(&}F@$2=mp#xFg3%Sd#6y{9D^ zGv`pi%aM*U*juFn%=y{Ahm6()iKJ@dIDJl7JQoJeN@nRnEM*O?%EU5(!GZ>tsK5f4 zd0^)^q!Y-^6FA(A1T$#~7nlYf+Au1=;8K78`~U7H)!5YSu%w3T`oi}y@aZ7<$xpse zgE$%f{r~mfTcn5=`rzSvp{r*Ym1vLquWoFrv_Ep=By({YM~y2}?qEZ)0yAeg0(#)i z7QEb)n|MH5W(u7jx(Ufp2b;2)W-?7rP<3?gFVFS)QD6&!Hy9mxYq^}6E1rxL6CbEB z8qlIilepvtPjiN@pGD2_8O}sQ}>eL-hhfZEEzw##EdVn|p?#p$Bh9 z0#Fxo2U$JmT4gH7g2(KJrS;W2FcPlax}{9K&+@V)kz+hWq?hQFS~BR7GW*g zn?cvnpo)scn?o>7nKJ7VC!m4hQQ@nJ@a=a`O`Btq^z`s3CLpRf>1T{8bGxTadZ-0| zrT{ZBp+ori$N?1oI5b8iEs|wy6!AQ7PE4Z9rstF6llr;F@Z#B1HQn|t_k4A6VywBl zZ`AgF1b0kq?x=D5+53+Lo8-d!&Ypt&s#O*rz5hX27TnX_-D&f6SWM_8ai|dJVbB1T z(5Gr{?ewTV0(nS*z^5mePEOqj$LHzT+-6@?M|obVn#Q&k?-2&GKKal!Tz%NTd!|zI>2wJIbXQopgcG8i3$p-4rIsI)gL?8nxzT4f(%LS zSbv|3e0u#H)geKZs)@Bt;`BfMyT1zm{1-n7je7qZ8wcUH-@Od~@SFc0e(}?v==alM zad9<#`)tmB!w(-l247}>w1_FK36lkN(mfZ8YD_oZVW+r8$k$A zqLbD;10B$|&?S#<>NRnqF)b)XDYP+9tm*R6f0CDvT^eP~JDO3c7{9B# zdo)bn{Ul7^xDzf56=v|D69e@PI%gt%>a5xw|Iuq&)K}q^GL((gH-c;S!}o9ASbnud z8)9X3!+I}h;*brYK>}3Npuo;xQ4tkRuu)eyNj1LO97yY%yPRngu$$G41uv#iMH3Ba z0VD=rvJ#c5amx$H4n-P$9(zS-;~YX^B4x9CH-=sAUyrxBrap#wx#QPb8PhvP~y znA2FZik>x1x(v}&dO)ehFacEz*V~~UMyjFBmVv1fxOZi!*JrhLb-NmS@ZQJaA|EG- zF)CsBV|R1Oo~^4J;E_c&J*UDO;j~xBn{m*~QVa!W;=nc)sW{vRs$iCfHfo2O;xv2V zou42ehR_s7H>wo&H|9f88yRNNh5Hz)929)^1!KYAZfU5G!)sMFZld=n(AL-1>QGiA z_2MuzG}edB-92ag8%(>_*Mv^NOE9pulnpW{MJbKQ7IZ{d9giM;6grf=R5jG9X}f1j z%9E2zW2+nxOlPyU(9dVB5zspocu`gC=^$XPT5OMCNuUS5KpA&-av}^Uso7D3lj}M? zI#z~05YBX8N4l2w&W_O9IpFUhYlitVF?rMUO7u=*UPIR|W9!?jzedX4IcsUSA0-Yb%zK$fhIJw@nA|nf45P?W4V2AXBu5=U{KA=M2WRw(Uq{IhIjvfo|UROv$;~i{k#0trKK;RE|yGD4eotF zEhZ2`BmVxyV)##g`|I%cUw&=R;7%Qs2M4D{Cpe&YcGtBJn$`C@Fk7n@-wGvIAAR_l z4&9ttIqW^__cK+Vs*b$@(<;xSkRk6KA7T0`NHLJ4DX=rW&qOnl=I-55z2XOryBo6@ zjqQXc52 zCn-ku=}6O2wvKXzGbU2g8Z~>shKpr-Ae`)i8)i9Y#>IE?op!OxJF5lP^uR!wdyn!R zIHeUTg|Qvs@WSWm2GK=H7{3a-k$aK-l1ey$28JCJ9H)fScaP45T{S!ogfpHUZTaSq z{7tHSBA_*x0ZmrZ@W z{WkMxu=nVxA9B3{U8TMUdL*TBG8qF=o&MVyjz)qE(DpEntV0SY$Hp(hl*u?4j3QXm zK;|F>ha~%<=~_`4GcuqBG9C_vN*tex2`^BBY>G-s3x|n0j2S%Ts%LKAPrZ()7#cqA5CAErL;Ps!|Y*!y}hb zbKns7B%rq;xljr|{0Mp%g2f8>UUD$#b73111c=g5XPXpcI=Xsnv|cJVmY8mARW^IB zL-R<1m_fO;;0T6YU=@&Q+UM7hRkH&M@6rCcP(p>lCd$$hG&ZTQMn*@%&ic9sJrP(Y92v~u`2%UW3mV!0EQ3lOB(4#;~l|!P^jli=~0^n_pk`Zr-z*Rn0B2VE%K&{94)+rpOm83aloonb*kuiw1& zJHN!|RtKrA>vYhJj*MB{?9KceTjE)FMM3ZQ;Lz1Hy%DaHOb)ys0s~AOOoJK(kucs* zUu9%u)Nr89OLW*8q60qN-}ga^CoQzq4fVcovf{f}^$d?sj-BY$tFJ*10ZJ_IeRk%$ z69u$(5C*$(>$VwJGt;vcgTw0~tADp9l%6Y;MfyCRBGohKP{M*t0}um_Ovp}PXkM=> zsZ#;{NCyMXcl;e%?DcCm!oAxMtYo>b{s-%zqjw-&r1K_OP_=?^F};pjCVS%g?Dde= z9y>icv0z)5l7nnkKq0WKV8JlGE$Lu+c++46T!~vAf|=L8GIm z%NRGfC6j-vtMe93n|uDX7EI2@0L%o`3l8EaynX)zWj;YKCapknsX*Qy28M>hKu^CN zY7m85U0zcYX&^wdyU@WwfVq3?j&bo73@!AqA3pvlEG^DkOXfnDy9M89iZacqiUDpp zzkjX+=V)WiC3T;m0&w0+Mx~X(Oy9U~i2$-Elpd=UWTEb%Kb|*SR&uwViUz%Q%hl>0 z(`ryw3L2sZ!b`8x^B_Z`!ax!h$=5oS;RI^G5sQ&!jng+Mvu0A1L!i2*%2UP+q!dgi z%{gGh)kUtDio+5Ynai>QWi)vJkKI+ZM0S9tPFq)pNB)nGqwrI*5H06mS)HOXN$II3 z72{G_)4QtNM8(VYK-eY+1Jli9l6d1*sgfB~&>S2ZwIuI}GRcYQ>&i&Cog^@QYgr2Y zRVOH8LO3dV?$B(ZdQyTzw)uGAEwQff&=mk z?JZHoa&BSX)fhpeO$Wgl)4|zjz|A2A^h952VP(la08PqPNm9~!X3Yw!oeDm^P7nkQ zjiE59enZGR5OUDW&fW+$s$lO52HDf|yR>;owF6H1Ekqf$XSK81e7c8u{(- zerL)bEG_hHNV=Mv>+Mi=>iLjXyRJ=5Od6-H*P*b!zO1C+!txtb-59y>JgGG8eW0My z)!nbdWKz|F4r1*GSUhCjthIxKBOO$eVRCF(&pK+gFcpdlCCMtTPS0Pwu#5nS%C0II zATZ<|NQ(G;4ky+&(BS^grmM0_;rmo#P&ui_ZI4+1M?Ui2g+jTe#_Ik1@7bRhCn>o4 z^xJqhE30cd97pu*F9ikmt0CJN#suHt1ze{D@{{*JR-b0b4612eKSNU^s)Fbl?P*bw_8nnzmz}^#IQ4QO{#XhvClJf?~pj zJv#Ej_W$Gm=YQ6_J8`g0mFJN>^G~=CSt=IK7K<}hYslh#ejP6S$j4tzSUkwL3rGKFrKa9VeOw}Z6PpXnvZj@xTkf36vJhESl3#@TtJ0K;>n#tv9E?5_q5rE6hz!hqTF2yTC z|HzaB&e6`6V$OxL@QSLssHqd8QXcpklE}y@a7cXc>7RtHjh*ms|N1Y(Z-tee?kt5% z#Fsdc>mq*N*vf?Bh8soDK?}+@X{tdJ+|zdvv?*oBRGQ8&tcE@XE96hXKM%CwOuf^_ zoSR<^_pVQewcUL;6)CF`fSMM*c&P=)!|r9+LK#|nXJ6kP{JXm;(YqOINg4wPx^c(8+;Jn3k=k$JCZ6cqr&OGwe&{P+fR%~S5A$SncG6E)(tG!Be zzWx4t4`R_sLt>aIa75XTbO_e#eZWyKC8Hq)l@#*Ch~DjL{f-E#m{QaD)vH%lc;tC9 zyu`@-jcd0IxnVC!qZ=5CgA7xaE+sbDX>tH<3D*Ye2lE|N#Wp&mK-t%Ch8lZ%PL%`i z12Myl)ha7IWcF4KT%gf0RR*xtTJ(It$X8cZ!)SSap+WnxPv363yQUH_AMagybDBAQhS_ds{W-N`3j{2I02YTEDuhY8x z*^ho4j*m{m+t<(Id`cloU33Tz<36sm9_NspP#2*22Ee&aG9dCY9_-__~9~9TZ{rnXl_(`I#Pj55Ke^Q3Vyb> zFGSKf6~(*?D&?v;AfbXmg#{1iGm07Op^(|xMzZV=eEY!%Ia;_P(S2|%MT z!*&ME_BIV4WQ2P%RKuzTKPH=Eijjtpb%kua!QfY&1FkjY5yevQs8v}E3_!*>Ju&45 zJ>IC+_qT@v6t=vxMsuMHMGI}^1anapfmKr>0;w@Lgt{V0L$(xE0y*#qe5?tiX)&pw z)F6XHF1dm0Li9D!AVSiGf2&jWOOGQ`tKBlK9okRe$ zEi5is(w6KT_-99l8I4AC(yvX9nbvuFd}(XE5hWwrmNw3ZL%|+QPSa?;K6_IEb=0_RtG?@t{+JQ+uT8DQ02U~vY_N@(`$|4 zF9x#^IqT}`a;11%P22P1a|g~us@Cffnkmu{^nRFfCFU`-l-7H`)cS9#uMJbvGoJT= zB}IdCNe~k=6N3W-VPR>_>z{rL_KjT2ojbSGc%HW*{QCNqr>c>_rXK?|LcfUNNT3yZ zCrpx)e9(UYNw|Qvie;qMLBEo_9leuFo33O$scLwI>JbJVJo?Id2mWIE#MnLl1c{2; z2%W&O2PX2Q?WNYY5|^_>9~$oxL1JdLo7gdv=X>lEtN+*9t0N9d+9ozt=Ge#adDEmb z#b{BQ)*9U1+Yd|guY^!U=$MIPDrJ%~)>E~rfP|p%7Cdxy4M0Arw%-0H(8w(E6{nlL zkhzg+y_n|qVQ1!yW=H;gg-3FOn<;q*YaUp=I?+hgmQp1Tzyw?Gshm(_vq>k?8A^lt z4%>#=fjwg_nQIT#?6@kpth#>lW?0@n4ht`TuZMZ&^0h)IaaZ4{O3)FNXM=-n ztKaCbD8#g&Y^p-0h4DyA-(Tc9RnDL4gui+1y4gfzMI9{-p;wt#PQm2cr_aLdR5WvD zf`p2tu>q|NWe;<&T$*FD!UF@}glBKzDtP7ubp2IZi9+CrGP@4*`uQJIkT6s@;qfOe z71f9-kE>Ja<~?XuVK|2C=Ab)Q-=Ic)1vu|$nb1%&`v;n3DH)xzpgSU8px|7jF9L>d z|K37qP}48UE7TcpMw|>9BLg1DAvXy>&$#bWbmmlWgDP*P4}<|0l^IF)4My%D%1Wa_ zgPkOX($VCi=s_}6OcBEBRp5umPGgD#9{7dtU_Rp1a?ep7nZ_;^RPN%;vbG5~qt0EG zRVlN=s2T?;raBMxd-O-TyShCl&!7r05Y0a{Nvhy1BhR2i02NLGG8Gh#MvUwmr_}Q; z>UZnZl(m4HHvG9ZG0LrI#`o%HhX)7M7~C|?mqvCsQWl7lpRFr4VV`;4V;t0LUcVSrj=t11SDde#*D_Vi4k<=(%0TfL)p1!F-kbv4fN=5?UK zT5Hs`t*tIP3uCiWG2T;!!uv_7_wf4dYwPbY49EcDyV4y)@dj<&rlxwYS>&nl+HDn# zai~hHR_}0Bi4zhGFq94iUD*6vhsMd#p%Wvj3;VrlPjb!doo!V!^b|Z=PYm$DXWlU3 zwhpdSK^_PDJ5f|j0iVMi$Pk?$AQ>vqEB!?UM8AdJ0f#D;^zitM18ysFoNg(SMr>dC~R)6 zghVDzGBeps1@uk|zPYW>$qhnt>|-Esk_J*NAS=V)$tc#BwAoR*JXKrLLEU0nBy?#8 z9*f1;|1`X9%fiT^r>|B(x>!F$FW?l%H9eaq!89kj4`f%yuiXhfYS>!hSfAIcgrTmX z&ArNl!vn+Tz=x^E*4`(|qoQLA9*BuDZxd-<-5f&~4UKT2(>8vtCX;|pNx)}eBx~HX zy!YW3;W#IlCw*!*NK~p!SW2Pjpq7q~O27(r&Bi!ss%)yc)vAUB0Te#$fBl>P6e@E& zWgkx6tnk=UqSocw-Fx@L{zXQ?__-Es9DlEEYzs3t?uMC(wJPl(*Lw3r^YZK1SOuAI+YHkQW`{7cXe;Ve6 zDUvbKXyl{4&l@)BzEdaX)^fYjE5Z9$9j8dyfxO zrXnjV6K280zCe|kP1!PIi$IIDAsIO)%t$qObVAReThC_x^$)&gwDQRSwF+JNP?3!E zkLvdY3m$B^n!&RbdEB@2YI24s^?}j(;Gpo;%^hdnBf@6M8czfT@t36;psMM;3^M_$ zU^GAf+9fjC*8ahPE5Lld&O=MoY9&Z6s`?p<;~ojGfWO)GNNWBZY#?RZU|#% zx2xYzdEVj5GQb3ro~}O6GZ3IT%r69g#(}ys4o^YkY_{+aG0AITDW2MbEH5QD>l zlpfu!*&AlTJb(6GxP5KL4cxbH-$%vsvv`=Af!IU#IJm0ZGhA*rKzomHb4LcodO zS2hJu3GQXi;OTcHQc-OH)?%^bs+USK?P=FSBoSny^f-xcK`01{u6bAGnK+%Uq^ezs zrj~IuG@`;#Tt%m=xwFR=Is=7wZr&5*HKgaP*Yy(fc|Exy=V9d z!aHQ&7s|{r=wSFLRfyQJbq3pVB{f3qGlGsr}-IZ^PBW8#PHk)Z#uf{(I-q$6D}* z9{fS%?E9~OV|I))JQU@0arnxjcG#j!=$uozwk63uRAm5W*`o)C zJN@$Nsscp61)Ii&M^2CP&nGq+d7#Exh55q=p;K7mdw1@JA)S~&IcxyU?We?zi6^(6%liaM$=c7-pvh4@&eGukezwx9b85K&JWEP0H*`OR20*g!E z4QyxbxA1xvK6ohALya(3MOQb$x^P9bP{BTK$?;i*F^1KtIQp4S4+Ez3|y5KQc9LZsE1o$bHi@fr>WN-&x;SHKYlY zi4z!lLZ^q@zSns*{X05Zt)KMf?V^XlX!e3Xqe^*vvS((`nGR46fwVX4g@XmdGgdWC zM6qjddJaM=p;{*zyRPua455W?s2l7`#vx* z=zz=f?NjBlzP=uYba)~hcmXDyNjs@YsXA?KZ!<(VIzFpFTCMkY;mT-C&klY2#@Z&c zod~#V%X8-KXKnJqb9-aqH5h&jiJd8lWa1Q74iwULRX*GJR+kcH`Rwd&8h^*?65_

    0(u!wpJqLk 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 z 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

    dYP729YIq?`U%45| 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